FREE Delivery in the UK.
Only 3 left in stock.
Dispatched from and sold by Amazon.
Gift-wrap available.
Software Fundamentals: Co... has been added to your Basket
Condition: Used: Good
Comment: Used Good condition book may have signs of cover wear and/or marks on corners and page edges. Inside pages may have highlighting, writing and underlining. All purchases eligible for Amazon customer service and a 30-day return policy.
Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See this image

Software Fundamentals: Collected Papers by David L.Parnas Paperback – 9 Apr 2001

See all 2 formats and editions Hide other formats and editions
Amazon Price New from Used from
"Please retry"
£29.18 £15.14
£31.99 FREE Delivery in the UK. Only 3 left in stock. Dispatched from and sold by Amazon. Gift-wrap available.

Special Offers and Product Promotions

Product details

More About the Author

Discover books, learn about writers, and more.

Product Description

From the Back Cover

David L. Parnas is one of the grandmasters of software engineering. His academic research and industrial collaborations have exerted far-reaching influence on software design and development. His groundbreaking writings capture the essence of the innovations, controversies, challenges, and solutions of the software industry. Together, they constitute the foundation for modern software theory and practice.

This book contains thirty-three of his most influential papers in various areas of software engineering. Leading thinkers in software engineering have contributed short introductions to each paper to provide the historical context surrounding each paper's conception and writing.

Software Fundamentals: Collected Papers by David L. Parnas is a practical guide to key software engineering concepts that belongs in the library of every software professional. It introduces and explains such seminal topics as:

  • Relational and tabular documentation
  • Information hiding as the basis for modular program construction
  • Abstract interfaces that provide services without revealing implementation
  • Program families for the efficient development of multiple software versions
  • The status of software engineering as a profession
  • Why complex software, such as for the Strategic Defense Initiative, is unlikely to work the first time that it is used in the field

As a celebration of one of the fathers of modern software engineering, and as a practical guide to the key concepts underlying software development, Software Fundamentals is valuable for professionals, especially those who are interested in teaching the fundamentals of software.

David Parnas is highly regarded for his many valuable contributions to software engineering. He developed and applied cutting-edge software technology to the U.S. Navy's A-7E aircraft, and he advised the Atomic Energy Control Board of Canada on the use of safety-critical, real-time software. During his career, he has contributed more than 200 papers to ACM, IEEE, and ICSE publications. He won an ACM "Best Paper" award, two "Most Influential Paper" awards from ICSE, and the 1998 "Outstanding Researcher" award from ACM SIGSOFT. In May 2001, Dr. Parnas was recognized at the International Conference on Software Engineering for his lifetime of outstanding achievements.

About the editors:

Daniel Hoffman is an Associate Professor of Computer Science at the University of Victoria in British Columbia. David Weiss is the Director of the Software Technology Research Department at Avaya Laboratories.


About the Author

Daniel Hoffman is an Associate Professor of Computer Science at the University of Victoria in British Columbia.

David M. Weiss is the Director of the Software Production Research Department at Avaya Laboratories. His technical work has evolved into the invention of processes that incorporate ideas from families, design for change, measurement, precise specification, and technology transfer. The result has been a software production process based on family-oriented abstraction, specification, and translation, known as FAST.


Customer Reviews

There are no customer reviews yet on
5 star
4 star
3 star
2 star
1 star

