An integrated metamodel-based approach to software model refactoring

Mohammed Misbhauddin, Mohammad Alshayeb*

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

7 Scopus citations

Abstract

Software refactoring is the process of changing a software system in a manner that does not alter its external behavior and yet improving its internal structure. Model-driven architecture and the popularity of the UML enabled the application of refactoring at model level, which was earlier applied to software code. In this paper, we propose a multi-view integrated approach to model-driven refactoring using UML models. We selected a single model from each UML view at metamodel level to construct an integrated metamodel. We selected class diagram to represent the structural view, sequence diagram to represent the behavioral view and use case diagram to represent the functional view. We validated the proposed approach by comparing integrated refactoring approach with refactoring applied to models individually in terms of quality improvement through UML model metrics. Our results indicate that more bad smell instances can be detected using the integrated approach rather than the individual refactoring approach.

Original languageEnglish
Pages (from-to)2013-2050
Number of pages38
JournalSoftware and Systems Modeling
Volume18
Issue number3
DOIs
StatePublished - 1 Jun 2019

Bibliographical note

Funding Information:
Acknowledgements This research work is partially supported by King Abdul Aziz City for Science & Technology (KACST) as well as the Deanship of Scientific Research of the King Fahd University of Petroleum and Minerals.

Publisher Copyright:
© 2017, Springer-Verlag GmbH Germany.

Keywords

  • Metamodel
  • Model refactoring
  • Refactoring
  • UML

ASJC Scopus subject areas

  • Software
  • Modeling and Simulation

Fingerprint

Dive into the research topics of 'An integrated metamodel-based approach to software model refactoring'. Together they form a unique fingerprint.

Cite this