The Azimuth Project
Requirements Engineering

Requirements Engineering

And it ought to be remembered that there is nothing more difficult to take in hand, more perilous to conduct, or more uncertain of success, than to take the lead in the introduction of a new order of things. Because the innovator has for enemies all those who have done well under the old conditions, and lukewarm defenders in those who may do well under the new. This coolness arises partly from fear of the opponents, who have the laws on their side, and partly from the incredulity of men, who do not readily believe in new things until they have had a long experience with them. Thus it happens that whenever those who are hostile have the opportunity to attack they do it like partisans, whilst the others defend lukewarmly….“

You should not now do an admittedly right action for fear you, or your equally timid successors, should not have the courage to do right in some future case, which, ex hypothesi, is essentially different, but superficially resembles the present one. Every public action which is not customary, either is wrong, or, if it is right, is a dangerous precedent. It follows that nothing should ever be done for the first time.

  • Francis Mcdonald Cornford, The principle of the dangerous precedent (1908/1949)



For IT projects, a 2004 industry study by the Standish Group found an average cost overrun of 43 percent; 71 percent of projects came in over budget, exceeded time estimates, and had estimated too narrow a scope; and total waste was estimated at $55 billion per year in the US alone.

You wouldn’t build a building, bridge or aeroplane without a verifiable quantified design; in these cases stress calculations and finite element methods.


What do you want the application to do? Why?

Software handles information. What information do you want processed?

  • Write a set of user stories
  • Formulate a list of questions
  • Translate all user stories and questions into unit tests for the finished system.
  • Assign a score of -1000 to your project.

Goal Zero: The Test Failure approach

  • Write code, test code, adjust score.
Negative Score

The reasons for adopting this negative score are:

  • progress is monitored
  • progress is visible and thus rewardable
  • backward steps can be immediately detected
  • it is simple and easily decomposable and integratable over subprojects. The large number of items associated, say, with PERT tasks are overwhelming and useless.


Functional thinking and type-level specification independent of any implementation in a programming language.

Requirements analysts need to ask the right questions repeatedly. They need to be more inquisitive and know why people want things as well as what happens beforehand. This requires them to become less inhibited and keep asking questions until they and their stakeholders are satisfied with the answers.

S. Nejati, M. Sabetzadeh, M. Chechik, S. M. Easterbrook, and P. Zave. Matching and Merging of Statecharts Specifications (2007), In proceedings of the 29th International Conference on Software Engineering (ICSE’07), Minneapolis, USA, 21-25 May 2007.