📖 Overview
A Rational Design Process examines software development methodology and contrasts idealized design approaches with real-world practices. The paper challenges conventional wisdom about how software design actually occurs versus how it is documented and presented.
Parnas explores the gap between how engineers claim to develop systems and the messier reality of the design process. He proposes ways to structure and document development efforts that acknowledge inherent uncertainty while still maintaining rigor.
The work outlines specific techniques for presenting designs in a rational, structured way even when the actual development path was more circuitous. These methods help teams communicate technical decisions and system architecture effectively.
This influential paper sparked important discussions about honesty in engineering documentation and the balance between theoretical ideals and practical constraints in software development. Its core insights about managing complexity and communication remain relevant to modern software engineering practices.
👀 Reviews
This appears to be an academic paper/article rather than a published book, so it does not have typical book reviews or ratings on Goodreads/Amazon.
The paper is frequently referenced in software engineering discussions, with readers noting its practical approach to documenting design decisions after-the-fact. Software practitioners appreciate Parnas's candid admission that real development processes rarely follow an idealized sequential order.
Key points readers highlight:
- The value of documenting rational design choices even if made informally
- Acknowledgment that documentation often happens after implementation
- Practical advice for maintaining useful documentation
Common criticisms:
- Paper is brief and could provide more detailed examples
- Some find the title misleading - it's more about documentation than "faking" process
- Academic language can be dense for practitioners
The paper is frequently cited in academic literature and software engineering forums, though formal review aggregators are not available since it's a research publication rather than a commercial book.
📚 Similar books
Clean Code by Robert C. Martin
This guide demonstrates systematic approaches to writing maintainable software through principles that parallel Parnas' ideas on rational design processes.
Software Design X-Rays by Adam Tornhill The book presents methods to analyze codebases and design decisions through empirical data, offering a scientific approach to software architecture.
Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma The authors present a catalog of solutions to common design problems, providing a structured approach to software design that complements Parnas' methodologies.
Software Architecture in Practice by Len Bass, Paul Clements, Rick Kazman This text examines software architecture through case studies and practical scenarios, building on Parnas' concepts of modular design and information hiding.
The Design of Design: Essays from a Computer Scientist by Fred Brooks Brooks explores the nature of design processes in software engineering, expanding on themes of systematic design approaches that Parnas introduced.
Software Design X-Rays by Adam Tornhill The book presents methods to analyze codebases and design decisions through empirical data, offering a scientific approach to software architecture.
Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma The authors present a catalog of solutions to common design problems, providing a structured approach to software design that complements Parnas' methodologies.
Software Architecture in Practice by Len Bass, Paul Clements, Rick Kazman This text examines software architecture through case studies and practical scenarios, building on Parnas' concepts of modular design and information hiding.
The Design of Design: Essays from a Computer Scientist by Fred Brooks Brooks explores the nature of design processes in software engineering, expanding on themes of systematic design approaches that Parnas introduced.
🤔 Interesting facts
📚 Despite the provocative title about "faking it," Parnas actually advocates for documenting software development as if it followed an idealized rational process, even when reality was messier - helping teams learn from experience and improve future projects.
🎓 David Parnas is renowned for introducing the concept of information hiding in software development (1972), which became a fundamental principle of object-oriented programming and modern software design.
📝 The paper was first published in 1986 and remains highly influential in software engineering education, cited thousands of times and frequently included in university curricula.
💡 The work challenged the traditional "waterfall" development model popular in the 1980s by acknowledging that software development is inherently iterative while still maintaining the importance of systematic documentation.
🔄 Parnas wrote this paper partly in response to the "software crisis" of the 1980s, when projects frequently went over budget, missed deadlines, or failed entirely due to increasing software complexity.