Until recently, software systems were either designed to have an extensive list of possible features, or they were particularly produced for a single customer. Furthermore, software solutions were originally quite static and every change implied extensive changes of existing source code. This is no longer an option for contemporary software systems. Software solutions also have to deal with an exponential increase in complexity and variability, due to the constant evolution of the market. Software Product Lines, or software families, are rapidly emerging as a viable and important software development paradigm aimed at handling such issues. SPLs are gaining widespread acceptance and various domains already apply SPL engineering successfully to address the well- known needs of the software engineering community, including increased quality, saving costs for development and maintenance, and decreasing time-to-market. SPLs offer a systematic reuse of software artefacts within a range of products sharing a common set of units of functionality. This thesis will analyse the SPL engineering domain and its latest progress. It will identify some of the issues that are currently being faced for applying software product line engineering approaches and will propose viable solutions to those problems. Moreover, this thesis adheres to the MDE principles, in particular for domain specific language design. We use the meta- modelling technique when addressing the definition of modelling languages (for abstract and concrete syntax definition). Hence, the notions of model, meta-model, model conformance and model transformation are major concerns on which this thesis relies on for the achievement of its contributions. Throughout the past years, the product line community has mainly focused on the Domain Engi- neering phase of the process. A review of SPLE literature indicates that Application Engineering (product derivation), a key phase of the SPL process that can be tedious and error-prone, has been given far less attention compared to Domain Engineering. Implicitly, there arises the need for new product derivation techniques in the SPL research field. Therefore, the major problem addressed in this thesis is the definition of a methodology for software product line engineering that covers both Domain Engineering and Application Engineering phases of the SPLE process and which focuses on the derivation of behavioural models of SPL products. By applying this methodology we want to produce behavioural models that belong to the analysis and early de- sign levels of the software development life-cycle. Thus, the behavioural models obtained as a result of applying this methodology should describe the business and operational step-by-step workflows of activities/actions performed by the derived product. From another perspective, we want to develop this methodology following model driven engineering principles. This is due to the fact that in software engineering, models allow to express both problems and solutions at a higher abstraction level than code. We begin the contributions of this thesis by first proposing a new software product line engineer- ing methodology that focuses on the derivation of product behaviour. A methodology can be seen as a framework for applying software engineering practices with the specific aim of providing the necessary means for developing software-intensive systems. We focus on behavioural models as this type of product representation is currently not sufficiently addressed in product line engineering. The main flow of the methodology and its specific steps are first described. The first step of the methodology focuses on capturing the common aspects and those that discriminate among systems in the product family using feature models. The second phase focuses on the creation of business process fragments, which represent the core assets of the software product line. We then briefly discuss the concept of "correctness" for business process fragments and explain what type of verifications are required to ensure this property. The next methodology step aims at bridging the gap between feature models and solution models and thus defines a mapping of features to model fragments specifying the concrete feature realisations. The first step that belongs to the Application Engineering phase consists of selecting, based on the user's preferences, the required features that will be part of a particular product that is derived. Fi- nally, the set of business process fragments are transformed, through a compositional approach, into a proper business process that models the behaviour of the SPL product being derived. Business process fragments are the core assets used by our SPL methodology. The most common approach to obtain them is to create new business process fragments from scratch, as concrete implementations of the features from the feature diagram of the SPL. For this purpose, adequate language support is required. Thus, another contribution if this thesis is a new domain specific language called CBPF created for modelling and composing business process fragments. A model driven approach is then followed for creating and specifying the CBPF domain specific language. We start by defining the abstract syntax of the language.We describe the high-level structure of CBPF by means of a meta-model representing in an abstract way the concepts and constructs of the modelling language, and providing the means to distinguish between valid and invalid models. We continue the language description by we proposing a unique graphical concrete syntax for the language. It is a crucial element of language design and we therefore treat it as a separate element within the language description. We conclude by defining the semantics of the CBPF language following a translational approach, by proposing a mapping of CBPF concepts onto the Hierarchical Coloured Petri Net (HCPN) formalism. We also propose several types of verifications that can be applied to business process fragments in order to determine their "correctness". It is highly desirable to verify business process fragments created at analysis and design time. We want to ensure that the business process fragments created with the CBPF language during the domain engineering phase are correct. We start by presenting the structural verification of a business process fragment by defining a set of adequate fragment consistency rules that should be valid for every business process fragment created with CBPF. We also want to perform checks related to the dynamic behaviour of business process fragments. These verifications are done by first transforming the business process fragment into an equivalent HCPN with the help of the model-to-model transformation that we propose. The behavioural properties that should be checked for a business process fragment are separated into two major classes. Generic ones which specify general dynamic properties that any business process fragment should fulfil. As business process fragments are created to describe a high level functionality or feature, there will exist certain dynamic properties that are specific to each individual fragment and therefore cannot be verified in general. Therefore we define a set of fragment specific properties and propose property templates that can be adapted and used by the product line engineer to check them. In order to asses the different contributions proposed in this thesis, we exemplify the proposed SPL methodology by applying it to a case study from the crisis management system domain. This case study also servers to facilitate the understanding of the concepts and the functioning of the CBPF language, but also to exemplify the verification techniques of business process fragments. A critical assesment of the results of the case study and different lessons learnt are also presented. We also propose and present the SPLIT tool suite, which is the tool support that we propose for our methodology. Good tool support is one of the key elements for the fast adoption of any new methodology and language. We start by describing the general requirements that such a tool should fulfil. We then present the general architecture of the proposed tool and discuss in more details the different tool modules and the functionalities each of them provides.
Methodology for the derivation of product behavior in a Software Product Line