Paper about robustness and fragility of software systems by Steven Gribble:
…we believe that any system that attempts to gain robustness solely through precognition is prone to fragility.
…precognition: attempting to gain knowledge of something in advance of its actual occurrence.
Complex systems must expect failure and plan for it accordingly.
This fragility arises because the diffuse coupling of components within a complex systems makes them prone to completely unpredictable behavior in the face of small perturbations. Instead, we argue that a different design paradigm needs to emerge if we want to prevent the ever-increasing complexity of our systems from causing them to become more and more unstable. This different design paradigm is one in which systems are given the best possible chance of stable behavior (through techniques such as overprovisioning, admission control, and introspection), as well as the ability to adapt to unexpected situations (by treating introspection as feedback to a closed control loop).