Tvorba software
Z MiS
(Rozdíly mezi verzemi)
(→Návrh: Podrobnější popis) |
(Kompletní přepracování - fáze 1) |
||
Řádka 1: | Řádka 1: | ||
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Softwarové inženýrství]] | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Softwarové inženýrství]] | ||
− | + | <!-- | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Tvorba SW zahrnuje postupy == | == Tvorba SW zahrnuje postupy == | ||
; Analýza | ; Analýza | ||
Řádka 26: | Řádka 22: | ||
Viz také: [[Algoritmus]]. | Viz také: [[Algoritmus]]. | ||
+ | --> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Fáze projektu == | == Fáze projektu == | ||
− | === Formulace zadání === | + | |
− | * | + | === Formulace slovního zadání === |
+ | * Slovní formulace toho, co se má vyřešit. | ||
+ | * Rozsah několika vět až odstavců. | ||
+ | * Z tohoto popisu vychází analýza, zadání se při ní dále zpřesňuje. | ||
+ | * Formuluje zákazník nebo jiný zadavatel. | ||
+ | |||
=== Analýza === | === Analýza === | ||
− | + | ; Charakteristika: | |
− | + | * Vědní disciplína: Softwarové inženýrství | |
− | + | * Profese: analytik + tester | |
− | + | * Výsledek: formalizované zadání (teoreticky ideálně až formální popis [[Algoritmus#Problém|problému]]) | |
− | *Jaká data potřebujeme? | + | ; Řešíme: |
− | * | + | * Jaká data potřebujeme? |
− | *řešíme věci a akce z reálného světa | + | * Jaké operace nad daty provádíme? |
− | + | * Které skupiny (typy) uživatelů budou se systémem interagovat? | |
+ | * Jaké výstupy budeme po systému požadovat? | ||
+ | * S jakými dalšími systémy má náš systém spolupracovat? | ||
+ | ; Testujeme: | ||
+ | * Soulad se slovním zadáním. | ||
+ | * Pokrytí všech funkcí slovního zadání. | ||
+ | * Soulad jednotlivých částí: | ||
+ | ** Nejsou v datech položky, se kterými nepracuje žádná operace? | ||
+ | ** Mají všechny operace potřebná data v datech? | ||
+ | ** Odpovídá popis operací charakteru zpracovávaných dat (datový slovník)? | ||
+ | ** Odpovídá popis dat formátu, v jakém nám budou navazující systémy poskytovat data? | ||
+ | <div class="Poznamka"> | ||
+ | V rámci analýzy řešíme věci a akce z reálného světa, tomu odpovídá i terminologie. Minimálně používáme specializované pojmy ze světa IT, výstupům by měl rozumět i zákazník. | ||
+ | </div> | ||
+ | <div class="Varovani"> | ||
+ | Zatím se '''NE'''bavíme o: | ||
+ | * softwarovém či hardwarovém způsobu řešení, | ||
+ | * algoritmech, | ||
+ | * způsobu ukládání dat,... | ||
+ | </div> | ||
+ | |||
=== Návrh === | === Návrh === | ||
*Charakteristika: | *Charakteristika: | ||
Řádka 63: | Řádka 70: | ||
** Jak rozdělit jednotlivé části řešení mezi třídy a metody (strukturu tříd, přiřazení atributů a metod). Které entity reálného světa budou popsány samostatnými třídami, které budou figurovat jako atributy jiných tříd. | ** Jak rozdělit jednotlivé části řešení mezi třídy a metody (strukturu tříd, přiřazení atributů a metod). Které entity reálného světa budou popsány samostatnými třídami, které budou figurovat jako atributy jiných tříd. | ||
** Dále jaké pomocné třídy je potřeba zavést pro realizaci programu (okna, tlačítka, posluchače,...). | ** Dále jaké pomocné třídy je potřeba zavést pro realizaci programu (okna, tlačítka, posluchače,...). | ||
− | ** Algoritmus | + | ** [[Algoritmus]] (obecný postup) řešení jednotlivých dílčích úkolů. |
* Podle typu úlohy převládá svou složitostí buď: | * Podle typu úlohy převládá svou složitostí buď: | ||
** Návrh struktury — skladové systémy, evidence zaměstnanců apod., kde algoritmy bývají poměrně triviální a je hlavně třeba správně postihnout požadované chování a vztahy mezi entitami. | ** Návrh struktury — skladové systémy, evidence zaměstnanců apod., kde algoritmy bývají poměrně triviální a je hlavně třeba správně postihnout požadované chování a vztahy mezi entitami. | ||
Řádka 81: | Řádka 88: | ||
*úpravy | *úpravy | ||
=== Vyřazení z provozu === | === Vyřazení z provozu === | ||
+ | |||
+ | |||
+ | == Profese == | ||
+ | *Informatik | ||
+ | **vědec | ||
+ | **zabývá se algoritmy (například: řadícími algoritmy,...) | ||
+ | **převody algoritmů, vztahy mezi nimi | ||
+ | **složitost algoritmů,... | ||
+ | *Softwarový inženýr (vývojář) ~ analytik | ||
+ | ** Provádí analýzu úlohy. | ||
+ | ** Komunikuje se zákazníkem. | ||
+ | ** Řídí spolupráci v týmu | ||
+ | *Kodér ~ programátor | ||
+ | **aplikuje obecné algoritmy na konkrétní úlohu | ||
+ | **zapisuje v programovacím jazyce | ||
+ | *Tester | ||
+ | ** Po '''celou''' dobu projektu ověřuje správnost vytvořených materiálů. | ||
Řádka 88: | Řádka 112: | ||
*Psát spoustu klíčových slov je triviální a zdržuje. | *Psát spoustu klíčových slov je triviální a zdržuje. | ||
*V počátcích zdržuje i klikání v ArgoUML či jiném modeláři. | *V počátcích zdržuje i klikání v ArgoUML či jiném modeláři. | ||
+ | |||
== Pojmy == | == Pojmy == | ||
Řádka 98: | Řádka 123: | ||
**jaké nástroje použít | **jaké nástroje použít | ||
**jaké produkty vyrobit | **jaké produkty vyrobit | ||
+ | * Softwarové inženýrství | ||
+ | ** Vědecká disciplína, zabývá se metodikou a postupy efektivní práce a spolupráce v týmu při tvorbě SW. | ||
+ | ** Zahrnuje i návrh grafického rozhraní a jeho zákonitosti. |
Verze z 19. 10. 2015, 10:10
Obsah |
Fáze projektu
Formulace slovního zadání
- Slovní formulace toho, co se má vyřešit.
- Rozsah několika vět až odstavců.
- Z tohoto popisu vychází analýza, zadání se při ní dále zpřesňuje.
- Formuluje zákazník nebo jiný zadavatel.
Analýza
- Charakteristika
- Vědní disciplína: Softwarové inženýrství
- Profese: analytik + tester
- Výsledek: formalizované zadání (teoreticky ideálně až formální popis problému)
- Řešíme
- Jaká data potřebujeme?
- Jaké operace nad daty provádíme?
- Které skupiny (typy) uživatelů budou se systémem interagovat?
- Jaké výstupy budeme po systému požadovat?
- S jakými dalšími systémy má náš systém spolupracovat?
- Testujeme
- Soulad se slovním zadáním.
- Pokrytí všech funkcí slovního zadání.
- Soulad jednotlivých částí:
- Nejsou v datech položky, se kterými nepracuje žádná operace?
- Mají všechny operace potřebná data v datech?
- Odpovídá popis operací charakteru zpracovávaných dat (datový slovník)?
- Odpovídá popis dat formátu, v jakém nám budou navazující systémy poskytovat data?
V rámci analýzy řešíme věci a akce z reálného světa, tomu odpovídá i terminologie. Minimálně používáme specializované pojmy ze světa IT, výstupům by měl rozumět i zákazník.
Zatím se NEbavíme o:
- softwarovém či hardwarovém způsobu řešení,
- algoritmech,
- způsobu ukládání dat,...
Návrh
- Charakteristika:
- Vědní disciplína: Softwarové inženýrství + Informatika
- Profese: analytik + kodér + tester
- Výsledek: Návrh struktury tříd + algoritmus
- Řešíme:
- Jak rozdělit jednotlivé části řešení mezi třídy a metody (strukturu tříd, přiřazení atributů a metod). Které entity reálného světa budou popsány samostatnými třídami, které budou figurovat jako atributy jiných tříd.
- Dále jaké pomocné třídy je potřeba zavést pro realizaci programu (okna, tlačítka, posluchače,...).
- Algoritmus (obecný postup) řešení jednotlivých dílčích úkolů.
- Podle typu úlohy převládá svou složitostí buď:
- Návrh struktury — skladové systémy, evidence zaměstnanců apod., kde algoritmy bývají poměrně triviální a je hlavně třeba správně postihnout požadované chování a vztahy mezi entitami.
- Algoritmizace — vědecké výpočty, úlohy hromadného zpracování dat, kde pracujeme často s jednoduchými daty bez vnitřní struktury, ale je třeba je zpracovat ve velkém množství efektivně.
Implementace
- Charakteristika:
- Vědní disciplína: Programování
- Profese: kodér + tester
- Výsledek: Zdrojový kód
- Píšeme kód, který realizuje algoritmus.
Nasazení
- Instalujeme u zákazníka.
- Zaškolíme obsluhu.
Údržba
- aktualizace
- úpravy
Vyřazení z provozu
Profese
- Informatik
- vědec
- zabývá se algoritmy (například: řadícími algoritmy,...)
- převody algoritmů, vztahy mezi nimi
- složitost algoritmů,...
- Softwarový inženýr (vývojář) ~ analytik
- Provádí analýzu úlohy.
- Komunikuje se zákazníkem.
- Řídí spolupráci v týmu
- Kodér ~ programátor
- aplikuje obecné algoritmy na konkrétní úlohu
- zapisuje v programovacím jazyce
- Tester
- Po celou dobu projektu ověřuje správnost vytvořených materiálů.
Proč začínat na papíře/obrázku?
- Složité věci řešíme první!
- Vymyslet strukturu tříd je složité.
- Psát spoustu klíčových slov je triviální a zdržuje.
- V počátcích zdržuje i klikání v ArgoUML či jiném modeláři.
Pojmy
- CASE
- Computer-Aided Software Engineering
- Programy pro podporu návrhu software
- metodika
- jaké pracovníky využít
- jaké činnosti vykonat
- jaké nástroje použít
- jaké produkty vyrobit
- Softwarové inženýrství
- Vědecká disciplína, zabývá se metodikou a postupy efektivní práce a spolupráce v týmu při tvorbě SW.
- Zahrnuje i návrh grafického rozhraní a jeho zákonitosti.