UittrekselA 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.
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 first-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.
|Datum Prijs||4 jun 2009|
|Begeleider||Theo D'Hondt (Promotor), Pascal Costanza (Co-promotor), Viviane Jonckers (Jury), Ann Nowe (Jury), Stéphane Ducasse (Jury) & Patrick Heymans (Co-promotor)|