Skip to Content

Raw Materials

This is an excerpt from Michael Jackson (not the singer)’s book Software Requirements and Specifications, in his discussion of “Raw Materials”. It’s worth letting stand on its own.

First, make a list of all the languages you use in all your development activities. Be honest: don’t list all of the languages you have ever heard of; include only languages you have used for real work at least once…

Now, ask yourself which of the languages on your list you would choose to say these things, and how easily you could say them:

  • The lift car can’t move from the nth to the n+2th floor without passing the n+1th floor.
  • No class has more than one teacher unless it has more than ten pupils.
  • The pipes and switches of the package routing machine form a binary tree.
  • If you lift the receiver when the phone is ringing that’s an answer-call event; if it’s not ringing it’s a request-service event.
  • The system is required to prevent two trains from occupying the same track segment at the same time.
  • An ancestor of a person P is a natural parent of P or a natural parent of an ancestor of P.
  • When a button is pressed, the machine should turn the lamp on within 250 milliseconds.
  • The vending machine can prevent a coin-insertion event, but only the customer can cause it.
  • A student who passes the examination becomes a graduate.
  • An account can only be closed by the person who opened it.

Did you find it all easy? I didn’t.