integrating modeling tools in the development lifecycle with oslc miami, october 2013 adam neal...
TRANSCRIPT
Integrating Modeling Tools in the
Development Lifecycle with OSLC
Miami, October 2013
Adam [email protected] (Presenter)
Maged [email protected]
2Agenda
Introduction
Migration from XMI to RDF
Overview of OSLC and its benefits: Technical Foundation
Resource
Data Integration API
Resource Shape
Delegated UI Integration
Summary
3Software development is complex
Complexity can be mitigated with additional tools Design Management
Requirements Management
Change Management
Quality Management
Weak or no integration between tools
Minimal or no traceability between artifacts
4Linking Design Tools to Other Lifecycle Tools with OSLC
Integrated development environment (IDE)
Point to Point integrations are expensive and complex
MOF uses closed world assumptions
Supports validation
Does not help integrate tools built on different platforms
Does not help when data or API used for integration evolve
Open Services for Lifecycle Collaboration (OSLC)
Built on Resource Description Framework (RDF)
Uses open world assumptions
Data representation based on the principles of linked data
Minimal web-based API allowing workflow integration
5Migrating from XMI to RDF
1. Mapping MOF concepts to OWL
2. Mapping resource instances Corse or fine grained fragmentation
3. Generating URIs for RDF Graphs
6Migrating from XMI to RDF
1. Mapping MOF concepts to OWL
2. Mapping resource instances Corse or fine grained fragmentation
3. Generating URIs for RDF Graphs
<dsl:Y rdf:about=“#y1 "> <rdf:type rdf:resource=“pdsl#Z”/> <dsl:b>Hello</dsl:b> <pdsl:d>true</pdsl:d></dsl:X>
<owl:Ontology rdf:about=“dsl#“/> <owl:Class rdf:about=“dsl#X“> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource=“dsl#a”/> <owl:cardinality>1</owl:cardinality> </owl:Restriction> </rdfs:subClassOf></owl:Class> <owl:Class rdf:about=“dsl#Y“/> <owl:DatatypeProperty rdf:about=“dsl#a"> <rdfs:domain rdf:resource=“dsl#X”/> <rdfs:range rdf:resource=“xsd:Integer”/></owl:DatatypeProperty><owl:DatatypeProperty rdf:about=“dsl#b"> <rdfs:domain rdf:resource=“dsl#Y”/> <rdfs:range rdf:resource=“xsd:String”/></owl:DatatypeProperty><owl:ObjectProperty rdf:about=“dsl#c"> <rdfs:domain rdf:resource=“#X”/> <rdfs:range rdf:resource=“#Y”/></owl:ObjectProperty>
dsl
a:Integer [1]
X
b:String [*]
Y
c *
<profile>pdsl
d:Boolean
<stereotype>Z
dsl
a:Integer [1]
X
b:String [*]
Y
c *
<profile>pdsl
d:Boolean
<stereotype>Z
7Migrating from XMI to RDF
1. Mapping MOF concepts to OWL
2. Mapping resource instances Corse or fine grained fragmentation
3. Generating URIs for RDF Graphs
UML Model
UML Class
UML Operation
XMI file
http://abc.org/ex/model
http://abc.org/ex/class
http://abc.org/ex/operation
Example: FineRDF Graphs ex 2
http://abc.org/ex/model
http://abc.org/ex/classhttp://abc.org/ex/class#op
Example: Corse RDF Graphs
UML Model
UML Class
UML Operation
XMI file
http://abc.org/ex/model
http://abc.org/ex/modelUML Model
UML Class
UML Operation
XMI file
http://abc.org/ex/model
http://abc.org/ex/modelUML Model
UML Class
UML Operation
XMI file
http://abc.org/ex/model
http://abc.org/ex/model
http://abc.org/ex/model
http://company.org/dm/model/123 a uml:Operation, profileA:steroetypeX; uml:name “Operation 1”; uml:visibility uml:kind_public .
8
UML Model
Migrating from XMI to RDF
1. Mapping MOF concepts to OWL
2. Mapping resource instances Corse or fine grained fragmentation
3. Generating URIs for RDF Graphs
UML Model
UML Class
UML Operation
XMI file
http://abc.org/ex/model
http://abc.org/ex/123
http://abc.org/ex/guid_efab0-s34
RDF Graphs
http://abc.org/ex/model
9Design Management Implements OSLC
RSA Design Management server implements OSLC AM Converting XMI RDF
Providing RDF resources as OSLC AM resources
Supporting core OSLC protocols
RSA Rich Client interacts with DM server to discover resources
10Overview of OSLC
Technical Foundation
Resource
Data Integration API
Resource Shape
Delegated UI Integration
11OSLC Technical Foundation
Based on W3C Linked Data
Use URIs as names for things
Use HTTP URIs so that people can look up those names
When someone looks up a URI, provide useful information using RDF
Include links to other URIs. so that they can discover more things
Core specification defines protocols and some resources
Domain specifications define additional resources types, but not protocols
OSLC => Open Services for Lifecycle Collaboration
12OSLC Resource
A resource is represented following the principles of linked data
A resource is identified with a web URL (http://abc.com/dm/model/000)
A resource is represented as an RDF graph
Contains standard set of properties (e.g., rdfs:type, dcterms:title )
May contain pre-defined link properties
May contain other properties (open world assumption)
http://company.org/dm/model/123 a oscl_am:Resource, uml:Operation; dcterms:title “Operation 1”; uml:name “Operation 1”; dmlinktypes:validatedBy <http://qm.org/qm/testcase1>.
13OSLC Data Integration API
Retrieve/update/delete using HTTP GET/ PUT/DELETE on resource URI HTTP GET http://abc.com/dm/model/001
HTTP GET http://abc.com/dm/model/001?oslc.properties=dcterms:title, uml:NamedElement_visibility
Create using HTTP POST on creation factory URI HTTP POST http://abc.com/dm/models/creationFactory
Query using HTTP GET on query base URI HTTP GET http://abc.com/dm?oslc.where=dcterm:title=”Class1”
14OSLC Resource Shape
RDF and OWL support open world assumptions
OWL ontology supports inferencing
Validation requires closed world assumption
Resource Shape supports validation
01020304050607080910111213141516171819202122232425262728293031323334
@prefix oslc: <http://open-service.net/ns/core#>.@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.@prefix dcterms: <http://purl.org/dc/terms/>.@prefix uml: <http://www.omg.org/spec/UML/2011070#>.<http://acme.com/toolA/UMLClassShape> a oslc:ResourceShape; dcterms:title "Shape of resources of type UML Class"; oslc:describes: uml:Class; oslc:property [ a oslc:Property; dcterms:title "details for dcterms:title property"; oslc:propertyDefinition dcterms:title; oslc:name "title"; oslc:occurs oslc:Zero-or-many; oslc:valueType xsd:String ]; oslc:property [ a oslc:Property; dcterms:title "details for visibility property"; oslc:propertyDefinition uml:NamedElement_visibility; oslc:name "visibility"; oslc:occurs oslc:Zero-or-one; oslc:valueType oslc:Resource; oslc:allowedValue uml:VisibilityKind::public; oslc:allowedValue uml:VisibilityKind::private; oslc:allowedValue uml:VisibilityKind::protected; oslc:allowedValue uml:VisibilityKind::package ]; oslc:property [ a oslc:Property; dcterms:title "details for superClass property"; oslc:propertyDefinition uml:Class_superClass; oslc:name "superClass"; oslc:occurs oslc:Zero-or-many; oslc:valueType oslc:Resource; oslc:range uml:Class ].
15Delegated User Interface Integration
Delegated UI: consumer tool invokes dialogs supplied by provider tools Resource creation dialog URI
Resource selection dialog URI
16Summary
Many benefits to integrating modeling tools with other lifecycle tooling Enhanced user experience
Traceability, rich hovers, enhanced impact analysis
Difficult integration problems (e.g. creating artifacts) are handled by the native tool
Complicated business logic and UI is provided by the other tool
Point to point integrations are expensive and tightly coupled
OSLC integrations have one time investment to support core protocols Adding support for specific domains (Change, Quality, etc) becomes light weight
Integrations are loosely coupled, yet strong and robust
17
17
18
18
Additional Slides
19Future Work
Adoption of OSLC 3 Incremental (partial) updates of resources
Configuration awareness
Additional Resources and Link Types
Industry case studies of using RSA DM with the other Collaborative Lifecycle Management (CLM) tool suite to define an integrated development process
20User Interface Integration API
Link preview: consumer tool asks provider tool for compact rendering Consumer does HTTP GET with “application/x-oslc-compact+xml” header
Provider replies with RDF/XML document containing:
21Impact Analysis
Able to identify impacted lifecycle artifacts
Changing behavior of some design artifact can impact Requirements and Tests Need to be aware of previous Change Requests to ensure no regressions
Change Request (CM)
Requirement (RM)
Test Case (QM)
22OSLC Service Provider API
Defines the domain [AM, RM, QM or CM]
Defines creation factory URL
Defines query capability URL
0102030405060708091011121314
@prefix oslc: <http://open-service.net/ns/core#>.<http://abc.com/toolA> a oslc:ServiceProvider; oslc:service [ a oslc:Service; oslc:domain <http://open-services.net/ns/am#>; oslc:creationFactory [ a oslc:CreationFactory; oslc:creation http://abc.com/toolA/creation ]; oslc:queryCapability [ a oslc:QueryCapability; oslc:queryBase http://abc.com/toolA/query ] ]
0102030405
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.<http://abc.com/toolA/contents> <rdfs:member> <http://abc.com/toolA/resource/000>; # … 998 more triples here … <rdfs:member> <http://abc.com/toolB/resource/999>.
23Providing OWL Ontologies as OSLC Resource Shapes
Provide a mapping from OWL ontologies to OSLC resource shape Define a resource shape for each given OWL class
Add all properties with the OWL class (or its superclasses) as the property’s domain
Derive the oslc:name, oslc:occurs, oslc:valueType, oslc:allowedValue from OWL ontology
@prefix oslc: <http://open-service.net/ns/core#>.@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.@prefix dcterms: <http://purl.org/dc/terms/>.@prefix uml: <http://www.omg.org/spec/UML/2011070#>.<http://acme.com/toolA/YShape> a oslc:ResourceShape; dcterms:title "Shape of resources of type Y"; oslc:describes: dsl:Y; oslc:property [ a oslc:Property; dcterms:title “b"; oslc:propertyDefinition dsl:b; oslc:name “b"; oslc:occurs oslc:Zero-or-many; oslc:valueType xsd:String ];
24Representing Designs with RDF
Designs are represented as RDF graphs
Design integration (multi-classification, aliases)
Design extension (open world assumption)
Design modularization (multi-definition)
Separation of concerns
Parallel development
<rdf:Description rdf:about="#activity1"> <rdfs:label>Activity 1</rdfs:label> <rdf:type rdf:resource=“uml#Activity”/> <rdf:type rdf:resource=“bpmn#Activity”/></rdf:Description>
<rdf:Description rdf:about="#William"> <rdf:sameAs rdf:resource=“#Bill”/></rdf:Description>
<rdf:Description rdf:about=“people#Person"> <rdf:equivalentClass rdf:resource=“species#Human”/></rdf:Description>
<rdf:Description rdf:about=“#activity1"> <uml:isReadOnly>true</uml:isRealOnly> <notation:Diagram rdf:resource=“#Diagram1”/></rdf:Description>