Sensible Software Engineering
These are evolutionary answers to the proliferation of software but they’re not global solutions to better software engineering and sustainability because no evolutionary process that proceeds with local optimizations can lead to globally optimal solutions on a complicated landscape like software engineering (it can happen but mostly by accident). Most people use tests and agile planning as crutches to get around having to unambiguously specify their software systems with more high level formalisms. Instead of figuring out why software was getting so messy the industry decided that sequestering the complexity behind a distributed control system was the answer.
Source: www.scriptcrafty.com