Konaszcencia

A Wikipédiából, a szabad enciklopédiából

A konaszcencia[1] egy szoftverminőségi mérőszám amelyet Meilir Page-Jones vezetett be, hogy lehetővé tegye a függőségi kapcsolatok okozta komplexitással kapcsolatos következtetéseket az objektumorientált tervezésben, hasonlóan a strukturált tervezésnél alkalmazott csatoláshoz. A szoftverfejlesztésben két komponens akkor „konaszcens”, ha az egyik megváltoztatása a másik módosítását is szükségessé teszi a rendszer általános helyességének fenntartása érdekében. A függőségi kapcsolatok kategorizálásának lehetővé tétele mellett a konaszcencia a különböző típusú függőségek összehasonlítására is biztosít rendszert. A lehetséges tervek közötti ilyen összehasonlítások gyakran utalhatnak arra, hogy hogyan lehet javítani a szoftver minőségét.

Erősség[szerkesztés]

A konaszcencia egy formája akkor tekinthető erősebbnek, ha nagyobb valószínűséggel igényel kompenzáló változásokat a konaszcens elemekben. Minél erősebb a konaszcencia, annál nehezebb és költségesebb a kapcsolat elemeinek megváltoztatása.

Fok[szerkesztés]

A konaszcencia elfogadhatósága az előfordulás mértékével (fokával) függ össze; korlátozott mértékben esetleg elfogadható. Például egy olyan függvény vagy metódus, amelynek két paramétere van, általában elfogadhatónak tekinthető; de ha tíz paramétere van, akkor nem. A nagyfokú konaszcenciával rendelkező elemeket nehezebb és költségesebb megváltoztatni, mint az alacsonyabb fokúakat.

Lokalitás[szerkesztés]

A konaszcencia elemzésénél számít a lokalitás. Ha az érintett elemek szoros kapcsolatban állnak egymással, akkor akár az erősebb konaszcencia is elfogadható. Például sok nyelv pozicionális argumentumokat használ függvények vagy metódusok hívásakor – ez a pozíciókonaszencia elfogadható a hívó és a hívott közelsége miatt; egy webszolgáltatás esetén azonban már nem, mivel a felek nem függenek össze. Az azonos erősségű és fokú konaszcencia annál nagyobb változtatási nehézséggel és költséggel jár, minél távolabb vannak egymástól az érintett elemek.

A konaszcencia típusai[szerkesztés]

Ez a lista a konaszcencia néhány típusát tartalmazza, megközelítőleg a gyenge formáktól az erősebbek felé haladva.

  • Statikus konaszcencia: amely a kód vizuális vizsgálatával is megtalálható.
    • Névkonaszcencia (CoN): több komponensnek meg kell egyeznie egy entitás nevéről (például a metódusok nevei: ha egy elnevezés megváltozik, a metódus hívóiban is változtatást kell eszközölni).
    • Típuskonaszcencia (CoT): több komponensnek meg kell egyeznie egy entitás típusáról. Statikusan tipizált nyelvekben a metódusargumentumok típusa példa a konaszcencia ezen formájára (ha egy metódus megváltoztatja paraméterének típusát, például egész számról karakterláncra, akkor a metódus hívói is más paramétert kell átadjanak).
    • Jelentéskonaszcencia (CoM): több komponensnek meg kell egyeznie bizonyos értékek jelentésében (például a 0 és 1 egész számok visszaadása a hamis és az igaz értékek jelzésére).
    • Poziciókonaszcencia (CoP): több komponensnek meg kell egyeznie az értékek sorrendjében. Példa erre a metódushívásokban szereplő pozíciós paraméterek. A hívónak és a hívottnak meg kell egyeznie az első, második stb. paraméterek szemantikájában.
    • Algoritmuskonaszcencia (CoA): több komponensnek meg kell egyeznie egy adott algoritmusban. Példája ennek az üzenethitelesítési kódok. A csere mindkét oldalának pontosan ugyanazt a hashing algoritmust kell alkalmaznia, különben a hitelesítés sikertelen lesz.
  • Dinamikus konaszcencia: amely csak a futásidőben fedezhető fel.
    • Végrehajtáskonaszcencia (CoE): amikor több komponens végrehajtásának a sorrendje számít.
    • Időzítéskonaszcencia (CoT): amikor több komponens végrehajtásának időzítése számít.
    • Értékkonaszcencia (CoV): amikor több értéknek együttesen kell megváltoznia.
    • Identitáskonaszcencia (CoI): amikor több komponensnek kell hivatkoznia az entitásra.

Konaszcencia redukálása[szerkesztés]

A konaszcencia redukálása csökkenti a szoftverrendszerek változtatási „költségeit”. Ennek egyik módja az erős konaszcencia formáinak gyengébb formákká történő átalakítása. Például egy olyan metódus, amely több paramétert vesz fel, megváltoztatható névleges paraméterek használatára. Ezáltal az adott konaszcencia CoP-ről CoN-re változna. Az érintett elemek fokának csökkentése és a lokalitás növelése további módjai a redukálásnak.

Jegyzetek[szerkesztés]

  1. Robert C. Martin: Túlélőkönyv programozóknak, 39. oldal

Források[szerkesztés]