Soudržnost (informatika) - Cohesion (computer science)
v programování, soudržnost Odkazuje na stupeň, ve kterém prvky uvnitř a modul patří k sobě.[1] V jednom smyslu jde o míru síly vztahu mezi metodami a daty třídy a nějakým sjednocujícím účelem nebo konceptem, kterému tato třída slouží. V jiném smyslu jde o míru síly vztahu mezi metodami třídy a samotnými daty.
Soudržnost je pořadové číslo typ měření a obvykle se označuje jako „vysoká soudržnost“ nebo „nízká soudržnost“. Moduly s vysokou soudržností bývají výhodnější, protože vysoká soudržnost je spojena s několika žádoucími rysy softwaru včetně robustnost spolehlivost, opakovaná použitelnost a srozumitelnost. Naproti tomu nízká soudržnost je spojena s nežádoucími vlastnostmi, jako je obtížná údržba, testování, opětovné použití nebo dokonce pochopení.
Soudržnost je často v kontrastu s spojka, jiný koncept. Vysoká soudržnost často koreluje s volné spojení a naopak.[2] The softwarové metriky vazby a soudržnosti vynalezl Larry Constantine na konci 60. let jako součást Strukturovaný design, na základě charakteristik „dobrých“ programovacích postupů, které snížily náklady na údržbu a úpravy. V článku byl publikován strukturovaný design, soudržnost a vazba Stevens, Myers a Constantine (1974)[3] a kniha Yourdon a Constantine (1979);[1] poslední dva se následně staly standardními pojmy v softwarovém inženýrství.
Vysoká soudržnost
v objektově orientované programování, pokud mají metody, které slouží třídě, v mnoha aspektech podobné, pak se o třídě říká, že má vysokou soudržnost.[4] Ve vysoce soudržném systému je čitelnost kódu a opakovaná použitelnost je zvýšena, zatímco složitost je udržována zvládnutelná.

