Orthogonality

From CSSEMediaWiki
Revision as of 21:13, 20 October 2010 by Joey Scarr (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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".

See also

Personal tools