Abstract
Application frameworks allow application developers to effectively reuse both designs and implementations which frequently appear in their intended domains. However, when using a framework with large scale APIs, its usage to implement an application-specific behavior tends to be complicated. Thus, in practice, application developers use existing sample application code as references for their development, but the task to locate the parts which are related to their application usually becomes a burden. To address this problem, in this paper, we characterize the problem as a kind of dynamic flow analysis problem, and based on the characterization, we present a method to automatically identify the mandatory code for the framework use using only a single sample application’s trace. We have conducted case studies with several real-world frameworks to validate our method and the results indicate that the method is suitable to extract the mandatory framework usage.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ko, A., Myers, B., Aung, H.: Six learning barriers in end-user programming systems. In: Proceedings of the 2004 IEEE Symposium on Visual Languages Human Centric Computing (VLHCC 2004), pp. 199–206 (2004)
Fairbanks, G.: Software engineering environment support for frameworks A position paper. In: Proceedings of the ICSE 2004 Workshop on Directions in Software Engineering Environments (WoDiSEE 2004), pp. 70–73 (2004)
Fowler, M.: Inversion of control containers and the dependency injection pattern (2004), http://www.martinfowler.com/articles/injection.html#FormsOfDependencyInjection
Holmes, R., Murphy, G.C.: Using structural context to recommend source code examples. In: Proceedings of ICSE, pp. 117–125 (2005)
Heydarnoori, A., Czarnecki, K., Bartolomei, T.T.: Supporting framework use via automatically extracted concept-implementation templates. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 344–368. Springer, Heidelberg (2009)
Monperrus, M., Bruch, M., Mezini, M.: Detecting missing method calls in object-oriented software. In: D’Hondt, T. (ed.) ECOOP 2010. LNCS, vol. 6183, pp. 2–25. Springer, Heidelberg (2010)
Generative Software Development Lab.: FUDA supporting material, http://gsd.uwaterloo.ca/tse-fuda
Salah, M.: An environment for comprehending the behavior of software systems, Ph.D. dissertation, Drexel University (2005)
Lienhard, A., Gîrba, T., Wang, J.: Practical object-oriented back-in-time debugging. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 592–615. Springer, Heidelberg (2008)
Software Design and Verification Lab.: ECOOP 2014 artifacts page, http://nitta-lab-www.is.konan-u.ac.jp/ECOOP2014
Michail, A.: Data mining library reuse patterns using generalized association rules. In: Proceedings of ICSE, pp. 167–176 (2000)
Ye, Y., Fischer, G.: Supporting reuse by delivering task-relevant and personalized information. In: Proceedings of ICSE, pp. 513–523 (2002)
Zhong, H., Xie, T., Zhang, L., Pei, J., Mei, H.: MAPO: Mining and recommending API usage patterns. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 318–343. Springer, Heidelberg (2009)
Buse, R.P.L., Weimer, W.: Synthesizing API usage examples. In: Proceedings of ICSE, pp. 782–792 (2012)
Uddin, G., Dagenais, B., Robillard, M.P.: Temporal analysis of API usage concepts. In: Proceedings of ICSE, pp. 804–814 (2012)
Mandelin, D., Xu, L., Bodík, R., Kimelman, D.: Jungloid mining: helping to navigate the API jungle. In: Proceedings of PLDI, pp. 48–61 (2005)
Sahavechaphan, N., Claypool, K.: XSnippet: mining for sample code. In: Proceedings of OOPSLA, pp. 413–430 (2006)
Thummalapenta, A., Xie, T.: PARSEWeb: A programmer assistant for reusing open source code on the web. In: Proceedings of ASE, pp. 204–213 (2007)
Li, Z., Zhou, Y.: PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code. In: Proceedings of ESEC/FSE, pp. 306–315 (2005)
Wasylkowski, A., Zeller, A., Lindig, C.: Detecting object usage anomalies. In: Proceedings of ESEC/FSE, pp. 35–44 (2007)
Sridharan, M., Fink, S.J., Bodík, R.: Thin slicing. In: Proceedings of PLDI, pp. 112–122 (2007)
Salah, M., Denton, T., Mancoridis, S., Shokoufandeh, A., Vokolos, F.I.: Scenariographer: A tool for reverse engineering class usage scenarios from method invocation sequences. In: Proceedings of ICSM, pp. 155–164 (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Nitta, N., Kume, I., Takemura, Y. (2014). Identifying Mandatory Code for Framework Use via a Single Application Trace. In: Jones, R. (eds) ECOOP 2014 – Object-Oriented Programming. ECOOP 2014. Lecture Notes in Computer Science, vol 8586. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-44202-9_24
Download citation
DOI: https://doi.org/10.1007/978-3-662-44202-9_24
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-44201-2
Online ISBN: 978-3-662-44202-9
eBook Packages: Computer ScienceComputer Science (R0)