Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

temata:30-zivotni_cyklus_softwaru:main [2011/03/22 12:23]
george [Etapy životního cyklu softwaru]
temata:30-zivotni_cyklus_softwaru:main [2016/06/06 14:45] (aktuální)
xpavel27 [Modely]
Řádek 1: Řádek 1:
 +~~ODT~~
 +
 ====== 30 - Životní cyklus softwaru ====== ====== 30 - Životní cyklus softwaru ======
  
Řádek 119: Řádek 121:
   * **výstupem tedy je prohlášení o cílech, studie vhodnosti a plán akceptačního testování**   * **výstupem tedy je prohlášení o cílech, studie vhodnosti a plán akceptačního testování**
  
-=== 2. Architektonický návrh === +== Analyza ==
-  * slouží k ujasnění koncepce systému a k jeho dekompozici +
-    * vymezení funkcionality jednotlivých podsystémů +
-    * definování vztahů mezi podsystémy +
-  * naplánování postupu nasazení do provozu => je lepší to udělat již v této etapě, jelikož programátoři mají v hlavě informace nutné k jeho vytvoření z minulé etapy + je lepší, když už je dopředu daná určitá představa, která bude dále sloužit k odhalování problémů +
-  * **zde je výstupem specifikační dokument a plán testování celého systému** +
- +
-=== 3. Podrobný návrh === +
-  * podrobná specifikace softwarových součástí +
-  * stanovení fyzické struktury dat a způsoby ošetřování neočekávaných a chybových stavů +
-  * návrh testů jednotlivých součástí včetně testovacích dat +
-  * **zde je výstupem návrhový dokument** +
- +
-=== 4. Implementace a testování součástí === +
-  * implementace jednotlivých částí +
-  * vypracování dokumentace +
-  * testování jednotlivých částí +
-  * **zde jsou výsledkem naimplementované jednotlivé části** +
- +
-=== 5. Integrace a testování systému === +
-  * spojení do jednoho celku +
-  * probíhá testování celku => odhalují se chyby spojené s integrací => případné opravování a návrat k předchozí části +
-  * **zde je výsledkem celkový systém** +
- +
-=== 6. Akceptační testování a instalace === +
-  * otestování systému uživatelem +
-  * zákazník software převezme, případně je převzetí odloženo (po objevení závažných nedostatků) do doby napravení problémů +
-  * zde se ocení pečlivost 1. etapy +
-  * tato etapa záleží na typu softwaru (u generického zákazník může koupit software ještě před vyzkoušením, případně existují trial verze, atd...) +
-  * rozhoduje o úspěchu či neúspěchu +
- +
-=== 7. Provoz a údržba === +
-  * vyžaduje průběžné řešení problémů a chyb, které se objevují až za běhu +
-  * tato etapa zabírá největší času a úsilí (ve skriptech uvedeno 67%) => peněz => je proto velmi důležité věnovat pozornost prvním etapám +
- +
-==== Modely životního cyklu softwaru ==== +
- +
-  * u každého projektu se jednotlivé uspořádání etap může lišit => společné rysy je možné popsat modely životního cyklu softwaru +
-  * definují jednotlivé etapy, a jejich časovou následnost +
-  * nedefinují délku trvání etap ani jejich rozsah +
- +
-=== Vodopádový model === +
- +
-  * jednotlivé etapy jsou řazeny za sebou +
-  * následující etapa začíná po ukončení předchozí (tak, jak jsou seřazeny v [[#Etapy životního cyklu softwaru|sekci o etapách]]) +
-  * pokud zákazník nestanoví všechny požadavky a zjistí se to až při posledních etapách, je třeba se vrátit prakticky na začátek a upravit návrh, jelikož se s tím v životním cyklu nepočítalo +
-  * neodpovídá vývoji reálných projektů, je ale lepší jak //neřízený chaos// +
- +
-{{:temata:30-zivotni_cyklus_softwaru:vodopadovy_model.jpeg?400|Vodopádový model životního cyklu softwaru}} +
- +
-=== Iterativní model === +
- +
-  * snaží se odstranit hlavní problém vodopádového modelu => proces vývoje je rozdělen do iterací, kde každá iterace je instance vodopádového modelu +
-  * po každé iteraci je k dispozici spustitelná verze s neúplnou funkcionalitou => pomůže upřesnit požadavky na software +
-  * rozdělení do iterací vede k horšímu návrhu struktury systému +
- +
-{{:temata:30-zivotni_cyklus_softwaru:iterativni_model.jpeg?400|Iterativní model životního cyklu softwaru}} +
- +
-=== Inkrementální model === +
- +
-  * podobný iterativnímu modelu +
-  * projekt je odevzdáván uživateli po částech +
-  * pozdější upřesnění požadavků může mít negativní vliv jako u vodopádového modelu +
- +
-=== Spirálový model === +
-  * zavádí do vývoje __prototypování__ a klade značný důraz na analýzu rizik +
-  * jednotlivé etapy vývoje se opakují vždy na vyšším stupni zvládnuté problematiky => podobné jako u iterativního s tím rozdílem, že výsledkem jedné iterace není software s omezenou funkcionalitou, ale **prototyp** => po použití se zahodí a začne se vytvářet nová verze +
-  * spustitelné verze existují od začátku, takže se lépe odhalují chyby spojené s provozem +
-  * je náročný na řízení +
- +
-{{:temata:30-zivotni_cyklus_softwaru:spiralovy_model.jpeg?400|Spirálový model životního cyklu softwaru}} +
- +
-=== Rational Unified Process === +
-  * na rozdíl od předchozích modelů není pouze konceptem, ale je použitelný na řízení reálných softwarových projektů +
-  * výsledkem výzkumu řady velkých firem koordinovaný firmou Rational +
-  * je založen na vývoji softwarového produktu iteračním způsobem (po každé iteraci je k dispozici spustitelný kód) +
-  * klade důraz na +
-    - vizualizaci softwarového systému (pomocí jazyka [[temata:31-uml:main|UML – Unified Modelling Language]]) +
-    - průběžnou kontrolu kvality produktu +
-    - řízení změn +
-    - využívání existujících komponent +
- +
-{{:temata:30-zivotni_cyklus_softwaru:rup.jpeg?400|Rational Unified Process}} +
- +
-=== Agilní metodologie === +
-  * metodologie založené na klasických modelech životního cyklu softwaru se vyvíjely dlouhou dobu a postupem času zmohutněly => při tvorbě menších projektů spíše kvalitu výsledného produktu snížily => prodražování bez efektu => vývoj agilních metodologií +
-  * klade hlavní důraz na člověka jako určující faktor pro kvalitu výsledného produktu +
- +
-===== Analýza a specifikace požadavků ===== +
   * velmi důležitá etapa => čas strávený v této etapě se pak odrazí v dalších etapách => odhalení chyb v pozdějších etapách stojí více času a peněz   * velmi důležitá etapa => čas strávený v této etapě se pak odrazí v dalších etapách => odhalení chyb v pozdějších etapách stojí více času a peněz
   * důraz je kladen především na požadavky, nikoli na implementaci   * důraz je kladen především na požadavky, nikoli na implementaci
Řádek 219: Řádek 132:
     - naplánovat akceptačního testování     - naplánovat akceptačního testování
  
-==== Typy požadavků ====+  - **strukturovaná analýza** - chápe systém jako kolekci funkcí (procesů) operujících nad daty, tj. pracujeme (navrhujeme) strukturu dat a funkce pracující s těmito daty 
 +  - **objektová analýza** - chápe systém jako kolekci vzájemně komunikujících objektů, tj. data a funkce pracující s těmito daty jsou spolu svázány 
  
 +== Typy požadavků ==
   * mohou být různorodé, nemusí vždy souviset pouze s tím, co je nutné naprogramovat   * mohou být různorodé, nemusí vždy souviset pouze s tím, co je nutné naprogramovat
   * důležitá vlastnost požadavků je __měřitelnost__ (pouze u měřitelných požadavků jsme schopni určit, zda je aplikace splňuje)   * důležitá vlastnost požadavků je __měřitelnost__ (pouze u měřitelných požadavků jsme schopni určit, zda je aplikace splňuje)
Řádek 231: Řádek 147:
     - __externí požadavky__ - požadavky vyplývající s charakteru aplikace (např. legislativní požadavky)     - __externí požadavky__ - požadavky vyplývající s charakteru aplikace (např. legislativní požadavky)
  
-==== Specifikace požadavků ==== 
  
-<note tip>__//špatná specifikace požadavků špatný výsledek práce//__</note>+== Specifikace ==
  
   * **metody získávání požadavků**   * **metody získávání požadavků**
Řádek 268: Řádek 183:
       - relace ''<<extend>>'' - nějaký úkon v sobě zahrnuje nepovinně jiný (vrácení knihy => <<extend>>)       - relace ''<<extend>>'' - nějaký úkon v sobě zahrnuje nepovinně jiný (vrácení knihy => <<extend>>)
     * __slovníky pojmů__     * __slovníky pojmů__
- 
-<note tip>**Toto téma značně zasahuje do [[temata:31-uml:main|UML]]**</note> 
  
   * **prostředky pro analýzu v RUP:**   * **prostředky pro analýzu v RUP:**
Řádek 279: Řádek 192:
     - __[[http://mpavus.wz.cz/uml/uml-b-activity-3-2-3.php|diagramy aktivit]]__     - __[[http://mpavus.wz.cz/uml/uml-b-activity-3-2-3.php|diagramy aktivit]]__
  
-==== Strukturovaná analýza ==== +== Modely ==
- +
-<note> +
-  - **strukturovaná analýza** - chápe systém jako kolekci funkcí (procesů) operujících nad daty, tj. pracujeme (navrhujeme) strukturu dat a funkce pracující s těmito daty +
-  - **objektová analýza** - chápe systém jako kolekci vzájemně komunikujících objektů, tj. data a funkce pracující s těmito daty jsou spolu svázány +
-</note> +
- +
-  * **základní modely:**+
     - __funkční modelování__     - __funkční modelování__
       * ukazuje:       * ukazuje:
Řádek 302: Řádek 208:
       * stavový diagram, který zachycuje stavy, ve kterých se systém (či jeho část) může nacházet       * stavový diagram, který zachycuje stavy, ve kterých se systém (či jeho část) může nacházet
  
-===== Návrh =====+ 
 + 
 +=== 2. Architektonický návrh === 
 +  * slouží k ujasnění koncepce systému a k jeho dekompozici 
 +    * vymezení funkcionality jednotlivých podsystémů 
 +    * definování vztahů mezi podsystémy 
 +  * naplánování postupu nasazení do provozu => je lepší to udělat již v této etapě, jelikož programátoři mají v hlavě informace nutné k jeho vytvoření z minulé etapy + je lepší, když už je dopředu daná určitá představa, která bude dále sloužit k odhalování problémů 
 +  * **zde je výstupem specifikační dokument a plán testování celého systému** 
   * dobrý návrh je podmínkou úspěšné tvorby softwaru a minimalizuje náklady spojené s implementací a posléze i údržbou softwarového produktu   * dobrý návrh je podmínkou úspěšné tvorby softwaru a minimalizuje náklady spojené s implementací a posléze i údržbou softwarového produktu
   * **výstupem etapy jsou většinou tyto diagramy:**   * **výstupem etapy jsou většinou tyto diagramy:**
Řádek 316: Řádek 230:
         * odděluje specifikaci funkčnosti od její implementace         * odděluje specifikaci funkčnosti od její implementace
  
-===== Implementace testování =====+ 
 + 
 +=== 3. Podrobný návrh ==
 +  * podrobná specifikace softwarových součástí 
 +  * stanovení fyzické struktury dat způsoby ošetřování neočekávaných a chybových stavů 
 +  * návrh testů jednotlivých součástí včetně testovacích dat 
 +  * **zde je výstupem návrhový dokument** 
 + 
 +=== 4. Implementace a testování součástí ==
 +  * implementace jednotlivých částí 
 +  * vypracování dokumentace 
 +  * testování jednotlivých částí 
 +  * **zde jsou výsledkem naimplementované jednotlivé části** 
   * //implementace softwaru je transformace návrhu jednotlivých modulů a jejich vzájemných vazeb do programové realizace//   * //implementace softwaru je transformace návrhu jednotlivých modulů a jejich vzájemných vazeb do programové realizace//
   * **úkony před implementací:**   * **úkony před implementací:**
Řádek 331: Řádek 258:
       - //dynamické = testování:// - výsledky se odvozují na základě běhu programu (výstupů)       - //dynamické = testování:// - výsledky se odvozují na základě běhu programu (výstupů)
  
-{{:temata:30-zivotni_cyklus_softwaru:overovani.jpeg?600|Statické a dynamické ověřování}}+{{:temata:30-zivotni_cyklus_softwaru:overovani.jpeg?400|Statické a dynamické ověřování}}
  
   * **testování**   * **testování**
Řádek 345: Řádek 272:
     * test, co neodhalí chybu chování systému, je neúspěšný     * test, co neodhalí chybu chování systému, je neúspěšný
  
-{{:temata:30-zivotni_cyklus_softwaru:testovani.jpeg?600|Proces testování}}+{{:temata:30-zivotni_cyklus_softwaru:testovani.jpeg?400|Proces testování }} 
 + 
 + 
 +=== 5. Integrace a testování systému === 
 +  * spojení do jednoho celku 
 +  * probíhá testování celku => odhalují se chyby spojené s integrací => případné opravování a návrat k předchozí části 
 +  * **zde je výsledkem celkový systém** 
 + 
 +=== 6. Akceptační testování a instalace === 
 +  * otestování systému uživatelem 
 +  * zákazník software převezme, případně je převzetí odloženo (po objevení závažných nedostatků) do doby napravení problémů 
 +  * zde se ocení pečlivost 1. etapy 
 +  * tato etapa záleží na typu softwaru (u generického zákazník může koupit software ještě před vyzkoušením, případně existují trial verze, atd...) 
 +  * rozhoduje o úspěchu či neúspěchu 
 + 
 +=== 7. Provoz a údržba === 
 +  * vyžaduje průběžné řešení problémů a chyb, které se objevují až za běhu 
 +  * tato etapa zabírá největší času a úsilí (ve skriptech uvedeno 67%) => peněz => je proto velmi důležité věnovat pozornost prvním etapám 
 +==== Modely životního cyklu softwaru ==== 
 + 
 +  * u každého projektu se jednotlivé uspořádání etap může lišit => společné rysy je možné popsat modely životního cyklu softwaru 
 +  * definují jednotlivé etapy, a jejich časovou následnost 
 +  * nedefinují délku trvání etap ani jejich rozsah 
 + 
 +=== Vodopádový model === 
 + 
 +  * jednotlivé etapy jsou řazeny za sebou 
 +  * následující etapa začíná po ukončení předchozí (tak, jak jsou seřazeny v [[#Etapy životního cyklu softwaru|sekci o etapách]]) 
 +  * pokud zákazník nestanoví všechny požadavky a zjistí se to až při posledních etapách, je třeba se vrátit prakticky na začátek a upravit návrh, jelikož se s tím v životním cyklu nepočítalo 
 +  * neodpovídá vývoji reálných projektů, je ale lepší jak //neřízený chaos// 
 + 
 +{{:temata:30-zivotni_cyklus_softwaru:vodopadovy_model.jpeg?400|Vodopádový model životního cyklu softwaru}} 
 + 
 +=== Iterativní model === 
 + 
 +  * snaží se odstranit hlavní problém vodopádového modelu => proces vývoje je rozdělen do iterací, kde každá iterace je instance vodopádového modelu 
 +  * po každé iteraci je k dispozici spustitelná verze s neúplnou funkcionalitou => pomůže upřesnit požadavky na software 
 +  * rozdělení do iterací vede k horšímu návrhu struktury systému 
 + 
 +{{:temata:30-zivotni_cyklus_softwaru:iterativni_model.jpeg?400|Iterativní model životního cyklu softwaru}} 
 + 
 +=== Inkrementální model === 
 + 
 +  * podobný iterativnímu modelu 
 +  * projekt je odevzdáván uživateli po částech 
 +  * pozdější upřesnění požadavků může mít negativní vliv jako u vodopádového modelu 
 + 
 +=== Spirálový model === 
 +  * zavádí do vývoje __prototypování__ a klade značný důraz na analýzu rizik 
 +  * jednotlivé etapy vývoje se opakují vždy na vyšším stupni zvládnuté problematiky => podobné jako u iterativního s tím rozdílem, že výsledkem jedné iterace není software s omezenou funkcionalitou, ale **prototyp** => po použití se zahodí a začne se vytvářet nová verze 
 +  * spustitelné verze existují od začátku, takže se lépe odhalují chyby spojené s provozem 
 +  * je náročný na řízení 
 + 
 +{{:temata:30-zivotni_cyklus_softwaru:spiralovy_model.jpeg?400|Spirálový model životního cyklu softwaru}} 
 + 
 +=== Vmodel === 
 +{{:temata:30-zivotni_cyklus_softwaru:Vmodel.jpg?400}} 
 + 
 +=== Rational Unified Process === 
 +  * na rozdíl od předchozích modelů není pouze konceptem, ale je použitelný na řízení reálných softwarových projektů 
 +  * výsledkem výzkumu řady velkých firem koordinovaný firmou Rational 
 +  * je založen na vývoji softwarového produktu iteračním způsobem (po každé iteraci je k dispozici spustitelný kód) 
 +  * klade důraz na 
 +    - vizualizaci softwarového systému (pomocí jazyka [[temata:31-uml:main|UML – Unified Modelling Language]]) 
 +    - průběžnou kontrolu kvality produktu 
 +    - řízení změn 
 +    - využívání existujících komponent 
 + 
 +{{:temata:30-zivotni_cyklus_softwaru:rup.jpeg?400|Rational Unified Process}} 
 + 
 +=== Agilní metodologie === 
 +  * metodologie založené na klasických modelech životního cyklu softwaru se vyvíjely dlouhou dobu a postupem času zmohutněly => při tvorbě menších projektů spíše kvalitu výsledného produktu snížily => prodražování bez efektu => vývoj agilních metodologií 
 +  * klade hlavní důraz na člověka jako určující faktor pro kvalitu výsledného produktu 
 + 
 +  * **Extrémní programování (XP)** 
 +  * propaguje časté dodávky software v krátkých vývojových cyklech 
 +  * programovat jen to, co je v danou chvíli nezbytné, jednoduchý a jasný kód 
 +  * společné vlastnictví kódu a neustálý refaktoring 
 +  * Vývojáři by měli počítat se změnami požadavků v průběhu času 
 +  * Důležitá je častá komunikace se zákazníkem i mezi programátory. 
 + 
 +  * ** Scrum ** 
 +  * Klíčovou částí metodiky jsou každodenní krátká setkání týmu, nazývaná scrum 
 +  * Každý člen zde referuje o své činnosti z minulého dne, o tom, co bude dělat dnes, a na jaké problémy narazil. 
 +  * Metodika prosazuje iterativní vývoj. Období iterace se nazývá Sprint a trvá 2-4 týdny. 
 +  * Výsledkem Sprintu je demo vzniklých úprav, které je předvedeno zákazníkovi 
 +  * Ten poskytne zpětnou vazbu, což umožňuje rychle reagovat na změny v požadavcích 
 +  * Product Owner má za úkol komunikovat se zákazníkem. 
 +  * Správné fungování vývojového týmu zajišťuje Scrum Master 
 +  * Člen vývojového týmu se nazývá Scrum Team Member 
 + 
 +  * **Vývoj řízený vlastnostmi (FDD – Feature Driven Development)** 
 +  * FDD začíná vytvořením doménového modelu popisujícího celý systém 
 +  * Ten se převede do seznamu vlastností (elementární funkcionality, které přináší hodnotu uživateli) 
 +  * Během každé iterace se implementují konkrétní užitné vlastnosti systému. 
 +  * Zákazník průběžně dostává mezivýsledky a nové verze produktu. 
 +  * Na rozdíl od XP nebo SCRUM je jednotlivým programátorům práce přidělena – nevybírají si ji sami. 
 + 
 +  * **Vývoj řízený testy (TDD – Test Driven Development)** 
 +  * TDD navrhuje psaní testů před samotným kódem a následně naprogramovat samotný kód. 
 +  *  Implementuje se přesně takové množství kódu, jaké dokáže projít testem 
 + 
 + 
 + 
  
 ===== Zdroj ===== ===== Zdroj =====
temata/30-zivotni_cyklus_softwaru/main.1300793010.txt.gz · Poslední úprava: 2011/03/22 12:23 autor: george
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki