Úvod: Účelem fáze návrhu v životním cyklu vývoje softwaru je vytvořit řešení problému zadaného v dokumentu SRS (specifikace požadavků na software). Výstupem fáze návrhu je dokument Sofware Design Document (SDD).
V zásadě je návrh dvoudílný iterativní proces. První částí je koncepční návrh, který říká zákazníkovi, co bude systém dělat. Druhou částí je Technický návrh, který umožňuje tvůrcům systému pochopit skutečný hardware a software potřebný k vyřešení problému zákazníka.
Konceptuální návrh systému:
- Napsaný jednoduchým jazykem, tj. jazykem srozumitelným zákazníkovi.
- Podrobně vysvětluje vlastnosti systému.
- Popisuje funkčnost systému.
- Je nezávislý na implementaci.
- Vazba na dokument s požadavky.
Technický návrh systému:
- Hardwarová komponenta a návrh.
- Funkčnost a hierarchie softwarové komponenty.
- Architektura softwaru
- Síťová architektura
- Struktura dat a tok dat.
- I/O složka systému.
- Ukazuje rozhraní.
Modularizace: Modularizace je proces rozdělení softwarového systému na více nezávislých modulů, kde každý modul pracuje samostatně. Modularizace má v softwarovém inženýrství mnoho výhod. Některé z nich jsou uvedeny níže:
- Snadné pochopení systému.
- Údržba systému je snadná.
- Modul lze použít mnohokrát podle jejich požadavků. Není třeba jej psát znovu a znovu.
Spojování: Spojení je měřítkem míry vzájemné závislosti mezi moduly. Dobrý software bude mít nízkou vazbu.
Typy vazeb:
- Datová vazba: Pokud je závislost mezi moduly založena na tom, že spolu komunikují pouze prostřednictvím předávání dat, pak se o modulech hovoří jako o datově spřažených. Při datovém spřažení jsou komponenty na sobě nezávislé a komunikují prostřednictvím dat. Komunikace modulů neobsahuje trampová data. Příklad-zákaznický fakturační systém.
- Razítková vazba Při razítkové vazbě je kompletní datová struktura předávána z jednoho modulu do druhého modulu. Zahrnuje tedy trampová data. Může to být nutné kvůli faktorům efektivity – tuto volbu učinil prozíravý návrhář, nikoli líný programátor.
- Spojení řízení: Pokud moduly komunikují předáváním řídicích informací, pak se říká, že jsou řídicí spřažené. To může být špatné, pokud parametry indikují zcela odlišné chování, a dobré, pokud parametry umožňují faktorizaci a opakované použití funkcí. Příklad – třídicí funkce, která jako argument přijímá porovnávací funkci.
- Externí vazba: V případě externí vazby jsou moduly závislé na jiných modulech, vnějších pro vyvíjený software nebo pro určitý typ hardwaru. Například- protokol, externí soubor, formát zařízení atd.
- Společná vazba: Změny v globálních datech znamenají zpětné sledování všech modulů, které k těmto datům přistupují, aby se vyhodnotil účinek změny. Má tedy nevýhody, jako jsou obtíže při opakovaném použití modulů, snížená možnost kontroly přístupů k datům a snížená udržovatelnost.
- Obsahová vazba: V obsahové vazbě může jeden modul měnit data jiného modulu nebo je tok řízení předáván z jednoho modulu do druhého. Jedná se o nejhorší formu spřažení a je třeba se jí vyhnout.
Spřažení: Soudržnost je mírou toho, do jaké míry jsou prvky modulu funkčně propojeny. Je to míra, do jaké jsou v komponentě obsaženy všechny prvky zaměřené na plnění jednoho úkolu. Soudržnost je v podstatě vnitřní lepidlo, které drží modul pohromadě. Dobrý návrh softwaru bude mít vysokou soudržnost.
Typy soudržnosti:
- Funkční soudržnost: Každý podstatný prvek pro jeden výpočet je obsažen v komponentě. Funkční soudržnost vykonává úlohu a funkce. Jedná se o ideální situaci.
- Sekvenční soudržnost: Prvek vystupuje z nějakých dat, která se stávají vstupem pro jiný prvek, tj. tok dat mezi součástmi. Vyskytuje se přirozeně ve funkcionálních programovacích jazycích.
- Komunikační koheze: Dva prvky pracují se stejnými vstupními daty nebo přispívají ke stejným výstupním datům. Příklad – aktualizace záznamu v databázi a jeho odeslání na tiskárnu.
- Procedurální koheze: Prvky procedurální soudržnosti zajišťují pořadí provádění. Akce jsou stále slabě propojené a je nepravděpodobné, že by byly opakovaně použitelné. Např. vypočítat průměrný prospěch studenta, vytisknout záznam studenta, vypočítat souhrnný průměrný prospěch, vytisknout souhrnný průměrný prospěch.
- Časová soudržnost: Prvky spolu časově souvisejí. Modul spojený s časovou kohezí musí být všechny úlohy provedeny ve stejném časovém rozmezí. Tato soudržnost obsahuje kód pro inicializaci všech částí systému. Probíhá spousta různých činností, všechny v čase init.
- Logická soudržnost: Prvky spolu souvisejí logicky, nikoliv funkčně. Např. komponenta čte vstupy z pásky, disku a sítě. Veškerý kód pro tyto funkce je ve stejné komponentě. Operace spolu souvisejí, ale funkce se výrazně liší.
- Koincidenční soudržnost: Prvky nejsou příbuzné(nesouvisející). Prvky nemají žádný jiný koncepční vztah než umístění ve zdrojovém kódu. Je to náhodná a nejhorší forma soudržnosti. Např. vypsání dalšího řádku a obrácení znaků řetězce v jedné komponentě.
Pozor čtenář! Nepřestávejte se nyní učit. Osvojte si všechny důležité koncepty teorie CS pro pohovory SDE s kurzem teorie CS za cenu příznivou pro studenty a staňte se připravenými v oboru.