Version and configuration management is much harder than it looks. It involves three dimensions of object interconnection: version successor and predecessor relationships, configuration membership relationships, and general associations (a catch all for other kinds of interobject relationships). The challenge is to develop an expressive, comprehensible programming model that can be implemented efficiently. This paper proposes such a model, a nice one which includes several novel features. It includes an OQL-like query language extended for versioning (and extension of EXCESS), whose semantics is defined relative to a nonversioned model where versioning features are implemented using ordinary columns and queries. The main goal of the paper is to present the progamming model and show its benefits, which it does very well. Given the richness of the model and the clarity of the presentation, the paper is also useful as an introduction to the topic. The paper also has an excellent bibliography. For readers who are already familiar with many versioning models, below is a summary of many of the model's features. This is meant only to help you decide whether the paper is covers issues of interest to you, not as a substitute for the paper itself.
- Versioned vs. nonversioned attributes, which can be overidden in a subtype
- Generic vs version-specific references (i.e. relationships)
- There exists default version of each object. Queries can range over all default versions or all versions. The default is determined by the value of context variables for object's dimenstions and can be overridden in a query
- An update to versioned object ordinarily creates a new version, but can be avoided using a "replace version" operation
- A configuration is defined by a query
- View definitions are used to define frozen configurations.
- This avoids the need to nail down specific versions in a configuration (expensive). But you can nail down specific versions by having the view specify object id's or equivalent.
- Branches (design alternatives) are defined by an attribute value
- Versions are related both by derived-from and by predecessor (i.e. a version needn't be derived from its predecessor).
- The sequential version chain per branch is defined by time. The model incorporates temporal database concepts, by allowing many version dimensions, labeled by time.