Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Software pioneers : history and architectures
Broy M., Denert E., Springer-Verlag New York, Inc., Secaucus, NJ, 2002. 750 pp. Type: Book (9783540430810)
Date Reviewed: Aug 11 2003

Why are old papers by software pioneers relevant? We are often told that a five-year-old software engineering book is hopelessly outdated and thus useless, although a statement of this kind would not be appropriate for mathematics, science, or engineering books. So let us look back, to the state of affairs of our field in 1968:

[O]ne of my major complaints about the computer field is that whereas Newton could say, “If I have seen a little farther than others, it is because I have stood on the shoulders of giants,” I am forced to say, “Today we stand on each other’s feet.” Perhaps the central problem we face in all of computer science is how we are to get to the situation where we build on top of the work of others rather than redoing so much of it in a trivially different way [1].

Who are these giants? Many of them were the software pioneers, invited to a conference organized by the German firm sd&m (software design and management) AG, and held in the old Bundestag in Bonn in 2001. This book includes some of their relatively well-known classical papers, as well as their overview papers presented--at times with interesting additions--as lectures at the conference. The papers were a pleasure to (re)read; quite a few authors were emphatic in presenting their opinions.

The authors of the book are: Denert and Broy (who edited the book and introduced the pioneers), Friedrich L. Bauer (“From the Stack Principle to Algol”), Ole-Johan Dahl (“The Roots of Object-Oriented Programming: Simula 67”), Niklaus Wirth (“Teaching Programming Principles: Pascal”), Frederick P. Brooks (“The /360 Architecture and Its Operating System”), Alan Key (“Mice and Windows”), Rudolf Bayer (“B-trees and Relational Database Systems”), Peter Chen (“Entity-relationship Modeling”), Edsger W. Dijkstra (“From ‘Goto Considered Harmful’ to Structured Programming”), C.A.R. Hoare (“Software Fundamentals”), David L. Parnas (“On the Criteria to be Used in Decomposing Systems into Modules”), John V. Guttag (“Algebraic Specification of Abstract Data Types”), Michael Jackson (“Data Structures Form Algorithms”), Tom DeMarco (“Structured Analysis”), Michael Fagan (“Reviews and Inspections”), Barry Boehm (“Software Economics”), and Erich Gamma (“Design Patterns”). Some pioneers did not come--the organizers specifically mention John Backus, Don Knuth, “all three of the [Unix] developers,” and Tim Berners-Lee. Regrettably, the organizers did not invite William Kent and Gerald Weinberg, although these two great men also made groundbreaking and lasting contributions.

The book also contains 4 DVDs with the pioneers’ overview lectures and other materials, including all papers from the book, transparencies used in the lectures, and very instructive graphical user interface (GUI) demonstrations of the late-1960s and early-1970s used in Alan Key’s lecture. Although the publishers state that the system requirements for the DVDs call for a computer with an operating system made by a famous vendor, I managed without problems to enjoy them on a Macintosh computer. In the earlier days of software engineering, a single-vendor-oriented approach would be frowned upon, as observed, for example, by Hoare, who in 1964 was “horrified” by the attempts to determine the meaning of any program “by selecting a standard implementation of that language on a particular machine” (p. 359).

The running headers of all classical papers use the term “Original historic documents.” Unfortunately, in the minds of many of these, this term is restrictive. The conceptual clarity, understandability, and elegance of these papers demonstrate that they have a much more than historical interest. It is best to learn (or relearn) concepts from a conceptually clear and concise paper!

Among other things, the software pioneers tell us that simplicity and elegance are essential, both in our specifications and programs, and in the languages we use. Hoare’s statement about Algol60--“a language so far ahead of its time that it was not only an improvement of its predecessors but also of nearly all its successors”--is rather well known. And Niklaus Wirth proudly observed that, while the defining report of Pascal required 30 pages, that of Oberon could do with 16. He also noted that “some fresh starts will have to be undertaken now and then. They require the courage to discard and abandon, to select simplicity and transparency as design goals, rather than complexity and obscure sophistication.” Although specifications are a communication mechanism (Guttag), all too often an already complex problem is made even more so by using a complex and “funny” (Dijkstra) way to represent it (perhaps complexity sells).

Although education issues were discussed, for example, in Wirth’s papers, there were no papers dedicated to education, a topic essential to discussion of the current progress (or lack thereof) in our area. An exemplary education-oriented paper would be Dijkstra’s [2]. It would be very desirable to include a list of books written by the software pioneers: these books should serve as excellent software engineering texts.

What next? Reuse of many great ideas proposed by software pioneers in our current buzzword-compliant environments may lead to reactions like “Nobody does it that way!” (Parnas), but would be the right way to go. From dealing with relationships in a proper manner (Chen), to using a language appropriate for teaching programming as a systematic discipline (Wirth), and starting with the use of mathematics--“the art and science of effective reasoning” (Dijkstra)--we may be able to “avert the highly unpleasant vision of the future” in which we deal with “software of ever growing complexity, software that nobody fully understands, although everybody is fully aware of its defects and deficiencies” (Wirth). Perhaps embedded systems --“blue-collar software”(Guttag)--will be better than white-collar software.

Reviewer:  H. I. Kilov Review #: CR128128 (0311-1201)
1) Hamming, R.W. One man's view of computer science. Journal of the ACM 16, 1(1969), 3–12.
2) Dijkstra, E.W. Language hierarchies and interfaces Lecture Notes in Computer Science, Vol. 46: Lecture Notes in Computer Science, Vol. 46. Springer-Verlag, , 1976.
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Software (K.2 ... )
 
 
General (D.2.0 )
 
 
Software Management (K.6.3 )
 
Would you recommend this review?
yes
no
Other reviews under "Software": Date
From programming language design to computer construction
Wirth N. Communications of the ACM 28(2): 160-164, 1985. Type: Article
Sep 1 1985
A note on early Monte Carlo computations and scientific meetings
Hurd C. (ed) IEEE Annals of the History of Computing 7(2): 141-155, 1985. Type: Article
Nov 1 1985
The discovery of linear programming
Dorfman R. IEEE Annals of the History of Computing 6(3): 283-295, 1984. Type: Article
Sep 1 1985
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy