Order Software Fundamentals. Collected Papers by David L. Parnas.
Item Description: A collection of classical papers in Software Engineering and Computer Science.
Review Synopsis: Truly classical papers bundled into an inspiring volume with focus on software engineering methods and ethics.
The book contains a collection of papers by David L. Parnas and colleagues.
Focus is on the following four areas:
- Description and Specification: Parnas was one of the first to introduce formal definitions for what a specification is and what it should contain. Secondly, he advanced the state of the art in this field by introducing a new tabular notation for expressing complex logical predicates and functions. Parnas' ideas have been tested in the documentation of several large-scale industrial products, such as the software for the A-7 aircraft or the shutdown software for the Darlington nuclear power plant. A real gem in this section is a paper about a new, more pragmatic interpretation of classical logical predicates in partial functions that solves some problems with "undefined" expressions and the "unknown" truth value.
- Software Design: Parnas is the author that introduced the notion of "Information Hiding" (a.k.a. Encapsulation, Data Hiding, ...) that is one of the foundations of modern software engineering. This principle is the focus of several classical papers in this section. Other topics in this section are a precise definition of "Abstract Types as Classes of Variables", a paper on the "Response to Undesired Events in Software Systems", comments on design reviews and a famous paper on "A Rational Design Process: How and Why to Fake It".
- Concurrency and Scheduling: Some papers on famous problems in this difficult area. Probably not the reason to buy this book.
- Commentary: Papers on general issues, most notably Parnas' comments on why SDI can't be built with a realistic expectation that it will work. Heavy focus on professional ethics and how to educate software engineers to work like engineers in the common sense of the word.
All in all, this was a buy-and-read-instantly book for me.
I knew some of the papers, and more of them just by name. Reading the whole stuff definitely was an inspiring session, and has thoroughly convinced me that I have a responsibility to live up to as software developer. I hope the inspiration will turn into energy in practical life. The book has shown me that it is possible to do much more than I have done until now.