The same flexibility that makes software so useful gives rise to its greatest flaws. Software lacks the physical constraints that enforce discipline on the design process and control complexity. A mechanical part of a given volume can only support so many interconnections with other parts. Software has no limiting sense of distance between components; only the designer’s decisions limit coupling and complexity.