Reducing code duplication by identifying fresh domain abstractions
conference paper
When software components are developed iteratively, code frequently evolves in an inductive manner: A unit is created and is then copied and modified many times. Such development often happens when variation points and, hence, proper domain abstractions are initially unclear. As a result, there may be substantial amounts of code duplication, and the code may be difficult to understand and maintain, warranting a redesign. We apply a model-based process to semi-Automatically redesign an inductively-evolved industrial adapter component written in C++: we use reverse engineering to obtain models of the component, and generate redesigned code from the models. Based on our experience, we propose to use three models to help recover understanding of inductively-evolved components, and transform the components into redesigned implementations. Guided by a reference design, a component's code is analyzed and a legacy model is extracted that captures the component's functionality in a form close to its original structure. The legacy model is then unfolded, creating a flat model which eliminates design decisions by focusing on functionality in terms of external interfaces. Analyzing the variation points of the flat model yields a redesigned model and fresh domain abstractions to be used in the new design of the component. © 2018 IEEE.
Topics
Industrial application reportModel based software engineeringReverse engineering and re engineeringSoftware evolutionSoftware renovationAbstractingApplication programsCodesComputer software maintenanceIterative methodsDomain abstractionModel based software engineeringOriginal structuresReference designsSoftware componentVariation pointsC++
TNO Identifier
844213
ISSN
9781538678701
Source
34th IEEE International Conference on Software Maintenance and Evolution, ICSME 2018, 23 September 2018 through 29 September 2018, pp. 569-578.
Publisher
Institute of Electrical and Electronics Engineers Inc.
Article nr.
8530067
Source title
Proceedings - 2018 IEEE International Conference on Software Maintenance and Evolution, ICSME 2018
Pages
569-578
Files
To receive the publication files, please send an e-mail request to TNO Repository.