Identifying Software Components from Object-Oriented APIs Based on Dynamic Analysis

被引:12
作者
Shatnawi, Anas [1 ]
Shatnawi, Hudhaifa [2 ]
Saied, Mohamed Aymen [3 ]
Al Shara, Zakarea [4 ]
Sahraoui, Houari [5 ]
Seriai, Abdelhak [4 ]
机构
[1] Univ Milano Bicocca, Milan, Italy
[2] Maharishi Univ Management, Fairfield, IA USA
[3] Concordia Univ, Montreal, PQ, Canada
[4] Univ Montpellier, Montpellier, France
[5] Univ Montreal, Montreal, PQ, Canada
来源
2018 IEEE/ACM 26TH INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION (ICPC 2018) | 2018年
关键词
Software components; reverse engineering; object-oriented APIs; dynamic analysis; source code; understandability; reuse;
D O I
10.1145/3196321.3196349
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The reuse at the component level is generally more effective than the one at the object-oriented class level. This is due to the granularity level where components expose their functionalities at an abstract level compared to the fine-grained object-oriented classes. Moreover, components clearly define their dependencies through their provided and required interfaces in an explicit way that facilitates the understanding of how to reuse these components. Therefore, several component identification approaches have been proposed to identify components based on the analysis object-oriented software applications. Nevertheless, most of the existing component identification approaches did not consider co-usage dependencies between API classes to identify classes/methods that can be reused to implement a specific scenario. In this paper, we propose an approach to identify reusable software components in object-oriented APIs, based on the interactions between client applications and the targeted API. As we are dealing with actual clients using the API, dynamic analysis allows to better capture the instances of API usage. Approaches using static analysis are usually limited by the difficulty of handling dynamic features such as polymorphism and class loading. We evaluate our approach by applying it to three Java APIs with eight client applications from the DaCapo benchmark. DaCapo provides a set of pre-defined usage scenarios. The results show that our component identification approach has a very high precision.
引用
收藏
页码:189 / 199
页数:11
相关论文
共 35 条
  • [1] Adjoyan S., 2014, The 26th International Conference on Software Engineering and Knowledge Engineering, Hyatt Regency, Vancouver, BC, Canada, July 1-3, 2013, P1
  • [2] Al-Shara Zakarea, 2016, ECSA
  • [3] From Object-Oriented Applications to Component-Oriented Applications via Component-Oriented Architecture
    Allier, Simon
    Sadou, Salah
    Sahraoui, Houari
    Fleurquin, Regis
    [J]. 2011 9TH WORKING IEEE/IFIP CONFERENCE ON SOFTWARE ARCHITECTURE (WICSA), 2011, : 214 - 223
  • [4] Alshara Z, 2015, GPCE'15: PROCEEDINGS OF THE 2015 ACM SIGPLAN INTERNATIONAL CONFERENCE ON GENERATIVE PROGRAMMING: CONCEPTS AND EXPERIENCES, P55, DOI [10.1145/2936314.2814223, 10.1145/2814204.2814223]
  • [5] [Anonymous], 2003, Osgi service platform, release 3
  • [6] The DaCapo benchmarks: Java']Java benchmarking development and analysis
    Blackburn, Stephen M.
    Garner, Robin
    Hoffmann, Chris
    Khan, Asjad M.
    McKinley, Kathryn S.
    Bentzur, Rotem
    Diwan, Amer
    Feinberg, Daniel
    Frampton, Daniel
    Guyer, Samuel Z.
    Hirzel, Martin
    Hosking, Antony
    Jump, Maria
    Lee, Han
    Moss, J. Eliot B.
    Phansalkar, Aashish
    Stefanovic, Darko
    VanDrunen, Thomas
    von Dincklage, Daniel
    Wiedermann, Ben
    [J]. ACM SIGPLAN NOTICES, 2006, 41 (10) : 169 - 190
  • [7] Boussaidi G. E., 2012, 2012 19th Working Conference on Reverse Engineering (WCRE), P345, DOI 10.1109/WCRE.2012.44
  • [8] Bruch Marcel., 2006, P 4 OOPSLA WORKSHOP, P55, DOI [10.1145/1188835.1188847, DOI 10.1145/1188835.1188847]
  • [9] The FRACTAL component model and its support in Java']Java
    Bruneton, Eric
    Coupaye, Thierry
    Leclercq, Matthieu
    Quema, Vivien
    Stefani, Jean-Bernard
    [J]. SOFTWARE-PRACTICE & EXPERIENCE, 2006, 36 (11-12) : 1257 - 1284
  • [10] Cornelissen B, 2007, 14TH WORKING CONFERENCE ON REVERSE ENGINEERING, PROCEEDINGS, P281, DOI 10.1109/ISCIII.2007.367402