Metodiky vývoje

MVOP4 WBF

Bc. Matěj Cajthaml ©

Smíchovská střední průmyslová
škola a gymnázium

icon

Projekty

  • nejen správa projektu jako takového!
  • řešíme:
    • analýzu
    • návrh
    • implementaci
    • testování
  • správa požadavků a problémů (issues)
  • správa souborů (git)

Analýza

  • proces před vývojem
  • zjištění, co je cílem systému
  • zjištění požadavků, které musí být splněny
  • zjištění důležitých funkcí a částí systému
  • často celá pozice v týmu — analytik
  • často vývojáři nejsou zapojeni

Návrh

  • architektura — co s čím bude komunikovat
  • vybrání technologií
  • výběr uložení dat
  • popis komponent, integrace

Architektura

  • logická:
    • určení rozdělení aplikace
    • určení vrstvev (závislosti, MVC, middleware, ...)
  • fyzická:
    • určení rozdělení na servery
    • např.: tenký klient, tlustý klient, cluster

Cílem architektury je vytvořit srozumitelný, rozšiřitelný a udržovatelný systém.

Implementace

  • práce — to co jsme dělali doposud
  • rozdělování tříd a metod
  • omezit opakování, cíl je udržitelnost
  • používat návrhové vzory
Špagetový kód

Metodiky vývoje

Metodika vývoje

  • způsob vývoje
  • každý projekt je specifický
  • nutný standard postupu — i kdyby se měnil
  • opakovatelnost

Jaké výhody a nevýhody poskytuje používání nějaké metodiky vývoje?

Proč chceme mít opakovatelnost v metodice vývoje?

Klasické metodiky vývoje

  • propracované
  • cílí na dokumentaci
  • často zbytečná práce pro malé projekty
  • waterfall

  • Unified Process, Modern Structures Analysis, ...
Waterfall

Co se stane v metodice waterfall, když se změní požadavky?

Agilní metodiky vývoje

  • flexibilní
  • cílí na výsledek
  • co nejrychleji dostat produkt do první verze

  • SCRUM, Extrémní programování: Test Driven Development, ...

SCRUM

  • iterativní
  • agilní vývoj
  • vývoj v iteracích
  • spolupracující zákazník
SCRUM

SCRUM

  • Scrum Team
  • Product Owner
  • Scrum Master
  • backlogy:
    • product backlog (požadavky)
    • sprint backlog (iterace)

Sprint

  • iterace
  • délka 1-4 týdnů
  • plánovací schůzka
  • denní stand-up — co se stalo, jak to bude dál, ...
  • sprint review
  • sprint retrospective

Problém SCRUM jsou velké týmy. Proč?

Testování

Testování

  • automatické testování
  • testování lidmi

Jaké jsou cíle testování?

Automatické testování nemůže prokázat, že je software bez chyb. Jakto?

Typy testů

  • jednotkové
  • komponentové
  • integrační
  • systémové

Typy testů dle způsobu provedení

  • statické
  • dynamické

Typy testů dle struktury

  • white box
  • black box
  • gray box

Jednotkové testy

  • testuje se pouze jedna třída
  • white box
  • různé knihovny: Jest, Mocha, ...
  • zjistí, že se třída chová jinak, než by měla

Fáze testování

  • začátek
  • před testem
  • po testu
  • konec

Velmi často se používají asserts. Co to je?

Mock

Práce

Zjistěte, co jsou to tzv. Mock objekty a jak se používají. Proč a kdy se používají?

Komponentové testy

  • testuje se jedna komponenta - více tříd
  • typicky white box
  • zaměření na komunikaci mezi třídami

Integrační testy

  • testuje se více komponent
  • simulace reálného prostředí
  • připojení k DB, kontejnery, ...

  • black box: komunikace s jinými dodavateli, knihovnami
  • white box: komunikace s vlastními komponentami

Integrační testy mají problém s návratem do stavu před testem. Jak to řešit?

Systémové testy

  • testuje se celý systém
  • testuje se chování systému
  • testuje se v reálném prostředí
  • testovací scénáře

Statická analýza

  • analyzují se zdrojové kódy
  • kvalita kódu
  • kvalita dokumentace
  • detekce netestovaných částí kódu
  • detekce mrtvých částí kódu, duplicit, ...

Jaké jsou nevýhody a výhody automatických testů?

Testování lidmi ve zkratce

  • seznam nových/opravených funkcí
  • testovací scénáře
  • zápis problémů
  • postup reprodukce

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/