Complexity is the quality of consisting of many interrelated parts. When software consists of many interrelated parts, it becomes more difficult to reason about. Software that is difficult to reason about is a more fertile breeding ground for bugs than software that is simple. Every problem space contains some level of inherent complexity, which is shared by all possible solutions. However, as pro