SKUSKA Flashcards
Meranie softvéru - základný princíp
Meranie je niečo, čo nedostaneme priamo jednoduchým kliknutím na tlačidlo vo zvolenom
IDEčku. Pri meraní si musíme najprv zvoliť dáta, nad ktorými budeme meranie vykonávať.
Výsledok, kt získame v procese merania závisí od voľby dát, ktorá by mala reflektovať naše
porozumenie programu. Hlavný cieľ merania je
* znížiť počet ľudí potrebných na vývoj SW
* šetriť čas
* šetriť personál
* šetriť ďalšie požiadavky potrebné pri vývoji
Rozdieľ medzi validáciou a verifikáciou
Validácia je overenie, či je program užitočný pre používateľa.
Verifikácia je overenie, či program správne spĺňa požiadavky definované v počiatočnej fáze
vývoja softvéru.
Modelovanie a čo je za tým
Pri modelovaní riešime 3 základné otázky
* ako sa má systém správať v skutočnosti
* ako sa má správať model
* čo by malo byť v kóde.
Model je všetko s výnimkou toho, čo nemôže byť formalizované. Model v reálnom svete zahŕňa požiadavky na funkcionalitu alebo na použiteľnosť softvéru v konečnom svete.
Limity modelovania
Nie všetko môže byť zahrnuté do modelu. Model má určité pragmatické, teoretické
a technické limity.
Nie všetko, čo chceme modelovať, musí byť modelované.
Existujú morálne, ekonomické, sociálne a politické limity.
Návrh softvéru a problémy spojené s ním
Softvérové inžinierstvo je o určitom stúpajúcom leveli abstrakcie. Základnou otázkou
v počiatočnej fáze návrhu softvéru je, či skutočne rozumieme doméne v kt projekt ideme
vyvíjať. Medzi metódy a teórie zaoberajúcu sa počiatočnou fázou návrhu sw patrí
* doménové inžinierstvo – zaoberá sa opisom domény
* inžinierstvo požiadaviek – zaoberá sa opisom požiadaviek
* dizajn
Problémy spojené so softvérovým inžinierstvom sú:
* Je vyvíjaný program spustiteľný - prenesenie teoretických algoritmov do
„počítačového sveta“?
* Materializácia plánu v určitom smere
* Testovanie - pretože náš plánovaný vývoj môže zlyhať
Problémy spojené s evolúciou softvéru
* Nevyvíja sa samotný softvér, ale vyvíja sa naše porozumenie problému. Na počiatku
máme určitý model, z ktorého sa vyvíja zdrojový kód. Zdrojový kód musí spĺňať
požiadavky hardvéru. Z kódu je vybudovaný mentálny model – jeho úlohou je
zjednodušiť porozumenie softvéru
Withov zákon: Rýchlosť softvéru sa spomaľuje rýchlejšie ako stúpa rýchlosť hardvéru.
Moorov zákon: Počet tranzistorov v integrovanom obvode mikroprocesora sa zdvojnásobuje
každých 18 mesiacov.
Gateov zákon: Rýchlosťsoftvéru sa zdvojnásobuje každých 18 mesiacov.
Niektoré iné problémy spojené so softvérovým inžinierstvom
* Problém zastavenie programu
* Godelov teorém
Niekedy si nemôžeme dovoliťriešiť problém algoritmicky
* Problém triedenia, Hanoiskych veží, šach
* Problémy zaberajúce exponenciálny čas
Niekedy skrátka len nevieme ako
* Problém obchodného cestujúceho, problém plánovania
* P=NP problém
Softvér je súčasťou každej civilizácie a života v intersticiálnom priestore. Komplexnosť
softvérových systémov v súčasnosti narastá – komplexnosť softvéru ovplyvňujepoužívateľov
ale aj vývojárov a všetkých, ktorý sa na vývoji softvéru podieľajú.
Inžinierstvo softvéru a ostatné typy „inžinierstva“
História softvérového inžinierstva je o stúpajúcom leveli abstrakcie. Softvérové inžinierstvo
preniká do všetkých oblasti života, preto je ťažké pre softvérových inžinierov dobre rozumieť
doméne, v ktorej sa chystajú pracovať. Nerozumieme dobre doméne? Použijeme správnu
literatúru alebo vhodný web.
Ostatne typy inžiniestrva sú:
* doménové inžinerstvo a opis domény
* inžinerstvo požiadaviek a charakteristika požiadaviek
* dizajn
Evolúcia, údržba a pochopenie softvéru
Evolúcia softvéru je fáza vo vývoji softvéru, kedy sa softvér používa, prispôsobuje novým
požiadavkám, ktoré sú doňho zaimplementovavané. Pochopenie softvéru znamená
pochopenie jeho funkcionality. Pochopenie softvéru je individuálna úloha. Softvérový inžinier
pri nej využíva rôzne pomocné nástroje nato aby si túto úlohu uľahčil.
Komplexnosť softvéru
Programátori sú stále obklopení komplexnosťou softvéru, nedokážu sa jej vyhnúť.
Navrhované aplikácie sú komplexné lebo programátori sú ambiciózni pri používanie pc
a používajú ich čoraz viac sofistikovaným spôsobom.
Pochopenie, algoritmizácia a programovanie
Počiatočná práca programátora spočíva v pochopení problému, ktorý sa chystá riešiť jeho
program. Pochopenie programu je pre riešenie problému kľúčové. Často sa stáva, že
programátor nevie naprogramovať riešenie nejakej úlohy, to ale neznamená, že neexistuje
algoritmus, ktorý daný problémrieši. Algoritmus je overený matematický postup na riešenie
daného programu. Programovanie je prevedenie tohto matematického postupu do
konkrétneho programovacieho jazyka.
Úplnosť súboru požiadaviek
Veľa vývojárov by chcelo aby boli požiadavky na výsledný produkt kompletné. Úplné
požiadavky ale nie je možné skonštruovať. Aj v najlepšom prípade sú požiadavky len
približné.
Lehmanove pravidlá evolúcie softvéru - o zmenách
Softvér typu E je pravidelne používaný, teda musí byť pravidelne apdejtovaný aby bol
progresívny a uspokojoval požiadavky používateľov
Lehmanove pravidlá evolúcie softvéru - o komplexnosti
Pri vývoji softvéru typu E sa jeho komplexnosť (zložitosť) zvyšuje ak sa úmyselné nepracuje na
jej udržaní alebo na jej znižovaní.
Lehmanove pravidlá evolúcie softvéru - o samoregulácii
Softvér typu E má vlastnosť samoregulácie.
Lehmanove pravidlá evolúcie softvéru - o stabilite
Miera globálnej aktivity v rozvíjajúcom sa systéme typu E ma tendenciu zostať konštantná
počas celej životnosti produktu.
Lehmanove pravidlá evolúcie softvéru - o raste kvality
Funkčný obsah softvéru typu E sa musí vo svojom životnom cykle pravidelne zvyšovať tak,
aby viac a viac uspokojoval potreby zákazníka.
Lehmanove pravidlá evolúcie softvéru - o znižovaní kvality
Kvalita softvéru typu E bude klesať, ak nebude pravidelne prispôsobovaná zmenám
v operačných systémoch.
GQM
Metóda GQM (Goals, questions, metrics – metóda cieľov, otázok a metrik) pozostáva zo 6
krokov. Prvé 3 kroky súvisia s obchodnými cieľmi
1. Nastaviť projektové ciele tak, aby sa zabezpečila kvalita výsledného produktu
2. Položiť si otázky (v závislosti od modelu), ktoré budú definovať ciele tak špecificky ako to
je možné
3. Špecifikovať vlastnosti produktu, ktoré budú merané v úmysle dosiahnutia kvality
výsledného produktu
Ďalšie 3 kroky opisujú spôsob ako zbierať dáta a vyvíjať dáta v úmysle vhodne sa rozhodnúť
4. Vypracovať metódu na zber dát
5. Zberať a analyzovať dáta realtimovo s ohľadom na softvérový vývoj
6. Analyzovať obdŕžaný výsledok po ukončení projektu v záujme zabezpečiť lepší vývoj
v budúcnosti
Ciele GQM metódy:
1. Definovať ciele a úmysel projektu
2. Rozdeliť špecifikáciu na otázky
3. Vybrať vhodnúmetriku
Atribúty merajú to, čo chceme merať, metriky merajú to, čo sa môže merať.
Demeterin zákon
Demeterin zákon je jednoduché pravidlo pre návrh objektovo orientovaných systémov. Jeho
znenie je:
Metóda f (function) triedy C (Class) by mala volať len
* Metódy rovnakej triedy C
* Metódy objektov vytvorených metódou f
* Metódy objektov predaných ako argument metóde f
* Metódy objektov, ktoré sú inštančnoupremennou triedy C
Spojenie (coupling)
História nejakej triedy je definovaná ako prvok <t,s>, kde každý prvok (každý objekt) má
v konkrétnom čase t konkrétny stav s. Zmena prvku t1 spojeného v histórii s iným prvkom t2
spôsoby zmenu iného prvku v histórii.
Ak dve objekty spolu spolupracujú, potom je hodnota spojenia u oboch zvýšená o 1. To však
nie je závisle na aktuálnych volaniach medziobjektmipočas spustenia programu.
Rozlišujeme:
* CBO (Coupling between objects) – trieda je spojená s inou triedou ak používa jej
metódy alebo atribúry, alebo ak používa metódy alebo atribúty jej rodiča
* NFMA(Number of forgein methohds accessed)- trieda je spojená s inou triedou ak
používa jej metódy alebo atribúry, ale nie ak používa metódy alebo atribúty jej rodiča
* Optimálne spojenie (optimal coupling) – spojenie používané v AI
* RFC (Response set for a class)- RFC je množina metód, kt môžu byť volané priamo
z danej metódy. Nezahrňuje sa dedičstvo a nepriame volanie metód.
* TCOF (Total coupling factor)-súčet spojení medzi triedami v danom balíku
Súdržnosť (cohesion)
Súdržnosť je doplnkom k spojeniu. Popisuje úroveň sémantického spojenia jednotlivých
prvkov. Vysoká súdržnosť je znakom toho, že jednotlivé prvky sú na sebe veľmi závislé. Ak
trieda nie je súdržná je náročná na údržbu.
Čo je testovanie?
Testovanie je proces spúšťania programov s cieľom odhalenia chýb v nich.
Kedy testovať softvér a kedy iný produkt?
Testovanie je časť vývoja programu, ktorá nemôže byť automatizovaná. Testovanie by malo
prebiehať počas celého vývoja programu, tak aby sa skrátil jeho vývoj. V tom sa vývoj
softvéru líši od vývoja ostatných inžinierskych produktov, kde fáza testovania prebieha
výhradne po fáze produkcie.
Matematická notácia pre testovanie
Definujeme funkciu y=f(x) a program p, ktorého vstup je x a na výstupe poskytne riešenie
funkcie f(x). Nech d=(d1,d2,…dn), kde di
je množina dát na vstupe do programu p. Môžeme
povedať, že program p je správny, z pohľadu funkcie f, keď pre každý vstup di
i=1,2…n platí
p(di)=f. Zápis p(di)=f znamená, že program p nad vstupom di realizuje výpočet popísaný
funkciou f. Tato funkcia sa týka správnosti výpočtu.
Ak nedokážeme nájsť takú množinu dát di ktorá je validná (takže platí p(di)≠f), potom
program p je chybný. Ak vieme dokázať, že pre každý validný vstup dj z množiny di platí, že
p(di)=fpotom je program validný. V skutočnosti je nemožné nájsť funkciu f pre všetky vstupy,
len pre validné vstupy.
Nedostatok, zlyhanie, chyba
Nedostatok (fault) je slabosť v návrhu alebo implementácii, ktorá môže viesť k zlyhaniu
programu. Nedostatok je najčastejšie spôsobený nedostatočným pochopením problému,
ktorý program rieši.
Zlyhanie (failure) je neschopnosť systému alebo komponentu systému vykonať výpočet daný
funkciou podľa špecifikovaných požiadaviek.
Chyba (error) nastáva pri nezhode medzi výstupom, ktorý bol vyprodukovaný programom
a výstupom, ktorý bol pozorovaný, alebo meraný v skutočnom svete.
Testovanie – biela skrinka (white box)
Testovanie bielou skrinkou je testovanie z vnútra. Aplikujeme pri ňom naše znalosti ohľadom
kódu v závislosti od návrhu systému a systémových požiadaviek, popísaných v špecifikácii
programu. Ide o verifikáciu programu. (skrátka vidíme zdrojový kód, takže podľa neho vieme
prísť na to, čo a ako testovať)