Identifying Components from Object-Oriented APIs Based on Dynamic Analysis

03/16/2018
by   Anas Shatnawi, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
08/26/2019

Analyzing 2.3 Million Maven Dependencies to Reveal an Essential Core in APIs

This paper addresses the following question: does a small, essential, co...
research
02/28/2018

Autonomous Reconfiguration Procedures for EJB-based Enterprise Applications

Enterprise Applications (EA) are complex software systems for supporting...
research
07/30/2022

Mining unit test cases to synthesize API usage examples

Software developers study and reuse existing source code to understand h...
research
02/09/2021

Using Structural and Semantic Information to Identify Software Components

Component Based Software Engineering (CBSE) seeks to promote the reuse o...
research
02/16/2021

ArCode: Facilitating the Use of Application Frameworks to Implement Tactics and Patterns

Software designers and developers are increasingly relying on applicatio...
research
08/27/2021

An Experimental Analysis of Graph-Distance Algorithms for Comparing API Usages

Modern software development heavily relies on the reuse of functionaliti...
research
05/30/2018

Microservices as an Evolutionary Architecture of Component-Based Development: A Think-aloud Study

Microservices become a fast growing and popular architectural style base...

Please sign up or login with your details

Forgot password? Click here to reset