e šte k objektovo-orientovanému návrhu

31
Ešte k objektovo- orientovanému návrhu ...

Upload: channing-vega

Post on 04-Jan-2016

24 views

Category:

Documents


4 download

DESCRIPTION

E šte k objektovo-orientovanému návrhu. Kritériá: modulárna dekompozícia modulárna komponovateľnosť modulárna zrozumiteľnosť modulárna spojitosť modulárna ochrana. Pravidlá: priame mapovanie málo rozhraní malé rozhrania explicitné rozhrania skrývanie informácií. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: E šte k objektovo-orientovanému návrhu

Ešte k objektovo-orientovanému návrhu ...

Page 2: E šte k objektovo-orientovanému návrhu

Kedy je návrh „modulárny“ ?

Kritériá:• modulárna

dekompozícia• modulárna

komponovateľnosť• modulárna

zrozumiteľnosť• modulárna spojitosť• modulárna ochrana

Pravidlá:• priame mapovanie• málo rozhraní• malé rozhrania• explicitné rozhrania• skrývanie informácií

Page 3: E šte k objektovo-orientovanému návrhu

1. Kde hľadať triedy (pre návrh) ?

• v analytických modeloch– odkiaľ sa vezmú tam ?

• zo špecifikácie požiadaviek, slovníka používateľov ... (podstatné mená)

• „Výťah musí zavrieť dvere pred tým, ako sa presunie na ďalšie poschodie.“

• je potrebné zvážiť, či ide skutočne o triedy

• nie všetky triedy je takto možné zachytiť

• štúdium príkladov (knihy, knižnice)• design patterns• vlastný rozum

Page 4: E šte k objektovo-orientovanému návrhu

Ideálna trieda...

• má jasne asociovaný ADT

• dá sa vyjadriť podstatným menom

• má objekty (aspoň 1) – ak nie ona, tak jej podtriedy

• má operácie – príkazy a dotazy

Page 5: E šte k objektovo-orientovanému návrhu

Chyby

• „Táto trieda vykonáva ...“ (tlačí výsledky, analyzuje vstup, ...)

• triedy s jednou funkciou

• spojenie viacerých abstrakcií do 1 triedy– príklad: NSText – trieda pre reprezentáciu

textového reťazca (s operáciami ako porovnanie, spájanie atď.), ktorá zároveň poskytuje operácie pre editovanie reťazca na obrazovke: rozdeliť na NSAttributedString a NSTextView

Page 6: E šte k objektovo-orientovanému návrhu

2. Ako navrhnúť rozhranie triedy ?(a) nemať mnoho argumentov v operáciách

– nonlinear_ode (• equation_count: in INTEGER;• epsilon: in out DOUBLE;• func: procedure (eq_count: INTEGER; a: DOUBLE; eps: DOUBLE; b: ARRAY [DOUBLE]; cm: pointer Libtype)

• left_count, coupled_count: in INTEGER;...)

• spolu 19 argumentov, z toho:– 4 „in out“– 3 polia, použité ako vstup aj výstup– 6 funkcií, každá s 6-7 argumentami, z ktorých sú 2-3

polia

Page 7: E šte k objektovo-orientovanému návrhu

Rozhranie triedy 2

• rozlišovať operands a optionsmy_document.print (printer_name, paper_size, color_or_not, postscript_level, print_resolution);

– operand – objekt, na ktorom operácia pracuje– option – spôsob vykonania operácie (existuje

preň default value)

• argumentami operácie majú byť len operands

Page 8: E šte k objektovo-orientovanému návrhu

Rozhranie triedy 3

• my_document.set_printing_size („A4“);• my_document.set_color ();• my_document.print ();

• možná optimalizácia – doplnková funkciaprint_with_size_and_printer (printer, size);

Page 9: E šte k objektovo-orientovanému návrhu

Rozhranie triedy 4

(b) Oddelenie príkazov od dotazov

(command-query separation)

Inými slovami, dotazy nemajú mať side efekty.

kontrapríklad: c = getc (fp);

Page 10: E šte k objektovo-orientovanému návrhu

3. Dobre použiť dedenie• nerobiť dedenie, pokiaľ nie je možné nejakým spôsobom

zdôvodniť, že objekt podtriedy je zároveň objektom nadtriedy

• kontrapríklad:– class CAR_OWNER extends CAR, PERSON;

• výber medzi klientom a dedením nie je vždy jednoznačný– rule of change – nepoužiť dedenie, ak sa objekty vo vzťahu môžu

meniť

– polymorphism rule – použiť dedenie, ak premenné všeobecnejšieho typu majú ukazovať na objekty (aj) konkrétnejšieho typu

• taxomania – zbytočné vytváranie podtried

Page 11: E šte k objektovo-orientovanému návrhu

Verifikácia a validácia

Page 12: E šte k objektovo-orientovanému návrhu

Definícia

• verifikácia – overenie správnosti produktu vzhľadom k formulovaným požiadavkám

• validácia – overenie správnosti produktu vzhľadom k reálnym požiadavkám

(validácia je v konečnom dôsledku to, čo je podstatné)

Page 13: E šte k objektovo-orientovanému návrhu

Kedy ?

• V & V sa robí v každej etape– pri špecifikácii požiadaviek– pri plánovaní– pri návrhu– pri implementácii– pri integrácii– pri odovzdávaní– pri údržbe– ...

• používa sa tiež pojem Quality Assurance, resp. Quality Control

Page 14: E šte k objektovo-orientovanému návrhu

Prehľad

• V&V– programu

• unit testing

• integration testing

• system testing

• acceptance testing

– iných produktov (dokumentov)

– vykonáva sa:• dynamicky (so spustením)

• staticky (bez spustenia)

Page 15: E šte k objektovo-orientovanému návrhu

