📖 Overview
David Lorge Parnas is a pioneering software engineer and early advocate of modular software design. His influential work in the 1970s on information hiding and modular programming helped establish several foundational principles of software architecture that remain relevant today.
Parnas is known for his 1972 paper "On the Criteria to Be Used in Decomposing Systems into Modules," which introduced the concept of information hiding and demonstrated how it could be used to improve software maintainability and flexibility. He also made significant contributions to real-time systems design and software documentation methods.
Throughout his career, Parnas has been an outspoken critic of the Strategic Defense Initiative (Star Wars) program, arguing that reliable software for such complex systems could not be created with existing methods. His stance highlighted important limitations in software engineering capabilities and demonstrated the ethical responsibilities of software professionals.
Parnas has received numerous awards including the ACM SIGSOFT Outstanding Research Award and was inducted as a Fellow of the Association for Computing Machinery. He has held academic positions at multiple institutions including McMaster University and the University of Victoria, continuing to influence generations of software engineers through his teaching and research.
👀 Reviews
Readers consistently point to Parnas's technical papers and articles as transformative for their understanding of software design principles. Many cite his 1972 paper on modular decomposition as clarifying complex architectural concepts through practical examples.
What readers liked:
- Clear explanations of abstract concepts using concrete examples
- Focus on practical applications rather than pure theory
- Direct writing style that avoids unnecessary jargon
- Papers remain relevant decades after publication
What readers disliked:
- Some academic papers require significant background knowledge
- Writing can be dense and requires multiple readings
- Limited availability of collected works in book form
Reviews from academic citation databases and professional forums show high regard, with his key papers receiving thousands of citations. His work appears frequently on software engineering course syllabi and reading lists, with students noting the papers helped them grasp fundamental design principles.
One reader on ACM Digital Library wrote: "Parnas demonstrates these concepts so clearly that you wonder why they weren't obvious before."
📚 Books by David Parnas
A Rational Design Process: How and Why to Fake It (1986)
Presents the argument that while software development processes cannot be completely rational, developers should proceed as if they were following a rational design process.
On the Criteria To Be Used in Decomposing Systems into Modules (1972) Introduces modular programming concepts and information hiding principles through a detailed case study of a simple program.
Software Fundamentals: Collected Papers by David L. Parnas (2001) Compilation of Parnas's most influential papers on software engineering, covering topics from modular programming to documentation.
Software Aspects of Strategic Defense Systems (1985) Technical analysis explaining why software for the Strategic Defense Initiative (Star Wars) would be unreliable and potentially dangerous.
The Real Risks of Software Engineering (1990) Examines actual risks in software development projects and contrasts them with commonly perceived risks.
On the Design and Development of Program Families (1976) Defines and explores the concept of program families and their role in software development.
Response to Invited Comments on "On the Criteria To Be Used in Decomposing Systems into Modules" (1972) Addresses and clarifies questions raised about his original modularity paper, providing additional context and examples.
On the Criteria To Be Used in Decomposing Systems into Modules (1972) Introduces modular programming concepts and information hiding principles through a detailed case study of a simple program.
Software Fundamentals: Collected Papers by David L. Parnas (2001) Compilation of Parnas's most influential papers on software engineering, covering topics from modular programming to documentation.
Software Aspects of Strategic Defense Systems (1985) Technical analysis explaining why software for the Strategic Defense Initiative (Star Wars) would be unreliable and potentially dangerous.
The Real Risks of Software Engineering (1990) Examines actual risks in software development projects and contrasts them with commonly perceived risks.
On the Design and Development of Program Families (1976) Defines and explores the concept of program families and their role in software development.
Response to Invited Comments on "On the Criteria To Be Used in Decomposing Systems into Modules" (1972) Addresses and clarifies questions raised about his original modularity paper, providing additional context and examples.
👥 Similar authors
Frederick Brooks wrote extensively about software engineering management and architecture, focusing on large system development. His "The Mythical Man-Month" addresses similar themes to Parnas's work on modular programming and software development practices.
Edsger Dijkstra pioneered structured programming concepts and wrote about mathematical approaches to software development. His focus on program correctness and systematic design methods aligns with Parnas's emphasis on rigorous software engineering.
Barbara Liskov developed fundamental principles of data abstraction and modular program construction. Her work on abstraction and information hiding parallels Parnas's contributions to modular software design.
Niklaus Wirth created programming languages focused on structured programming and wrote about systematic program development. His emphasis on clear system architecture and program construction methods complements Parnas's work on software modularity.
C.A.R. Hoare established formal methods for proving program correctness and developed fundamental computing concepts. His mathematical approach to software development shares common ground with Parnas's advocacy for precise software engineering methods.
Edsger Dijkstra pioneered structured programming concepts and wrote about mathematical approaches to software development. His focus on program correctness and systematic design methods aligns with Parnas's emphasis on rigorous software engineering.
Barbara Liskov developed fundamental principles of data abstraction and modular program construction. Her work on abstraction and information hiding parallels Parnas's contributions to modular software design.
Niklaus Wirth created programming languages focused on structured programming and wrote about systematic program development. His emphasis on clear system architecture and program construction methods complements Parnas's work on software modularity.
C.A.R. Hoare established formal methods for proving program correctness and developed fundamental computing concepts. His mathematical approach to software development shares common ground with Parnas's advocacy for precise software engineering methods.