genOSLC framework (for Developers)
Purpose
Development of complex systems and applications requires supporting methods and tools to address complexity. For tools to be effective, they need to support integrated systems engineering and application development activities, and not create barriers that add complexity and reduce efficiency. One approach is to use a single tool that does everything. But often tools that do everything do nothing well. The other approach is to use best of breed tools and integrate them. But without standards and open APIs, this can be difficult or impossible, leading to more complexity and inefficiency.
OSLC attempts to address this challenge by providing standards and REST APIs that enable loosely coupled integration between best of breed tools to support your chosen methods and tool.
OSLC is a set of related OASIS standards (about OSLC) managed by the OASIS OSLC Open Project that enables interoperability between software tools used across different stages of the product and software lifecycle (e.g., requirements, testing, development, DevOps). The intent of OSLC is to:
Reduce application silos by integrating loosely coupled, disparate tools (e.g., ALM, PLM, ITSM) supporting the whole systems and software development lifecycle.
Enable traceability and collaboration via linked data.
Avoid vendor lock-in through standardized REST APIs.
The OSLC Standards consist of a set of specification defining core capabilities, and a set of specifications that define vocabularies, constraints and base capabilities for specific domains.
OSLC core services include:
Resource Management
Uniform Resource Access
Every artifact (e.g., requirement, bug, test case) is identified by a URL.
Resources are accessed via HTTP REST APIs (
GET,PUT,POST,DELETE).
CRUD Operations
Create, Read, Update, and Delete resources using standard HTTP methods.
Linked Data (RDF-Based) Resources
Resources are represented in RDF (Resource Description Framework) (e.g., JSON-LD, Turtle, RDF/XML).
Supports typed links (e.g.,
oslc_rm:validatedBybetween a requirement and a test case).Defines a common set of properties (e.g., identifier, title, description, createdBy, modifiedBy, etc.) on all resources
Leverages Open-World assumptions to enable extensibility and integration
Access Control
Defines standards for client/server and server/server authentication and authorization
Service Discovery
OSLC servers expose a Service Provider Catalog to list available Service Providers
Clients can discover what services are provided by an OSLC server on what resources.
Delegated Dialogs
Selection dialogs allow one tool to request a selection dialog of another tool to select resources for creating links
Creation dialogs allow a tool to request to create resources managed by another tool.
Dialogs are contained in iFrames and interact with the host application in a standard way
Tools can provide embeddable UI components (e.g., a requirement picker).
Creation Factory
Allows tools to create resources with constraints that indicate required and optional properties
OSLC Query
Provides an implementation independent, standard REST service for querying OSLC resources
Supports selection, projection and ordering capabilities
Queries can follow linked resources
Supports pagination of query results
The OSLC domains include:
Requirements Management - for capturing, linking and tracking product requirements
Quality Management - for defining test plans, test cases and test resoults that validate requirements and change requests
Change Management - defines change requests that drive and manage changes to resources over their lifecycle
Architecture Management - defines resources representing deliverables whose lifecycle is being managed
Configuration Management - defines a standard for managing versions and variants of artifacts across the whole systems development lifecycle.
Tracked Resource Sets - defines a standard way for tools to contribute and track changes to federated resources into data-marts to support efficient query and reporting across the whole lifecycle
The standard is meant to support collaboration between tools general purpose tools from various commercial vendors as well as custom-built solutions.
OSLC Adoption Challenges
There are some challenges to OSLC adoption that have been experienced by individuals and organizations creating and using adapters to enable OSLC access to their data and tools.
The OSLC-OP specifications are extensive and often terse specifications making them hard to understand by implementors and integrators
Existing implementations are inconsistent, poorly documented, and partially compatible, possibly because of too many options in the OSLC specifications (MAY and SHOULD instead of MUST conformance clauses)
Resource Description Format (RDF), although the essential OSLC resource format, is not something end users and developers are typically familiar with, and can be a barrier to development
Authentication challenges are often an early stumbling block in OSLC integrations
Legacy OAauth 1.0a is often required, especially server to server integration with IBM ELM
Provider and consumer friends, and project area associations are generally required, but not defined in the OSLC specifications
Many different sub-specifications and use cases
Linking, resource previews, delegated dialogs, resource shapes, OSLC query, etc. add to OSLC complexity
Use of absolute URLs creates challenges for data migration or refactoring
There is no practical means of federating queries across multiple OSLC servers that contain richly linked data
Many of these issues are a natural result of the Open-World Assumptions that are the foundation of the World Wide Web and linked data, and the evolution of implementations and standards over time. MAY and SHOULD conformance clauses in the OSLC specifications were often included to address the needs of existing implementations.
The OSLC-OP Technical Steering Committee (TSC) recognizes these challenges as the TCS members have significant experience in building and integrating OSLC clients and servers. This experience has been captured in a set of conformance clause recommendations in the OSLC Linking Profile project note. OSLC clients and servers that implement this profile, will be simpler and provide improved, consistent integrations.
genOSLC addresses OSLC integration challenges
The genOSLC frameworks attempt to address these challenges by providing a generic OSLC server implementation that follows the guidelines in the OSLC Linking Profile that can easily be extended to support additional domains and adapted to different lifecycle tool data sources. The framework consists of three parts, the genOSLC Server, the genOSLC Link Plugin UI and the genOSLC TRS providers.
genOSLC Server
genOSLC provide an OSLC server framework built in Java using Spring Boot that provides all essential OSLC services on a subset of the OSLC RM, AM, QM, and Configuration Management domains. Specifically the framework implements OSLC REST APIs for:
OIDC and legacy OAuth 1.0a authentication and authorization along with the consumer/friend relationships typically needed for OSLC integrations
RDF/XML resource representations and OSLC Resource Shape constraints
OSLC rootservices, ServiceProviderCatalog and ServiceProvider discovery along with the project area (i.e., service provider) associations that are typically needed to create OSLC links between resources in different servers
Resource Preview
Delegated creation and selection dialogs
OSLC Query
OSLC components, resource versioning and local configurations for configuration management
OSLC Tracked Resource Sets for cross domain traceability reporting
Adapting an existing data source or lifecycle tool for OSLC integration is greatly simplified by using the genOSLC server framework. Integrators only need to implement the IToolAdapter interface using the native API of their tool or data source. All of the OSLC and RDF details are done by the genOSLC framework.
genOSLC Link Plugin UI
OSLC Servers are essential, but it's the client’s use of these integrated servers that provides value to end users. The genOSLC Link Plugin UI provides a plugin in an HTML iFrame that can be easily integrated into existing lifecycle tool applications to support linking their selected resources to resources in any OSLC server. The link plugin integrates with the existing application using postMessage to the iFrame to support:
Native tool selection
Resource Preview
Displaying and creating incoming and outgoing links
Link validity status (unknown, valid, invalid or suspect)
Adapting an authoring tool to support an OSLC client is greatly simplified as the authoring tool only needs to implement the postMessage protocol for the genOSLC link plugin iFrame. All the UI details for accessing and using OSLC for configuration context selection, link display and creation are done by the genOSLC Link Plugin UI.
genOSLC TRS provider
The genOSLC framework provides a generic implementation of the OSLC Tracked Resource Set specification so that authoring tools adapted using the framework can automatically contribute their resources to reporting tools such as IBM Lifecycle Query Engine and the Jazz Report Builder. Authoring tools simply need to implement methods in the IToolAdapter interface to notify the genOSLC framework of changes to their managed resources, and genOSLC takes care of all of the TRS base and change log implementation details.