Koheesio (tietotekniikka)

Tietotekniikassa koheesio (cohesion) tarkoittaa sitä, kuinka pitkälle moduulissa tai luokassa oleva  ohjelmakoodi on keskittynyt tietyn toiminnallisuuden toteuttamiseen. Olio-ohjelmoinnissa korkea koheesio tarkoittaa esimerkiksi sitä, että luokan metodit liittyvät läheisesti samoihin käsitteisiin kuin moduulin tarjoamat palvelut. 

Korkea koheesio on tavoiteltava piirre. Mitä korkeampi koheesio, sitä todennäköisemmin koodia voidaan käyttää muuallakin. Samoin luotettavuus ja ymmärrettävyys paranevat. 

Korkea koheesio liittyy usein myös *löyhään kytkentään* ja vastaavasti *matala koheesio* johtaa helposti vahvaan kytkentään: jos moduulin toiminnallisuus hajaantuu useille eri osa-alueille, se luultavasti myös riippuu useista muista eri moduuleista ja luokista. 

Matala koheesio tarkoittaa, että luokassa on paljon metodeja, jotka eivät keskustele toisten luokan metodien kanssa. Luokka tekee paljon töitä, joilla ei ole keskenään paljon yhteistä. Matala koheesio johtaa yleensä vaikeaan testattavuuteen ja ylläpidettävyyteen. 

Koheesio kasvaa, jos:

 Luokkaan upotetuilla toiminnoilla on paljon yhteistä.
 Metodit suorittavat pienen määrän toisiinsa liittyviä toimintoja, välttämällä toisiinsa liittymättömiä tietojoukkoja.
 Aiheeseen liittyvät metodit ovat samassa lähdetiedostossa tai muuten ryhmiteltyinä yhteen; esimerkiksi erilisissä tiedostoissa, mutta samassa hakemistossa/kansiossa.

Korkean koheesion edut:

 Vähentää luokkien monimutkaisuutta (yksinkertaisempia ja vähemmän toimintoja).
 Järjestelmän ylläpidettävyys paranee, koska yhden moduulin muutokset vaativat vähemmän muutoksia muihin moduuleihin.
 Luokkien uudelleenkäytettävyys paranee.

Koheesio Javassa 
Javassa koheesio on olio-ohjelmoinnin periaate. Koheesio määrittelee, kuinka Java-luokat on suunniteltu. Tarkoituksena on luoda luokka, joka on hyvin kohdennettu. Koheesio kasvaa, kun luokkaan ryhmitetään läheisesi toisiinsa liittyviä asioita. 

Korkea koheesio tekee koodin muokkaamisesta ja päivittämisestä helppoa ja koodin rakenne on yhtenäisempää. Esimerkiksi kirjastoissa kirjat on järjestelty aiheiden mukaan, jolloin oikean kirjan löytäminen on helpompaa. Sama periaate toimii myös ohjelmoinnissa. Koodia, jonka koheesio jätetään huomiotta, on vaikea työstää.

Katso myös 
 Ortogonaalisuus
 Erikoistuminen

Ohjelmointi