Provázanost
Provázanost (anglicky coupling, též softwarová závislost) označuje v informatice do jaké míry je dané entita (modul) závislý na jiné entitě (modulu). Provázanost je většinou propojena se soudržností. Nízká provázanost obvykle koreluje s vysokou soudržností a naopak. Nízká provázanost je známkou dobře navrženého systému a dobré architektury, když je navíc kombinována ještě s vysokou soudržností, podporuje obecné cíle programování: dobrou čitelnost a udržovatelnost kódu.
Typy provázanosti
Provázanost může být nízká (volná nebo též slabá) nebo vysoká (pevná nebo též silná). Následující typy provázanosti jsou seřazeny od nejvyšší k nejnižší provázanosti:
- Obsahová provázanost (angl. Content coupling, nazývaná též patologická provázanost – angl. Pathological coupling) – modul spoléhá na vnitřní fungování jiného modulu – přistupuje k jeho vnitřním datům. Pokud se změní logika druhého modulu, musí se změnit závislý modul.
- Společná provázanost (angl. Common coupling, nazývaná též globální provázanost – angl. Global coupling) – dva moduly mají stejné globální proměnné (data). Změna těchto dat vede ke změně všech modulů, které je používají.
- Vnější provázanost (angl. External coupling) – nastává, pokud dva moduly mohou sdílet externě uložený formát dat, komunikační protokol nebo rozhraní zařízení. V podstatě tato provázanost souvisí s komunikací s externími zařízeními.
- Ovládací provázanost (angl. Control coupling) – jeden modul řídí tok jiného předáním informací typu co dělat.
- Značková provázanost (angl. Stamp coupling nebo též provázanost strukturovaných dat – angl. Data-structured coupling) – moduly sdílí kompozitní strukturu dat a používají pouze jejich část. To může vést ke změně způsobu, jak modul čte a zaznamenává data.
- Datová provázanost (angl. Data coupling) – moduly sdílejí data napříč, např. skrze parametry.
- Provázanost zprávami (angl. Message coupling) – nejvolnější typ provázanosti. Dosahuje se jí decentralizací, komunikace probíhá pomocí parametrů a zasíláním zpráv.
- Žádná provázanost – moduly spolu vůbec nekomunikují.
Specifickým případem nízké provázanosti je v obecné formě zákon Deméter.
Nevýhody
Pevně provázané systémy vykazují následující nevýhody:
- Změna v jednom modulu vyvolá dominový efekt změn v dalších modulech.
- Spojení modulů může vyžadovat více času a úsilí z důvodu zvýšené závislosti mezi moduly.
- Jednotlivé moduly je těžší znovu použít a testovat, jelikož musejí být zahrnuty závislé moduly.
Problémy s výkonem
Výkon aplikace může být snížen díky vytváření, předávání, překladu a interpretaci zpráv a parametrů. Pro optimalizaci výkonu je nutné minimalizovat délku zpráv a maximalizovat jejich význam.
Řešení
Provázanost se zvyšuje mezi dvěma třídami, pokud:
- třída A má třídu B jako atribut.
- třída A volá metody třídy B.
- třída A má metodu, která odkazuje na B – jako návratový typ nebo jako parametr.
- třída A je potomek B nebo implementuje třídu B.
Nízká provázanost je vztah, kdy moduly mezi sebou komunikují prostřednictvím jednoduchého a stabilního rozhraní, přičemž se nezajímají o vnitřní provedení jiného modulu.
Provázanost versus soudržnost
Pojmy provázanost a soudržnost se často vyskytují společně. Oba vyjadřují kvalitu modulu. Provázanost hodnotí vnitřní závislosti mezi různými moduly, soudržnost popisuje, jak spolu souvisí funkce v modulu. Nízká soudržnost znamená, že modul plní úkoly, které nejsou příliš související, a proto může způsobit problémy, jako např. že modul se stává velký.