Thus an ontology, meant to be a shared, higher
level domain vocabulary among developers,
allowing to semantically describe software and
eventually mapping a subset of available metadata to
one of the technologies available, would enable a
thorough description of a component, aimed to stress
what the component does in an unambiguous
fashion; this supports interoperability among
developers and among technologies, provides some
ground concepts to establish, declare or infer
relationships among software components, and eases
the reuse of existing software, giving developers a
significant help in the early discovery phases.
4 KNOWLEDGE MODEL
The Knowledge Model of the SSP environment
offers, at the current state of development, those
concepts and relations which are necessary for
providing a sufficiently detailed description of
software entities and for modeling the functionalities
which have been presented in the use-cases section.
Reference to past research work (Oberle et al.,
2006) on modeling ontologies for describing
software systems has been made by reusing concepts
from these ontologies for describing common
software entities like: component, library and
software license.
Our framework is centered about the description
of software objects, providing several semantic
anchors through which they can be identified,
classified according to different perspectives and
needs, and thus easily retrieved on these same
aspects.
SoftwareObject(s) can be mainly
distinguished according to two different categories:
Components, which are “Program modules that
are designed to interoperate with each other at
runtime”, that is software objects for which there is a
well-defined runtime behavior, and Library(ies)
which define “collections of subprograms used to
develop software”.
Other classes offer further perspectives over
which software objects registered in the SSP
repository may be clustered and accessed: License
has been introduced to describe the diverse software
licenses adopted by software developers and
vendors. This way users may filter their choice if, as
an example, they need only software licensed under
a specific contract. This filtering can even less
explicit, by automatic reasoning over class of
licenses and the relationships between them. A
property licenseIncompatibleWith allows to
establish incompatibilities between use of
components licensed under different contracts, while
the class LicenseStyle describes categories of
licenses which share common aspects. A reification
technique – see (Gangemi & Mika, 2003) for a
wider discussion on this topic – has been adopted to
describe license styles both as objects of the domain
as well as classes of licenses (so, as
rdfs:subClassOf License), still remaining inside a
first order description of the domain. This way we
can “talk about” software licenses as ground objects
(which may exhibit specific contractual expressions,
have a reference web site etc…) and, at the same
time, consider them as set of licenses, offering class
level restrictions on the values that their belonging
instances should expose on their properties.
The explicit link between the objects (instances
of LicenseStyle) and the set of Licenses
(subclasses of License) is outside of the ontology
vocabulary and is handled by the semantic
repository, which automatically generates subclasses
of License for each new introduced license style.
Specific Tasks can be defined in the repository,
to help clustering components according to their
purposes.
The same reification technique described above
is used to automatically generate subcategories of
SWObject which cluster sets of components and
libraries according to their purposes.
5 ARCHITECTURE
The semantic repository publishes a set of REST
API, in compliance to the well known architectural
style described in (Fielding, 2000) allowing clients
to easily consume its services, and enabling any kind
of Web 2.0 buzzword-compliant mashup. The
RESTlet framework was embedded into a servlet
container to deploy the repository as a web
application.
We also developed a REST Eclipse-based client
consuming the repository’s web services, decoupling
the client-server interaction from the UI
contributions.
The repository location can be both local (i.e.
this can be achieved simply deploying the repository
web application inside Eclipse itself, exploiting the
embedded Jetty server used by the help plugin), or
remote, and it can be chosen using the provided
preference page, accessed in the usual Eclipse way.
Two views were implemented: the Repository
Explorer, on the left, allows the developer to browse
components by name, version, license, tags, tasks or
navigate the semantic relations among the
SOFTWARE SEMANTIC PROVISIONING - Actually Reusing Software
187