| date: | 2005-09-07 10:10:35 |
|---|---|
| category: | War Stories and Advice |
Requirements have a number of uses.
The back-and-forth between requirements and architecture takes many paths, each of which helps clarify the requirements.
Sometimes an architecture is too complex or expensive. The requirements often include some non-functional features that drive up costs. Other times, a use case has too much automation, or is otherwise poorly constrained and leads to large costs in software purchases or development.
Sometimes an architecture is incomplete. The requirements are often vague or incomplete, allowing a too-simple architecture to appear to be a solution.
Sometimes the architecture seems to have the wrong components or focus. This is often the case when the requirements writers had a specific technology in mind, and weren’t open to alternative solutions to the problem. In this case, the traceability between architecture and requirements has to be examined to see if a change to the requirements is really necessary. Sometimes a formal proof of concept is necessary to convince the reviewers that the proposed architecture does meet the requirements, even when it is not the expected solution.
The big failures occur when the project plan has a strict, one-way waterfall from requirements to architecture to implementation with no back-and-forth. That is madness because then every bad idea in the requirements becomes an architectural feature adding cost and risk; any attempt to revoke a bad idea becomes scope creep and the project collapses.
Cause of death: a lack of useful interplay between requirements and architecture.