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.