19
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc. [email protected]

Informatika I 8 . přednáška

  • Upload
    dolan

  • View
    31

  • Download
    0

Embed Size (px)

DESCRIPTION

Informatika I 8 . přednáška. RNDr. Jiří Dvořák, CSc. dvorak @uai.fme.vutbr.cz. Obsah přednášky. Softwarové inženýrství Životní cyklus programu Modely životního cyklu Testování a ladění. Softwarové inženýrství. - PowerPoint PPT Presentation

Citation preview

Page 1: Informatika I 8 . přednáška

Informatika I8. přednáška

RNDr. Jiří Dvořák, CSc.

[email protected]

Page 2: Informatika I 8 . přednáška

Informatika I: přednáška 8 2

Obsah přednášky

Softwarové inženýrství

Životní cyklus programu

Modely životního cyklu

Testování a ladění

Page 3: Informatika I 8 . přednáška

Informatika I: přednáška 8 3

Softwarové inženýrstvíSoftwarové inženýrství (Software Engineering) se zabývá

problematikou tvorby programů. Cílem je vývoj technik a prostředků napomáhajících v přiměřené době a s přiměřenými náklady vytvářet jasné, srozumitelné, spolehlivé a efektivní programy.

Mezi předměty zájmu softwarového inženýrství patří např.: programovací jazyky techniky programování metody ověřování a dokazování správnosti programů optimalizace programů prostředky CASE (Computer Aided Software Engineering)

Page 4: Informatika I 8 . přednáška

Informatika I: přednáška 8 4

Životní cyklus programu

1. Fáze požadavků

2. Specifikační fáze

3. Plánovací fáze

4. Fáze návrhu

5. Implementační fáze

6. Integrační fáze

7. Fáze údržby

A

3

4

2

6

12

6

67

B

1

2

3

5

15

35

100

A … přibližné relativní náklady v procentechB … přibližné relativní náklady na detekci a odstranění

chyby vzniklé ve fázi požadavků (násobky nákladů pro fázi požadavků)

Pramen: Schach, S.R. Practical Software Engineering. Irwin 1992.

Page 5: Informatika I 8 . přednáška

Informatika I: přednáška 8 5

Fáze požadavků, specifikace a plánování

Fáze požadavků:Vývojáři softwaru pracují s klientem, aby zjistili, jaký software klient potřebuje; požadavky jsou prezentovány formou dokumentu.

Specifikace:Vypracování specifikačního dokumentu, který popisuje, co má produkt dělat (úplně, přesně, bez rozporů a dvojznačností).

Plánování:Vypracování plánu řízení tvorby softwarového produktu obsahujícího co a kdy se má dělat, jak dlouho to bude trvat, jaké budou náklady a jaké budou zapotřebí zdroje. Plán musí být klientem akceptován.

Page 6: Informatika I 8 . přednáška

Informatika I: přednáška 8 6

Navrhování, implementace a integrace

Navrhování:Nejprve je vytvořen návrh architektury, který rozděluje produkt do modulů. Pak se provádí detailní návrh, při němž jsou navrhovány jednotlivé moduly. Přitom musí být jasně určeno, jak bude každý modul vykonávat svou funkci a jaké algoritmy a datové struktury bude využívat.

Implementace:Každý modul je kódován v programovacím jazyce dohodnutém v kontraktu.

Integrace:Moduly jsou spojeny do kompletního produktu, který je testován včetně dokumentace. Pak je produkt předán klientovi k otestování.

Page 7: Informatika I 8 . přednáška

Informatika I: přednáška 8 7

Údržba, testování a dokumentace

Údržba:Úkolem údržby je jednak odstraňování zbývajících chyb, které se nepodařilo odstranit v předcházejících etapách, jednak zlepšování funkce produktu a jeho přizpůsobování změnám požadavků.

Testování:Testování není separátní fází životního cyklu, ale nedílnou součástí každé fáze. V každé fázi nejprve provádějí testování softwaroví inženýři, zajišťující tuto fázi. Pak je produkt předán nezávislému testovacímu týmu.

Dokumentace:Nezbytnou součástí každé etapy životního cyklu programu je tvorba dokumentace.

Page 8: Informatika I 8 . přednáška

Informatika I: přednáška 8 8

Příklady modelů životního cyklu„Vodopádový“ model (waterfall model):

Žádná fáze nezačíná dříve, než jsou výsledky předchozí fáze pozorně zkontrolovány a schváleny (včetně dokumentace).

Model rychlého prototypování (rapid prototyping model)Fáze požadavků je nahrazena fází rychlého prototypování. Po úvodním shromáždění požadavků klienta se pokračuje tvorbou prototypu. Prototyp je rychle vytvářený program, který odráží mnohé z funkcí cílového produktu viditelné pro klienta, ale vynechává skryté aspekty. Klient pak s prototypem experimentuje a na základě toho upřesňuje svoje požadavky.

Spirální model (spiral model)Každá fáze začíná analýzou rizika týkajícího se vývoje produktu a poté se provádějí kroky k odstranění nebo minimalizaci tohoto rizika.

