Tvorba software

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Vytvoření stránky)
 
(Doplněn komentář k testování.)
 
(Není zobrazeno 9 mezilehlých verzí od 1 uživatele.)
Řá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 ==
 +
; Analýza
 +
* Profese: analytik
 +
* Vstup: slovní popis zadání; myšlenka, co je třeba udělat
 +
* Výsledek: [[Algoritmus#Problém|problém]] &mdash; formálně popsaný (matematicky přesný) popis zadání.
 +
Slovní popis zadání formalizujeme tak, abychom získali problém.
 +
Vstupem je slovní zadání, výstupem je matematicky přesný popis problému.
  
== Softwarové inženýrství ==
+
; Algoritmizace
*Vědecká disciplína, zabývá se metodikou a postupy efektivní práce a spolupráce v týmu při tvorbě SW.
+
* Profese: typicky analytik + kodér (může být dále rozděleno)
 +
* Vstup: Popis problému
 +
* Výsledek: [[Algoritmus|algoritmus (obecný postup řešení)]]
 +
Návrh/nalezení algoritmu pro daný problém.
  
 +
; Programování/kódování
 +
* Profese: Kodér, tester
 +
* Vstup: Popis algoritmu.
 +
* Výsledek: Zdrojový kód.
 +
Zápis algoritmu v konkrétním programovacím jazyce.
  
== Programování zahrnuje postupy ==
+
Viz také: [[Algoritmus]].
* Analýza
+
-->
**Profese: Analytik
+
 
**Výsledek: zadání
+
 
*Algoritmizace
+
 
**Profese: typicky analytik + kodér (může být dále rozděleno)
+
== Fáze projektu ==
**Výsledek: Algoritmus
+
 
*Programování / kódování
+
=== Formulace slovního zadání ===
**Profese: Kodér, tester
+
* Slovní formulace toho, co se má vyřešit.
 +
* Rozsah několika vět až odstavců.
 +
* Z&nbsp;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&nbsp;jakými dalšími navazujícími systémy má interagovat, jací uživatelé s&nbsp;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 [[Algoritmus#Problém|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&nbsp;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&nbsp;datech položky, se kterými nepracuje žádná operace?
 +
** Mají všechny operace potřebná data v&nbsp;datech?
 +
** Odpovídá popis operací charakteru zpracovávaných dat (datový slovník)?
 +
** Odpovídá popis dat formátu, v&nbsp;jakém nám budou navazující systémy poskytovat data?
 +
<div class="Poznamka">
 +
V&nbsp;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 ===
 +
*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 &mdash; 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 &mdash; 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
 
**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&nbsp;provozu a&nbsp;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&nbsp;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&nbsp;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 ==
*Informatik
+
* Ne v&nbsp;každém týmu se vyskytují všechny role.
**vědec
+
* Některé role může zastřešovat jedna osoba.
**zabývá se algoritmy (například: řadícími algoritmy,...)
+
* Názvy a&nbsp;konkrétní náplň práce rolí se v&nbsp;jednotlivých firmách může lišit.
**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
+
  
 +
* Každý se může svými vlastnostmi více hodit do některých rolí a&nbsp;pro některé může mít předpokladů méně.
  
== Fáze projektu ==
+
=== Informatika jako věda ===
*Formulace zadání
+
; Informatik
**vyřešte, které úlohy máte řešit
+
*vědec
*Analýza
+
*zabývá se algoritmy (například: řadícími algoritmy,...)
**Charakteristika:
+
*převody algoritmů, vztahy mezi nimi
***Vědní disciplína: Softwarové inženýrství
+
*složitost algoritmů,...
***Profese: Analytik
+
* Dále dělíme na:
***Výsledek: zadání
+
** Základní výzkum: snaží se objevit souvislosti mezi jevy, prozkoumat pravidla.
**Jaká data potřebujeme?
+
** Aplikovaný výzkum: aplikuje nejnovější vědecké poznatky na praktické úlohy s&nbsp;využitím v&nbsp;průmyslu a&nbsp;firmách.
**Co s nimi provádíme?
+
 
**řešíme věci a akce z reálného světa
+
=== Programování a&nbsp;věci úzce související ===
***tomu odpovídá i terminologie
+
;Softwarový inženýr (vývojář) ~ analytik
*Návrh
+
* Provádí analýzu úlohy.
**Charakteristika:
+
* Komunikuje se zákazníkem.
***Vědní disciplína: Softwarové inženýrství + Informatika
+
* Řídí spolupráci v týmu
***Profese:
+
 
****typicky analytik + kodér
+
; Kodér ~ programátor
****může být dále rozděleno.
+
* aplikuje obecné algoritmy na konkrétní úlohu
***Výsledek: Návrh struktury tříd + algoritmus
+
* zapisuje v programovacím jazyce
**Řešíme třídy a metody nutné pro běh programu
+
 
***okno
+
=== Další role v&nbsp; týmu ===
***tlačítka
+
; Tester
***posluchači
+
* Po '''celou''' dobu projektu ověřuje správnost vytvořených materiálů.
**Řešíme algoritmus, který budeme potřebovat.
+
 
**Podle typu úlohy převládá jedno nebo druhé svou složitostí.
+
; Projektový manažer
*Implementace
+
* Dohlíží na činnost týmu, kontroluje termíny.
**Charakteristika:
+
* Komunikuje se zákazníkem a&nbsp;předává požadavky týmu.
***Vědní disciplína: Programování
+
 
***Profese: Kodér
+
; UX specialista
***Výsledek: Zdrojový kód
+
* Navrhuje uživatelské rozhraní projektu tak, aby bylo uživatelsky přívětivé.
**Píšeme kód, který realizuje algoritmus.
+
 
*Nasazení
+
; Grafik
**zaškolíme obsluhu
+
* Vytváří vizuální podobu produktu.
*Údržba
+
 
**aktualizace
+
; Kreativec
**úpravy
+
* Přináší nové pohledy na věc. Jeho úkolem primárně není řešit technické provedení.
*Vyřazení z provozu
+
 
Proč začínat na papíře/obrázku?
+
 
 +
== Proč začínat na papíře/obrázku? ==
 
*Složité věci řešíme první!
 
*Složité věci řešíme první!
 
*Vymyslet strukturu tříd je složité.
 
*Vymyslet strukturu tříd je složité.
*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.
  
  
Řádka 86: Řádka 167:
 
**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.

Aktuální verze z 18. 12. 2024, 08:36



Obsah

Fáze projektu

Formulace slovního zadání

Analýza

Charakteristika
Řešíme
Testujeme

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

Implementace

Nasazení

Údržba

Vyřazení z provozu


Testování


Profese

Informatika jako věda

Informatik

Programování a věci úzce související

Softwarový inženýr (vývojář) ~ analytik
Kodér ~ programátor

Další role v  týmu

Tester
Projektový manažer
UX specialista
Grafik
Kreativec


Proč začínat na papíře/obrázku?


Pojmy

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje