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ě 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.
  • 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ý.