Software Fundamentals: Collected Papers by David L.Parnas
T**D
Must Reading For Every Software Engineer
Parnas is one of the giants of the early days of software engineering and these papers are truly fundamental to understanding the discipline.If you have not been exposed to Parnas' work, then this book provides a collection of the essential writings of this seminal author. My personal favorite, which you should read if you are interested in software process improvement, is "A Rational Design Process: How and Why to Fake It."While its definitely not easy reading, it is worthwhile and highly recommended for every individual that aspires to being a software engineer.
A**L
One of the best, if not the best
For those of us who are interested in learning about software engineering as a profession, there is no better resource than David L. Parnas. Simply put, state of the art collection of articles which stands the test of time.
E**I
Five Stars
Truly a classic.
D**V
An insight to the software fundamentals
This book is not typical for software literature. An anthology of papers published since 1970s by one of the most influential researchers in software engineering - David Lorge Parnas. Here is a quote from the editors:---QUOTE---This book is our attempt to provide a view of the work of one of the grandmasters of our field, highlighting the fundamental ideas that he and his colleagues invented and expounded. We hope to provide the reference for those who teach and those who do, giving them both an historical record, a clear explanation of fundamental ideas that will help them in their work...---/QUOTE---Although loosely categorized under 4 parts - Description and specification, Software design, Concurrency and scheduling and Commentary, the papers are effectively assorted. The most influential papers seem to appear in the book, but there also are others that are of interest only with respect to the way the author writes, not with the discussed matter.To me, the most valuable papers fell into just two categories. First, the ones that I could apply with my practical work (for those who do). Not as a hands-on manual of course, but as the original source of the mechanisms we now have and the goals originally intended. These were papers about modularization, interfaces, abstract data types, handling errors, software "aging" etc. Second were the social and philosophical kind of papers on engineering aspects of software development, professional responsibility and ethics, teaching programming etc (for those who teach).There also were many papers that I found useless. They either discuss a specific algorithm, or have too much mathematical notation and not enough readable outcome. Mathematical rigor, that I do respect, but having presented a software practitioner with a dense mathematical proof is likely to miss the point. I don't need the proof and I won't be checking it for correctness. I need the result and I will trust it. The author himself writes in one of the papers:---QUOTE---Computer professionals do not read our literature because it does not help them to do their job better. These papers may be very good papers, they may have influenced other researchers, but they have not significantly changed the way that programs are written.---/QUOTE---Many times I couldn't even read half a page without having my mind drifting away, as the simple idea put in a single sentence brought up a world of thoughts. At that times I had to close the book and stare outside trying to sort out my own thoughts provoked with what I've just read. Many of the things about which Parnas wrote now appear under different names, and they even look and behave slightly different from how he envisioned but it is nevertheless the original source and it is a magnificent feeling to read it.The book is a great experience to read, but I won't be recommending it to you. You'll know by yourself when you want it.
C**N
At last, the classics begin to emerge
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.
Trustpilot
1 week ago
5 days ago