Kontakt: Marián Slašťan, slastan @ dcs.fmph.uniba.sk [email protected] Literat úra:
description
Transcript of Kontakt: Marián Slašťan, slastan @ dcs.fmph.uniba.sk [email protected] Literat úra:
• Kontakt:– Marián Slašťan, [email protected]– [email protected]
• Literatúra:– Ian Sommerville: Software Engineering,
6th Edition, Pearson Education, 2001– www.uniba.sk/www/sw-eng (len slajdy!)– (ostatná literatúra k príslušným prednáškam)
• Cieľ prednášky
Softvér• Spoločnosť závisí od schopnosti efektívne vyvíjať a
prevádzkovať SW (priemysel, štátna správa, školstvo zdravotníctvo, ...)
• Druhy SW produktov:– podpora činnosti organizácie (Business SW)– systémový softvér– SW bežiaci v reálnom čase (1 ms – 1 min.)– SW ako súčasť iných produktov– SW pre vedecké a inžinierske účely– SW pre osobné počítače– SW v oblasti umelej inteligencie– ...
• Generické SW produkty– požiadavky formuluje marketingové oddelenie
a sú voľnejšie
• Produkty vytvárané na objednávku– požiadavky formuluje zákazník a sú
striktnejšie (zmluva)
Produktivita pri vývoji SW
• 1968 – softvérová kríza (konferencia NATO)
• Máme poznatky, ale ...– nie sú dostatočné– prax často nerešpektuje základné zásady
• Cca. ½ projektov prekračuje plánovaný rozpočet
• produkt dodaný podľa špecifikácie a používaný.............................................
• produkt nedodaný................................
• produkt dodaný, ale nepoužívaný........
• používaný až po prepracovaní.............
• dodaný a používaný po úpravách........
5%
15%
10%
15%
55%
Hlavné problémy
• prekračovanie rozpočtu a termínu
• nesplnenie používateľských požiadaviek
• neuspokojivá kvalita produktu
Kvalita
• správnosť• robustnosť• flexibilnosť• znovupoužiteľnosť• kompatibilnosť
• efektívnosť• portabilnosť• verifikovateľnosť• jednoduchosť používania• ...
• Interné faktory kvality:– modulárnosť– zrozumiteľnosť kódu– ...
(Nie všetky naraz!)
No Silver Bullet
• ťažko očakávať „čarovný prútik“ ...
• ... ale je možné pozorovať trvalý nárast produktivity (cca 6% ročne)
• Softvérové inžinierstvo sa zaoberá teóriou, metódami a nástrojmi potrebnými pre vývoj softvéru.
Proces vývoja softvéru
= množina aktivít, ktorej výsledkom je softvérový produkt.
.
Riadenie projektu
Zabez-pečo-vanie kvality
špecifikácia, analýza, návrh, implementácia,
testovanie, integrácia
Správa konfi-
gurácií, riadenie zmien
Role v procese vývoja SW
• zadávateľ (zákazník/klient)
• riešiteľ (developer)
• používateľ
• prevádzkovateľ
• ...
Činnosti v procese vývoja SW
• Špecifikácia požiadaviek– cieľ: vytvorenie uceleného popisu požiadaviek na
produkt (z pohľadu zadávateľa) – obsahuje: popis funkcií produktu a prípadne aj popis
štruktúry objektov, resp. relevantných procesov v organizácii zadávateľa
– problémy:• zadávateľ si nevie predstaviť, ako bude výsledný systém
vyzerať• zadávateľ nevie, čo potrebuje
– popis musí byť jednoznačný, úplný a vnútorne konzistentný
– prostriedky: (štruktúrovaný) prirodzený jazyk, prípadne diagramy
• Jednoznačné ?• „3.4.A. Z terminálu sa načíta identifikátor súčiastky nasledovaný
identifikátorom kontajnera. Ak tento obsahuje písmená AQ, treba cenu prenesenia danej súčiastky do daného kontajnera násobiť koeficientom 1,5.“
• Konzistentné ?• „A2. Ak tlak v pracovnej nádobe presiahne 10 atmosfér, je potrebné
okamžite uzavrieť ventil M17.“• „F5a. Ak tlak v pracovnej nádobe presiahne 10 atmosfér, je
potrebné upovedomiť operátora. Ak operátor nezareaguje do 30 sekúnd, treba uzavrieť ventil M17.“
• Výsledkom je záväzná špecifikácia požiadaviek, podpísaná zadávateľom aj riešiteľom.
Analýza a návrh
= vytvorenie popisu riešenia• vytvorenie architektúry (výber z možných
alternatív)– rozdelenie na moduly (vrstvový model,
centralizované/decentralizované dáta, ...)– spôsob riadenia (call-return, event-based, ...)– rozdelenie na počítače (fyzická architektúra)– ...
• detailný návrh (popis algoritmov, dát, detailov UI)
• Treba zaznamenať rozhodnutia! (kvôli zmene, kvôli údržbe)
Implementácia a testovanie modulov
• naprogramovanie jednotlivých modulov
• vytvorenie dokumentácie (programátorskej, používateľskej)
• testovanie modulov– neformálne (programátorom)– formálne (s vopred určenými vstupmi)– revízia kódu
Integrácia a testovanie systému
• spájanie modulov a testovanie produktu ako celku
• spôsob spájania má vplyv na výsledný produkt• testovanie:
– počas integrácie (integračné testovanie)– testovanie celého produktu (funkčné, nie-funkčné
vlastnosti), kompletnosť dokumentácie a zdrojových kódov
– akceptačné testovanie (u zadávateľa)
Prevádzka a údržba
• Údržba je integrálna súčasť vývoja – predstavuje ½ až 2/3 nákladov
• Treba na ňu myslieť od začiatku – pri návrhu, pri písaní kódu, pri dokumentácii
Riadenie projektu
• Odhadovanie
• Plánovanie (čas, peniaze, ľudia, technika)
• Organizácia práce
• Sledovanie realizácie plánu a prijímanie potrebných opatrení
• Práca s ľuďmi
Zabezpečovanie kvality
• zabezpečovanie „kvality procesu“– príprava štandardných pracovných procedúr– kontrola ich uplatňovania– meranie efektívnosti procesu
• posudzovanie kvality medziproduktov
• (process improvement)
Správa konfigurácií a riadenie zmien
• Zabránenie nekontrolovaným zmenám vo vytváraných dokumentoch a programoch
• Všetky dokumenty sú v „skrini“, ku ktorej je regulovaný prístup
• Zmeny v už vytvorených dokumentoch podliehajú zvláštnemu schváleniu
Modely procesu vývoja SW
• kvôli manažovateľnosti treba dať procesu vývoja istú štruktúru
• existujú schématické štruktúry: modely procesu vývoja SW
• neexistuje „dobrý“ a „zlý“ model
Atribúty procesu vývoja SW
• Proces vývoja (a čiastočne aj jeho model) má nasledujúce atribúty:– pochopiteľnosť– viditeľnosť– možnosť podpory– rýchlosť
• Nie je možné všetky optimalizovať naraz (napr. rýchlosť vs. viditeľnosť)
Vodopádový model procesu vývoja SW
Špecifikácia požiadaviek
Analýza a návrh
systému
Implementácia a testovanie
modulov
Integrácia a testovanie
systému
Prevádzka a údržba
• Sekvenčne usporiadané etapy zodpovedajúce jednotlivým aktivitám– pred začatím etapy musí byť predchádzajúca etapa
ukončená (vrátane dokumentácie)– napriek tejto snahe je návrat často nevyhnutný
• Historicky prvý explicitný model procesu (1970), vychádza z procesu v ostatných disciplínach
• Existuje mnoho variantov
Prednosti a nedostatky
• Prednosti:– disciplína– dokumentácia– viditeľnosť– požiadavky sú známe
vopred
• Nedostatky:– riziko nepochopenia
požiadaviek vývojármi– problémy pri zmene
požiadaviek– „všetko alebo nič“
Inkrementálny model procesu vývoja SW
• vývoj prebieha po jednotlivých inkrementoch• inkrement je časť celkovej funkčnosti produktu
(nejde nutne o skupinu modulov)• príklad: predaj kníh cez internet
– práca s katalógom kníh (zobrazenie, vyhľadávanie, ...)
– registrácia používateľov– objednávanie kníh– ...
• príklad: operačný systém– scheduler– file system– ...
Špecifikácia požiadaviek pre celý systém
Návrh architektúry systému
Špecifikácia požiadaviek
pre inkrement 1
Analýza a návrh inkrementu 1
Implementácia inkrementu 1
Testovanie inkrementu 1
Integrácia inkrementu 1
Prevádzka inkrementu 1
Špecifikácia požiadaviek
pre inkrement 2
Analýza a návrh inkrementu 2
Implementácia inkrementu 2
Testovanie inkrementu 2
Integrácia inkrementu 2
Prevádzka inkrementov 1, 2
Špecifikácia požiadaviek
pre inkrement 3
Analýza a návrh inkrementu 3
Implementácia inkrementu 3
Testovanie inkrementu 3
Integrácia inkrementu 3
Prevádzka inkrementov 1,2,3
Vlastnosti inkrementálneho modelu
• Prednosti:– prevádzkyschopný
medziprodukt je k dispozícii rýchlo
– skúsenosti s prevádzkou pomáhajú pri špecifikácii požiadaviek
– lepšia návratnosť investícií– ľahšie zapracovanie zmien– možnosť nasadzovať po
častiach– keď sa vývoj neukončí, je k
dispozícií aspoň čiastočný výsledok
• Nedostatky:– náročnejší na vývoj aj
riadenie– nutná je otvorená
architektúra (nevýhoda?)