Soudržnost se zvyšuje, pokud:
- Funkce zabudované do třídy, k nimž se přistupuje prostřednictvím jejích metod, mají mnoho společného.
- Metody provádějí malý počet souvisejících činností do vyhýbat se hrubě zrnitý nebo nesouvisející soubory dat.
- Související metody jsou ve stejném zdrojovém souboru nebo jinak seskupeny; například v samostatných souborech, ale ve stejném podadresáři / složce.
Výhody vysoké soudržnosti (neboli „silné soudržnosti“) jsou:
- Snížená složitost modulu (jsou jednodušší a mají méně operací).
- Zvýšený systém udržitelnost, protože logické změny v doméně ovlivňují méně modulů a protože změny v jednom modulu vyžadují méně změn v ostatních modulech.
- Zvýšená opětovná použitelnost modulu, protože vývojáři aplikací najdou komponentu, kterou potřebují, snadněji mezi soudržnou sadou operací poskytovaných modulem.
Zatímco v zásadě může modul mít dokonalou soudržnost tím, že se skládá pouze z jediného atomového prvku - například s jedinou funkcí - v praxi nejsou složité úkoly vyjádřitelné jediným jednoduchým prvkem. Jednoprvkový modul má tedy prvek, který je buď příliš komplikovaný, aby mohl splnit úkol, nebo je příliš úzký, a tedy těsně spojený s jinými moduly. Soudržnost je tedy vyvážena jak se složitostí jednotky, tak s vazbou.
Druhy soudržnosti
Soudržnost je kvalitativní měřítko, což znamená, že měřený zdrojový kód je zkoumán pomocí a rubrika určit klasifikaci. Typy soudržnosti, od nejhorší po nejlepší, jsou následující:
- Náhodná soudržnost (nejhorší)
- Náhodná koheze je, když jsou části modulu libovolně seskupeny; jediný vztah mezi částmi je, že byly seskupeny dohromady (např. třída „Utility“). Příklad:
/*Skupiny: Definice funkcíČásti: Pojmy pro každou funkci*/Modul A{ /* Implementace r (x) = 5x + 3 Neexistuje žádný zvláštní důvod pro seskupování funkcí tímto způsobem, takže modul říká, že má náhodnou soudržnost. */ r(X) = A(X) + b(X) A(X) = 2X + 1 b(X) = 3X + 2}
- Logická soudržnost
- Logická soudržnost je, když jsou části modulu seskupeny, protože jsou logicky kategorizovány tak, aby dělaly totéž, i když jsou od přírody odlišné (např. Seskupení všech rutin manipulace se vstupy myší a klávesnicí).
- Časová soudržnost
- Dočasná soudržnost je, když jsou části modulu seskupeny podle toho, kdy jsou zpracovány - části jsou zpracovány v určitém čase při provádění programu (např. Funkce, která se volá po zachycení výjimky, která zavře otevřené soubory, vytvoří protokol chyb a upozorní uživatele).
- Procedurální soudržnost
- Procedurální soudržnost je, když jsou části modulu seskupeny, protože vždy sledují určitou sekvenci provádění (např. Funkce, která kontroluje oprávnění souboru a poté soubor otevře).
- Komunikační / informační soudržnost
- Komunikační soudržnost je, když jsou části modulu seskupeny, protože fungují na stejných datech (např. Modul, který pracuje na stejném záznamu informací).
- Sekvenční soudržnost
- Sekvenční soudržnost je, když jsou části modulu seskupeny, protože výstup z jedné části je vstupem do jiné součásti, jako je montážní linka (např. Funkce, která čte data ze souboru a zpracovává data).
- Funkční soudržnost (nejlepší)
- Funkční soudržnost je, když jsou části modulu seskupeny, protože všechny přispívají k jednomu přesně definovanému úkolu modulu (např. Lexikální analýza řetězce XML). Příklad:
/*Skupiny: Definice funkcíČásti: Pojmy pro každou funkci*/Modul A { /* Implementace aritmetických operací O tomto modulu se říká, že má funkční soudržnost, protože existuje záměr seskupit jednoduché aritmetické operace na to. */ A(X, y) = X + y b(X, y) = X * y}Modul B { /* Modul B: Implementuje r (x) = 5x + 3 O tomto modulu lze říci, že má atomovou soudržnost. Celý lze také říci, že systém (s moduly A a B jako součástmi) má funkční soudržnost, protože obě její části mají zvláštní samostatné účely. */ r(X) = [Modul A].A([Modul A].b(5, X), 3)}
- Dokonalá soudržnost (atomová)
- Příklad.
/*Skupiny: Definice funkcíČásti: Pojmy pro každou funkci*/Modul A { /* Implementace r (x) = 2x + 1 + 3x + 2 Říká se, že má dokonalou soudržnost, protože ji nelze snížit o nic víc. */ r(X) = 5X + 3}
Přestože je soudržnost typem stupnice stupnice, řady neindikují stabilní postup zlepšené soudržnosti. Studie různých lidí včetně Larry Constantine, Edward Yourdon, a Steve McConnell[5] naznačují, že první dva typy soudržnosti jsou nižší; komunikační a sekvenční soudržnost jsou velmi dobré; a funkční soudržnost je lepší.
I když je funkční soudržnost považována za nejžádanější typ soudržnosti softwarového modulu, nemusí být dosažitelná. Existují případy, kdy je komunikační soudržnost nejvyšší úrovní soudržnosti, jaké lze za daných okolností dosáhnout.[Citace je zapotřebí ]
Viz také
Reference
- ^ A b Yourdon, Edwarde; Constantine, Larry LeRoy (1979) [1975]. Strukturovaný design: Základy disciplíny návrhu počítačových programů a systémů. Yourdon Press. Bibcode:1979sdfd.book ..... Y. ISBN 978-0-13-854471-3. ISBN 0-13-854471-9.
- ^ Ingeno, Joseph (2018). Příručka softwarového architekta. Packt Publishing. p. 175. ISBN 178862406-8.
- ^ Stevens, Wayne P.; Myers, Glenford J.; Constantine, Larry LeRoy (Červen 1974). "Strukturovaný design". IBM Systems Journal. 13 (2): 115–139. doi:10.1147 / sj.132.0115.
- ^ Marsic, Ivan (2012). Softwarové inženýrství. Rutgersova univerzita.
- ^ McConnell, Steve (Červen 2004) [1993]. Kód dokončen (2. vyd.). str.168-171. ISBN 978-0-7356-1967-8.