Tvorba software

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Profese: Tester po celou dobu!)
(Přidán požadavek na ověřitelnost bodů zadání.)
 
(Není zobrazeno 6 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)
+
**Výsledek: Algoritmus
+
*Programování / kódování
+
**Profese: Kodér, tester
+
**Výsledek: Zdrojový kód
+
  
  
== 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ů.
 
  
 
== Fáze projektu ==
 
== Fáze projektu ==
=== Formulace zadání ===
+
 
*vyřešte, které úlohy máte řešit
+
=== Formulace slovního zadání ===
 +
* 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 ===
 
=== Analýza ===
*Charakteristika:
+
; Charakteristika:
**Vědní disciplína: Softwarové inženýrství
+
* Vědní disciplína: Softwarové inženýrství
**Profese: analytik + tester
+
* Profese: analytik + tester
**Výsledek: zadání
+
* Výsledek: formalizované zadání (teoreticky ideálně až formální popis [[Algoritmus#Problém|problému]])
*Jaká data potřebujeme?
+
; Řešíme:
*Co s nimi provádíme?
+
* Jaká data potřebujeme?
*řešíme věci a akce z reálného světa
+
* Jaké operace nad daty provádíme?
**tomu odpovídá i terminologie
+
* 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 ===
 
=== Návrh ===
 
*Charakteristika:
 
*Charakteristika:
 
**Vědní disciplína: Softwarové inženýrství + Informatika
 
**Vědní disciplína: Softwarové inženýrství + Informatika
**Profese:
+
**Profese: analytik + kodér + tester
***typicky analytik + kodér + tester
+
***může být dále rozděleno.
+
 
**Výsledek: Návrh struktury tříd + algoritmus
 
**Výsledek: Návrh struktury tříd + algoritmus
*Řešíme třídy a metody nutné pro běh programu
+
* Řešíme:
**okno
+
** 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.
**tlačítka
+
** Dále jaké pomocné třídy je potřeba zavést pro realizaci programu (okna, tlačítka, posluchače,...).
**posluchači
+
** [[Algoritmus]] (obecný postup) řešení jednotlivých dílčích úkolů.
*Řešíme algoritmus, který budeme potřebovat.
+
* Podle typu úlohy převládá svou složitostí buď:
*Podle typu úlohy převládá jedno nebo druhé svou složitostí.
+
** 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 ===
 
=== Implementace ===
 
*Charakteristika:
 
*Charakteristika:
Řádka 64: Řá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&nbsp;provozu a&nbsp;dále se již nepoužívá.
 +
 +
 +
 +
== Profese ==
 +
* Ne v&nbsp;každém týmu se vyskytují všechny role.
 +
* Některé role může zastřešovat jedna osoba.
 +
* Názvy a&nbsp;konkrétní náplň práce rolí se v&nbsp;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&nbsp;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&nbsp;využitím v&nbsp;průmyslu a&nbsp;firmách.
 +
 +
=== Programování a&nbsp;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&nbsp; 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&nbsp;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í.
  
  
Řádka 78: Řádka 150:
 
*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 88: Řádka 161:
 
**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 21. 5. 2024, 10:12



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


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