Orthogonality in Software Engineering

Orthogonality

I softwareteknologi betragtes et system som ortogonalt, hvis ændring af en af ​​dets komponenter kun ændrer komponentens tilstand.

Overvej f.eks. Et program med tre variabler: a, b og c. Ændring af værdien på a bør ikke ændre værdien af ​​b eller c, forudsat at de er uafhængige.

Denne egenskab er især kritisk ved fejlfinding af et program, da man er afhængig af at indsnævre antallet af bevægelige dele af et program for at identificere årsagen til problemet.

Se følgende citat fra Eric S. Raymonds “Art of UNIX programmering”:

Orthogonality er en af ​​de vigtigste egenskaber, der kan hjælpe med at gøre selv komplekse designs kompakte. I et rent ortogonalt design har operationer ikke bivirkninger; hver handling (hvad enten det er et API-opkald, en makroopkald eller en sproghandling) ændrer kun én ting uden at påvirke andre. Der er en eneste måde at ændre hver egenskab af det system, du styrer.

Orthogonality er et software design princip til at skrive komponenter på en måde, som ændring af en komponent ikke påvirker andre komponenter. Det er kombinationen af ​​to andre principper, nemlig stærk samhørighed og løs kobling.

Det er faktisk et begreb lånt fra matematik. For eksempel er to linjer vinkelrette, hvis de er vinkelrette. I softwaredesign er to komponenter ortogonale, hvis en ændring i den ene ikke påvirker den anden.

Anvendelse af dette koncept på klasser eller andre sektioner med kode resulterer i mindre kobling. At være ortogonal to klasser kan ikke afhænge af hinandens implementering. De kan heller ikke dele globale data. Ændring af internt i en klasse påvirker ikke den anden klasse. Komponenter skal være uafhængige og kun have et enkelt ansvar.

Overvej en metode, der læser en liste over numre fra en fil og returnerer dem i sorteret rækkefølge. Nu ændres kravene, og tallene er i en database. Hvis du ændrer denne metode for at få adgang til databasen, ændres klientkoden. Hvis dette var to forskellige metoder, ville en ny kilde ikke påvirke sorteringsmetoden. Kun klientkoden skal vide kilden til numrene.

Stærk samhørighed

Inde i en softwarekomponent skal kode være stærkt forbundet. Dette er en indikation af, at koden er korrekt opdelt.

Hvis en komponent havde to eller flere relativt afbrudte dele, kan det indikere, at disse dele skal være i en anden komponent eller alene.

Løs kobling

Mellem softwarekomponenter skal der være få forbindelser. Hvis to komponenter er stærkt koblet, kan det indikere, at de skal være en komponent, eller at de skal opdeles forskelligt i flere komponenter.