Page 9: Informatika I 8 . přednáška

Informatika I: přednáška 8 9

Testování a ladění

Testování:

Cílem je zjistit, zda se v programu nebo v jeho části vyskytují chyby (resp. snížit pravděpodobnost jejich výskytu). Testování je jednak statické, jednak dynamické.

Ladění:

Cílem je odstranit chyby, jejichž přítomnost se projevila během testování.

Page 10: Informatika I 8 . přednáška

Informatika I: přednáška 8 10

Chyby softwaruČlenění podle doby výskytu

chyby ve specifikaci a návrhu chyby projevující se během kompilace chyby projevující se za běhu programu

Členění podle druhu chyby formální chyby (většinou se projeví při překladu) logické chyby (projeví se až za běhu programu; tyto chyby

způsobují, že program neřeší správně danou úlohu) numerické chyby (projeví se až za běhu programu; jedná se o

chyby způsobující nedostatečnou přesnost výsledků výpočtu)

Page 11: Informatika I 8 . přednáška

Informatika I: přednáška 8 11

Statické testování

Statické testování slouží k ověření správnosti požadavků, návrhu a kódu před zahájením kontrolních výpočtů.

Metody statického testování: pozorné čtení zdrojového textu automatizovaná analýza zdrojového textu (např. během

kompilace) formální dokazování správnosti programu

Page 12: Informatika I 8 . přednáška

Informatika I: přednáška 8 12

Dynamické testování

Dynamické testování spočívá v provádění kontrolních výpočtů s testovacími příklady.

Metody dynamického testování: testování černé skříňky (funkční testování)

– vychází ze specifikace požadavků na program nebo jeho část; volíme data typická, hraniční, výjimečná, chybná, ...

testování skleněné skříňky (strukturní testování)– volíme takový soubor testovacích příkladů, aby pokryl

všechny řídicí cesty resp. všechny příkazy v testované části programu.

Page 13: Informatika I 8 . přednáška

Informatika I: přednáška 8 13

Výpočet největšího společného dělitele dvou celých čísel

Vstupní podmínka:x, y Z (Z označuje množinu celých čísel)

Výstupní podmínky:nsd(x, y) = nsd(|x|, |y|)

nsd(x, y) = nsd(y, x)

nsd(x, y) = x pro x y = 0

nsd(x, y) = nsd(y, mod(x, y)) pro x y > 0

Page 14: Informatika I 8 . přednáška

Informatika I: přednáška 8 14

Podmínky pro data k funkčnímu testování

x = y = 0

|x| = |y| > 0

|x| > y = 0

|y| > x = 0

|x| > |y| > 0 nsd = 1

|y| > |x| > 0 nsd = 1

|x| > |y| > 0 nsd = |y|

|y| > |x| > 0 nsd = |x|

|x| > |y| > 0 1 < nsd < |y|

|y| > |x| > 0 1 < nsd < |x|

Page 15: Informatika I 8 . přednáška

Informatika I: přednáška 8 15

Funkce pro výpočet nejv. spol. dělitele 1 function NSD(X,Y:integer):integer; 2 var K,L,M,N:integer; 3 begin 4 M:=abs(X); N:=abs(Y); 5 if M < N then 6 begin 7 K:=M; M:=N; N:=K; 8 end 9 while N > 0 do10 begin11 L:=M mod N;12 M:=N;13 N:=L;14 end;15 NSD:=M;16 end;

Řádky jsou očíslovány pro konstrukci grafu řídicí struktury.

Page 16: Informatika I 8 . přednáška

Informatika I: přednáška 8 16

Graf řídicí strukturyZ

K

9

7

5M < N

M N

N > 0 N = 0

Page 17: Informatika I 8 . přednáška

Informatika I: přednáška 8 17

Cesty řídicím grafem a jejich podmínky

Z 5 9 K

Z 5 9 (9)* K

Z 5 7 9 K

Z 5 7 9 (9)* K

Pozn.: Hvězdička a závorky označují případné opakování.

|x| y = 0

|x| |y| > 0

|y| > x = 0

|y| > |x| > 0

Page 18: Informatika I 8 . přednáška

Informatika I: přednáška 8 18

Proces ladění (debugging)1. Shromáždění informací

2. Izolace chyby

3. Potvrzení příčiny chyby

4. Odstranění chyby

5. Dokumentace

6. Nové testování po každé opravě

Systémy pro podporu ladění umožňují např. krokování výpočtu výpis zvolených proměnných změny zvolených proměnných

Page 19: Informatika I 8 . přednáška

Informatika I: přednáška 8 19

Testování a ladění programu členěného do modulů a podprogramů

Program se ladí po částech (činnost spolupracujících částí se simuluje), které se postupně spojují ve větší celky.

Základní přístupy: postup shora dolů (top down): začíná se od nejvyšší úrovně

programu, přičemž činnost volaných modulů a podprogramů se simuluje

postup zdola nahoru (bottom up): začíná se od podprogramů a modulů, pro něž se vytváří testovací prostředí

smíšený (sandwich): kombinuje se postup shora dolů a zdola nahoru