2 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
Deriving Component Interfaces after a Restructuring of a Legacy System
International audience—Although there are contributions on component-oriented languages, components are mostly implemented using object-oriented (OO) languages. In this perspective, a component corresponds to a set of classes that work together to provide one or more services. Services are grouped together in interfaces that are each implemented by a class. Thus, dependencies between components are defined using the semantic of the enclosed classes, which is mostly structural. This makes it difficult to understand an architecture described with such links. Indeed, at an architectural level dependencies between components must represent functional aspects. This problem is worse, when the components are obtained by re-engineering of legacy OO systems. Indeed, in this case the obtained components are mainly based on the consistency of the grouping logic. So, in this paper we propose an approach to identify the interfaces of a component according to its interactions with the other components. To this end, we use formal concept analysis. The evaluation of the proposed approach via an empirical study showed that the identified interfaces overall correspond to the different functional aspects of the components