On my Real-Time Systems book called "Hard Real-Time Computing Systems" by Giorgio C. Butazzo, in the introductory chapter the author writes:
"Due to the relevance that pessimistic assumptions have on the design of real-time systems, Table 1.1 lists the most significant laws on the topic, which a software engineer should always keep in mind".
Table 1.1 is the next one:
Murphy’s General Law
If something can go wrong, it will go wrong.
Damage to an object is proportional to its value..
One can make something bomb-proof, not jinx-proof..
1. Any software bug will tend to maximize the damage.
2. The worst software bug will be discovered six months after the field test..
If a system is designed to be tolerant to a set of faults, there will always exist an idiot so skilled to cause a nontolerated fault..
Dummies are always more skilled than measures taken to keep them from harm..
Johnson’s First Law
If a system stops working, it will do it at the worst possible time.
Sodd’s Second Law
Sooner or later, the worst possible combination of circumstances will happen.
A system must always be designed to resist the worst possible combination of circumstances.