Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

Reverse engineering reusable software components from object-oriented APIs

Published: 01 September 2017 Publication History

Abstract

Automatic component recovery from object-oriented APIs.We mined components as classes frequently used together and structural dependent.Experimented on 100 applications used four APIs. Object-oriented Application Programing Interfaces (APIs) support software reuse by providing pre-implemented functionalities. Due to the huge number of included classes, reusing and understanding large APIs is a complex task. Otherwise, software components are accepted to be more reusable and understandable entities than object-oriented ones. Thus, in this paper, we propose an approach for reengineering object-oriented APIs into component-based ones. We mine components as a group of classes based on the frequency they are used together and their ability to form a quality-centric component. To validate our approach, we experimented on 100 Java applications that used four APIs.

References

[1]
M. Acharya, T. Xie, J. Pei, J. Xu, Mining api patterns as partial orders from source code: from usage scenarios to specifications, ACM, 2007.
[2]
S. Allier, S. Sadou, H. Sahraoui, R. Fleurquin, From object-oriented applications to component-oriented applications via component-oriented architecture, IEEE, 2011.
[3]
Z. Alshara, A.-D. Seriai, C. Tibermacine, H.L. Bouziane, C. Dony, A. Shatnawi, Migrating large object-oriented applications into component-based ones: instantiation and inheritance transformation, ACM, 2015.
[4]
G. Antoniol, Y.-G. Guhneuc, Feature identification: a novel approach and a case study, IEEE, 2005.
[5]
S. Benlarbi, W.L. Melo, Polymorphism measures for early risk prediction, IEEE, 1999.
[6]
J.M. Bieman, B.-K. Kang, Cohesion and reuse in an object-oriented system, ACM, New York, NY, USA, 1995.
[7]
M. Bruch, T. Schfer, M. Mezini, Fruit: Ide support for framework understanding, ACM, New York, NY, USA, 2006.
[8]
E. Bruneton, T. Coupaye, M. Leclercq, V. Quema, J.-B. Stefani, The fractal component model and its support in java, Software, 36 (2006) 1257-1284.
[9]
R.P.L. Buse, W. Weimer, Synthesizing api usage examples, IEEE Press, Piscataway, NJ, USA, 2012.
[10]
S. Chardigny, A. Seriai, M. Oussalah, D. Tamzalit, Extraction of component-based architecture from object-oriented systems, 2008.
[11]
S. Chardigny, A.-D. Seriai, M. Oussalah, D. Tamzalit, Search-based extraction of component-based architecture from object-oriented systems, Springer Berlin Heidelberg, 2008.
[12]
K. Chen, V. Rajlich, Case study of feature location using dependence graph, 2000.
[13]
R. Damaeviius, P. Pakeviius, E. Kariauskas, R. Marcinkeviius, Automatic extraction of features and generation of feature models from java programs, Inf. Technol. Control, 41 (2012) 376-384.
[14]
M. von Detten, M.C. Platenius, S. Becker, Reengineering component-based software systems with archimetrix, Softw. Syst. Model., 13 (2013) 1-30.
[15]
B. Dit, M. Revelle, M. Gethers, D. Poshyvanyk, Feature location in source code: a taxonomy and survey, J. Softw., 25 (2013) 53-95.
[16]
S. Ducasse, D. Pollet, Software architecture reconstruction: a process-oriented taxonomy, Softw. Eng., IEEE T., 35 (2009) 573-591.
[17]
S. Duszynski, J. Knodel, M. Becker, Analyzing the source code of multiple software variants for reuse potential, IEEE, 2011.
[18]
U. Erdemir, U. Tekin, F. Buzluca, Object oriented software clustering based on community structure, IEEE, 2011.
[19]
W. Frakes, K. Kang, Software reuse research: status and future, IEEE T. Softw. Eng., 31 (2005) 529-536.
[20]
J. Garcia, I. Ivkovic, N. Medvidovic, A comparative analysis of software architecture recovery techniques, 2013.
[21]
Google, 2015. API guides, (http://developer.android.com/reference/packages.html).
[22]
J. Han, M. Kamber, J. Pei, Data mining: concepts and techniques, Morgan Kaufmann, 2006.
[23]
J. Han, J. Pei, Y. Yin, Mining frequent patterns without candidate generation, ACM, 2000.
[24]
ISO, Software Engineering Product Quality Part 1: Quality Model, International Organization for Standardization, 2001.
[25]
K.C. Kang, S.G. Cohen, J.A. Hess, W.E. Novak, A.S. Peterson, Feature-oriented domain analysis (FODA) feasibility study, DTIC Document, 1990.
[26]
S. Kebir, A.-D. Seriai, S. Chardigny, A. Chaoui, Quality-centric approach for software component identification from object-oriented code, 2012.
[27]
H. Ma, R. Amor, E. Tempero, Usage patterns of the java standard api, 2006.
[28]
W. Maalej, M. Robillard, Patterns of knowledge in api reference documentation, IEEE T. Softw. Eng., 39 (2013) 1264-1282.
[29]
S. Mishra, D.S. Kushwaha, A.K. Misra, Creating reusable software component from object-oriented legacy system through reverse engineering, J. Object Technol., 8 (2009) 133-152.
[30]
M. Monperrus, M. Bruch, M. Mezini, Detecting missing method calls in object-oriented software, Springer Berlin Heidelberg, 2010.
[31]
M. Monperrus, M. Eichberg, E. Tekes, M. Mezini, What should developers be aware of an empirical study on the directives of api documentation, Emp. Softw. Eng., 17 (2012) 703-737.
[32]
J. Montandon, H. Borges, D. Felix, M. Valente, Documenting apis with examples: Lessons learned with the apiminer platform, 2013.
[33]
D. Poshyvanyk, A. Marcus, The conceptual coupling metrics for object-oriented systems, 2006.
[34]
M. Robillard, E. Bodden, D. Kawrykow, M. Mezini, T. Ratchford, Automated api property inference techniques, IEEE T. Softw. Eng., 39 (2013) 613-637.
[35]
A. Shatnawi, A. Seriai, H.A. Sahraoui, Z. Al-Shara, Mining software components from object-oriented apis, 2015.
[36]
A. Shatnawi, A.-D. Seriai, Mining reusable software components from object-oriented source code of a set of similar software, 2013.
[37]
C. Szyperski, Component Software: Beyond Object-Oriented Programming, Pearson Education, 2002.
[38]
A.L.C. Tavares, M.T. Valente, A gentle introduction to osgi, SIGSOFT Softw. Eng. Notes, 33 (2008) 8:1-8:5.
[39]
G. Uddin, B. Dagenais, M.P. Robillard, Temporal analysis of api usage concepts, IEEE Press, Piscataway, NJ, USA, 2012.
[40]
J. Wang, Y. Dang, H. Zhang, K. Chen, T. Xie, D. Zhang, Mining succinct and high-coverage api usage patterns from source code, IEEE Press, Piscataway, NJ, USA, 2013.
[41]
R. Weinreich, C. Miesbauer, G. Buchgeher, T. Kriechbaum, Extracting and facilitating architecture in service-oriented software systems, 2012.
[42]
Y. Xue, Reengineering legacy software products into software product line based on automatic variability analysis, ACM, 2011.
[43]
C. Zhang, J. Yang, Y. Zhang, J. Fan, X. Zhang, J. Zhao, P. Ou, Automatic parameter recommendation for practical api usage, IEEE Press, 2012.
[44]
T. Ziadi, L. Frias, M.A.A. da Silva, M. Ziane, Feature identification from the source code of product variants, IEEE, 2012.
[45]
M. Zibran, F. Eishita, C. Roy, Useful, but usable factors affecting the usability of apis, 2011.

Cited By

View all
  • (2023)Online ontological quality assessment of converted UML class diagrams in SREAutomated Software Engineering10.1007/s10515-023-00385-x30:2Online publication date: 18-Jun-2023
  • (2020)Mining Reusable Software Components from Object-Oriented Source Code using Discrete PSO and Modeling Them as Java BeansInformation Systems Frontiers10.1007/s10796-019-09948-422:6(1519-1537)Online publication date: 1-Dec-2020
  • (2020)Interface protocol inference to aid understanding legacy software componentsSoftware and Systems Modeling (SoSyM)10.1007/s10270-020-00809-219:6(1519-1540)Online publication date: 1-Nov-2020
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Journal of Systems and Software
Journal of Systems and Software  Volume 131, Issue C
September 2017
569 pages

Publisher

Elsevier Science Inc.

United States

Publication History

Published: 01 September 2017

Author Tags

  1. API
  2. Frequent usage pattern
  3. Object-oriented
  4. Reverse engineering
  5. Software component
  6. Software reuse

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 14 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Online ontological quality assessment of converted UML class diagrams in SREAutomated Software Engineering10.1007/s10515-023-00385-x30:2Online publication date: 18-Jun-2023
  • (2020)Mining Reusable Software Components from Object-Oriented Source Code using Discrete PSO and Modeling Them as Java BeansInformation Systems Frontiers10.1007/s10796-019-09948-422:6(1519-1537)Online publication date: 1-Dec-2020
  • (2020)Interface protocol inference to aid understanding legacy software componentsSoftware and Systems Modeling (SoSyM)10.1007/s10270-020-00809-219:6(1519-1540)Online publication date: 1-Nov-2020
  • (2020)How Does Library Migration Impact Software Quality and Comprehension? An Empirical StudyReuse in Emerging Software Engineering Practices10.1007/978-3-030-64694-3_15(245-260)Online publication date: 2-Dec-2020
  • (2019)Reusability in multimedia softwares using structural and lexical dependenciesMultimedia Tools and Applications10.1007/s11042-019-7382-178:14(20065-20086)Online publication date: 1-Jul-2019
  • (2019)Availability and Scalability Optimized Microservice Discovery from Enterprise SystemsOn the Move to Meaningful Internet Systems: OTM 2019 Conferences10.1007/978-3-030-33246-4_31(496-514)Online publication date: 21-Oct-2019
  • (2018)Investigating the Relationship between Code Smell Agglomerations and Architectural ConcernsProceedings of the VII Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3267183.3267184(3-12)Online publication date: 17-Sep-2018
  • (2018)Feature Vector Based Component Clustering for Software ReuseProceedings of the Fourth International Conference on Engineering & MIS 201810.1145/3234698.3234737(1-6)Online publication date: 19-Jun-2018
  • (2018)Identifying software components from object-oriented APIs based on dynamic analysisProceedings of the 26th Conference on Program Comprehension10.1145/3196321.3196349(189-199)Online publication date: 28-May-2018
  • (2018)Component interface identification and behavioral model discovery from software execution dataProceedings of the 26th Conference on Program Comprehension10.1145/3196321.3196338(97-107)Online publication date: 28-May-2018
  • Show More Cited By

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media