Complex software
Large software programs usually employ code to write other code. Despite all testing, it's impossible to know whether a million lines of loop back coding are bug free. Instead the system architecture has to preclude drastic failure -- by graceful failure in case of an unexpected burp.