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.

Comment on
Software Fundamentals. Collected Papers by David L. Parnas.

A thoroughly stupendous book. I'm still working my way through it. It's exceptionally thought-provoking, which makes it a little heavy going. This is not something you read in an afternoon, not if you want to get the most out of it. The thing that most impressed me was that some of the papers were first written in the 70s, and yet they remain very, very relevant in today's computing world.

I was going to key in the table of contents but when I realised that the ToC alone spans 11 pages I gave up. Hope is at hand, as it is also published on the web.

If you are looking to buy it now (circa sep 2001), be aware that it is still only available in hardback. But buy it one way or another, and stand on the shoulders of a giant.

--

grinder

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.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other