PB176 Základy kvality a správy kódu

Fakulta informatiky
jaro 2021
Rozsah
2/0/1. 3 kr. (plus ukončení). Ukončení: k.
Vyučující
RNDr. Lukáš Ručka (přednášející)
doc. RNDr. Eva Hladká, Ph.D. (pomocník)
Miroslav Jaroš (pomocník)
Garance
RNDr. Lukáš Ručka
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh
Út 2. 3. 8:00–9:50 Virtuální místnost, Út 9. 3. 8:00–9:50 Virtuální místnost, Út 16. 3. 8:00–9:50 Virtuální místnost, Út 23. 3. 8:00–9:50 Virtuální místnost, Út 30. 3. 8:00–9:50 Virtuální místnost, Út 6. 4. 8:00–9:50 Virtuální místnost, Út 13. 4. 8:00–9:50 Virtuální místnost, Út 20. 4. 8:00–9:50 Virtuální místnost, Út 27. 4. 8:00–9:50 A217, Út 4. 5. 8:00–9:50 A217, Út 11. 5. 8:00–9:50 A217, Út 18. 5. 8:00–9:50 A217, Út 25. 5. 8:00–9:50 A217
Předpoklady
PB006 Principy progr. jazyků a OOP || PB071 Principy nízkoúr. prog. || NOW( PB071 Principy nízkoúr. prog. )
U studentů se předpokládá předchozí zkušenost s programováním, nejméně na úrovni absolvování či uznání předmětu IB111. Dále je předpokládána základní znalost práce s příkazovou řádkou a systémy UNIXového typu na uživatelské úrovni, odpovídající souběžnému zapsání předmětu PV004. Dále se předpokládá souběžný zápis s některým z kurzů programovacích jazyků, odpovídající doporučenému průchodu studiem mateřského oboru.
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 7 mateřských oborů, zobrazit
Cíle předmětu
Cílem tohoto předmětu je naučit studenty verzovat kód s důrazem na vhodné užívání (tedy zejména drobné izolované změny, konzistentní používání historie), seznámit s výhodami a principy build systémů, průběžnou integrací a distribucí. Vtisknout důležitost konzistence a vhodného stylu psaní kódu, roli vhodných jmen. Vštěpit nutnost testování jako klíčového prvku kontroly kvality kódu, ve spojení s chybovými hlášeními.
Výstupy z učení
Po absolvování tohoto kurzu bude student: • Ovládat práci s verzovacím systémem GIT, včetně zásad vhodného užívání. • Zvládat základy a práci s build systémy větších projektů, včetně technologií CI. • Umět podat (kvalifikované) hlášení o chybě v software, včetně podrobné specifikace problému. • Navrhovat testy a testovací sady pro ověření fungování implementace.
Osnova
  • Verzovací systém GIT, koncepty commitů, větví, merge. Princip decentralizovaných repozitářů. • Build systémy, různost (a různorodost) platformem. • Testování, unit testy, reportování chyb, integrační testování a princip a praxe CI. • Kultura a styl kódu, dokumentace. • Distribuce software, kontejnerizace.
Literatura
  • Linux kernel coding style — The Linux Kernel documentation, 2016, The kernel development community. [online] https://www.kernel.org/doc/html/latest/process/coding-style.html
  • FEATHERS, Michael C. Working effectively with legacy code. Upper Saddle River, NJ: Prentice Hall, 2005. ISBN 0-13-117705-2. info
Výukové metody
Výuka probíhá formou teoretických přednášek, doplněných o semiautomatizované elearningové laboratoře. V závěru semestru pak zvané přednášky pokrývající příklady zajišťování kvality ve firemní praxi.
Metody hodnocení
Pro připuštění ke kolokviu musí student splnit alespoň 75% elearningových laboratorních bloků, odrážejících jednotlivá témata. Ve 2/3 semestru je pak umístěna práce na týmovém projektu, organizován formou celonoční hry s cílem navodit stresující situaci před deadline velkého projektu, které se student musí zúčastnit a přispět k fungování týmu v souladu s pravidly hry. Tato zkušenost je závěrem reflektována při kolokviu.
Informace učitele
Smyslem tohoto předmětu je získat přehled a povědomí o tom, jaké jsou (rámcové) možnosti jednotlivých oblastí, ale také konkrétní dovednosti při práci s ilustrovanými technologiemi. Cílem nicméně není pokrýt veškeré technologie a techniky, kterých je v uvedených oblastech nepřeberně, nýbrž dát základ pro další studium. Krom zmíněného gitu můžete očekávat i práci s fakultním gitlabem a dockerem.
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Předmět je zařazen také v obdobích jaro 2022, jaro 2023, jaro 2024, jaro 2025.