** Kokoonpanon yleissopimus (COC) on ohjelmistosuunnittelun paradigma, jonka tavoitteena on yksinkertaistaa kehitystä käyttämällä ennalta määritettyjä oletuksia ja standardeja, mikä vähentää kehittäjien on tehtävä päätösten määrää. Vaikka COC voi parantaa tuottavuutta ja johdonmukaisuutta, on skenaarioita, joissa se voi epäonnistua tai olla vähemmän tehokas:
1. joustavuuden puute **
Yksi COC: n ensisijaisista kritiikoista on sen potentiaali rajoittaa joustavuutta. Ympäristöissä, joissa vaaditaan ainutlaatuisia tai epästandardeja ratkaisuja, tiukasti noudattaminen yleissopimuksiin voi olla rajoittavaa. Esimerkiksi, jos projekti vaatii tietokantakaavan, joka ei noudata tavanomaisia nimeämiskäytäntöjä, tarvitaan lisäkokoonpanoja, jotka voivat kompensoida COC: n etuja [5] [4].
2. Konfliktit muiden suunnitteluperiaatteiden kanssa **
COC voi joskus olla ristiriidassa muiden suunnitteluperiaatteiden kanssa, kuten "eksplisiittinen on parempi kuin implisiittinen" periaate Pythonin Zenistä. Tämä periaate viittaa siihen, että eksplisiittiset kokoonpanot ovat parempia kuin implisiittiset oletukset, jotka voivat johtaa sekaannukseen tai odottamattomaan käyttäytymiseen, ellei hyvin dokumentoitu [9] [4].
3. Ei-standardien skenaarioiden monimutkaisuus **
Käsitellessään monimutkaisia tai epästandardeja skenaarioita, COC ei ehkä tarjoa tarvittavaa joustavuutta käsitellä ainutlaatuisia vaatimuksia tehokkaasti. Esimerkiksi järjestelmässä, jossa useita tietokantoja, joilla on erilaiset kaaviorakenteet, on integroitava, pelkästään valmistelukuntien luottaminen voi johtaa tehottomuuksiin tai ylimääräiseen monimutkaisuuteen [4] [10].
4. Oppimiskäyrä ja adoptio **
COC: n toteuttaminen vaatii tietyn tason perehtymisen itse yleissopimuksiin. Uudet kehittäjät saattavat olla haastavaa oppia ja sopeutua näihin yleissopimuksiin, varsinkin jos niitä käytetään selkeämpiin kokoonpanomenetelmiin. Tämä voi lisätä oppimiskäyrää ja mahdollisesti estää uusien tiimin jäsenten tuottavuutta [1] [4].
5. implisiittiset oletukset ja dokumentaatio **
COC luottaa voimakkaasti implisiittisiin oletuksiin, jotka perustuvat vakiintuneisiin yleissopimuksiin. Jos näitä oletuksia ei ole dokumentoitu tai ymmärrettävä, se voi johtaa väärinkäsityksiin tai virheisiin. Kehittäjillä on oltava syvä käsitys yleissopimuksista, jotta niitä voidaan käyttää tehokkaasti, mikä voi olla este yhteistyöympäristöissä [10] [8].
6. Yliarvoisuus oletusarvoissa **
Joissakin tapauksissa kehittäjät saattavat luottaa liian voimakkaasti COC: n tarjoamiin laiminlyönteihin ymmärtämättä täysin taustalla olevia oletuksia. Tämä voi johtaa odottamattomaan käyttäytymiseen, jos oletusarvot eivät ole yhdenmukaisia projektin erityistarpeiden kanssa. Esimerkiksi, jos kehys edellyttää oletuksena tietyn tietokantarakenteen, mutta todellinen rakenne on erilainen, näiden oletusten ohittamiseksi tarvitaan lisäkokoonpanoja [4] [11].
Yhteenvetona voidaan todeta, että vaikka konfiguraation yleissopimus tarjoaa monia etuja tuottavuuden ja johdonmukaisuuden suhteen, se voi epäonnistua tai olla vähemmän tehokas skenaarioissa, jotka vaativat suurta joustavuutta, monimutkaisia kokoonpanoja tai silloin, kun taustalla olevia yleissopimuksia puuttuu.
Viittaukset:[1] https://facilethings.com/blog/en/convention-over-configuration
[2] https://www.reddit.com/r/rails/comments/a68d7i/im_terrified_of_convention_over_configuration/
[3] https://www.devx.com/terms/convention-over-configuration/
[4] https://en.wikipedia.org/wiki/convention_over_configuration
.
[6] http://softwaregineering.vazexqi.com/files/patern.html
.
[8] https://devopedia.org/convention-over-configuraatio
[9.
[10] https://techblog.bozho.net/a-problem-with-convention-over-configuration/
[11] https://stackoverflow.com/questions/71985512/convention-over-configuration-in-Rails
[12] https://davewentzel.com/content/convention-over-configuration/