You are here

Warning message

Attention! This event has already passed.

A Bottom-Up Approach to Program Variation

Thursday, 4 June, 2009 - 16:00
Campus: Brussels Humanities, Sciences & Engineering campus
Faculty: Science and Bio-engineering Sciences
Peter Ebraert
phd defence

A growing trend in software construction advocates the encapsulation of software building blocks as features which better match the specification of requirements. As a result, programmers find it easier to design and compose different variations of their systems. Feature-oriented programming (FOP) is the research domain that targets this trend. %In the absence of such modularisation, re-engineering is often the only way to restructure the software in feature modules.

The thesis of this research is that the software development environment should provide support for recording modularisation information that results from development actions, so that software can automatically be restructured in recomposable feature modules.

This dissertation proposes to model features as transitions that have to be applied to a software system in order to add the corresponding feature's functionality to the system. This model matches the development operations, which are also transitions of a software system. Concretely, this approach enables bottom-up feature-oriented programming and consists of three phases. First, the change operations are captured into first-class entities. Second, these operations are classified into separate sets that each implement one functionality. Finally, those modules are recomposed in order to form software variations that provide different functionalities. Capturing change in frist-class objects can be done in three ways: logging, differentiating or change-oriented programming (a novel programming style that centralises change as the main development entity). Several classification strategies are conceivable. In this work, three classification strategies are used to group the change objects: manual classification, classification based on common characteristics and automatic classification through development operation tagging. The recomposition of the separated modules is performed by producing a totally ordered set of changes that can subsequently be applied in order to produce the desired software variation.

The viability of the proposed concepts, methods and tools is demonstrated by a proof-of-concept implementation that is tested on a text editor that is developed in a standard object-oriented way and reconfigured afterwards to form different program variations.