Computer System Design Principles
Robustness principle
- Be tolerant of inputs, strict on outputs.
End-to-end argument
- The application knows best.
Open design principle
- Let the world comment on the design; you need all the help you can get.
Incommensurate scaling rule
- Changing any parameter by a factor of ten usually requires a new design.
Design for iteration
- Becuase you won't get it right the first time.
Keep digging principle
- When something goes wrong, look beyond the first cause. There are nearly always several reasons.
Principle of diminishing returns
- To increase utilization requires effort that is out of proportion.
Reuse principle
In reusing a good idea, it is better to specialize than to generalize.
Adopt sweeping simplifications
- So you can see what you are doing.
Stay back from the edge of the cliff
- Safety margins help cope with uncertainties.
Beware of excessive generality
- If it is good for everything it is good for nothing. (Hammer's law).
Retrieved From [Topics in the engineering of computer systems]