25,463 research outputs found
Identifying Components from Object-Oriented APIs Based on Dynamic Analysis
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.Comment: 11 pages, 5 figure
Empirical Evidence of Large-Scale Diversity in API Usage of Object-Oriented Software
In this paper, we study how object-oriented classes are used across thousands
of software packages. We concentrate on "usage diversity'", defined as the
different statically observable combinations of methods called on the same
object. We present empirical evidence that there is a significant usage
diversity for many classes. For instance, we observe in our dataset that Java's
String is used in 2460 manners. We discuss the reasons of this observed
diversity and the consequences on software engineering knowledge and research
TCPSnitch: Dissecting the Usage of the Socket API
Networked applications interact with the TCP/IP stack through the socket API.
Over the years, various extensions have been added to this popular API. In this
paper, we propose and implement the TCPSnitch software that tracks the
interactions between Linux and Android applications and the TCP/IP stack. We
collect a dataset containing the interactions produced by more than 120
different applications. Our analysis reveals that applications use a variety of
API calls. On Android, many applications use various socket options even if the
Java API does not expose them directly. TCPSnitch and the associated dataset
are publicly available.Comment: See https://www.tcpsnitch.or
- …