TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

On the criteria to be used in decomposing systems into modules (1972) [pdf]

106 pointsby camnoraover 3 years ago

7 comments

tcgvover 3 years ago
I always bring up this paper when I read a post criticizing OOP. It&#x27;s a bit old but still very relevant and practical. In it the concept of information hiding, closely related to encapsulation, was first described. This concept plays a central role in the strategy for effective system modularization and is IMHO the basis of OOP.<p>Shameless plug: A couple of years ago I wrote a post about this paper trying to expand it based on my personal experience and providing a more simpler example to elucidate the concepts presented in it [1]<p>[1] <a href="https:&#x2F;&#x2F;thomasvilhena.com&#x2F;2020&#x2F;03&#x2F;a-strategy-for-effective-system-modularization" rel="nofollow">https:&#x2F;&#x2F;thomasvilhena.com&#x2F;2020&#x2F;03&#x2F;a-strategy-for-effective-s...</a>
评论 #30141184 未加载
评论 #30141444 未加载
评论 #30140958 未加载
评论 #30146898 未加载
pixelmonkeyover 3 years ago
Modern analysis of this classic David Parnas paper by Adrian Colyer (in The Morning Paper) here:<p><a href="https:&#x2F;&#x2F;blog.acolyer.org&#x2F;2016&#x2F;09&#x2F;05&#x2F;on-the-criteria-to-be-used-in-decomposing-systems-into-modules&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.acolyer.org&#x2F;2016&#x2F;09&#x2F;05&#x2F;on-the-criteria-to-be-us...</a><p>This is the paper known for introducing&#x2F;elaborating concepts like &quot;modularization&quot; and &quot;information hiding&quot;.
User23over 3 years ago
&gt; Conclusion<p><pre><code> We have tried to demonstrate by these examples that it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart. We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. Since, in most cases, design decisions transcend time of execution, modules will not correspond to steps in the processing. To achieve an efficient implementation we must abandon the assumption that a module is one or more subroutines, and instead allow subroutines and programs to be assembled collections of code from various modules. </code></pre> This aligns well with my experience, even if the terminology feels a bit dated.
评论 #30138958 未加载
评论 #30141360 未加载
评论 #30141359 未加载
goto11over 3 years ago
This also pertains to the much-misunderstood &quot;Single Responsibility&quot; principle. The article argues that modules should encapsulate decisions which may change, i.e shield other modules from effect of such changes. The SRP argues that each module should only encapsulate one such decision.
gandalfgeekover 3 years ago
If you&#x27;re into short (10 min) video summaries: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=NF5tRQb0Dpc" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=NF5tRQb0Dpc</a>
goto11over 3 years ago
Why are those PDF&#x27;s so ugly? It would be so much more readable if it was just a regular web page.<p>(And sorry for the negativity since this is a fascinating article. But I&#x27;m genuinely curious why the this PDF is so ugly, since I&#x27;m sure the original published version looked significantly better, and the text seems to have been OCR&#x27;ed)
评论 #30139667 未加载
评论 #30139676 未加载
Jtsummersover 3 years ago
I really thought there had been a previous submission with more comments, but maybe it was another Parnas paper. The only past submission with comments:<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8849468" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=8849468</a> - Jan 7, 2015 (5 comments)
评论 #30142197 未加载
评论 #30139958 未加载