Skip to content

Instantly share code, notes, and snippets.

@jmewes jmewes/ Secret
Created Jun 23, 2018

What would you like to do?
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


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
You can’t perform that action at this time.