Semantic-aware software component provisioning: actually reusing software
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.
- 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.
Summary of capabilities
Developers will be able to reduce the number of libraries and components needed by their system: 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 Web Service interface will allow clients to access a central repository publishing meta-information about software libraries. Software libraries will be formally described in terms of URI, offered functionalities, language, license, version, dependencies and other relevant aspects of a software component, through an OWL ontology.
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.