Programmēšana

Dizains izmaiņām: Savienošana un kohēzija objektorientētās sistēmās

Savienošana un kohēzija programmatūras inženierijā bieži tiek pārprasti divi jēdzieni. Tie ir termini, kas tiek izmantoti, lai norādītu kvalitatīvas modularitātes analīzi sistēmā, un tie palīdz mums identificēt un izmērīt objektorientēto sistēmu dizaina sarežģītību.

Tomēr, lai izveidotu mērogojamas, pārvaldāmas un laika gaitā paplašināmas sistēmas, ir nepieciešamas labas zināšanas par abiem. Šajā amatā es apspriedīšu abus šos; Es parādīšu kodu piemērus savos turpmākajos ierakstos par šo tēmu.

Kā atšķiras kohēzija un savienošana? Kā jēdzieni kohēzija un savienošana ir saistīti ar labu vai sliktu programmatūras dizainu? Pirms izpētīsim kohēziju un sasaisti un to, kā tie ietekmē programmatūras dizainu, sapratīsim, kas ir katrs no šiem jēdzieniem un to veidi.

Savienošana

Savienošanu var definēt kā programmatūras moduļu savstarpējās atkarības pakāpi un to, cik cieši tie ir savstarpēji saistīti. Būtībā savienošana norāda uz programmatūras moduļu savstarpējās savienojamības stiprumu. Kad šī sakabe ir augsta, mēs varam pieņemt, ka programmatūras moduļi ir savstarpēji atkarīgi, t.i., tie nevar darboties bez otra. Ir vairāki sakabes izmēri:

  • Satura savienošana - tas ir savienojuma veids, kurā konkrēts modulis var piekļūt jebkura cita moduļa saturam vai modificēt to. Būtībā, kad komponents nodod parametrus, lai kontrolētu kāda cita komponenta darbību, starp abiem komponentiem ir vadības sakabe.
  • Kopīga savienošana - tas ir savienojuma veids, kurā jums ir vairāki moduļi, kuriem ir piekļuve koplietotajiem globālajiem datiem
  • Zīmogu savienojums - tas ir sakabes veids, kurā datu struktūra tiek izmantota, lai pārsūtītu informāciju no vienas sistēmas sastāvdaļas uz otru
  • Vadības savienojums - tas ir sakabes veids, kurā viens modulis var mainīt cita moduļa izpildes plūsmu
  • Datu sasaistīšana - šāda veida savienojumā divi moduļi mijiedarbojas, apmainot vai nododot datus kā parametru

Kohēzija

Kohēzija apzīmē iekšējās atkarības līmeni starp programmatūras moduļa elementiem. Citiem vārdiem sakot, kohēzija ir tas, kādā mērā viena moduļa vai komponenta pienākumi veido nozīmīgu vienību. Kohēzija ir šāda veida:

  • Vienlaicīga kohēzija - tā ir neplānota nejauša kohēzija, kas varētu būt moduļa sadalīšanas mazākos moduļos rezultāts.
  • Loģiskā kohēzija - tas ir kohēzijas veids, kurā vairākas loģiski saistītas funkcijas vai datu elementi tiek ievietoti vienā komponentā
  • Laika kohēzija - tas ir kohēzijas veids, kurā moduļa elementi tiek grupēti tādā veidā, kādā tie tiek apstrādāti vienā un tajā pašā laika posmā. Piemērs varētu būt komponents, ko izmanto, lai inicializētu objektu kopu.
  • Procesuālā kohēzija - tas ir kohēzijas veids, kurā komponenta funkcijas ir sagrupētas tādā veidā, lai tās varētu izpildīt secīgi un padarītu tās procesuāli saliedētas
  • Komunikācijas kohēzija - šāda veida kohēzijā moduļa elementi ir loģiski grupēti tā, lai tie tiktu izpildīti secīgi, un tie strādā ar vieniem un tiem pašiem datiem
  • Secīga kohēzija - šāda veida kohēzijā moduļa elementi tiek sagrupēti tā, ka viena no tiem izeja kļūst par nākamā ievadi - tie visi tiek izpildīti secīgi. Būtībā, ja vienas komponentes daļas izeja ir citas ievade, mēs sakām, ka komponentam ir secīga kohēzija.
  • Funkcionālā kohēzija - tas ir labākais un vēlamākais kohēzijas veids, kurā kohēzijas pakāpe ir visaugstākā. Šāda veida saliedētībā moduļa elementi tiek funkcionāli grupēti loģiskā vienībā, un tie darbojas kopā kā loģiska vienība - tas arī veicina elastību un atkārtotu izmantošanu.

Labākā prakse

Cieša savienošana palielina uzturēšanas izmaksas, jo tas ir grūti, un vienas sastāvdaļas izmaiņas ietekmētu visas pārējās ar to saistītās sastāvdaļas. Tātad koda atjaunošana kļūst sarežģīta, jo jums būs jāpārstrādā visi pārējie savienotās ķēdes komponenti, lai funkcionalitāte netiktu pārtraukta. Šis process ir apgrūtinošs un prasa daudz garlaicīgu piepūles un laika.

Jums jāveido klases, kurās ir mazāks instances mainīgo skaits, t.i., jūsu klases dizains ir "labs", ja tajā ir maz eksemplāru mainīgo. Ideālā gadījumā katrai no jūsu klases metodēm vajadzētu manipulēt ar vienu vai vairākiem no šiem mainīgajiem lielumiem. Teorētiski klase ir maksimāli saliedēta, ja katrs no klases mainīgajiem lielumiem tiek izmantots vai ar to tiek manipulēts ar katru no šīs klases metodēm. Ja kohēzija klasē ir augsta, klases un datu dalībnieki ir savstarpēji atkarīgi un darbojas kopā kā viena loģiska vienība. Tomēr patiesībā nav iespējams veidot šādas klases vai es drīzāk teiktu, ka nav ieteicams veidot klases, kas būtu maksimāli vienotas.

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