ÚVOD / Studijní obory / Sylaby / Základy vývoje software

Základy vývoje software

Cílem předmětu je seznámit studenty a doplnit jim základní znalosti z softwarového vývoje. Předmět se bude zaměřovat na základní pět oblasti: softwarový vývoj, analýza a návrh sw, testování, databáze, programování. V průběhu předmětu budou studenti řešit semestrální práci, v rámci které si vyzkouší návrh aplikace a implementaci vybraných funkčností.

Sylabus předmětu

Softwarový vývoj
1. Základní oblasti podnikového ICT - zasazení ICT do prostředí podniku
2. Základní požadavky na softwarové produkty
3. Metodika vývoje software - základní poslání, co je metodia a metodologie, historický vývoj metodik
4. Přehled současných metodik - základní představení zástupců tradičních a agilních metodik
5. Fáze a disciplíny vývoje software - vysvětlení, jaké časové a věcné dimenze má vývojový projekt, podrobné seznámení základních disciplín (správa požadavků, analýza a návrh, implementace, testování, konfigurační management, nasazení, řízení projektu)
6. Provoz a podpora informačních systémů - představit základní koncepty provozu a podpory, úrovně podpory, důvody oddělení vývoje od provozu, cloud vs on-premise řešení, SLA
7. Základy softwarové architektury – představení základních konceptů softwarové architektury s důrazem na koncept 3vrstvé architektury a integrace systémů
Analýza a návrh
8. Základní principy objektově orientovaného přístupu a modelování tříd v UML - Vysvětlení modelovacího jazyka UML. Popis pojmu technický projekt, co je cílem TP, co všechno obsahuje, ukázka existujícího TP. Představení jednotlivých typů UML diagramů a zasazení do kontextu procesu vývoje software (RUP).
9. Aktivity diagram - Vysvětlení notace, jednotlivých elementů a použití diagramu.
10. Use Case diagram - Vysvětlení notace, jednotlivých elementů a použití diagramu, význam a styl zápisu případu užití.
11. Třídní diagram - Vysvětlení notace, jednotlivých elementů a použití diagramu.
12. Analytické vzory – Přehled často používaných analytických vzorů, příklady jejich použití.
Testování
13. Co je testování SW - co je testování SW, co je zajišťování kvality, co je SW chyba, rozdíl mezi práci testera a QA, přesnost a správnost / verifikace a validace, axiomy testování.
14. Plánování testů - příprava testovacího plánu, harmonoframu testování a test strategie.
15. Příprava testů - Testovací požadavky, příprava testovacích případů, skriptů a scénářů.
16. Provedení testů - Spuštění testu, testovací iterace, nasazování změn.
17. Vyhodnocení testů – Hlášení problému, testovací log, defect report, vyhodnocení testů, životní cyklus chyby.
Databáze
18. Tvorba modelů - Konceptuální model dat, relační model dat, fyzický model dat. Převod konceptuálního modelu na relační model dat. Převod relačního modelu na fyzický model dat. E R modelování a diagramy (entita, atributy, klíč, vztah, kardinalita vztahu), rozšíření E R modelu (EER), jazyk UML (class diagramy).  
19. Relační model - Základní pojmy – relace (tabulka), záznam (record), položka (field), primární klíč, cizí klíč. Deklarace a realizace integritních omezení. Normální formy, atomicita, funkční závislost, částečná funkční závislost, tranzitivní závislost, proces normalizace.
20. SQL – základy dotazování - Tato lekce představuje úvod k dotazování v jazyce SQL a použití příkazu SELECT. Nejprve budou vysvětleny základní principy a použití tohoto příkazu, další informace studenti získají v následujících lekcích.
21. SQL – dotazy nad více tabulkami - Pokračování výkladu základů dotazování v jazyce SQL a příkazu SELECT. Cílem této lekce je seznámení s vytvářením dotazů nad více tabulkami, vysvětlení pojmů vnitřní spojení, vnější spojení, polospojení (levé/pravé), apod.
22. Představení nejužívanějších RDBMS, směry ve vývoji DBMS - Cílem této závěrečné lekce je seznámit studenty s aktuálně nejpoužívanějšími relačními a NoSQL databázovými systémy.
Programování
23. Úvod do programování, historie a úvod do návrhu algoritmů - Co je to programování, v čem spočívá práce programátora, historie, typy programovacích jazyků, co je to algoritmus, příkazová řádka, vývojového prostředí, reprezentace dat v počítači.
24. Základní práce s proměnnými a datovými typy, podmíněné zpracování kódu - co je proměnná, typ proměnné a související operace, řetězce, převody, základní načítání vstupu, výrazy, podmínky
25. Úvod do cyklů a datová struktura pole - iterace a různé typy cyklů, iterace s iterační proměnou a bez ní, definice pole a iterace jeho prvky, iterace prvky řetězce
26. Pokročilejší práce s cykly, vnořování cyklů - vnoření cyklů, odpovídající vnořená pole a iterace takovou strukturou, ovlivňování iterací speciálními příklady a obecnost cyklu
27. Základní algoritmy nad kontejnerovými typy - datové struktury asociativní pole a odpovídající iterace a množina, vnořené kontejnery, základní příklady nad kontejnery
28. Řízení běhu programu - volání metod, větvení, cykly
29. Práce s kolekcemi - pole a slovníky, iterace, operace nad kolekcemi
30. Strukturované programování -  definice metod, předávání parametrů, lokální proměnné, navratová hodnota
31. Objektově orientované programování - vytváření vlastních tříd, instanční proměnné, konstruktor, atributy, dědičnost
32. Výjimky a regulární výrazy - ošetřování výjimek, použití regularní výrazů pro kontrolu formátu a nahrazování textu
33. Práce se soubory - čtení a zápis do souboru, formát YAML
34. Formát pro výměnu dat XML - principy formátu XML, načítání XML, vytváření a ukládání XML
35. Unit testy a dokumentace - testování kódu v NetBeans, psaní testů pomocí TestUnit, zásady dokumentace kódu

Organizace výuky

Prezenční forma

Výuka probíhá ve 12 přednáškách po 1,5 hodině a 12 seminářích po 3 hodinách.

Doporučená literatura

Základní učební texty a pomůcky

  • KEOGH, James Edward a Mario GIANNINI. OOP bez předchozích znalostí: průvodce pro samouky. Brno: Computer Press, 2006. ISBN 80-251-0973-9. 
  • ARLOW, Jim a Ila NEUSTADT. UML 2 a unifikovaný proces vývoje aplikací: objektově orientovaná analýza a návrh prakticky. 2., aktualiz. a dopl. vyd. Brno: Computer Press, 2007. ISBN 9788025115039. 
  • ROUDENSKÝ, Petr a Anna HAVLÍČKOVÁ. Řízení kvality softwaru: průvodce testováním. Brno: Computer Press, 2013. ISBN 978-80-251-3816-8. 
  • HERNANDEZ, Michael J. Database design for mere mortals: a hands-on guide to relational database design. 2nd ed. Boston: Addison-Wesley, c2003. ISBN 9780201752847. 
  • THOMAS, David, Chad. FOWLER a Andrew HUNT. Programming Ruby: the pragmatic programmers' guide. 2nd ed. Raleigh, N.C.: Pragmatic Bookshelf, c2005. ISBN 9780974514055.
  • LARMAN, Craig. Applying UML and patterns: an introduction to object-oriented analysis and design and iterative development. 3rd ed. Upper Saddle River, N.J.: Prentice Hall PTR, c2005. ISBN 9780131489066..
  • HERNANDEZ, Michael J. a John VIESCAS. Myslíme v jazyku SQL: tvorba dotazů. Praha: Grada, 2004. Knihovna programátora (Grada). ISBN 80-247-0899-X.