Accidental complexity

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Accidental (or incidental) complexity is that complexity which arises in computer programs or the development process which is deemed not essential to the problem being solved. While essential complexity is inherent and unavoidable, accidental complexity is caused by a suboptimal approach to the problem's resolution.[1]

While sometimes accidental complexity can be due to mistakes such as ineffective planning, or low priority placed on a project, random accidental complexity may occur as a side-effect of solving any given computer problem.

Accidental complexity is to be minimized in any good architecture, design, and implementation; excessive accidental complexity is an example of an anti-pattern.


  1. ^ Holt, John (2004). UML for systems engineering: watching the wheels. IET. p. 8. ISBN 978-0-86341-354-4.