Cohesion (Kohezja)

Miara tego jak poszczególne funkcje przynależą do danego modułu.

Kohezja (łac.arrow-up-right cohaere – nieodłączny) – ogólna nazwa zjawiska stawiania oporu przez ciała fizyczne, poddawane rozdzielaniu na części. Jej miarą jest pracaarrow-up-right potrzebna do rozdzielenia określonego ciała na części, podzielona przez powierzchnię powstałą na skutek tego rozdzielenia.

Cel: rozbijanie oprogramowania na małe moduły.

  • Miara dobrego pogrupowania elementów w moduły

  • Wysoka kohezja wspomaga modularyzację

  • Redukuje coupling pomiędzy modułami

Typy kohezji

Od najmniej do najbardziej oczekiwanej

  1. Coincidental - elementy wpadły do klasy przez przypadek

  2. Logical - wiąże logiczne byty ze sobą, ale nie mają one ze sobą nic wspólnego

  3. Temporal - w module mamy funkcje, które wykonują się w tym samym czasie

  4. Procedural - operacje w module są w tej samej procedurze

  5. Communicational - funkcje korzystają z tych samych struktur danych

  6. Sequential - łańuch wywołań (np. przygotowanie kursu -> pipes and sink)

  7. Functional - związane z funkcją (np. moduł kalkulatora zawiera wszystkie operacje wewnątrz danego modułu)

Metryki

  • Lack of Cohesion of Methods (LCOM).

  • Brak Kohezji metod klasy

Last updated