David L. Parnas: “Risks of Undisciplined Development“, in Communications of the ACM, 10/2010.
“Recent experiences reminded me that the activity we (euphemistically) call software engineering does not come close to deserving a place among the traditional engineering disciplines. […]
Many of us preach about the importance of determining the requirements a software product must satisfy, but we do not show students how to organize their work so they can systematically produce a requirements specification that removes all user-visible choices from the province of the programmer. […]
We are caught in a catch-22 situation:
* Until customers demand evidence that the designers were qualified and disciplined, they will continue to get sloppy software.
* As long as there is no better software, we will buy sloppy software.
* As long as we buy sloppy software, developers will continue to use undisciplined development methods.
* As long as we fail to demand that developers use disciplined methods, we run the risk—nay, certainty—that we will continue to encounter software full of bugs.”