Variability is the ability of a system to be efficiently extended, changed, customized or configured for use in a particular context.
Variability management throughout the different phases of the development lifecycle of complex systems becomes a primary
concern that needs to be addressed. Addressing issues related to modeling, managing and reasoning about Software variability at architectural level gained a special interest. In this context, software architects need to address variability as an architectural key concept and first-class quality attribute. They call for methods, formalisms, techniques and tools to model, represent and evaluate variability. All these needs require a better understanding of variability management and more theoretical foundations of architectural variability.