Jump to: navigation, search

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

(Use cases)
(Use cases)
Line 52: Line 52:
 
== Use cases ==
 
== Use cases ==
  
- [[Import component's metadata from an external repository (OSGi, Maven)]].
+
- [[Import component's metadata from an external repository (OSGi, Maven, others)]].
  
 
- [[CRUD software component semantic metadata]].
 
- [[CRUD software component semantic metadata]].
  
- [[Declare equivalence between components or libraries]]
+
- [[Declare and infer equivalence between components or libraries]].
  
- [[Infer equivalence between components]]
+
- [[Manage components' dependencies]].
  
 
- [[Search for components belonging to a given set of functional areas]].
 
- [[Search for components belonging to a given set of functional areas]].
  
 
- [[Search for components implementing a set of interfaces]].
 
- [[Search for components implementing a set of interfaces]].
 
- [[Search for components' dependencies]].
 
  
 
- [[Search components respecting license-related criteria]].
 
- [[Search components respecting license-related criteria]].

Revision as of 14:28, 16 May 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.


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


Use cases

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

- CRUD software component semantic metadata.

- Declare and infer equivalence between components or libraries.

- Manage components' dependencies.

- Search for components belonging to a given set of functional areas.

- Search for components implementing a set of interfaces.

- Search components respecting license-related criteria.

Architecture

Todo.

The semantic repository should be based upon: JBoss, Tomcat, Axis, Joseki.