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

From Eclipsepedia

Jump to: navigation, search
(Use cases)
(Deliverables)
Line 45: Line 45:
 
== Deliverables ==
 
== Deliverables ==
  
A '''[http://en.wikipedia.org/wiki/Web_service Web Service] [[interface]]''' will allow clients to access a '''[[semantic repository]]''' publishing meta-information about software libraries and components. Libraries and components will be formally described in terms of [http://en.wikipedia.org/wiki/Uniform_Resource_Identifier URI], offered functionalities, implemented tasks, language, license, version, dependencies and other relevant aspects of a software component, through an '''[http://en.wikipedia.org/wiki/Web_Ontology_Language OWL] [[software component ontology]]'''.
+
A '''[http://en.wikipedia.org/wiki/Web_service Web Service] [[interface]]''' will allow clients to access a '''[[semantic repository]]''' publishing meta-information about software libraries and components. Libraries and components will be formally described in terms of [http://en.wikipedia.org/wiki/Uniform_Resource_Identifier URI], offered functionalities, implemented tasks, language, license, version, dependencies and other relevant aspects of a software component, through an '''[http://en.wikipedia.org/wiki/Web_Ontology_Language 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 '''[http://www.eclipse.org/ Eclipse] [[plugin]]''', acting as a client connecting to the Web Service, '''integrating the features listed above directly in the [http://www.eclipse.org/ Eclipse IDE]''' will be provided as well.
 
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 '''[http://www.eclipse.org/ Eclipse] [[plugin]]''', acting as a client connecting to the Web Service, '''integrating the features listed above directly in the [http://www.eclipse.org/ Eclipse IDE]''' will be provided as well.
 
  
 
== Use cases ==
 
== Use cases ==

Revision as of 12:07, 28 June 2007

Project Lead:

Mentors:

  • 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.


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 Web Service interface will allow clients to access a semantic repository publishing 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 belonging to a given set of functional areas.

- Declare and infer equivalence between components or libraries.

- Import component's metadata from an external repository (OSGi, Maven, others).

- Search components respecting license-related criteria.

- Manage components' dependencies.

- Search for components implementing a set of interfaces.

Architecture

Todo.