Most Helpful Customer Reviews on (beta) 13 reviews
18 of 19 people found the following review helpful
At last, the classics begin to emerge 29 Jun 2001
By Norman L. Kerth - Published on
Format: Paperback
If you are old enough to have studied David Parnas' papers, buy this book - all his treasures are collected in one convenient place.
If you are too young to have studied Parnas' work, then know there is great value in studying the classics no matter what field you are in. Until now, we have not been able to study classics, as our field was too young for true classics to have been identified. As I read this book, I realize Parnas' papers have stood the test of time and are worthy of serious study by all in our field who wish to be thought of as professional software engineers.
During the early decades of our profession, David wrote some of the most insightful papers published. He uniquely wove a scholarly approach to understanding how we might develop our field, with a pragmatic view of what really happens as we set out to build software systems.
As I developed my career, his papers influenced how I thought about and approached my discipline. More than that, his papers influenced the foundation of all software engineering. For example, he first applied the word "module," to our field - the term since has been abused to the point where it means nothing, but he was talking about what we have come to call an object! With the term "information hiding," he was telling us how to design fine objects.
Beyond objects, he explored how to approach reuse, he laid the foundation for application frameworks, and showed us that methodical system specification was possible. These are just a few examples, he addressed so much more.
Adding value to Parnas' collection of papers, some of the most influential leaders in the field of software engineering introduce his papers, explaining how Parnas' ideas are being put to work in our modern day practice.
I remember a time, sitting beside my grandfather as he showed me pictures he had taken throughout his life. For him it was a chance to remember important times from his past. For me it was my opportunity to learn about a history that had great influence on me. His stories answered who I was and why my family was the way it was.
"Software Fundamentals," provides just such a valuable experience. If you are "one of the old guys," you will enjoy looking again at these wonderful ideas. If you are a "young'n" then learn about the foundations of software engineering, learn where we have come from, learn the lessons of an earlier generation and you will have my respect. After all, those who do not learn from history, are condemned to relive it.
13 of 13 people found the following review helpful
Classics and unknown gems 28 May 2001
By James J. Horning - Published on
Format: Paperback
Despite a half-century of practice, a distressingly large portion of today's software is over budget, behind schedule, bloated, and buggy.
To those who wonder why, and whether anything can be done about it, I have long recommended the book {\it The Mythical Man-Month}, by Frederick P. Brooks, Jr. This book has stayed continuously in print since 1975, and remained remarkably relevant.
Now there is another book I would put beside it. {\it Software Fundamentals: Collected Papers by David L. Parnas} is more technical and less management-oriented, but equally thought-provoking.
Parnas has been writing seminal and provocative papers about software and software development for more than 30 years. This book collects more than 30 of these papers. It includes well-known classics such as "On the Criteria to Be Used in Decomposing Systems into Modules," "On a 'Buzzword': Hierarchical Structure," "On the Design and Development of Program Families," "Designing Software for Ease of Extension and Contraction," "A Rational Design Process: How and Why to Fake It," and "Software Engineering: An Unconsummated Marriage." It also has some lesser-known gems, such as "Who Taught Me About Software Engineering Research?", "Active Design Reviews: Principles and Practices," and "Software Aging."
Because the papers were written to stand alone, and because each has its own introduction, the reader can browse them in just about any order.
Browsing or reading this book, I think you'll be struck by how much of today's "conventional wisdom" about software was introduced (or championed very early) by Dave. Equally surprising is the number of his good ideas that have still not made their way into current practice. Anyone who cares about software should ask, Why?
Parnas isn't always right, but he's never dull. One of the most valuable things to do with this book is to pick something he says that you disagree with (preferably something you think is "obviously wrong"), and try to construct a convincing counter-argument. You'll probably find it harder than you expect, and you'll almost surely learn something valuable.
12 of 12 people found the following review helpful
There's nothing new under the sun... 17 Sep 2001
By Brent Fulgham - Published on
Format: Paperback
The software world is full of "revolutionary" ideas that seem to be periodically rediscovered. Topics such as refactoring, data hiding, and "design for change" have all made recent rounds in the development world. However, most of these concepts have been part of the research literature for decades.
Much of the software development work done today is done by people lacking the requisite fundaments for the job. Very few are capable of assessing the true technical strengths of software products. Most are content to read the glossy sales brochures or shallow write-ups in trade magazines to maintain their knowledge of the state of the art. A careful reading of the collected papers in this volume go a long way towards protecting the reader from the modern snake oil salesmen of the software industry.
This book should be required reading for all software developers who strive to deserve the title "Engineer."
9 of 9 people found the following review helpful
Well-Organized Review, Insightful Content. 31 Dec 2003
By John Ryan - Published on
Format: Paperback
I consider this book on two levels:
1. How well does it capture and present the important contributions Parnas has made to the Software Engineering discipline?
2. Is the content (i.e. Parnas' papers) useful?
This book does a beautiful job of collecting and organizing Parnas' papers. Each paper is preceeded by an introduction from a peer or other recognized prominent computer scientist. Almost all of these introductions are insightful in themselves: they help create a context for the essay which made it easier for me to fill in the gaps. Almost all of the contributors' writting styles are lucid and easy to read. I found reading through this book quite enjoyable.
Parnas' contributions are critical, no doubt. The concept of Information Hiding as a criteria for modular decomposition really helped form modern "object-oriented" thinking. It seems to me that returning to the first well-formed idea can often grant insights into how to be more effective with its offspring. Indeed, Chapter 7 in this text is essentially a primer on how to think in object-oriented terms.
You'll not find a passage that reads, "now here's an example of that in Java/C#/C++" But that's the blessing: Parnas communicates the essence of the principles that yield quality software engineering without getting lost in unnecessary details. The fact that some of these papers were written 30 years ago helps bring home the fact that novel ideas are rare.
One aspect of 30 year-old writtings that may be a stumbling block for similarly aged programmers is that these works live in an iron world: where programs lived very close to their hardware. Parnas uses phrases like "4 bytes packed in a word" and "core" that seem primal (not to say that some folks aren't concerned with word-sizes and which endian, just that the overall percentage is much lower). For some, this may seem to be a waste of time to try to understand. I encourage the reader to ferret out the bigger message...the more abstract picture of principles that guide one to conceive, organize, implement and document quality software.
If you are a journeyman programmer looking for the original latin, enjoy this well-polished collection for yourself.
4 of 4 people found the following review helpful
Excellent Collection of Thought Provoking Material 18 Jun 2001
By Amazon Customer - Published on
Format: Paperback
A great collection of papers showing a wide range of Parnas' thinking, on mathematical subjects, on the software engineering subjects he is best known for professionally, and on matters of personal and professional responsibility (like his views against SDI, which have become of increased relevance again).
I would not necessarily recommend this book to somebody who is looking for concrete and comprehensive answers to some pressing problem. Rather, the book is an opportunity to glimpse into the thinking of an extraordinary researcher and to pick up some useful professional insights along the way (similar to Knuths' _Selected Papers on ..._ series or Dijkstra's _Selected Writings on Computing_).
In reading the software engineering papers, I was particularly impressed with Parnas' formal, yet utterly pragmatic use of math (as opposed to the mathematical showboating common in the program verification literature).
The book also adds a lot of context to Parnas' stand on SDI, showing that he was, in general, more than willing to work on military (and nuclear) projects.
A delightful read, only slightly blemished by a somewhat excessive number of errata (which, I believe, are fair game to criticize in a book dedicated to software quality).
Were these reviews helpful? Let us know