Předmět: Průběžný vývoj a dodávky software

» Seznam fakult » FAV » KIV
Název předmětu Průběžný vývoj a dodávky software
Kód předmětu KIV/CICD
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Magisterský
Rok studia nespecifikován
Semestr Letní
Počet ECTS kreditů 4
Vyučovací jazyk Čeština
Statut předmětu nespecifikováno
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Beneš Vojtěch, Ing. Ph.D.
Obsah předmětu
Přehled témat přednášek (nejedná se o rozpis do výukových týdnů): 1) Úvod, důvody zavádění DevOps metodologie, její cíle, fáze a metriky. Průběžná integrace a nasazování změn (CI/CD), princip sestavovací linky, definice vývojového, testovacího, předprodukčního a produkčního prostředí. 2) Nasazování software a zajišťování jeho skladebních komponent. Teorie a strategie aktualizace software. Základní typy softwarových artefaktů, jejich distribuce a údržba vzájemných závislostí. Úvod do kontejnerové architektury. 3) Kontejnerová architektura, její principy a přínos. Úvod do sestavování, distribuce a nasazování kontejnerů v sestavovací lince. 4) Přístup k infrastruktuře jako ke kódu. Základní principy, verzování, nasazování změn. Dynamické aspekty infrastruktury a automatické škálování. CI/CD infrastruktury. 5) Monitorování software, trasování a audit událostí. Sběr metrik, významné provozní metriky softwarových systémů. Agregace logů, jejich archivace a retenční strategie. Využití metrik při provozu, návrhu a vývoji software. Srozumitelnost a správná interpretace nasbíraných metrik. Indikátory úrovně služeb a jejich vhodná volba. Nakládání s citlivými údaji při logování. 6) Bezpečnostní aspekty při vývoji a provozu software. Návrh bezpečného software, statická analýza bezpečnosti software, penetrační testy. Analýza složení software, soupis použitých komponent, bezpečnost software třetích stran a dodržení licenčních ujednání software třetích stran v rámci konkrétního způsobu distribuce software. 7) CI/CD v kontextu databázových systémů. Problém migrace databázového schématu a dat, specifika migrace tradičních relačních a noSQL databází. 8) Aplikace technik průběžného vývoje a provozu v oblasti mobilních aplikací a IoT zařízení. 9) Kontinuální zpětná vazba. Realizace v jednotlivých fázích sestavovací linky, automatické notifikace o výpadcích a nežádoucích trendech parametrů běžícího software. Postupy řešení havárií a jejich protokolování. Systémy pro sběr a evidenci chyb a nových požadavků. Dle aktuálních možností budou také zařazena 1 hostovaná přednáška na téma aplikace kontinuální integrace a nasazování změn.

Studijní aktivity a metody výuky
  • Kontaktní výuka - 48 hodin za semestr
  • Praktická výuka [vyjádření počtem hodin] - 32 hodin za semestr
  • Příprava na zkoušku [10-60] - 24 hodin za semestr
Předpoklady
Odborné znalosti
Zvládnutí alespoň jednoho vyššího programovacího jazyka na pokročilé úrovni.
Schopnost navrhnout a implementovat aplikaci malého až středního rozsahu na úrovni předmětů KIV/SAR a KIV/PIA.
Znalost základů TCP/IP sítí a prostředí OS Unix/Linux na úrovni předmětů KIV/UPS a KIV/ZOS.
Znalost vyšších komunikačních protokolů na úrovni etablovaných aplikačních rozhraní na úrovni předmětu KIV/PIA.
Znalost základních principů agilního vývoje software na úrovni předmětu KIV/ZSWI.
Odborné dovednosti
Zvládání alespoň jednoho běžného nástroje pro správu verzí na úrovni předmětu KIV/ZSWI.
Obecné znalosti z oblasti správy procesů a zdrojů OS Unix/Linux na úrovni předmětu KIV/ZOS.
Programovat a ladit programy pod operačním systémem typu Unix/Linux.
Obecné způsobilosti
mgr. studium: dle rámcového zadání a přidělených zdrojů koordinují činnost týmu, nesou odpovědnost za jeho výsledky,
mgr. studium: srozumitelně a přesvědčivě sdělují odborníkům i laikům informace o povaze odborných problémů a vlastním názoru na jejich řešení,
Výsledky učení
Odborné znalosti
Schopnost popsat a vysvětlit model kooperativního vývoje, automatizovaného nasazení, bezpečného a spolehlivého provozu aplikace.
Schopnost rozumět základním pojmům a problémům kooperativního vývoje jako jsou technický dluh, regrese, problém důvěry v kvalitu svobodného software a software třetích stran.
Schopnost rozumět funkcím a významu jednotlivých etap vývoje software a být schopen jejich realizace pomocí software třetích stran nebo vlastními prostředky.
Znalost strategií pro nasazení a aktualizaci software.
Znalost přístupů k distribuci software a jeho částí.
Základní znalost technologií kontejnerů.
Přehled o možnostech monitoringu, metrikách provozovaného software a jejich uplatnění při diagnostice a sledování trendů provozních parametrů software.
Odborné dovednosti
Praktická zkušenost s alespoň jedním nástrojem pro automatizaci správy infrastruktury a jejího nasazení.
Praktická zkušenost s alespoň jedním nástrojem pro tvorbu sestavovací linky software.
Praktická zkušenost s CI/CD modelem a návrhem sestavovací linky.
Praktická zkušenost s návrhem a implementací modelu kooperativního vývoje.
Obecné způsobilosti
mgr. studium: používají své odborné znalosti, odborné dovednosti a obecné způsobilosti alespoň v jednom cizím jazyce,
Vyučovací metody
Odborné znalosti
Přednáška s diskusí,
Skupinová konzultace,
Samostudium,
Odborné dovednosti
Cvičení (praktické činnosti),
Demonstrace dovedností,
Skupinová konzultace,
Obecné způsobilosti
Přednáška s aktivizací studentů,
Hodnotící metody
Odborné znalosti
Písemná zkouška,
Průběžné hodnocení,
Odborné dovednosti
Demonstrace dovedností (praktická činnost),
Průběžné hodnocení,
Obecné způsobilosti
Písemná zkouška,
Doporučená literatura
  • Gonzales, David. Implementing Modern DevOps. Packt Publishing, 2017. ISBN 978-1-78646-687-7.
  • Hsu, Tony. Hands-On Security in DevOps. Packt Publishing, 2019. ISBN 978-1-78899-550-4.
  • Krief, Mikael. Learning DevOps. Packt Publishing, 2019. ISBN 978-1-83864-273-0.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr