On Building Systems That Will Fail (1991)
The Turing Lecture Paper by Fernando J. Corbató discusses the inevitability of failures in ambitious systems, citing examples and challenges in handling mistakes. It highlights the impact of continuous change in the computer field.
Read original articleThe Turing Lecture Paper by Fernando J. Corbató discusses the inevitability of failures in ambitious systems, emphasizing that the question is not if something will go wrong, but when. Examples from various domains like football, military warfare, and Boston driving illustrate how even well-designed systems can encounter unexpected issues. Corbató highlights the challenges in handling subtle mistakes, citing instances of numerical calculation errors and flawed programming approaches. Ambitious systems are described as vast, complex, and prone to underestimating completion times due to uncertainties and rapid technological advancements. The paper underscores the impact of continuous change in the computer field, leading to the development of increasingly ambitious systems across various industries. Corbató also touches on the exponential growth in computer performance and the decreasing cost of computing over the decades, reflecting on the evolution of technology from large machine rooms to embedded computers in everyday devices.
Related
Software design gets worse before it gets better
The "Trough of Despair" in software design signifies a phase where design worsens before improving. Designers must manage expectations, make strategic decisions, and take incremental steps to navigate this phase successfully.
Programmers Should Never Trust Anyone, Not Even Themselves
Programmers are warned to stay cautious and skeptical in software development. Abstractions simplify but can fail, requiring verification and testing to mitigate risks and improve coding reliability and skills.
The Software Crisis
The software crisis, coined in 1968, highlights challenges in managing software complexity. Despite advancements, issues persist, emphasizing responsible construction, user agency, and sustainable development practices through constrained abstractions and user empowerment.
The IT Industry is a disaster (2018)
The IT industry faces challenges in IoT and software reliability. Concerns include device trustworthiness, complex systems, and security flaws. Criticisms target coding practices, standards organizations, and propose accountability and skill recognition.
Big Ball of Mud (1999)
The paper delves into the Big Ball of Mud software architecture, analyzing its causes, challenges, and strategies for improvement. It highlights the balance between pragmatism and long-term architectural considerations in software development.
When I had to drive into Boston as opposed to taking the train as a commute, 6:15am was about the latest I could leave for it not to be completely insane.
As we approach the present, corresponding to a personal computer, the graph really should become more complicated since one consequence of computers becoming super-cheap is that increasingly, they are being embedded in other equipment. The modern automobile is but one example. And it remains to be seen how general-purpose the current wave of palm-sized computers will be with their stylus inputs.
Note the six points mentioned in the final "Conclusions" section;
First it is important to emphasize the value of simplicity and elegance, for complexity has a way of compounding difficulties and as we have seen, creating mistakes. My definition of elegance is the achievement of a given functionality with a minimum of mechanism and a maximum of clarity.
Second, the value of metaphors should not be underestimated. Metaphors have the virtue that they have an expected behavior that is understood by all. Unnecessary communication and misunderstandings are reduced. Learning and education are quicker. In effect metaphors are a way of internalizing and abstracting concepts such that one's thinking can be on a higher plane and low-level mistakes are avoided.
Third, use of constrained languages for design or synthesis is a powerful methodology. By not allowing a programmer or designer to express irrelevant ideas, the domain of possible errors becomes far more limited.
Fourth, one must try to anticipate both errors of human usage and of hardware failure and properly develop the necessary contingency paths. This process of playing "what if" is not as easy as it may sound since implicit is the need to attach likelihoods of occurrence to events and to address issues of the independence of failures.
Fifth, it should be assumed in the design of a system, that it will have to be repaired or modified. The overall effect will be a much more robust system, where there is a high degree of functional modularity and structure, and repairs can be made easily.
Sixth, and lastly, on a large project, one of the best investments that can be made is the cross-education of the team so that nearly everyone knows more than he or she needs to know. Clearly with educational redundancy, the team is more resilient to unexpected tragedies or departures. But in addition, the increased awareness of team members can help catch global or systemic mistakes early. It really is a case of "more heads are better than one."
Related
Software design gets worse before it gets better
The "Trough of Despair" in software design signifies a phase where design worsens before improving. Designers must manage expectations, make strategic decisions, and take incremental steps to navigate this phase successfully.
Programmers Should Never Trust Anyone, Not Even Themselves
Programmers are warned to stay cautious and skeptical in software development. Abstractions simplify but can fail, requiring verification and testing to mitigate risks and improve coding reliability and skills.
The Software Crisis
The software crisis, coined in 1968, highlights challenges in managing software complexity. Despite advancements, issues persist, emphasizing responsible construction, user agency, and sustainable development practices through constrained abstractions and user empowerment.
The IT Industry is a disaster (2018)
The IT industry faces challenges in IoT and software reliability. Concerns include device trustworthiness, complex systems, and security flaws. Criticisms target coding practices, standards organizations, and propose accountability and skill recognition.
Big Ball of Mud (1999)
The paper delves into the Big Ball of Mud software architecture, analyzing its causes, challenges, and strategies for improvement. It highlights the balance between pragmatism and long-term architectural considerations in software development.