Spojenie verzus súdržnosť
Spojenie a súdržnosť sú dva pojmy, ktoré sa nachádzajú v jazyku Java (a vo všetkých ostatných objektovo orientovaných jazykoch). Spojenie meria, do akej miery sú jednotlivé programové moduly závislé od ostatných programových modulov. Súdržnosť meria, ako silne súvisia jednotlivé funkcie v rámci modulu. Akýkoľvek objektovo orientovaný jazyk (vrátane Java) má v skutočnosti dva hlavné ciele: zvýšenie súdržnosti a zníženie prepojenia súčasne s cieľom vyvinúť najúčinnejšie programy. Tieto dve metriky softvérového inžinierstva boli vyvinuté Larrym Constantinom, aby sa znížili náklady na úpravu a údržbu softvéru.
Čo je súdržnosť?
Súdržnosť meria, ako silne súvisia jednotlivé funkcie v rámci programového modulu. Dobre štruktúrované triedy vedú k vysoko súdržným programom. Ak určitá trieda vykonáva súbor vysoko príbuzných funkcií, táto trieda sa považuje za súdržnú. Na druhej strane, ak trieda vykonáva skupinu úplne nesúvisiacich funkcií, čo znamená, že trieda vôbec nie je súdržná. Je dôležité pochopiť, že neexistencia súdržnosti neznamená, že celková aplikácia nemá požadovanú funkčnosť. Je to len to, že bez kohézie bude veľmi ťažké zvládnuť funkčnosť, pretože budú rozptýlené na mnohých nesprávnych miestach, pretože sa postupom času zvyšuje zložitosť aplikácie. Udržiavanie, úprava a rozširovanie správania rozptýlených po celom kóde je veľmi únavné aj pre tých skúsených programátorov..
Čo je Coupling?
Spojenie meria, do akej miery sú jednotlivé programové moduly závislé od ostatných programových modulov. K interakciám medzi dvoma objektmi dochádza, pretože existuje väzba. Voľne spojené programy majú vysokú flexibilitu a rozšíriteľnosť. Silné spojenie nie je nikdy dobré, pretože jeden objekt môže byť vysoko závislý od iného objektu. Toto je nočná mora, keď je kód upravený, pretože vysoká väzba znamená, že programátori musia pracovať na niekoľkých miestach kódu, aby mohli vykonať iba jednu zmenu správania. Silné prepojenie vždy vedie k programom s nízkou flexibilitou a menšou škálovateľnosťou / rozšíriteľnosťou. V programovacích jazykoch ako Java však nie je možné úplne sa vyhnúť spojeniu. Odporúča sa však, aby programátori vynaložili maximálne úsilie na čo najväčšie zníženie spojky. Je tiež možné mať nejakú väzbu, ktorá pomôže objektom vzájomne interagovať bez toho, aby to obmedzovalo jeho škálovateľnosť a flexibilitu.
Aký je rozdiel medzi väzbou a súdržnosťou?
Aj keď spojenie a súdržnosť sa zaoberajú kvalitou modulu v softvérovom inžinierstve, ide o úplne odlišné pojmy. Súdržnosť hovorí o tom, do akej miery sú tieto funkcie v rámci modulu navzájom prepojené, zatiaľ čo spojenie sa zaoberá tým, do akej miery je jeden modul závislý od ostatných programových modulov v celej aplikácii. Aby sa dosiahol najkvalitnejší softvér, súdržnosť a spojenie by mali dosiahnuť dva opačné konce ich spektier. Inými slovami, najlepší softvér poskytuje voľná väzba a silná súdržnosť. Majú súkromné polia, neverejné triedy a súkromné metódy poskytujú voľnú väzbu, zatiaľ čo všetci členovia sú viditeľní v triede a majú štandardnú viditeľnosť balíka, poskytujú vysokú súdržnosť.