Postup pri testovaní „so spustením“

1. vybrať dáta a stanoviť očakávané výsledky

2. spustiť program

3. porovnať výsledky s očakávanými

• min. body 2 a 3 môžu byť automatizované

Page 16: E šte k objektovo-orientovanému návrhu

Výber testovacích údajov

• Black-box (podľa špecifikácie)– na kód nehľadím, snažím sa vytvoriť vstupy,

ktoré budú mať vyššiu pravdepodobnosť odhalenia prípadnej chyby

• White-box (podľa kódu)– snažím sa vytvoriť vstupy, ktoré prejdú

všetkými časťami kódu

Page 17: E šte k objektovo-orientovanému návrhu

Exhaustívne testovanie ?

• v praxi ťažko uskutočniteľné– príklad: majme 6 vstupných parametrov, každý s 256

možnými hodnotami ...

– príklad: program s cyklom ...

• v prípade white-box testovania nemusí zaručovať bezchybnosť:if ((x+y+z)/3 == x) printf ("sú rovnaké");else printf ("nie sú rovnaké");

Page 18: E šte k objektovo-orientovanému návrhu

Výber hraničných hodnôt

• Rozdelíme množinu vstupných hodnôt na triedy ekvivalencie (na ktorých očakávame, že sa bude program správať rovnakým spôsobom)– kladné čísla vs. záporné čísla vs. nula– prázdne polia vs. viacprvkové polia– reťazce s medzerami vs. reťazce bez medzier– hľadaný prvok je v poli vs. nie je v poli

Page 19: E šte k objektovo-orientovanému návrhu

• Z každej triedy ekvivalencie vyberáme niekoľko prvkov.

• Sústreďujeme sa tiež na hraničné prvky (ležiace medzi triedami ekvivalencie)– príklad: vyhľadávanie v poli

• nulová vs. nenulová veľkosť (test: pre 0, 1, 2, n)• prvok nájdený vs. nenájdený (test: nenájdený,

nájdený na začiatku, v strede, na konci)

– príklad: výpočet dane• triedy ekvivalencie – pásma v príslušnej tabuľke

Page 20: E šte k objektovo-orientovanému návrhu

White-box testing

• vyberáme podmnožinu všetkých ciest– napr. pokrytie všetkých príkazov– pokrytie všetkých vetvení

Page 21: E šte k objektovo-orientovanému návrhu

Statická V & V programu

• inšpekcia kódu– hľadáme chyby, podozrivé miesta, fragmenty

nezodpovedajúce programovacím štandardom

– potrebujeme:• výslednú podobu kódu (musí byť kompilovateľný)

• špecifikáciu programu

• checklist častých chýb

– tím ľudí, aspoň 4

– prezentujúci prechádza cez program, ostatní členovia tímu vznášajú k nemu pripomienky

Page 22: E šte k objektovo-orientovanému návrhu

Integračné testovanie

a

b c d

e g

j k

f

h i

l m

Page 23: E šte k objektovo-orientovanému návrhu

• Nutný je inkrementálny prístup– zhora nadol

• skôr nájde chyby v celkovom návrhu

• už skoro je k dispozícii ako-tak chodiaci systém (je možná aj validácia)

• je potrebné vytvárať stubs pre volané moduly

– zdola nahor• spodné moduly sú najlepšie otestované (reuse)

Page 24: E šte k objektovo-orientovanému návrhu

Testovanie systému ako celku

• Celková funkčnosť (black-box)

• Záťažové testy

• Spoľahlivosť – štatistické testovanie– operačný profil– generovanie údajov– vyhodnotenie (MTTF, POFOD, ROCOF,

AVAIL...)

Page 25: E šte k objektovo-orientovanému návrhu

Akceptačné testovanie

• podobné systémovému testovaniu, ale v réžii zákazníka a na ním určených dátach

• po úspešnom akceptačnom testovaní je produkt odovzdaný

Page 26: E šte k objektovo-orientovanému návrhu

V & V dokumentov(Quality Review)

Príprava StretnutieProdukt

schválený

Opravachýb

ProduktvrátenýNeúspech

Plánovanie

Page 27: E šte k objektovo-orientovanému návrhu

Plánovanie

• výber produktov na QR– ak treba, kontrola po častiach

• určenie kritérií kvality produktov

• príklad kritérií kvality (produkt: používateľská príručka):– štandardné kritériá pre dokument (pravopis, gramatika, sloh)– je príručka konzistentná s logickým návrhom systému ?– je predpokladaná skupina čitateľov správne určená ?– je príručka písaná na správnej úrovni pre týchto čitateľov ?– môžu byť programy úspešne používané podľa pokynov v

príručke ?– sú všetky relevantné chybové správy popísané, a to v logickom

poradí ?– používa sa príručka ľahko ? má jasnú štruktúru ? sú informácie

prehľadne prezentované ? má príručka vhodný index ?

Page 28: E šte k objektovo-orientovanému návrhu

Príprava

• distribúcia materiálov členom tímu pre QR

• čítanie „doma“, poznačenie si chýb

Page 29: E šte k objektovo-orientovanému návrhu

Stretnutie

• diskusia

• schválenie zoznamu chýb

• poznámka: cieľom je identifikovať chyby, nie navrhovať riešenia

Page 30: E šte k objektovo-orientovanému návrhu

Príprava StretnutieProdukt

schválený

Opravachýb

ProduktvrátenýNeúspech

Plánovanie

Page 31: E šte k objektovo-orientovanému návrhu

Poznámky

• po stretnutí – vývoj už len v rámci riadenia zmien

• výsledky QR sa nemajú odraziť v hodnotení pracovníkov

• celý mechanizmus V&V má byť popísaný v projektovej príručke