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

Fakulta informatiky
jaro 2023
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)
Bc. Ondřej Hrdlička (pomocník)
Bc. Martin Janů (pomocník)
Mgr. Martin Piatka (pomocník)
Dominik Seďa (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
St 15. 2. až St 10. 5. St 8:00–9:50 D3
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
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 2021, jaro 2022, jaro 2024, jaro 2025.