Tvorba software

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Programování zahrnuje postupy: Transformováno a sladěno s kapitolkou Algoritmus-> Programování x algoritmizace.)
(Doplněn komentář k testování.)
 
(Není zobrazeno 5 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í]]
 
+
<!--
== 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.
+
 
+
 
+
 
== Tvorba SW zahrnuje postupy ==
 
== Tvorba SW zahrnuje postupy ==
 
; Analýza
 
; Analýza
 
* Profese: analytik
 
* Profese: analytik
 
* Vstup: slovní popis zadání; myšlenka, co je třeba udělat
 
* Vstup: slovní popis zadání; myšlenka, co je třeba udělat
* Výsledek: formálně popsaný (matematicky přesný) popis problému.
+
* 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.
 
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.  
 
Vstupem je slovní zadání, výstupem je matematicky přesný popis problému.  
Řádka 26: Řádka 22:
  
 
Viz také: [[Algoritmus]].
 
Viz také: [[Algoritmus]].
 +
-->
 +
  
== 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 74: Řá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á.
 +
 +
 +
== 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 ==
 +
* 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 88: Řádka 156:
 
*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 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