This 1972 paper by Parnas compares two system decomposition strategies: one based on flowcharts and step-wise refinement, and another based on information hiding. Parnas argues that decomposing a system into modules based on hiding design decisions behind interfaces leads to more stable and flexible systems. He demonstrates this by comparing two proposed modularizations of a KWIC (Key Word in Context) indexing system. The information hiding approach results in modules that are less interconnected and therefore less affected by changes in implementation details or requirements. This approach prioritizes minimizing inter-module communication and dependencies, making the resulting system easier to modify and maintain in the long run.
A working version of Unix Version 2, specifically a "beta" release predating the official V2 from November 1972, has been recovered and made available. Discovered on a PDP-11 RK05 disk pack, this "Proto-V2" includes intriguing differences like an earlier version of the file system and unique commands. Warren Toomey, leveraging a SIMH emulator and painstaking analysis, managed to boot and explore this historical artifact, offering a fascinating glimpse into Unix's early evolution. The restored system, along with Toomey's detailed notes, is now accessible to the public, providing valuable insights for those interested in computing history.
Hacker News commenters express excitement about the resurrection of Unix V2 "Beta," viewing it as a valuable historical artifact. Several highlight the simplicity and elegance of early Unix compared to modern operating systems, appreciating the ability to explore its concise codebase. Some discuss the technical details of the restoration process, including the challenges of running old software on modern hardware and the use of emulators like SIMH. Others reminisce about their experiences with early Unix, contrasting the collaborative and open environment of the time with the more commercialized landscape of today. The small size of the OS and the speed at which it boots also impress commenters, emphasizing the efficiency of early Unix development.
Summary of Comments ( 4 )
https://news.ycombinator.com/item?id=43244860
HN commenters discuss Parnas's modularity paper, largely agreeing with its core principles. Several highlight the enduring relevance of information hiding and minimizing inter-module dependencies to reduce complexity and facilitate change. Some commenters share anecdotes about encountering poorly designed systems violating these principles, reinforcing the paper's importance. The concept of "secrets" as the basis of modularity resonated, with discussions about how it applies to various levels of software design, from low-level functions to larger architectural components. A few commenters also touch upon the balance between pure theory and practical application, acknowledging the complexities of real-world software development.
The Hacker News post titled "On the criteria to be used in decomposing systems into modules (1972)" has a modest number of comments, sparking a focused discussion around the paper's core concepts and their relevance today.
Several commenters reflect on the enduring wisdom of Parnas's arguments. One user highlights the continuing struggle with modularity despite decades of progress in software engineering, suggesting that "we're still struggling to teach these lessons nearly 50 years later." Another emphasizes the importance of information hiding as crucial for managing complexity, not just in large systems but also in smaller projects.
The discussion touches upon the practical application of Parnas's principles. One commenter shares personal experience applying these ideas to a specific project, noting the resulting improvement in system maintainability. This anecdote provides a real-world illustration of the paper's theoretical concepts. Another commenter emphasizes the importance of "well defined interfaces" not just for modularity, but as a means to enable parallel development, ultimately speeding up project delivery.
A few comments delve into specific aspects of the paper. One user points out the importance of module cohesion and coupling as fundamental principles derived from Parnas's work. They highlight the interplay of these principles in achieving a well-structured system. Another commenter draws attention to the subtle but significant distinction between "hiding secrets" and hiding implementation details.
The discussion also explores alternative viewpoints and historical context. One commenter mentions the rise of microservices and how it relates (or perhaps contrasts) with the module decomposition principles outlined in the paper, questioning whether microservices truly adhere to these ideals or represent a different approach altogether.
While the discussion is not overly extensive, it provides valuable insights into the continuing relevance of Parnas's work and its impact on software engineering practices. The comments demonstrate a shared appreciation for the paper's core message while also acknowledging the ongoing challenges in applying these principles effectively in modern software development.