Contents

About

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.

Goal

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.

Deliverables

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 OWLsoftware 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 Eclipseplugin, acting as a client connecting to the Web Service, integrating the features listed above directly in the Eclipse IDE will be provided as well.

Architecture

Future Developments

Future iterations will involve a deeper axiomatization of License and License-style concepts, since they represent the contract between the product provider and the consumers, and often is a strict non-functional requirement to be satisfied when a third-party software is chosen. A strong investigation on “software specifications” could contribute to further discriminative arguments for facilitating classification (and thus more precise retrieval) of software objects in the repository. Achieving interoperability and integration with and metadata reuse from top-notch provisioning systems (OSGi and Maven at first) through latest semantic web technologies and standards (RDFa and GRDDL) will be the main focus of the second iteration for the project. User interface improvements and some performance issues will be addressed as well.