Ortogonalitet


Igår kväll satt jag och bläddrade lite i den gamla goda Pragmatic Programmer, mest för att jag inte hade så mycket annat för mig just då. Ganska tidigt i boken springer man på begreppet – låt oss se om jag lyckas stava det rätt – Orthogonality, eller Ortogonalitet som det så fint heter på svenska, och jag passade på att fräscha upp min förståelse av innebörden.

Jag visste sedan tidigare att det inom systemutveckling används för att säga huruvida ändringar i en komponent – allt ifrån enstaka klasser till större logiska indelningar – påverkar andra komponenter i systemet. Det man eftersträvar inom systemutveckling är att göra systemets komponenter ortogonala för att på så sätt minska bieffekter vid förändring av dessa. Även om man inte är bekant med termen i sig genomsyrar ändå andemeningen väldigt många saker av det vi som systemutvecklare pysslar med och stöter på dagligen. Vi minimerar synlighet av variabler, vi delar in klasser i paketstrukturer eller komponenter för att logiskt avgränsa dem, vi läser om och försöker eftersträva Single Responsibility Principle (SRP) och Law of Demeter. The list goes on.

Det jag tänkte prata om i det här inlägget är att jag i samma avsnitt i boken lärde mig något nytt. Det visade sig att ortogonalitet från början är ett geometriskt begrepp och att dess innebörd kan representeras som ett diagram. I boken finns en liten bild som för mig lämnade lite att önska. Jag läste, tittade på bilden, läste lite till och bestämde mig för att rita upp diagrammet på mitt sätt, på det sätt det stämde i mitt huvud. Kanske du tänker likadant som jag och är hjälpt av det också?

Ortogonala axlar
Ortogonala linjer

Bilden ovan ska illustrera två linjer som bildar en rät vinkel (jag hittade ingen linjal). Dessa linjer är ur ett matematiskt perspektiv ortogonala. Det låter ju jättefint, men hur hänger det ihop med ordets innebörd inom systemutveckling? För att jag skulle fatta det bättre namngav jag axlarna enligt ”State of component X” respektive ”State of component Y”. Man kan då tänka sig att två komponenter, X och Y, befinner sig vardera i ett visst tillstånd. Om jag förändrar tillståndet i komponent X, till exempel byter bakgrundsfärg från blå till grön, innebär detta enligt diagrammet ovan en strikt horisontell förflyttning utmed X-axeln. Komponenten Y påverkas inte alls av en horisontell förflyttning, den behåller det tillstånd som den var i tidigare. Klart som korvspad!

Det är allt lite coolt att se innebörden av ett begrepp representerat i ett diagram, om inte annat får man en annan infallsvinkel. Kanske är det vardagsmat i en matematikers yrkesliv men i mitt duggar det verkligen inte tätt.


Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *