280 likes | 524 Views
Kontakt: Marián Slašťan, slastan @ dcs.fmph.uniba.sk Pavol.Mederly@fmph.uniba.sk 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.
E N D
Kontakt: • Marián Slašťan, slastan@dcs.fmph.uniba.sk • Pavol.Mederly@fmph.uniba.sk • 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
správnosť robustnosť flexibilnosť znovupoužiteľnosť kompatibilnosť efektívnosť portabilnosť verifikovateľnosť jednoduchosť používania ... Kvalita (Nie všetky naraz!) • Interné faktory kvality: • modulárnosť • zrozumiteľnosť kódu • ...
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.
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ť)
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: 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č“ Prednosti a nedostatky
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 • ...
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?) Vlastnosti inkrementálneho modelu
Sylaby • Implementácia • Návrh - OO paradigma, UML, architektúra • Špecifikácia požiadaviek - Use Cases • Verifikácia a validácia • Riadenie projektu