TY - JOUR
T1 - ProMeTA
T2 - a taxonomy for program metamodels in program reverse engineering
AU - Washizaki, Hironori
AU - Guéhéneuc, Yann Gaël
AU - Khomh, Foutse
N1 - Funding Information:
Acknowledgements We thank reviewers as well as the original developers of the metamodels addressed in the paper for their valuable comments, which significantly improved our paper. This work was supported by JSPS KAKENHI Grant Number 16H02804, IISF SSR Forum 2015 and 2016.
Publisher Copyright:
© 2018, The Author(s).
PY - 2018/8/1
Y1 - 2018/8/1
N2 - To support program comprehension, maintenance, and evolution, metamodels are frequently used during program reverse engineering activities to describe and analyze constituents of a program and their relations. Reverse engineering tools often define their own metamodels according to the intended purposes and features. Although each metamodel has its own advantages, its limitations may be addressed by other metamodels. Existing works have evaluated and compared metamodels and tools, but none have considered all the possible characteristics and limitations to provide a comprehensive guideline for classifying, comparing, reusing, and extending program metamodels. To aid practitioners and researchers in classifying, comparing, reusing, and extending program metamodels and their corresponding reverse engineering tools according to the intended goals, we establish a conceptual framework with definitions of program metamodels and related concepts. We confirmed that any reverse engineering activity can be clearly described as a pattern based on the framework from the viewpoint of program metamodels. Then the framework is used to provide a comprehensive taxonomy, named Program Metamodel TAxonomy (ProMeTA), which incorporates newly identified characteristics into those stated in previous works, which were identified via a systematic literature review (SLR) on program metamodels, while keeping the orthogonality of the entire taxonomy. Additionally, we validate the taxonomy in terms of its orthogonality and usefulness through the classification of popular metamodels.
AB - To support program comprehension, maintenance, and evolution, metamodels are frequently used during program reverse engineering activities to describe and analyze constituents of a program and their relations. Reverse engineering tools often define their own metamodels according to the intended purposes and features. Although each metamodel has its own advantages, its limitations may be addressed by other metamodels. Existing works have evaluated and compared metamodels and tools, but none have considered all the possible characteristics and limitations to provide a comprehensive guideline for classifying, comparing, reusing, and extending program metamodels. To aid practitioners and researchers in classifying, comparing, reusing, and extending program metamodels and their corresponding reverse engineering tools according to the intended goals, we establish a conceptual framework with definitions of program metamodels and related concepts. We confirmed that any reverse engineering activity can be clearly described as a pattern based on the framework from the viewpoint of program metamodels. Then the framework is used to provide a comprehensive taxonomy, named Program Metamodel TAxonomy (ProMeTA), which incorporates newly identified characteristics into those stated in previous works, which were identified via a systematic literature review (SLR) on program metamodels, while keeping the orthogonality of the entire taxonomy. Additionally, we validate the taxonomy in terms of its orthogonality and usefulness through the classification of popular metamodels.
KW - Program comprehension and analysis
KW - Program metamodels
KW - Reverse engineering
KW - Taxonomy
UR - http://www.scopus.com/inward/record.url?scp=85043530370&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85043530370&partnerID=8YFLogxK
U2 - 10.1007/s10664-017-9592-3
DO - 10.1007/s10664-017-9592-3
M3 - Article
AN - SCOPUS:85043530370
SN - 1382-3256
VL - 23
SP - 2323
EP - 2358
JO - Empirical Software Engineering
JF - Empirical Software Engineering
IS - 4
ER -