ABSTRACT

Modeling the variability of system families is still challenging for building software-intensive product families. Nevertheless, because the software architecture is the cornerstone of any design process, it is well-known the majority of software architecture notations and languages lack accurate forms to describe variability concerns of software systems. Although a number of notations and architecture domain-specific languages have been proposed, we are still far from having good representation and modeling solutions to describe this variability, and the diversity of approaches makes it sometimes difficult to choose one of the existing alternatives. Therefore, this chapter analyzes the evolution of past and recent notations and languages used for describing software variability from the software architecture point of view, and we compare them with existing languages specifically created to model variability in software systems. We distill some conclusions and new insights about which approaches are more suitable when software variability must be represented in the architecture.