Common Mistakes in Modularisation:

  • We don’t create a module just because we found a noun in the specification.
  • We don’t split our software into two modules because two teams will be working on it.
  • We don’t create 100 modules because we recently read about how great microservices are.
  • We don’t create a new module because the source code in the current one is getting large.

We do create a module to hide a design decision we are forced to make before we are certain it’s not going to change, so subsequent design decisions cannot make assumptions about this one.

I heard somewhere that Parnas regretted using the phrase “information hiding” and wished he had used “decision hiding” instead. This is a great summary of the ideas in that wonderful paper.