Ohjelmointi

Suunnittelu muutokseen: Kytkentä ja yhteenkuuluvuus olio-järjestelmissä

Yhdistäminen ja yhteenkuuluvuus ovat kaksi väärinymmärrettyä termiä ohjelmistotuotannossa. Näitä termejä käytetään osoittamaan järjestelmän modulaarisuuden kvalitatiivinen analyysi, ja ne auttavat meitä tunnistamaan ja mittaamaan olio-orientoituneiden järjestelmien suunnittelun monimutkaisuuden.

Molempien hyvä tuntemus on kuitenkin tarpeen skaalautuvien, hallittavien ja ajan mittaan laajennettavien järjestelmien rakentamiseksi. Tässä viestissä keskustelen näistä molemmista; Esitän koodiesimerkkejä tulevissa tätä aihetta koskevissa viesteissä.

Kuinka yhteenkuuluvuus ja kytkentä eroavat toisistaan? Kuinka käsitteiden yhteenkuuluvuus ja kytkeminen liittyvät hyviin tai heikkoihin ohjelmistosuunnitteluihin? Ennen kuin tutkimme yhteenkuuluvuutta ja kytkentää ja miten ne vaikuttavat ohjelmistosuunnitteluun, ymmärretään, mitä kukin näistä käsitteistä on ja niiden tyypit.

Kytkentä

Yhdistäminen voidaan määritellä ohjelmistomoduulien keskinäisen riippuvuuden asteeksi ja siihen, kuinka läheisesti ne ovat yhteydessä toisiinsa. Pohjimmiltaan kytkentä osoittaa ohjelmistomoduulien välisen yhteyden vahvuuden. Kun tämä kytkentä on korkea, voimme olettaa, että ohjelmistomoduulit ovat toisistaan ​​riippuvaisia, ts. Ne eivät voi toimia ilman toista. Kytkennässä on useita ulottuvuuksia:

  • Sisältöliitäntä - tämä on kytkentätyyppi, jossa tietty moduuli voi käyttää minkä tahansa muun moduulin sisältöä tai muokata sitä. Pohjimmiltaan, kun komponentti välittää parametrit jonkin muun komponentin toiminnan ohjaamiseksi, näiden kahden komponentin välillä on ohjauskytkin.
  • Yhteinen kytkentä - tämä on kytkentätyyppi, jossa sinulla on useita moduuleja, joilla on pääsy jaettuun globaaliin dataan
  • Leimakytkentä - tämä on kytkentätyyppi, jossa tietorakennetta käytetään siirtämään tietoja järjestelmän yhdestä komponentista toiseen
  • Ohjauskytkentä - tämä on kytkentätyyppi, jossa yksi moduuli voi muuttaa toisen moduulin suorituksen kulkua
  • Datan kytkentä - tämän tyyppisessä kytkennässä kaksi moduulia ovat vuorovaikutuksessa vaihtamalla tai välittämällä tietoja parametrina

Koheesio

Koheesio tarkoittaa ohjelmistomoduulin elementtien sisäisen riippuvuuden tasoa. Toisin sanoen yhteenkuuluvuus on mittari siitä, missä määrin yksittäisen moduulin tai komponentin vastuut muodostavat merkityksellisen yksikön. Koheesio on seuraavan tyyppinen:

  • Samanaikainen koheesio - tämä on suunnittelematon satunnainen koheesio, joka voi johtua moduulin hajottamisesta pienemmiksi moduuleiksi.
  • Looginen koheesio - tämä on eräänlainen koheesio, jossa useita loogisesti liittyviä toimintoja tai tietoelementtejä sijoitetaan samaan komponenttiin
  • Ajallinen koheesio - tämä on eräänlainen yhteenkuuluvuus, jossa moduulin elementit ryhmitellään tavalla, jolla niitä käsitellään samana ajankohtana. Esimerkki voisi olla komponentti, jota käytetään alustamaan joukko objekteja.
  • Menettelyllinen yhteenkuuluvuus - tämä on eräänlainen yhteenkuuluvuus, jossa komponentin toiminnot on ryhmitelty siten, että ne voidaan suorittaa peräkkäin ja tehdä niistä menettelyllisesti yhtenäisiä
  • Viestinnän yhteenkuuluvuus - tämän tyyppisessä yhteenkuuluvuudessa moduulin elementit on ryhmitelty loogisesti siten, että ne suoritetaan peräkkäin ja ne työskentelevät samojen tietojen kanssa
  • Peräkkäinen yhteenkuuluvuus - tämän tyyppisessä yhteenkuuluvuudessa moduulin elementit on ryhmitelty siten, että yhden niistä tuotoksesta tulee seuraavan tulo - ne kaikki suorittavat peräkkäin. Pohjimmiltaan, jos komponentin yhden osan tuotos on toisen panos, sanomme, että komponentilla on peräkkäinen koheesio.
  • Toiminnallinen yhteenkuuluvuus - tämä on paras ja suosituin yhteenkuuluvuustyyppi, jossa koheesioaste on korkein. Tämän tyyppisessä yhteenkuuluvuudessa moduulin elementit ryhmitellään toiminnallisesti loogiseksi yksiköksi ja ne toimivat yhdessä loogisena yksikkönä - tämä edistää myös joustavuutta ja uudelleenkäytettävyyttä.

Parhaat käytännöt

Tiukka kytkentä lisää ylläpitokustannuksia, koska se on vaikeaa ja yhden komponentin muutokset vaikuttavat kaikkiin muihin siihen kytkettyihin komponentteihin. Joten koodin uudelleenkäsittely tulee vaikeaksi, koska sinun on muokattu kaikki muut kytketyn ketjun komponentit, jotta toiminnot eivät hajoa. Tämä prosessi on hankala ja vie paljon tylsiä vaivaa ja aikaa.

Suunnittele luokat, jotka sisältävät vähemmän esimerkkimuuttujia, ts. Luokkasi suunnittelu on "hyvä", jos se sisältää pienen määrän esiintymämuuttujia. Ihannetapauksessa jokaisen luokkasi menetelmän tulisi käsitellä yhtä tai useampaa näistä esiintymämuuttujista. Teoriassa luokka on maksimaalisesti yhtenäinen, jos jokaista luokan esiintymämuuttujaa käytetään tai manipuloidaan kyseisen luokan kullakin menetelmällä. Kun koheesio luokassa on korkea, menetelmät ja luokan datajäsenet ovat riippuvaisia ​​toisistaan ​​ja toimivat yhdessä yhtenä loogisena yksikkönä. Todellisuudessa tällaisten luokkien suunnittelu ei ole mahdollista tai sanoisin pikemminkin, että ei ole suositeltavaa suunnitella luokkia, jotka ovat mahdollisimman yhtenäisiä.

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