Skip to content
This repository has been archived by the owner on Aug 14, 2022. It is now read-only.

Latest commit

 

History

History
62 lines (39 loc) · 1.77 KB

designing-a-house-against-the-requirements.md

File metadata and controls

62 lines (39 loc) · 1.77 KB
date tags
2021-01-28T20:30
programming/why functional decomposition is bad
programming/incorrectly designing a house
programming/designing hardware as if it was software
programming/analogy of code design/functional decomposition

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.