O předmětu
Systémová analýza a návrh se zabývá procesem vývoje informačních systémů — od požadavků přes analýzu až po návrh. Předmět propojuje technické znalosti s pochopením businessu.
Fáze vývoje IS
SDLC (Software Development Lifecycle):
- Plánování — rozsah, feasibility, harmonogram
- Analýza — co systém dělá (co POTŘEBUJE)
- Návrh — jak to bude fungovat (jak to POSTAVÍME)
- Implementace — programování
- Testování — ověření funkčnosti
- Nasazení — spuštění v produkci
- Údržba — opravy, aktualizace
Metodiky vývoje
Waterfall (Vodopád):
- Sekvenční fáze, každá musí být hotova před další
- Výhody: přesná dokumentace, jasné milníky
- Nevýhody: špatná reakce na změny, zákazník vidí výsledek pozdě
Agile (SCRUM): - Iterativní a inkrementální vývoj
- Sprint = 2-4 týdny, na konci funkční přírůstek
- Role: Product Owner, Scrum Master, Development Team
- Artefakty: Product Backlog, Sprint Backlog, Increment
- Události: Sprint Planning, Daily Standup, Sprint Review, Retrospektiva
RUP (Rational Unified Process): - Fáze: Inception → Elaboration → Construction → Transition
- Use-case driven, architecture-centric
UML diagramy
Use Case Diagram:
- Zobrazuje funkce systému z pohledu uživatele
- Elementy: Actor (uživatel role), Use Case (elipsa), vztahy
<<include>> — povinná součást jiného UC<<extend>> — nepovinné rozšíření
Třídní diagram (Class Diagram): +------------------+
| Osoba | ← název třídy
+------------------+
| - jmeno: String | ← atributy (- private, + public, # protected)
| - vek: int |
+------------------+
| + getJmeno(): String | ← metody
| + setJmeno(s: String)|
+------------------+
Vztahy:
──────> Asociace (má-vztah)─────▷ Generalizace/Dědičnost- - -▷ Realizace (implements)◇── Agregace (celek-část, část může existovat samostatně)◆── Kompozice (část nemůže existovat bez celku)
Sekvenční diagram: - Zobrazuje interakci objektů v čase (vertikální osa = čas)
- Lifeline = vertikální přerušovaná čára
- Zpráva = horizontální šipka mezi lifelines
- Activation bar = obdélník na lifeline (objekt je aktivní)
Diagram aktivit: - Flowchart pro business procesy
- Swimlanes = odpovědnost různých rolí
- Elementy: startovní uzel (●), akce, rozhodnutí (◇), synchronizace (━━), konec (⊙)
ER Diagram (Entity-Relationship): - Entita = obdélník (tabulka)
- Atribut = elipsa
- Vztah = kosočtverec
- Cardinalita: 1:1, 1:N, M:N
Požadavky
Funkční požadavky — CO systém dělá
- "Systém umožní uživateli přihlášení pomocí emailu a hesla"
- "Systém zobrazí historii objednávek"
Nefunkční požadavky — JAK dobře to dělá
- Výkon: "Stránka se načte do 2 sekund"
- Bezpečnost: "Hesla jsou hashovaná bcrypt"
- Dostupnost: "99.9% uptime"
- Škálovatelnost: "Zvládne 10 000 současných uživatelů"
Techniky získávání požadavků: - Rozhovory se stakeholdery
- Dotazníky
- Pozorování (observation)
- Prototypování
- Analýza existujících dokumentů
Datové modelování
Kroky tvorby ER diagramu:
- Identifikuj entity (podstatná jména v zadání)
- Identifikuj vztahy (slovesa — "student SE ZAPISUJE na předmět")
- Urči atributy každé entity
- Určit primární klíče
- Urči kardinalitu vztahů
- Normalizuj (3NF)
Návrhové vzory (Design Patterns)
Creational:
- Singleton — jediná instance třídy
- Factory Method — vytváření objektů bez specifikace konkrétní třídy
Structural: - Adapter — překlad rozhraní pro kompatibilitu
- Facade — zjednodušené rozhraní ke komplexnímu podsystému
Behavioral: - Observer — notifikace při změně stavu (event listenery)
- Strategy — zaměnitelné algoritmy za běhu
- MVC — oddělení dat (Model), zobrazení (View), logiky (Controller)
Tipy pro zkoušku
- Use Case: actor je VŽDY mimo systém (i jiný systém)
- Třídní diagram: rozlišuj asociaci a kompozici/agregaci
- Sekvenční diagram: synchronní zpráva = plná šipka, asynchronní = otevřená
- Funkční vs nefunkční požadavky — klíčový rozdíl
- Waterfall vs Agile: Agile lépe zvládá změny, Waterfall lepší pro fixní rozsah
Doporučené zdroje
- UML distilled — Martin Fowler
- draw.io — zdarma nástroj pro UML diagramy
- Kniha: Systems Analysis and Design (Kendall & Kendall)