I just got my copy of Code Complete by Steve McConnell, and there's one area I'm a bit confused about. On page 51, he says:
Robustness is the ability of a system to continue to run after it detects an error. Often an architecture specifies a more robust system than that specified by the requirements. One reason is that a system composed of many parts that are minimally robust might be less robust than is required overall. In software, the chain isn't as strong as its weakest link; it's as weak as all the weak links multiplied together. The architecture should clearly indicate whether programmers should err on the side of overengineering or on the side of doing the simplest thing that works.
(note that the text above should be covered under fair use and thus not break any copyrights)
I'm a bit confused as to what McConnell means here as he doesn't ever elaborate on the subject (as far as I can tell). Is he trying to say that overengineering is good in the context of handling errors or is he saying something else?
Steve McConnell (2004). Code Complete. Redmond: Microsoft Press.