Different software development projects fail in different ways ”and, unfortunately , too many of them fail ”but it is possible to identify a number of common symptoms that characterize these kinds of projects: [2] , [3] [2] Capers Jones, Patterns of Software Systems Failure and Success . London: International Thompson Computer Press, 1996. [3] Edward Yourdon, Death March: Managing "Mission Impossible " Projects . Upper Saddle River, NJ: Prentice-Hall, 1997. -
Inaccurate understanding of end- user needs -
Inability to deal with changing requirements -
Modules that don't fit together -
Software that's hard to maintain or extend -
Late discovery of serious project flaws -
Poor software quality -
Unacceptable software performance -
Team members in each other's way, making it impossible to reconstruct who changed what, when, where, and why -
An untrustworthy build-and-release process Unfortunately, treating these symptoms does not treat the disease. For example, the late discovery of serious project flaws is only a symptom of larger problems, namely, subjective project status assessment and undetected inconsistencies in the project's requirements, designs, and implementations . Although different projects fail in different ways, it appears that most of them fail because of a combination of the following root causes: -
Ad hoc requirements management -
Ambiguous and imprecise communication -
Brittle architectures -
Overwhelming complexity -
Undetected inconsistencies in requirements, designs, and implementations -
Insufficient testing -
Subjective assessment of project status -
Failure to attack risk -
Uncontrolled change propagation -
Insufficient automation |