In this this talk we provide a brief overview of the state of the art of the approaches to adddress software variability. In particular, we will focus on ongoing research on the delta-oriented approach in the context of the ABS modelling language.
Variability is prevalent in modern software systems to facilitate adapting the software to customer requirements or the execution environment. Variability has an impact on all phases of the software development process. Appropriate means and organizational structures are required to deal with the additional complexity introduced by software variability.
Manufacturers have long employed engineering techniques to create a product line of similar products using a common factory that assembles and configures parts designed to be reused across the product line. For example, automotive manufacturers can create unique variations of one car model using a single pool of carefully designed parts and a factory specifically designed to configure and assemble those parts.
A Software Product Line (SPL) is a set of similar programs, called variants, with a common code base and well documented variability. The characteristic that distinguishes SPLs from previous efforts is predictive versus opportunistic software reuse.
Rather than put general software components into a library in the hope that opportunities for reuse will arise, SPLs only call for software artifacts to be created when reuse is predicted in one or more products in a well defined product line.
Software-product-line engineering has gained considerable momentum in recent years, both in industry and in academia. Software product lines challenge traditional analysis techniques, such as type checking, model checking, and theorem proving, in their quest of ensuring correctness and reliability of software. Simply creating and analyzing all products of a product line is usually not feasible, due to the potentially exponential number of valid feature combinations.
SPL implementation approaches can be classified into three main categories: annotative, compositional and transformational. Annotative approaches express negative variability: all variants are included within the same model (called a 150% model) and each variant is obtained by excluding the artifacts associated to the non-selected features. C preprocessor directives (#define FEATURE and #ifdef FEATURE) are a paradigmatic example of SPL annotative implementation mechanism.
Compositional approaches express positive variability: the artifacts associated to the selected features are composed to build the corresponding variant. Transformational approaches express both positive and negative variability.
Delta-Oriented Programming (DOP) is a flexible transformational approach to implement SPLs.
The Abstract Behavioural Specification (ABS) language is a delta-oriented modeling language that has been successfully used in industry.
ABS is a concurrent, object-oriented, modeling language that features functional data-types that combines implementation-level specifications with verifiability, high-level design with executablity, and formal semantics with practical usability.