Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Parts of "On the Criteria to be used in Decomposing Systems" that were not covered in the Blog Post

Blog Post: https://www.wasabigeek.com/blog/what-does-a-1972-paper-have-to-do-with-the-single-responsibility-principle/

The bits of the paper I deliberately left out:

  • Comparisons:
    • correctness and comprehensibility were deemed similar for both Modularizations, so I left it out.
    • independent development: Modularization 2 was deemed better, as in Modularization 1 the devs building each module would have to agree upon and develop the shared input storage.
  • Efficiency:
    • I had trouble understanding this bit, think it had more relevance to the programming systems of the time: "(Modularization 2), if implemented with the conventional assumption that a module consists of one or more subroutines, will be less efficient in most cases."
  • An anecdotal example of building a translator was given in further support of "Information Hiding".
  • There's a critique of the Modularization 2's Circular Shifter based on a somewhat arbitrary definition - the shifts were ordered corresponding to their line numbers in the original input, which encoded that assumption into other modules that interacted with it. It felt like an arbitrarily bad decision made to illustrate a point, and felt hard to fit in the flow of this post.
  • The critique also included some "generalisable" decomposition criteria, but they seemed somewhat low level (there's mention of assembly) and I found it difficult to draw parallels in today's higher-level programming languages.
  • There's a distinction made between a "hierarchical structure" (a separate paper which I haven't read) and "information hiding".
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment