This wiki is locked. Future workgroup activity and specification development must take place at our new wiki. For more information, see this blog post about the new governance model and this post about changes to the website.

Baselines


Introduction

This page describes the concept of a baseline of a set of resources. To paraphrase the OSLC SCM specification:

Often, systems need to maintain collections of resources - for example, the set of sources that were used to construct your software, or the set of requirements that apply to a specific model of a product. This set of resources, their states, and the links between them, is called a configuration. During the development and evolution of a system, the set of resources in a configuration and the states of those resources may vary. To reproduce an earlier state for testing, or for audit trail reasons, etc., it is often important to have a permanent and immutable record of a configuration at some specific point in time. This immutable record of a configuration is called a baseline. Not all providers can guarantee complete immutability of baselines - for example, administrative actions might modify data.

A baseline captures the exact state of a set of resources, including the state of each resource in the set and the links between them. An immutable record of a resource could be made through copying, versioning, or a change in the state of the original resource.

Use Cases

Create a baseline

As a software developer, I need to record the exact state of my SCM configuration for building a library that will be used by other software components, including the right header files, the binary build artifacts for various platforms, the README or release notes, etc.

As a requirements manager, I need to record the exact state of my fighter jet requirements following a review by the Air Force. Since requirements may change, I need this snapshot to be available at any time later, so we can review what the Air Force has or has not yet approved. Links between my requirements must be included in the snapshot.

As a user of a system, I need to treat a thing (resource, metric, etc.) or collection of things as a related group, and I want the system to record and/or freeze a copy at some point in time, or (for resources that are versioned in some way by their provider) record the version of the resource at that time. The state of links between resources must also be captured.

Modify and delete baselines

As a release manager, I need to make a formal release of a software product. The previously created baseline for the tested final build of the product should be marked and preserved, adding appropriate version numbers and comments to the updated baseline. After that, I want to delete several previous test and published baselines for earlier intermediate states of this new product release, and the associated intermediate versions of build artifacts, in order to save space and speed up future queries.

As a baseline manager, I need to be able to modify the properties of a baseline, and link that baseline to other resources such as test results.

As a baseline manager, I need to be able to delete or mark obsolete old and unused baselines, so they do not affect users’ operations and queries.

Control the use of a baseline, component-based development

As a software developer, I need to be able to mark my new library baseline as available to the testing group, but I do not yet want the new library to be picked up by other software developers unless they explicitly choose to do so. Once the library has passed testing, we need to be able to mark the baseline as suitable for general use

As a user of a system, I need to announce and/or control the availability of a collection of resources to some audience (such as a testing group, or another development group using component assembly, etc.)

As the process owner, I need to be able to set rules for when new baselines or new versions of baselines are picked up by the users of my system

As a user of baselines, I need to be able to decide which baseline or version of a baseline to use as a sub-component, library, or similar dependency (possibly within limits and policies determined by the process owner)

Compare baselines

As a test engineer, I want to be able to see the new change sets included in a baseline wrt the baseline I tested last week, and I want to be able to trace those change sets back to any associated defects or requirement changes.

As a creator or user of baselines, I need to be able to compare two baselines, or the current state of the system vs. a baseline, and get a report of the differences, tracking those differences back to their root causes across multiple SCM domains

Baseline Definitions

What is a baseline?

  • A baseline is an OSLC gettable resource
  • It has certain properties of its own

What is in a baseline?

  • A baseline has a collection of versions and/or states of resources that are members of the baseline
  • The members of a baseline may themselves have member resources that are also part of the baseline, forming a linked graph of resources (perhaps a hierarchy)
  • Baseline members are gettable resources, so may have their own unique properties and links, and other resources may link to baseline members
  • Baseline members may also have links to resources outside the baseline: such referenced resources might not be immutable
  • Baseline member resources need not all be from the same OSLC domain (or indeed from any OSLC domain)

Types of baseline

  • A baseline might be a member of a larger baseline
  • The term ‘composite baseline’ has been used to describe a baseline whose members come from multiple OSLC domains; since the proposals on this page address baselines whose members may come from one or more OSLC domains and providers, they include 'composite baselines'; that term is considered redundant
  • Similarly, this proposal also covers baselines some of whose members are not OSLC or RDF resources.

Immutability

Baselines themselves are, in general, mutable resources: they may have a mutable set of local properties such as comments, status, etc., and possibly a mutable set of link properties such as associated test results, etc.

Baselines are intended to provide an immutable view of their members. How such a view is maintained depends on the provider – some systems might provide read-only copies or versions of the member resources, some might record enough of the state of the member resource to present an immutable view of mutable resources. In general, a system cannot promise complete immutability of the view or the underlying resources.

The set of members of a baseline is normally immutable. However, a large cross-domain baseline might need to be constructed over time using multiple tools manager by multiple owners. It is quite possible that those owners are not necessarily all available at the same time - one might be out on vacation or sick at the time someone else needs to start creating the composite baseline. Hence the member set needs to be able to be mutable and have members added to it incrementally until it is marked as complete.

Once a baseline has been completely constructed and its properties set as desired, it should be possible to get an immutable view of the baseline resource itself, as well as its members.

Durability

Some baselines may be more important than others - for example, the product release or regulatory inspection baseline might need to be very complete and kept for a very long time, whereas an interim baseline formed to tell the testing group that some version and/or part of a product is ready for test might be transitory and incomplete.

OSLC Baseline Proposals

Below are two proposals for baselines: one involves resource rewriting to create new resources that are specific to versions or snapshots of individual resources across multiple service providers, and the other creates snapshot states for a set of resources from a single service provider.

Topic attachments
I Attachment Action Size Date Who Comment
elseodt Baseline_review_steve.odt manage 27.0 K 06 Apr 2011 - 13:18 SteveSpeicher SteveSpeicher review comments on r5 of this page
Edit | Attach | Print version | History: r17 | r15 < r14 < r13 < r12 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r13 - 13 Jun 2011 - 14:28:28 - NickCrossley
 
This site is powered by the TWiki collaboration platform Copyright � by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Contributions are governed by our Terms of Use
Ideas, requests, problems regarding this site? Send feedback