Semantics play an important role in software component based
Semantics play an important role in software component-based development as they improve components identification, selection and integration through, among others, the use of ontologies (Kaur and Mishra, 2017). Analogously, they allow to improve discovery, composition and reuse in the context of Web services (Cardoso, Sheth, 2005, Chen, Feng, Chen, Huang, Tan, Zhang, 2015). A great deal of research effort is invested towards the semantic Web services (Wang et al., 2015). Several works propose specific ontologies such as OWL-S (Fensel et al., 2006), WSMO (Roman et al., 2005) and SAWSDL (Kopeck et al., 2007). Moreover, ontologies intended to represent domain knowledge are incorporated in recommender systems in order to generate more accurate recommendations (de Gemmis et al., 2015). To the best of our knowledge, no ontology-based recommender system has been proposed to assist software engineers in identifying coarse-grained software components.
The remaining of this paper is structured as follows. Section 2 presents the high-level architecture of the proposed recommender system. Section 3 is dedicated to the COTS components ontology elaborated for item knowledge representation. Section 4 presents an overview of the user model constructed to incorporate the context in the recommendation process. Section 5 describes the ontology-based recommendation process. Section 6 deals with the experimentation carried out to evaluate the recommendation relevance. Finally, the paper ends with a conclusion.
Overall architecture of the proposed recommender system In this section we describe the overall architecture of the proposed recommender system. Although dozens of recommender systems in software engineering have been built, no reference architecture has emerged to-date (Robillard et al., 2014). The variety of recommender systems in software engineering architectures is likely a consequence of the fact that most tools of this type work with a XL228 source of data, and are therefore engineered to closely integrate with that data source (Robillard et al., 2014). In our proposal, the recommender system contains three processing components as illustrated in Fig. 1: the extraction and unification component, the user profile management component, and the recommendation component. First, the heterogeneous COTS components descriptions provided by the COTS publishers are processed by the extraction and unification component to generate a common representation. This component makes possible the creation and the management of the semantic descriptions of COTS components, which represent knowledge about items. Third, the recommendation component ranks and displays COTS components based on the functional requirements expressed in the user query and the preferences stored in his/her profile. To better exploit the COTS components descriptions repository, the recommendation component makes use of, on the one hand, a linguistic ontology namely WordNet (Fellbaum, 1998, Fellbaum, 2005), which is a large lexical database of English grouping terms into sets of cognitive synonyms linked through semantic relations, and on the other hand, a domain ontology namely Open Directory Project (ODP), which is known to be the largest and most comprehensive Web topic ontology. Knowledge about how the items match the user’s needs is encapsulated in corpus callosum component.
COTS components representation The proposed recommender system is first based on the use of ontology in order to represent different COTS components descriptions in a unified and formal manner and therefore to allow rigorous reasoning process on COTS components knowledge whatever the format and the terminology used are. We describe in this section the ONTOlogy for COTS components (ONTOCOTS), that we built to provide common and shared structure, terminology and semantics for COTS components representation. The ontology is built using the Archonte method (Bachimont et al., 2002). This latter involves three steps. It starts by a semantic normalization of the terms introduced in the ontology, followed by a formalization of the meaning of knowledge primitives obtained and ends with an operationalization using knowledge representation languages. In the second part of this section, we present how data is actually collected from COTS publishers sites and represented as ONTOCOTS instances.