Software Pioneers documents the proceedings of a celebration of software engineering held in Bonn, Germany, in June 2001. It consists of 18 papers from eminent founders of the discipline, each accompanied by facsimile reproductions of historic documents selected by the pioneers and editors. In addition, there is a four-DVD multimedia set of the individual presentations and conference highlights.
Software engineering, the discipline, is the creation of computer programs that are reliable, efficient, user friendly and meet customers' requirements in a timely way at a reasonable cost. The term originated in 1968 as the title of a conference held in Garmisch, Germany, to address the contemporary software crisis. Software practitioners were discovering that writing programs did not scale up - costs and errors grew not linearly with the size of a program but geometrically.
At that time, a program consisting of 100,000 lines of code was a significant achievement; today, programs of 1 million lines of code are commonplace. Despite the occasional highly publicised software failure (such as the glitches in the National Air Traffic Services flight-data processing system), most software is delivered on time and within budget.
That this is possible is the result of software engineering.
More than 2 million people around the world earn their living as software engineers (or as programmers). How the discipline became so quickly and widely diffused is a fascinating question that engages some big historical ideas, such as the social construction of technological systems, the nature of scientific revolutions and the sociology of knowledge. This book, however, has adopted the more modest goal of placing on record the contributions of 18 outstanding thinkers and doers in software construction, two of whom attended the Garmisch conference.
Their unique roles are described in the excellent introduction by Ernst Denert, himself a distinguished visiting professor in software engineering and chairman of the software company that sponsored the conference. For each pioneer, Denert provides a thumbnail sketch of their contribution to the emerging discipline. Although the US dominates the world's software industry, it is interesting that, of the 18 pioneers, only a third are based in America. So another historical question is how, despite this international cast of software pioneers, the US came to dominate the industry?
Although the arrangement of the conference (and thus the book) was planned, there is no explicit organising principle; it seems that each of the 18 experts gave his presentation and then, without pause or explanation, it was the turn of the next one. So for someone seeking knowledge of the development of software engineering there is a great deal of mental integration to be done.
Three main themes can be discerned by looking at the range of speakers: programming disciplines, data management techniques and project management methods. Speakers on the first theme are well represented. Fritz Bauer, Germany's distinguished elder statesman of computing and pioneer of Algol 60, provides the opening chapter. There are contributions by Edsger Dijkstra and Nicholas Wirth, the leading practitioners of systematic programming. Ole-Johan Dahl describes the invention of object-oriented programming with his colleague Kristen Nygaard. This is complemented by Alan Kay, inventor of the graphical-user interface, who shows the direct link to early ideas in object programming. Britain's Sir Tony Hoare describes the history of assertions in programming.
The big names in software engineering (Dijkstra, Dahl and Hoare) are well known. However, the diffusion of software engineering was not down to a tiny band of celebrity academics, but to consultants and educators who mediated between the academy and industry. So the editors are to be congratulated on including Britain's Michael Jackson, inventor of the JSD proprietary design methodology used by many software professionals in this country. Jackson has to stand as proxy for individuals in many countries who brought new programming ideas out of the ivory tower into industry.
Software consists of programs and data. Once the discipline of writing programs had been addressed, the challenge was to invent ways of handing the complexities of real-world data. This task was transformed by the rise of the relational database and concepts such as abstract data types.
Pioneers represented here include Rudolph Bayer, whose contribution was on the implementation of relational databases, Peter Chen, whose subject was the invention of entity-relationship modelling, and David Parnas, who discussed information hiding.
Project management is the third leg of the software stool, and one that is comparatively neglected by universities. It is revealing that all the speakers on this topic are former industrialists turned academics - such as Fred Brooks (manager of IBM's OS/360 operating system and author of the most famous book in software engineering, The Mythical Man Month ) and Barry Boehm, inventor of the famous "waterfall methodology" and author of the first major book on software economics.
Since it is limited to 18 contributors this book inevitably has omissions, both acknowledged and unacknowledged. In some cases speakers were unable to attend because of other commitments or for health reasons (indeed, two contributors have died since the book was published). But other omissions reflect the prejudices and perspective of the organisers. For example, there is nothing on Unix or open-source software, and Microsoft is not acknowledged at all. Of course, seasoned software engineers often sneer at Microsoft, but since its founding in 1975 it has become an archetypal learning organisation that produces 30 per cent of the world's desktop software.
This book is intended both as a celebration of software engineering and as a way of capturing something of its history. It is moderately successful at the latter task. Certainly, to have lined up 18 senior software citizens is noteworthy in itself, but it could have been done better. This is unfortunate because there are some good precedents, such as the "History of Programming Languages", a conference organised by the Association of Computing Machinery in the US. There, historians of science and technology briefed speakers on the themes they should address, there were question-and-answer sessions, and the recorded proceedings were preserved in archival formats in a depository of standing. The organisers of this conference should have integrated better with the historical community, particularly as Germany boasts the finest computer museum in Europe and has numerous scholars who could have given the right kind of advice and direction.
As a celebration of software engineering the book works well. It is fairly priced, and the contributions are mostly original, readable and insightful.
It is beautifully produced on blued paper, lending a uniformity to the varied typefaces of the facsimile reproductions of historical documents.
The multimedia elements are less satisfactory, however. This, ironically, is the result of poor-quality software and an inadequately tested user interface. The menus are in German, navigation is bewildering and every time the system is restarted it repeats the same irritating introduction by the conference sponsor. In its way, this second-rate delivery speaks volumes for the current state of software. It is adequate, and most users who persevere will cope with it; but others will give up quietly without complaint.
Martin Campbell-Kelly is a computer historian, University of Warwick.
Software Pioneers: Contributions to Software Engineering
Editor - Manfred Broy and Ernst Denert
ISBN - 3 540 43081 4
Publisher - Springer-Verlag
Price - £52.50
Pages - 728