Návrh programových systémů
Principy návrhu programového systému, vstupy a výstupy návrhu, komponenty, rozhranní.
Principy návrhu programového systému
Jakmile máme sebrané požadavky a provedenu analýzu, můžeme přejít do fáze návrhu.
Smyslem návrhu je přesná specifikace způsobu implementace funkcí, které bude systém poskytovat, aby uspokojil požadavky uživatelů.

Požadavky jsou problémovou doménou.
Analýza zkoumá problémy z pohledu uživatelů a dalších osob.
Návrh spočívá ve sloučení požadavků a technických řešení do modelu systému, který lze implementovat.

Relace mezi klíčovými artefakty analýzy a návrhu

Vstupy a výstupy návrhu
Vstupem do návrhu je
analytický model chování systému
Výstupem z návrhu je
návrhový model, který je předán programátorům, jejich úkolem je tvorba zdrojového kódu. Pokud máme detailně popsaný návrhový model, můžeme generovat zdrojový kód přímo z návrhového modelu.
Návrhový model obsahuje
návrhové podsystémy
návrh realizace případů užití
rozhranní
návrhové třídy
první verzi diagramu nasazení
Komponenty, rozhranní návrhu
Co to je komponenta?
Modulární, nasaditelná, nahraditelná a opakovaně použitelná část systému, která zapouzdřuje implementaci a zveřejňuje rozhraní.
Komponenta je skupina objektů, které dohromady:
·
poskytují určitá rozhraní pro externí objekty
vyžadují určitá rozhraní od externích objektů (vyžadují součinnost)
Na rozdíl od tříd, nemusí existovat instance komponenty (vyhýbají se nutnosti mít stav)
Nedodává se obvykle ve zdrojovém tvaru, a ale jako vykonatelný kód
Často vyžaduje pro práci určité prostředí (např.kontejner)
Rozhraní (Interface)
specifikuje dohodu jak budou jednotlivé komponenty spolu komunikovat
Využívá se k vyjadřování vztahu mezi komponentami
V rámci modelování návrhu pomocí UML existuje ikona zobrazujující interface.
Předepisuje pojmenovanou množinou veřejných funkcí.
·
Operace
Atribut
Asociace
Omezení
Stereotyp
Označená hodnota
Protokol
Odděluje specifikaci funkčnosti od samotné implementace prostřednictvím klasifikátoru (třída, podsystém).
jsou klíčové pro vývoj komponentového software (vývoj plug-ins)