AOM Redux Part I - Software Crisis

April 9, 2013 in Software

Software — and the corresponding area of software engineering — seems to be in crisis since the early days of computing science. The rapid growth in both computer power and problem complexity has been resulting in a corresponding increase in the difficulty of writing correct, understandable and verifiable computer programs 1. Such state was recognized since the NATO sponsored conference on software engineering circa 1968, where unreasonable expectations and change were underlined as major contributing factors. A few year later, Edsger Dijkstra commented this same issue during his 1972 ACM Turing Award lecture:

The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.

On the technology side, a similar concern was being shared by Alan Kay during the design of Smalltalk and the dawn of object-oriented programming and personal computers:

… there would be millions of personal machines and users, mostly outside of direct institutional control. Where would the applications and training come from? Why should we expect an applications programmer to anticipate the specific needs of a particular one of the millions of potential users? An extensional system seemed to be called for in which the end-users would do most of the tailoring (and even some of the direct constructions) of their tools [sic].

And yet, despite the natural reaction on creating better tools and methodologies for software development, a 1987 godelian exposure by Fred Brooks brings a general consensus among the software engineering community that there is no “silver bullet” — no single approach will prevent project overruns and failures in all possible cases. A conjecture somewhat disturbing in light of consecutive CHAOS reports, where the success rate of software projects was estimated to be only 16%, with challenged projects accounting for 53%, and impaired (cancelled) for 31% in 1994, and a success of 32%, 44% challenged, and 24% failed in 2009 2.

  1. I can’t stress enough that the pursuit of these properties are what entitles us to use the word engineering in software engineering. ↩︎

  2. Although the exact nature of these figures has been target of recent criticism, it seems that either their results are heavily biased, or even a moderate change in the accuracy of the success ratio, e.g. from 32% to 50%, would probably still render the field as in crisis. ↩︎

who am i

I am a Principal Research Engineer at Arm, ex-Professor of Software Engineering at the Faculty of Engineering, University of Porto and Research Associate at INESC TEC. Here you can find my PhD Thesis, my Résumé (not updated since 2020), and my Publications.

what is this

This is a blog about software, some mathematics, and the occasional philosophy. Not necessarily in that order.

© MMXIII — MMXXIV by Hugo Sereno Ferreira.
Content available under Creative Commons (BY-NC-SA) unless otherwise noted.
This site is hosted at Github Pages and created with Jekyll and Bootstrap.