Savienojums vs kohēzija
Savienošana un kohēzija ir divi jēdzieni, kas atrodami Java (un visās citās objektorientētajās valodās). Savienojums mēra, cik katrs programmas modulis ir atkarīgs no pārējiem programmas moduļiem. Kohēzija mēra, cik spēcīgi katra no funkcijām ir saistīta moduļa ietvaros. Faktiski jebkurai objektorientētai valodai (ieskaitot Java) ir divi galvenie mērķi - palielināt kohēziju un vienlaikus samazināt savienojumu, lai izstrādātu visefektīvākās programmas. Šos divus programmatūras inženierijas rādītājus izstrādāja Lerijs Konstantīns, lai samazinātu programmatūras modifikācijas un uzturēšanas izmaksas.
Kas ir kohēzija??
Kohēzija mēra, cik spēcīgi katra no funkcijām ir saistīta programmas modulī. Labi strukturētas nodarbības ved uz ļoti saliedētām programmām. Ja kāda klase veic ļoti saistītu funkciju kopu, tiek uzskatīts, ka šī klase ir saliedēta. No otras puses, ja klase veic virkni pilnīgi nesaistītu funkciju, tas nozīmē, ka klase vispār nav saliedēta. Ir svarīgi saprast, ka nesaskaņotība nenozīmē, ka kopējai lietojumprogrammai nav vajadzīgās funkcijas. Tas ir tikai tas, ka bez kohēzijas būs ļoti grūti pārvaldīt funkcionalitāti, jo tie tiks izkliedēti daudzās nepareizās vietās, jo laika gaitā lietojumprogrammas sarežģītība palielināsies. Uzturēt, mainīt un paplašināt uzvedības paradumus, kas ir izkaisīti pa visu kodu, ir ļoti apnicīgi pat vispieredzējušākajiem programmētājiem.
Kas ir sakabe?
Savienojums mēra, cik katrs programmas modulis ir atkarīgs no pārējiem programmas moduļiem. Mijiedarbība starp diviem objektiem notiek tāpēc, ka notiek savienošana. Vāji savienotās programmas ir ļoti elastīgas un paplašināmas. Spēcīga savienošana nekad nav laba, jo viens objekts var būt ļoti atkarīgs no cita objekta. Šis ir murgs, kad kods tiek modificēts, jo augsta savienošana nozīmē, ka programmētājiem ir jāstrādā vairākās koda vietās, lai veiktu pat vienu uzvedības modifikāciju. Spēcīga savienošana vienmēr noved pie programmām ar mazu elastību un mazāku mērogojamību / paplašināmību. Programmēšanas valodās, piemēram, Java, pilnībā izvairīties no savienošanas nav iespējams. Bet ieteicams, lai programmētāji pieliek visas pūles, lai pēc iespējas samazinātu savienojumu. Ir iespējams arī kāds savienojums, kas palīdz objektiem savstarpēji mijiedarboties, netraucējot tā mērogojamību un elastību.
Kāda ir atšķirība starp savienošanu un kohēziju?
Pat ja savienošana un saliedētība ietekmē moduļa kvalitāti programmatūras inženierijā, tie ir pilnīgi atšķirīgi jēdzieni. Kohēzija runā par to, cik daudz moduļa funkcionalitātes ir saistītas viena ar otru, savukārt savienošana attiecas uz to, cik daudz viens modulis ir atkarīgs no citiem programmas moduļiem visā lietojumprogrammā. Lai iegūtu vislabākās kvalitātes programmatūru, kohēzijai un savienošanai vajadzētu sasniegt to spektra divus pretējos galus. Citiem vārdiem sakot, brīva savienošana un spēcīga saliedētība nodrošina vislabāko programmatūru. Tā kā ir privāti lauki, nepubliskas klases un privātas metodes, nodrošina brīvu savienošanu, vienlaikus padarot visus dalībniekus klases redzamus un paketi kā noklusējuma redzamību nodrošinot augstu saliedētību..