Orthogonality
From CSSEMediaWiki
Revision as of 21:13, 20 October 2010 by Joey Scarr (Talk | contribs)
Orthogonality in software systems is a concept from The Pragmatic Programmer (Andrew Hunt 1999). If two components of a system are orthogonal, they should be able to vary independently. The term orthogonality is borrowed from geometry - two lines are orthogonal if they meet at right angles (so in vector terms, the two lines are independent).
Andy Hunt and Dave Thomas define the following simple test for orthogonality:
There is an easy test for orthogonal design. Once you have your components mapped out, ask yourself: If I dramatically change the requirements behind a particular function, how many modules are affected? In an orthogonal system, the answer should be "one".
The concept is summarised by the maxim "Eliminate Effects Between Unrelated Things".