ÚVOD / Studijní obory / Sylaby / Základy softwarového vývoje

Základy softwarového vývoje

Cílem předmětu základy SW vývoje je seznámit studenty s uceleným základem znalostí, který bude v navazujících předmětech dále rozvíjen. Tento předmět má tři stěžejní bloky - programování v jazyce JavaScript, softwarový vývoj a softwarová architektura.
Programování:
Cílem tohoto bloku je naučit studenty vhodným návykům při návrhu základních jednoduchých programovacích konstrukcí bez zaměření na složitější technologie probírané v navazujících předmětech. Návrhy řešení jsou probírány často hlavně z koncepčního hlediska, nicméně základním programovacím jazykem je JavaScript používaný v navazujících předmětech. Náplní předmětu jsou mnohé ukázky programovacích technik pro základní programovací situace. Studenti se rovněž seznámí s metodou Jacksonova strukturovaného programování.
Softwarový vývoj:
Cílem tohoto bloku je získání kontextové znalosti v oblasti procesů a organizace vývoje softwaru. Dále se studenti seznámí se základními obchodními modely ICT. Výuka je orientována především na problémy, které musí řešit vývojový tým při realizaci projektu a také na obchodní pohled ICT jako průmyslového odvětví. Studenti se rovněž seznámí s používanými metodikami vývoje software a rozdíly mezi tradičním a agilním přístupem k vývoji software.
Softwarová architektura:
Cílem bloku je poskytnout studentům základní přehled v oblasti softwarové architektury, jejího historického vývoje a současných moderních trendů. Seznámí se se základními principy architektury cloudových aplikací a základní terminologií.

Sylabus předmětu

Softwarový vývoj:
  1. Úvod do vývoje SW - co je software, proces vývoje SW, proč je nezbytné se jím zabývat, základní požadavky na SW produkty, znalosti při vývoji SW.
  2. Základní práce vývojáře - typická pracovní náplň vývojáře, seznámení s "best practices" vývojáře, práce se zdrojovými soubory a nástroji pro sdílení a správu zdrojových kódů, git flow, seznámení s používanými nástroji (vývojové prostředí, správa zdrojových kódů).
  3. Metodiky vývoje SW - jak se řídí projekt - co je metodika a metodologie, co jí obvykle tvoří, jak se ve společnosti využívá. Historický kontext pohledu na metodiku.
  4. Tradiční metodiky vývoje SW - základní představení tradičních metodik vývoje SW, role a odpovědnosti, výhody a nevýhody.
  5. Agilní metodiky vývoje SW- základní představení agilních metodik vývoje SW, role a odpovědnosti, výhody a nevýhody.
  6. Analýza a návrh - co obnáší komunikace se zákazníkem, typy požadavků a způsob jejich zachycení, analýza požadavků a návrh funkčností, role podílející se na správě požadavků, analýze a návrhu, princip případů užití, použití CASE nástrojů.
  7. Testování a dokumentace - principy verifikace a validace, předmět testování, typy dokumentace, role podílející se na testování SW a tvorbě dokumentace, nástroje na podporu tvorby dokumentace a testování SW.
  8. Jacksonovo stukturované programování - principy Jacksonova strukturovaného programování, selekce, sekvence, iterace, notace, datové diagramy.
  9. Základní oblasti podnikového IT - role IT v podniku, dekompozice IT, základní procesy.
  10. Dělení IS podle jejich využití - základní typy informačních systémů dle jejich zaměření či cíle (CRM, ERP, CMS, DMS, ECM, BI, primární systém, a další).
  11. Dělení IS podle formy dodání - základní typy informačních systémů dle jejich formy dodání (on-premise vs XaaS).
  12. Integrace a vývoj IS - role procesu integrace a vývoje IS v podniku, části a fáze vývoje software, zadání IS, etapizace, role a odpovědnosti.
  13. Provoz a podpora IS - role procesu provozu, primární a sekundární podpory IS, dokumentace, pravidelné činnosti, SLA, role a odpovědnosti.
  14. Ekonomické aspekty IT v podniku - nástroje pro hodnocení návratnosti investice do IS, business case, způsoby vyčíslení přínosů investice do IS.
 
Programování:
  1. Úvod do programování a algoritmizace - co je to programování, historie, typy programovacích jazyků, co je to algoritmus, příkazová řádka, vývojové prostředí.
  2. Reprezentace čísel v počítači - reprezentace čísel v počítači a s tím spojené problémy a úskalí.
  3. JavaScript - Základní principy a syntaxe JavaScriptu. ECMAScript a jeho verze. Asynchronicita JavaScriptu. 
  4. NodeJS a uuAppServer - seznámení se s běhovým prostředí NodeJS, základní orientace v workspace uuAppServer NodeJS.
  5. Základní práce s proměnnými a datovými typy - co je proměnná, typ proměnné a související operace, řetězce, převody.
  6. Podmíněné zpracování kódu - základní a pokročilá práce s podmínkami.
  7. Cykly - iterace a různé typy cyklů, iterace s iterační proměnou a bez ní, vnoření cyklů, ovlivňování terací speciálními příklady a obecnost cyklu.
  8. Datová struktura pole - definice pole a iterace jeho prvky, iterace prvky řetězce, odpovídající vnořená pole a iterace takovou strukturou.
  9. 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.
  10. Úvod do funkcionálního programování - funkce, princip DRY, parametry funce, návratová hodnota, rozsah platnosti proměnných.
Softwarová architektura:
  1. Úvod do architektury IS - historický vývoj, vrstvy architektury, softwarová architektura, typy klientů, 3-vrstvá architektura, typické funkčností aplikačních serverů, referenční architektura uuApp
  2. Principy fungování webových aplikací a základní terminologie - základy síťové komunikace, webová stránka vs. webová aplikace, single page application, typy webových aplikací.

Doporučená literatura

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

  1. BROWN E.: Learning JavaScript: JavaScript Essentials for Modern Application Development 3rd Edition, O'Reilly Media, 2016.
  2. KROLL, P., KRUCHTEN, P.: The Rational Unified Process Made Easy: A Practitioner's Guide to Rational Unified Process, Addison-Wesley Professional, 2003.

Doplňující a rozšiřující učební texty

  1. KOVÁŘ V. et al.: uuApp Framework. Unicorn, 2018. ISBN 978-80-87349-23-6
  2. KOVÁŘ V. et al.: Dokumentace uuAppServer - NodeJS. Unicorn, 2018. ISBN 978-80-87349-20-5
  3. KOVÁŘ V. et al.: Dokumentace knihovny uu5g04. Unicorn, 2018. ISBN 978-80-87349-24-3
  4. DUDMAN K.: JSP for Practical Program Design. Springer, 2013. ISBN 0387915044
  5. STOBER, T., HANSMANN, U.: Agile Software Development: Best Practices for Large Software Development Projects. Springer, 2009.
  6. APPLEGATE L., AUSTIN R., SOULE D.: Corporate Information Strategy And Management: Text And Cases. McGraw-Hill/Irwin; 8 edition, 2008
  7. GALA, L., POUR, J., TOMAN, P.: Podniková informatika, Praha, Grada Publishing, 2006