Ortogonalitás a szoftverfejlesztésben

Ortogonalitás

A szoftvertervezésben a rendszert ortogonálisnak tekintjük, ha az egyik alkatrész megváltoztatása csak az adott alkatrész állapotát változtatja meg.

Vegyünk egy programot három változóval: a, b és c. Az a értékének megváltoztatása nem változtathatja meg a b vagy c értékét, feltéve, hogy függetlenek.

Ez a tulajdonság különösen kritikus a program hibakeresésében, mivel a probléma kiváltó okának azonosításához a program mozgó részeinek szűkítésére kell támaszkodni.

Lásd a következő idézetet Eric S. Raymond „Art of UNIX programozásából”:

Az ortogonalitás az egyik legfontosabb tulajdonság, amely még a komplex kialakításokat is kompaktá teheti. Tisztán ortogonális kialakításban a műveleteknek nincsenek mellékhatásai; minden egyes művelet (legyen szó API-hívásról, makrohívásról vagy nyelvi műveletről) csak egy dolgot változtat meg anélkül, hogy másokat érintene. A vezérelt rendszerek mindegyik tulajdonságának megváltoztatásának egyetlen és egyetlen módja van.

Az ortogonalitás egy szoftvertervezési elv az alkatrészek írásához oly módon, hogy az egyik komponens megváltoztatása ne befolyásolja a többi komponenst. Két másik elv kombinációja, nevezetesen az erős kohézió és a laza összekapcsolódás.

Ez valójában egy matematikából kölcsönzött kifejezés. Például két egyenes merőleges, ha merőlegesek. A szoftvertervezésben két komponens merőleges, ha az egyik változása nem érinti a másikat.

Ennek a koncepciónak az osztályokra vagy más kódrészekre történő alkalmazása kevesebb összekapcsolást eredményez. A két osztály ortogonális jellege nem függhet egymástól. Ők sem oszthatják meg a globális adatokat. Az egyik osztály belső cseréje nem érinti a másik osztályt. Az alkotóelemeknek függetlennek és csak egyetlen felelősséggel kell rendelkezniük.

Vegyünk egy módszert, amely beolvassa a fájlok számlistáját és rendezett sorrendben adja vissza őket. Most a követelmények megváltoznak, és a számok egy adatbázisban vannak. Ha módosítja ezt a módszert az adatbázis eléréséhez, akkor az ügyfél kódja megváltozik. Ha ez két különböző módszer lenne, akkor egy új forrás nem befolyásolná a rendezési módszert. Csak a kliens kódnak kellene ismernie a számok forrását.

Erős kohézió

A szoftverkomponens belsejében a kódnak erősen kapcsolódnia kell. Ez azt jelzi, hogy a kód helyesen van felosztva.

Ha egy alkatrésznek két vagy több viszonylag leválasztott része volt, ez azt jelezheti, hogy ezeknek az alkatrészeknek más alkatrészekben vagy önmagukban kell lenniük.

Laza tengelykapcsoló

A szoftverkomponensek között kevés kapcsolatnak kell lennie. Ha két komponens erősen összekapcsolódik, ez azt jelezheti, hogy egy alkotóelemnek kell lennie, vagy másképp kell több részre osztani őket.