How to Kill a Software Project

There are many ways to kill a software project, but this is one of the most common. If you have been in software development for awhile, you may have seen the following scenario before:

A Project Launches

Problems!

At some point, usually late in the project, the team discovers that among other problems, they are finding one or more of the following problems with the features being delivered:
Management steps in and takes action:
Despite heroic efforts, problems are not resolved as well as were hoped. The deadline and system remain under threat.

And so on. What went wrong? How did we get in this boat together?

What Went Wrong

Many of these problems boil down to the following:

The Solution!

The combination of natural language requirements descriptions and executable Acceptance Tests is necessary and sufficient to describe requirements completely, precisely, and deterministically.

See the FitNesse Acceptance Testing Framework