Skip to content

Instantly share code, notes, and snippets.

@jmewes

jmewes/notes.md Secret

Created June 23, 2018 19:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmewes/c9159d546d869df323d35ec0b20d7ef5 to your computer and use it in GitHub Desktop.
Save jmewes/c9159d546d869df323d35ec0b20d7ef5 to your computer and use it in GitHub Desktop.
Hiding Assumptions and Parnas Partitioning

The cost of change in complex software systems is very high as more often than not it affects a lot of different locations. Separating the system into modules (or components or microservices) is a common approach towards maximum program flexibility with minimum costs.

Parnas Partioning

Parnas Partitioning is a technique for the definition of the module boundaries. It's goal is that when a change is required it impacts only a single statement, a single module, or the minimum amount of modules. The technique starts with the creation of a Hiding Assumption List. It contains the characteristics of the system which are likely to change in future.

Hiding Assumption List

The Hiding Assumption List contains anticipated changes from all levels of the system: system requirements, system design, and software design. It should be written in plain English so that it is understandable for everyone.

A good understanding of the problem domain is important to be able to anticipate the nature of probable changes. Thus all stakeholders should be involved, including end users.

Creation of a Hiding Assumption List

  • Start with brainstorming to find possible areas of change
  • Order assumption according to probability
  • Determine impact of change
  • Assign categories
  • Derive design decisions to minimized the impact of changes
  • Prioritize design decisions according to probability and required effort

Credits

This blog post is a summary of the Hiding Assumptions and Parnas Partitioning article by Jody Paul.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment