Ortogonalnost u softverskom inženjerstvu

Ortogonalnost

U softverskom inženjerstvu sustav se smatra pravokutnim ako promjena jedne od njegovih komponenata promijeni samo stanje te komponente.

Na primjer, razmotrite program s tri varijable: a, b i c. Promjena vrijednosti a ne bi trebala promijeniti vrijednost b ili c, pod uvjetom da su neovisni.

Ovo je svojstvo posebno kritično u otklanjanju pogrešaka u programu jer se oslanja na sužavanje broja pokretnih dijelova programa kako bi se identificirao osnovni uzrok problema.

Pogledajte sljedeći citat iz "Umijeća programiranja UNIX-a" Erica S. Raymonda:

Ortogonalnost je jedno od najvažnijih svojstava koje čak i složene dizajne mogu učiniti kompaktnim. U čisto ortogonalnom dizajnu, operacije nemaju nuspojave; svaka radnja (bilo da je riječ o API pozivu, pozivu makronaredbe ili jezičnoj operaciji) mijenja samo jednu stvar bez utjecaja na druge. Postoji jedan i jedini način da promijenite svako svojstvo bilo kojeg sustava kojim upravljate.

Ortogonalnost je načelo softverskog dizajna za pisanje komponenata na način da promjena jedne komponente ne utječe na druge komponente. Kombinacija je to dva druga principa, naime snažne kohezije i labavog spajanja.

To je zapravo pojam posuđen iz matematike. Primjerice, dvije su crte pravokutne ako su okomite. U dizajnu softvera, dvije su komponente pravokutne ako promjena jedne ne utječe na drugu.

Primjena ovog koncepta na klase ili druge odjeljke koda rezultira manjom spregom. Biti ortogonalne dvije klase ne mogu ovisiti o međusobnoj provedbi. Oni također ne mogu dijeliti globalne podatke. Promjena unutrašnjosti jedne klase ne utječe na drugu klasu. Komponente bi trebale biti neovisne i imati samo jednu odgovornost.

Razmotrite metodu koja čita datoteku s brojeva i vraća ih poredanim redoslijedom. Sada se zahtjevi mijenjaju i brojevi su u bazi podataka. Izmjena ove metode za pristup bazi podataka uzrokovala bi promjenu klijentskog koda. Da su ovo dvije različite metode, novi izvor ne bi utjecao na način sortiranja. Izvor klijenta morao bi znati samo klijentski kôd.

Snažna kohezija

Unutar softverske komponente kod bi trebao biti čvrsto povezan. To je pokazatelj da je kod ispravno podijeljen.

Ako je komponenta imala dva ili više relativno nepovezanih dijelova, to može značiti da bi ti dijelovi trebali biti u drugoj komponenti ili samostalno.

Labava spojnica

Između softverskih komponenti trebalo bi biti malo veza. Ako su dvije komponente čvrsto povezane, to može ukazivati ​​na to da moraju biti jedna komponenta ili da ih treba drugačije podijeliti na više komponenata.