The Rational Unified Process: An Introduction (3rd Edition)
SYMPTOMS AND ROOT CAUSES OF SOFTWARE DEVELOPMENT PROBLEMS
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] Caper Jones, Patterns of Software Systems Failure and Success . London:International Thompson Computer Press, 1996
[3] Edward Yourdon, Death March: Managing "Mission Imposible" 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