Mining Software Components from Object-Oriented APIs

  • Anas Shatnawi
  • Abdelhak Seriai
  • Houari Sahraoui
  • Zakarea Al-Shara
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8919)


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 admitted 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 Android APIs.


Reuse reusability component API object-oriented reengineering mining understandability frequent usage pattern 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Frakes, W.B., Kang, K.: Software reuse research: status and future. IEEE Transactions on Software Engineering 31(7), 529–536 (2005)CrossRefGoogle Scholar
  2. 2.
    Zibran, M.F., Eishita, F.Z., Roy, C.K.: Useful, but usable? factors affecting the usability of apis. In: 18th Working Conf. on Reverse Engineering (WCRE), pp. 151–155 (2011)Google Scholar
  3. 3.
    Monperrus, M., Eichberg, M., Tekes, E., Mezini, M.: What should developers be aware of? An empirical study on the directives of api documentation. Empirical Software Engineering 17(6), 703–737 (2012)CrossRefGoogle Scholar
  4. 4.
    Ma, H., Amor, R., Tempero, E.: Usage patterns of the java standard api. In: 13th Asia Pacific Software Engineering Conf. (APSEC), pp. 342–352 (2006)Google Scholar
  5. 5.
    Uddin, G., Dagenais, B., Robillard, M.P.: Temporal analysis of api usage concepts. In: Proc. of the 2012 Inter. Conf. on Software Engineering (ICSE), pp. 804–814. IEEE Press, Piscataway (2012)CrossRefGoogle Scholar
  6. 6.
    Wang, J., Dang, Y., Zhang, H., Chen, K., Xie, T., Zhang, D.: Mining succinct and high-coverage api usage patterns from source code. In: Proc. of the 10th Working Conf. on Mining Software Repositories (MSR), pp. 319–328. IEEE Press, Piscataway (2013)Google Scholar
  7. 7.
    Montandon, J.E., Borges, H., Felix, D., Valente, M.T.: Documenting apis with examples: Lessons learned with the apiminer platform. In: 20th Working Conf. on Reverse Engineering (WCRE), pp. 401–408 (2013)Google Scholar
  8. 8.
    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)CrossRefGoogle Scholar
  9. 9.
    Maalej, W., Robillard, M.P.: Patterns of knowledge in api reference documentation. IEEE Transactions on Software Engineering 39(9), 1264–1282 (2013)CrossRefGoogle Scholar
  10. 10.
    Szyperski, C.: Component Software: Beyond Object-Oriented Programming. Pearson Education (2002)Google Scholar
  11. 11.
    Kebir, S., Seriai, A.-D., Chardigny, S., Chaoui, A.: Quality-centric approach for software component identification from object-oriented code. In: Joint Working IEEE/IFIP Conf. and European Conf. on Software Architecture (WICSA)/(ECSA), pp. 181–190 (2012)Google Scholar
  12. 12.
    Allier, S., Sadou, S., Sahraoui, H., Fleurquin, R.: From object-oriented applications to component-oriented applications via component-oriented architecture. In: 2011 9th Working IEEE/IFIP Conf. on Software Architecture (WICSA), pp. 214–223 (2011)Google Scholar
  13. 13.
    Lüer, C., Van Der Hoek, A.: Composition Environments for Deployable Software Components. Citeseer (2002)Google Scholar
  14. 14.
    Heineman, G.T., Councill, W.T.: Component-Based Software Engineering: Putting the Pieces Together, vol. 17. Addison-Wesley, Reading (2001)Google Scholar
  15. 15.
    Chardigny, S., Seriai, A., Oussalah, M., Tamzalit, D.: Extraction of component-based architecture from object-oriented systems. In: Seventh Working IEEE/IFIP Conf. on Software Architecture (WICSA), pp. 285–288 (2008)Google Scholar
  16. 16.
    ISO. Software Engineering – Product Quality – Part 1: Quality Model. Technical Report ISO/IEC 9126-1, International Organization for Standardization (2001)Google Scholar
  17. 17.
    Chardigny, S., Seriai, A., Oussalah, M., Tamzalit, D.: Search-based extraction of component-based architecture from object-oriented systems. In: Morrison, R., Balasubramaniam, D., Falkner, K. (eds.) ECSA 2008. LNCS, vol. 5292, pp. 322–325. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  18. 18.
    Han, J., Kamber, M., Pei, J.: Data mining: Concepts and techniques. Morgan Kaufmann (2006)Google Scholar
  19. 19.
    Bieman, J.M., Kang, B.-K.: Cohesion and reuse in an object-oriented system. In: Proc. of the 1995 Symposium on Software Reusability (SSR), pp. 259–262. ACM, New York (1995)CrossRefGoogle Scholar
  20. 20.
    Poshyvanyk, D.: A Marcus. The conceptual coupling metrics for object-oriented systems. In: 22nd IEEE Inter. Conf. on Software Maintenance (ICSM), pp. 469–478 (2006)Google Scholar
  21. 21.
    Garcia, J., Ivkovic, I., Medvidovic, N.: A comparative analysis of software architecture recovery techniques. In: IEEE/ACM 28th Inter. Conf. on Automated Software Engineering (ASE), pp. 486–496 (2013)Google Scholar
  22. 22.
    von Detten, M., Platenius, M.C., Becker, S.: Reengineering component-based software systems with archimetrix. Software & Systems Modeling, 1–30 (2013)Google Scholar
  23. 23.
    Weinreich, R., Miesbauer, C., Buchgeher, G., Kriechbaum, T.: Extracting and facilitating architecture in service-oriented software systems. In: Joint Working IEEE/IFIP Conf. on Software Architecture (WICSA) and European Conf. on Software Architecture (ECSA), pp. 81–90 (2012)Google Scholar
  24. 24.
    Shatnawi, A., Seriai, A.-D.: Mining reusable software components from object-oriented source code of a set of similar software. In: IEEE 14th Inter. Conf. on Information Reuse and Integration (IRI), pp. 193–200 (2013)Google Scholar
  25. 25.
    Robillard, M.P., Bodden, E., Kawrykow, D., Mezini, M., Ratchford, T.: Automated api property inference techniques. IEEE Transactions on Software Engineering 39(5), 613–637 (2013)CrossRefGoogle Scholar
  26. 26.
    Bruch, M., Schäfer, T., Mezini, M.: Fruit: Ide support for framework understanding. In: Proc. of the 2006 OOPSLA Workshop on Eclipse Technology Exchange, pp. 55–59. ACM, New York (2006)CrossRefGoogle Scholar
  27. 27.
    Buse, R.P.L., Weimer, W.: Synthesizing api usage examples. In: Proc. of the 2012 Inter. Conf. on Software Engineering, ICSE 2012, pp. 782–792. IEEE Press, Piscataway (2012)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Anas Shatnawi
    • 1
  • Abdelhak Seriai
    • 1
  • Houari Sahraoui
    • 2
  • Zakarea Al-Shara
    • 1
  1. 1.UMR CNRS 5506, LIRMMUniversity of Montpellier IIMontpellierFrance
  2. 2.DIRO, University of MontrealMontrealCanada

Personalised recommendations