Designing a house against the requirements

Requirements are not to be ignored, but they are also not the main focus.

Though this is usually the outcome, as systems are commonly chopped up with use cases split between the customers.

Imagine we build a house, and listen to the requirements of the family that will buy this brand new home.

Identifying the requirements

Let’s consider a family who wants a new home. They want a house.

This family is so heavily focused on cooking. They want a house they can do some proper cooking in. They want the best equipment. The best kitchen tables. The best ovens. The most feature-complete set of pots, pans, and knives.

Cooking is the number 1 priority.

This house is for family that loves cooking. Got it.

Start implementing

You design the house with all intent that cooking is the requirement. It is the best house for cooking. THE best.

Requirements change

Family just moved in. They’re tired. They order a pizza.

The house explodes fails.

What was the real requirement?

It was not cooking. It never is cooking.

The requirements of a house is to take care of its inhabitants.

Everything else is fluff. Details.

If you design the house using Functional decomposition, then you’re never done with the specifications. They will never fulfil the requirements.

Key takeaways

  • Do not ignore the requirements
  • Do not design against the requirements

References

  • J. Löwy (January 27, 2021), “Righting Software - System Design” [Workshop], NDC London 2021.