Ú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.

Article Tags :

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.