Framework-specific models represent the design of application code from the framework viewpoint by showing how framework-provided concepts are instantiated
in the code. Retrieving such models quickly and precisely is necessary for practical model-supported software engineering,
in which developers use design models for development tasks such as code understanding, verifying framework usage rules, and
round-trip engineering. Also, comparing models extracted at different times of the software lifecycle supports software evolution
tasks.
We describe an experimental study of the static analyses necessary to automatically retrieve framework-specific models from
application code. We reverse engineer a number of applications based on three open-source frameworks and evaluate the quality
of the retrieved models. The models are expressed using framework-specific modeling languages (FSMLs), each designed for an open-source framework. For reverse engineering, we use prototype implementations of the three
FSMLs.
Our results show that for the considered frameworks and a large body of application code rather simple code analyses are sufficient
for automatically retrieving framework-specific models with high precision and recall. Based on the initial results, we refine
the static analyses and repeat the study on a larger set of applications to provide more evidence and confirm the results.
The refined static analyses provide precision and recall of close to 100% for the analyzed applications.
Keywords Reverse engineering - Framework-specific models - Framework-specific modeling languages - Static analysis - Object-oriented frameworks - Application programming interface - API
This paper is an extended version of the paper “Automatic extraction of framework-specific models from framework-based application
code”, which was published in the proceedings of the Twenty-Second ACM/IEEE International Conference on Automated Software
Engineering, 2007.