Programování

Návrh na změnu: Spojení a soudržnost v objektově orientovaných systémech

Spojení a soudržnost jsou dva často nepochopené výrazy v softwarovém inženýrství. Jedná se o termíny, které se používají k označení kvalitativní analýzy modularity v systému a pomáhají nám identifikovat a měřit návrhovou složitost objektově orientovaných systémů.

Dobrá znalost obou je však nezbytná k vytvoření systémů, které jsou škálovatelné, spravovatelné a lze je časem rozšířit. V tomto příspěvku budu diskutovat o obou; V příštích příspěvcích k tomuto tématu uvedu příklady kódu.

Jak se liší soudržnost a vazba? Jak souvisejí koncepty soudržnosti a propojení s dobrými nebo špatnými návrhy softwaru? Než prozkoumáme soudržnost a propojení a jak ovlivňují softwarové návrhy, pochopme, co je každý z těchto konceptů a jejich typy.

Spojka

Vazba může být definována jako míra vzájemné závislosti, která existuje mezi softwarovými moduly a jak úzce jsou navzájem propojeny. V zásadě propojení naznačuje sílu vzájemné propojenosti mezi softwarovými moduly. Když je toto spojení vysoké, můžeme předpokládat, že softwarové moduly jsou vzájemně závislé, tj. Nemohou fungovat bez druhého. Existuje několik rozměrů spojky:

  • Spojení obsahu - jedná se o typ propojení, ve kterém konkrétní modul může přistupovat nebo upravovat obsah jakéhokoli jiného modulu. V podstatě, když komponenta předává parametry k řízení aktivity nějaké jiné komponenty, je mezi těmito dvěma komponentami kontrolní vazba.
  • Společná vazba - jedná se o typ vazby, ve které máte více modulů, které mají přístup ke sdíleným globálním datům
  • Spojka razítek - jedná se o typ spojky, při které se datová struktura používá k přenosu informací z jedné součásti systému do druhé
  • Řídicí spojka - jedná se o typ spojky, ve které jeden modul může změnit průběh provádění jiného modulu
  • Datová vazba - u tohoto typu vazby dva moduly interagují výměnou nebo předáváním dat jako parametru

Soudržnost

Soudržnost označuje úroveň vnitřní závislosti mezi prvky softwarového modulu. Jinými slovy, soudržnost je měřítkem míry, do jaké odpovědnosti jednoho modulu nebo součásti tvoří smysluplnou jednotku. Soudržnost je následujících typů:

  • Souběžná soudržnost - jedná se o neplánovanou náhodnou soudržnost, která může být výsledkem rozdělení modulu na menší moduly.
  • Logická soudržnost - jedná se o typ soudržnosti, ve kterém je do stejné komponenty umístěno více logicky souvisejících funkcí nebo datových prvků
  • Časová soudržnost - jedná se o typ soudržnosti, ve kterém jsou prvky modulu seskupeny způsobem, ve kterém jsou zpracovány ve stejném okamžiku. Příkladem může být komponenta, která se používá k inicializaci sady objektů.
  • Procedurální soudržnost - jedná se o typ soudržnosti, při kterém jsou funkce v komponentě seskupeny tak, aby bylo možné je provádět postupně a aby byly procedurálně soudržné
  • Komunikační soudržnost - v tomto typu soudržnosti jsou prvky modulu logicky seskupeny dohromady tak, že se provádějí postupně a pracují na stejných datech
  • Sekvenční soudržnost - v tomto typu soudržnosti jsou prvky modulu seskupeny takovým způsobem, že výstup jednoho z nich se stane vstupem dalšího - všechny se provádějí postupně. V podstatě, pokud je výstup jedné části komponenty vstupem jiné, říkáme, že komponenta má sekvenční soudržnost.
  • Funkční soudržnost - jedná se o nejlepší a nejvýhodnější typ soudržnosti, při kterém je stupeň soudržnosti nejvyšší. V tomto typu soudržnosti jsou prvky modulu funkčně seskupeny do logické jednotky a fungují společně jako logická jednotka - to také podporuje flexibilitu a opětovné použití.

Osvědčené postupy

Těsné spojení zvyšuje náklady na údržbu, protože je obtížné a změny jedné součásti by ovlivnily všechny ostatní součásti, které jsou k ní připojeny. Takže refaktorování kódu se stává obtížným, protože byste museli refaktorovat všechny ostatní komponenty v připojeném řetězci, aby se funkce nerozbila. Tento proces je těžkopádný a vyžaduje spoustu zdlouhavého úsilí a času.

Měli byste navrhovat třídy, které obsahují menší počet instančních proměnných, tj. Váš návrh třídy je „dobrý“, pokud obsahuje malý počet instančních proměnných. V ideálním případě by každá z metod ve vaší třídě měla manipulovat s jednou nebo více z těchto proměnných instance. Teoreticky je třída maximálně soudržná, pokud je každá z instančních proměnných třídy používána nebo manipulována každou z metod dané třídy. Když je soudržnost ve třídě vysoká, metody a datové členy třídy jsou vzájemně závislé a pracují společně jako jedna logická jednotka. Ve skutečnosti však není možné navrhovat takové třídy, nebo bych spíše řekl, že není vhodné navrhovat třídy, které jsou maximálně soudržné.

$config[zx-auto] not found$config[zx-overlay] not found