Software Variability

The large functionality and complexity of today's applications create a need for modeling and developing variable software. Software variability is the ability of a software system or artifact to be changed, customized or configured for use in a particular context. Variability is captured through defining the required features of the software and defining the various variations that these features could hold. Variation points are defined as the locations where variants of certain functionality are introduced in the system. Designing software products with variability in mind aims to increase productivity and thus maximize revenue while uncareful management of variability creates serious vulnerability problems in the software and reduces testability.

One of the challenging problems facing the software community today is how to unambiguously define variability in such a way to achieve consistency among these variant features and variation points. Furthermore there is a need for providing a rich representation where all knowledge acquired in the different phases of the software development process is made transparent and sharable. It must be noted that different persons work together during the software development lifecycle each with a different perspective and a different terminology and goals. Therefore there is a clear need to ease the cooperation of these different parties and create a common ground of concept and knowledge sharing. In the software community variability is represented in terms of feature models, which helped in create graphical representations of variability but did not fix the information sharing and inconsistency problem. The problem is further complicated by the large number of features and the different granularities of these features.

WISE uses its expertise in information systems in providing a knowledge management based solution to the software variability problem. We have defined an ontology representation of software variability called Feature Modeling Ontology (FMO).  FMO is formally defined using OWL semantic web language. We use a rule based mechanism to identify and capture inconsistencies. We have ongoing research on enriching FMO representation, enriching interoperability opportunities between different fragments of feature models, providing innovative user interfaces to visualize the FMO ontology, and as we don’t expect software engineers to edit the ontology, provide means to visualize the feature modeling process