Tvorba software
Z MiS
(Rozdíly mezi verzemi)
(Kompletní přepracování - fáze 1) |
(Doplněn komentář k testování.) |
||
(Nejsou zobrazeny 2 mezilehlé verze od 1 uživatele.) | |||
Řádka 23: | Řádka 23: | ||
Viz také: [[Algoritmus]]. | Viz také: [[Algoritmus]]. | ||
--> | --> | ||
+ | |||
Řádka 32: | Řádka 33: | ||
* Z tohoto popisu vychází analýza, zadání se při ní dále zpřesňuje. | * 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. | * Formuluje zákazník nebo jiný zadavatel. | ||
+ | * Požadavky: | ||
+ | ** Jednoznačnost popisu. | ||
+ | ** Přesný výčet funkcí, které má systém plnit. S jakými dalšími navazujícími systémy má interagovat, jací uživatelé s ním budou pracovat,... | ||
+ | ** Ověřitelnost požadavků zadání (!) | ||
=== Analýza === | === Analýza === | ||
Řádka 81: | Řádka 86: | ||
**Výsledek: Zdrojový kód | **Výsledek: Zdrojový kód | ||
*Píšeme kód, který realizuje algoritmus. | *Píšeme kód, který realizuje algoritmus. | ||
+ | |||
=== Nasazení === | === Nasazení === | ||
* Instalujeme u zákazníka. | * Instalujeme u zákazníka. | ||
* Zaškolíme obsluhu. | * Zaškolíme obsluhu. | ||
+ | |||
=== Údržba === | === Údržba === | ||
*aktualizace | *aktualizace | ||
*úpravy | *úpravy | ||
+ | |||
=== Vyřazení z provozu === | === Vyřazení z provozu === | ||
+ | * Vytvořený systém je vyřazen z provozu a dále se již nepoužívá. | ||
+ | |||
+ | |||
+ | == Testování == | ||
+ | * Testování probíhá ve všech fázích počínaje analýzou a poté při každé úpravě. | ||
+ | * V počátečních fázích (analýza, návrh) testujeme soulad jednotlivých částí dokumentace a návaznosti mezi jednotlivými fázemi. | ||
+ | * Ve fázích implementace a údržby už probíhá klasické testování kódu (black-box testy, uživatelské testování,...), ale i zde zároveň testujeme soulad s návrhovou dokumentací a požadavky analýzy, případně aktualizujeme dokumenty vzniklé v předchozích fázích, pokud se mezitím požadavky upravily. | ||
+ | * Testování proto neuvádíme jako samostatnou fázi. Jedná se o souvislý proces, který se prolíná všemi fázemi. | ||
== Profese == | == Profese == | ||
− | * | + | * Ne v každém týmu se vyskytují všechny role. |
− | ** | + | * Některé role může zastřešovat jedna osoba. |
− | **zabývá se algoritmy (například: řadícími algoritmy,...) | + | * Názvy a konkrétní náplň práce rolí se v jednotlivých firmách může lišit. |
− | + | ||
− | + | * Každý se může svými vlastnostmi více hodit do některých rolí a pro některé může mít předpokladů méně. | |
− | *Softwarový inženýr (vývojář) ~ analytik | + | |
− | + | === Informatika jako věda === | |
− | + | ; Informatik | |
− | + | *vědec | |
− | + | *zabývá se algoritmy (například: řadícími algoritmy,...) | |
− | + | *převody algoritmů, vztahy mezi nimi | |
− | + | *složitost algoritmů,... | |
− | + | * Dále dělíme na: | |
− | + | ** Základní výzkum: snaží se objevit souvislosti mezi jevy, prozkoumat pravidla. | |
+ | ** Aplikovaný výzkum: aplikuje nejnovější vědecké poznatky na praktické úlohy s využitím v průmyslu a firmách. | ||
+ | |||
+ | === Programování a věci úzce související === | ||
+ | ;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 | ||
+ | |||
+ | === Další role v týmu === | ||
+ | ; Tester | ||
+ | * Po '''celou''' dobu projektu ověřuje správnost vytvořených materiálů. | ||
+ | |||
+ | ; Projektový manažer | ||
+ | * Dohlíží na činnost týmu, kontroluje termíny. | ||
+ | * Komunikuje se zákazníkem a předává požadavky týmu. | ||
+ | |||
+ | ; UX specialista | ||
+ | * Navrhuje uživatelské rozhraní projektu tak, aby bylo uživatelsky přívětivé. | ||
+ | |||
+ | ; Grafik | ||
+ | * Vytváří vizuální podobu produktu. | ||
+ | |||
+ | ; Kreativec | ||
+ | * Přináší nové pohledy na věc. Jeho úkolem primárně není řešit technické provedení. | ||
Aktuální verze z 18. 12. 2024, 08:36
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.
- Požadavky:
- Jednoznačnost popisu.
- Přesný výčet funkcí, které má systém plnit. S jakými dalšími navazujícími systémy má interagovat, jací uživatelé s ním budou pracovat,...
- Ověřitelnost požadavků zadání (!)
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
- Vytvořený systém je vyřazen z provozu a dále se již nepoužívá.
Testování
- Testování probíhá ve všech fázích počínaje analýzou a poté při každé úpravě.
- V počátečních fázích (analýza, návrh) testujeme soulad jednotlivých částí dokumentace a návaznosti mezi jednotlivými fázemi.
- Ve fázích implementace a údržby už probíhá klasické testování kódu (black-box testy, uživatelské testování,...), ale i zde zároveň testujeme soulad s návrhovou dokumentací a požadavky analýzy, případně aktualizujeme dokumenty vzniklé v předchozích fázích, pokud se mezitím požadavky upravily.
- Testování proto neuvádíme jako samostatnou fázi. Jedná se o souvislý proces, který se prolíná všemi fázemi.
Profese
- Ne v každém týmu se vyskytují všechny role.
- Některé role může zastřešovat jedna osoba.
- Názvy a konkrétní náplň práce rolí se v jednotlivých firmách může lišit.
- Každý se může svými vlastnostmi více hodit do některých rolí a pro některé může mít předpokladů méně.
Informatika jako věda
- Informatik
- vědec
- zabývá se algoritmy (například: řadícími algoritmy,...)
- převody algoritmů, vztahy mezi nimi
- složitost algoritmů,...
- Dále dělíme na:
- Základní výzkum: snaží se objevit souvislosti mezi jevy, prozkoumat pravidla.
- Aplikovaný výzkum: aplikuje nejnovější vědecké poznatky na praktické úlohy s využitím v průmyslu a firmách.
Programování a věci úzce související
- 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
Další role v týmu
- Tester
- Po celou dobu projektu ověřuje správnost vytvořených materiálů.
- Projektový manažer
- Dohlíží na činnost týmu, kontroluje termíny.
- Komunikuje se zákazníkem a předává požadavky týmu.
- UX specialista
- Navrhuje uživatelské rozhraní projektu tak, aby bylo uživatelsky přívětivé.
- Grafik
- Vytváří vizuální podobu produktu.
- Kreativec
- Přináší nové pohledy na věc. Jeho úkolem primárně není řešit technické provedení.
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.