Abstract
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.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Allan, C., Avgustinov, P., Christensen, A.S., Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., Tibble, J.: Adding trace matching with free variables to AspectJ. SIGPLAN Not. 40(10), 345–364 (2005)
Antkiewicz, M.: Framework-specific modeling languages. PhD thesis, University of Waterloo (2008). http://hdl.handle.net/10012/4030
Antkiewicz, M., Czarnecki, K.: Framework-specific modeling languages with round-trip engineering. In: Models. LNCS, vol. 4199, pp. 692–706. Springer, Berlin (2006)
Antkiewicz, M., Czarnecki, K.: Design space of heterogeneous synchronization. In: GTTSE (2008)
Antkiewicz, M., Bartolomei, T.T., Czarnecki, K.: Automatic extraction of framework-specific models from framework-based application code. In: ASE ’07: Proceedings of the Twenty-Second IEEE/ACM International Conference on Automated Software Engineering, pp. 214–223 (2007)
Apache Software Foundation: Roller Weblogger 3.0 (2006). http://rollerweblogger.org/
Apache Software Foundation: Struts User’s Guide (2007). http://struts.apache.org/1.3.8/index.html
Avgustinov, P., Christensen, A.S., Hendren, L., Kuzins, S., Lhoták, J., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., Tibble, J.: Optimising AspectJ. In: PLDI’05, pp. 117–128 (2005)
Cohen, T., Gil, J.Y., Maman, I.: JTL: the Java tools language. In: OOPSLA’06, p. 89–108 (2006)
Czarnecki, K., Wasowski, A.: Feature diagrams and logics: there and back again. In: SPLC ’07: Proceedings of the 11th International Software Product Line Conference (SPLC 2007), pp. 23–34 (2007)
Czarnecki, K., Helsen, S., Eisenecker, U.: Formalizing cardinality-based feature models and their specialization. Softw. Process Improv. Pract. 10(1) (2005). Special issue on Software Variability: Process and Management
De Volder, K.: JQuery: A generic code browser with a declarative configuration language. In: PADL’06. LNCS, vol. 3819, pp. 88–102. Springer, Berlin (2006)
DeBaud, J.-M., Moopen, B., Rugaber, S.: Domain analysis and reverse engineering. In: ICSM ’94: Proceedings of the International Conference on Software Maintenance, pp. 326–335 (1994)
Eclipse Foundation: Java Development Tools (2008). http://www.eclipse.org/jdt/
EJB 3.0 Expert Group: JSR 220: Enterprise JavaBeansTM, Version 3.0 (2006). http://java.sun.com/products/ejb
Fairbanks, G., Garlan, D., Scherlis, W.: Design fragments make using frameworks easier. In: OOPSLA’06, pp. 75–88 (2006)
Gamma, E., Beck, K.: Contributing to Eclipse: Principles, Patterns, and Plugins. Addison-Wesley, Reading (2003)
Hajiyev, E., Verbaere, M., de Moor, O.: CodeQuest: scalable source code queries with datalog. In: ECOOP’06. LNCS, vol. 4067, pp. 2–27. Springer, Berlin (2006)
Hilsdale, E., Hugunin, J.: Advice weaving in AspectJ. In: AOSD ’04, pp. 26–35 (2004)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: ECOOP’01, pp. 327–355 (2001)
Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: ECOOP’97, pp. 220–242 (1997)
Kitchenham, B.A., Pfleeger, S.L., Pickard, L.M., Jones, P.W., Hoaglin, D.C., Emam, K.E., Rosenberg, J.: Preliminary guidelines for empirical research in software engineering. IEEE Trans. Softw. Eng. 28(8), 721–734 (2002)
Masuhara, H., Kawauchi, K.: Dataflow pointcut in aspect-oriented programming. In: APLAS’03. LNCS, vol. 2895, pp. 105–121. Springer, Berlin (2003)
OSGi Alliance. OSGi Service Platform, Core Specification, Release 4, Version 4.1 (2007). http://www.osgi.org/Specifications
Pandit, C.: Make your Eclipse applications richer with view linking (2005). http://www-128.ibm.com/developerworks/opensource/library/os-ecllink/
Rountev, A., Kagan, S., Marlowe, T.J.: Interprocedural dataflow analysis in the presence of large libraries. In: CC’06. LNCS, vol. 3923, pp. 2–16. Springer, Berlin (2006)
Rugaber, S.: The use of domain knowledge in program understanding. Ann. Soft. Eng. 9(1–4), 143–192 (2000)
Spring Framework Manual (2008). http://www.springframework.org/
Struts Applications Project (2007). http://sourceforge.net/projects/struts/
Sun Microsystems: Java Server Faces (2008). http://java.sun.com/javaee/javaserverfaces/
Sun Microsystems. Java Tutorials, Lesson: Applets (2008). http://java.sun.com/docs/books/tutorial/deployment/applet/index.html
Vallée-Rai, R., Gagnon, E., Hendren, L.J., Lam, P., Pominville, P., Sundaresan, V.: Optimizing Java bytecode using the Soot framework: is it feasible? In: CC ’00: Proceedings of the 9th International Conference on Compiler Construction, pp. 18–34. Springer, London (2000)
Zhang, W., Ryder, B.G.: Constructing accurate application call graphs for Java to model library callbacks. In: SCAM 2006, pp. 63–74 (2006)
Author information
Authors and Affiliations
Corresponding author
Additional information
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.
Rights and permissions
About this article
Cite this article
Antkiewicz, M., Tonelli Bartolomei, T. & Czarnecki, K. Fast extraction of high-quality framework-specific models from application code. Autom Softw Eng 16, 101 (2009). https://doi.org/10.1007/s10515-008-0040-x
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s10515-008-0040-x