Jump to: navigation, search

Difference between revisions of "Semantic-aware software component provisioning: actually reusing software"

(Use cases)
m (Semantic Repository Architecture: cat)
Line 66: Line 66:

Revision as of 17:40, 14 October 2007

Project Lead:


  • Philippe Ombredanne (IRC: pombreda)

This project is one of the selected projects for Google's Summer of Code program in 2007. The original application can be found here.


Software development nowadays largely consists of adapting existing functionality or components to perform in a new environment, and is biased towards delivering component-oriented architectures. Finding, choosing, provisioning and integrating the right libraries or components is still an ad-hoc and error prone task. Furthermore, it is sadly well know that object-oriented programming promised a lot about code reuse, but so far it never delivered it that much.


This project aims to actually achieve software reuse in an effective, reliable and developer-friendly fashion.

Main benefits and capabilities

- Developers would benefit from this project because it aims to relieve libraries choosing, integration and dependencies management burden, providing state-of-the-art features to support smart searching of software components, and integrating with cutting edge technologies as OSGi, Maven POM and more. A set of tools making metadata writing (and reuse) easier will be provided as well.

- Components and libraries providers would benefit from this project because it encourage and eases the diffusion of open source software, together with social approaches in formally describing software components’ metadata. The integration with OSGiand Maven POM would ease spreading of software components as well: the more – integrated! – distribution channels, the better.

Benefit Supporting feature
Reduce the number of libraries and components needed by software systems searching for libraries implementing sets of functionalities provided by more than one library
Improved build and integration support transitive dependencies management
More reliable and formal mechanism for libraries' functionalities assessing and search, integrated in the Eclipse IDE taxonomical (hierarchical) organization of software functionalities in an ontology supports inference and gives much granularity in searching libraries. Natural language tags will be available as well, to add lower-level expressiveness, yet they cannot be trusted as the only grouping criteria (as with Maven Repository).
Smarter libraries search features inference mechanism helps building relations upon social-generated contents: relations and functional equivalence among libraries will be both explicitly declared and inferred by the inference engine thus building a dense semantic network with a little effort. Machine readable metadata thus will allow much more granularity and raise the formal level and the "intelligence" of search-related features.


A REST interface to semantic repository allowing clients to publish meta-information about software libraries and components. Libraries and components will be formally described in terms of URI, offered functionalities, implemented tasks, language, license, version, dependencies and other relevant aspects of a software component, through an OWL software provisioning ontology (swpo.owl).

The interface will allow a generic client to query the repository, and augment it with new libraries descriptions and licensing information as well. Furthermore a prototypical server repository implementation of the Web Service interface, and an Eclipse plugin, acting as a client connecting to the Web Service, integrating the features listed above directly in the Eclipse IDE will be provided as well.

Use cases

- CRUD software component semantic metadata.

- Search for components fulfilling a given set of tasks.

- Declare and infer functional equivalence between components or libraries.

- I/O component's metadata from/to an external repository (OSGi, Maven, others).

- Search components respecting license-related criteria.

- Manage components' dependencies.

Semantic Repository Architecture

Repository architecture.jpg