Commonality Variability Analysis

A principle of good software design is to separate things that change from those that do not. Commonality variability analysis is a way of achieving this.


Commonality variability analysis helps us to focus on interfaces and stop us from looking at implementation too soon. It leads us to hide the implementation by focussing on the abstractions first. It encourages us to look at the high and low level aspects of design, but separately. It helps us to design by contract, thus creating an architecture that is more testable.

Commonality Analysis

This is the search for common elements that help us understand how members are the same. They are:

  • Recognised from experience - e.g. lots of different species of tree have the commonality of being a tree.
  • Deduced through analysis (abstracted) - e.g. pens are writing instruments made from plastic, have caps, same shape etc.

The commonalities define the basic concepts in a problem domain. Avoid thinking just in terms of data or function, for example, a pen and a book may be classed as common because they are used for teaching/communication, or are both portable.

Varibility Analysis

This is the next step after deciding on a commonality. It should be done within the context of the commonality by asking, how do these things vary. Using an example of different kinds of pen, if the commonality is "writing instrument", then the variabilities might be what they can write on and line thickness etc. However, if the commonality is "plastic things", then the previous variabilities don't apply and instead we should have variabilities like type of plastic and amount of plastic.

In the case of the "writing instrument" commonality, a (traditional) pencil would plug in to this model. However it would not plug in to the "plastic things" commonality. Therefore if you know that you want to extend your commonality to include pencils, then "plastic things" is probably not the correct commonality.


  • When looking at something within the problem domain, ask yourself is it a particular way of doing something (a variation), or is it a concept (a way of conceptually thinking about different ways of doing things) (commonality).
  • If something is a variability, what is it a variation of? this becomes the base class or interface.
  • If something is a commonality, then it is a base class or interface - think about the different ways in which it can vary.
  • If something is neither a commonality or variability, it may be just a stand alone function. Identify this as a probable object and consider if this should have an interface to hide it, or if it should be dealt with concretely.

You are looking for the "is-a" relationships. Other relationships such as "uses", "contains", "builds" or "knows-of", and grouping things just because they go together are not a part of commonality variability analysis. These are what design patterns are concerned with, so these relationships should be dealt with later to avoid prematurely coupling objects.

Not all commonalities are useful, so don't be afraid to discard some.


Commonality Variability Analysis is really important when we talk about programming language because it helps you to do the right code.The explain the syntax of it that help you a lot.

Variability of analysis is showing us some of the commonality in this work. The way australia writing is here and the way we are trying to show the others how much we need this work. We are trying to tell the others that how we get some of the work.

The people who need to consider the information of the legislature force they come here and check the exceedingly basic information. Additionally, believe they are top college paper writing service basic news for us and may be this is useful for them. In addition, may be they safe their possibility and handle their these kind of issues.

I rimedi naturali per il disturbo bipolare sintomi emotivi di guasti

Jan 6, 2013 .footballchaude, et ainsi your Г©tГ© lГ©gГЁrement simmernd pendantcontainers . capturer ce photographe Promoteparviennent marche Г  Г©duquer vos enfants vos children au sujet Г  lart. [url= seuls et le bГ©nГ©volat amГ©liore la mГ©moire des plus ГўgГ©s femmes.[/url] Risque de passivitГ© : lenfantRisque pour la santГ© : mГЄme si le facteur tГ©lГ© nest pas le seul qui explique lobГ©sitГ©, . pour enfantspendantenfant, . il saura quil a le droit de regarder la tГ©lГ©dГ©jeuner et

Comment Г©viter les accidents dans la maison