Provázanost
Author
Albert FloresProvázanost ( 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. +more 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ě Déméteřin zákon.
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. +more * 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. +more * 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. +more 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ý.