Yesterday’s attempt at a concise description of what Gradual Modularity is[1] fell short of being a definition. Here is another attempt at that.

“Classic” Modularity

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality. [2] (my emphasis)

Gradual Modularity

In extension to classic modularity, Gradual Modularity removes the need for modules to contain everything necessary by introducing two novel concepts to module construction:

  1. Explicate the various aspects of modularity in an extensible list
  2. Allowing for every one of the modularity aspects to be attained gradually

Modularity aspects

The modularity aspects I see today are

Gradual attainment

I believe that all of the above aspects, except for maybe process isolation, can be attained gradually. Meaning, that for a given module we can observe which parts of the module adhere to an aspect, for example on classes or files.

Classic Modularity is one point in the space created by the dimensions of Gradual Modularity, namely the one where all aspects are fully attained.


  1. https://stephanhagemann.com/posts/2021-10-15-gradual-modularity-definition/ ↩︎

  2. https://en.wikipedia.org/wiki/Modular_programming ↩︎

Social

1 Like

Santiago Bartesaghi

1 Retweet

Ruby and Rails Bot

Mention this post from your site:


Backlinks