Edit Rename Changes History Upload Download Back to Top

A Layered Architecture for Uniform Version Management

This publication covers both an abstract model 'UVM' as well as a research implementtion of it. I'm not so much interested in implementing their research model, but much more in using the UVM for analyzing my desires wrt to Smalltalk versioning. It also describes various taxonomies and defines verioning terms which I kind of adopted as my vocabulary when discussing CM issues.

It also contains some very interesting stuff wrt to publishing into multiple branches at once.

This paper only describes a part of the whole EPOS project, over the course of a decade or so these people have done some facinating agile process modeling and tool generating experiments with a strong bent towards CM. Well worth investigating if you have the time.


I had to re-read this article a couple of times before I could connect all the dots, so let me present you a Smalltalk oriented metaphore that might help you to understand the lowest layer quicker than me:

Consider the simplistic case where you want to extract a single .st file that represents all the code to be present in an image from the repository.

View the repository as a single .st file where each and every line is wrapped in a C-preprosessor conditional:

#if conjunction1
  first line of Smalltalk code
#endif
#if conjunction2
  second line of Smalltalk code
#endif
#if conjunction3
  anther version of second line of Smalltalk code
#endif
etc...

The conjunctions are of the form ( !option1 & option2 & !option3 & option4 .....)

Extracting the monoversion .st from the multiversion repository .st is then analogous to running the C preprocessor over the repository .st with the various options predefined to express the version to extract.

The per-line chunks in the repository is what the paper calls selective deltas.


IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 27, NO. 12, DECEMBER 2001

Get the document at CiteSeer: A Layered Architecture for Uniform Version Management

Abstract:

Version management is a key part of software configuration management.

A big variety of version models has been realized in both commercial systems and research prototypes. These version models differ with respect to:

  1. the objects put under version control (files, directories, entities, objects),
  2. the organization of versions (version graphs versus multidimensional version spaces),
  3. the granularity of versioning (whole software products versus individual components),
  4. emphasis on states versus emphasis on changes (state- versus change-based versioning),
  5. rules for version selection, etc.
We present a uniform version model and its support architecture for software configuration management. Unlike other unification approaches, such as UML for object-oriented modeling, we do not assemble all the concepts having been introduced in previous systems.

Instead, we define a base model that is built on a small number of concepts. Specific version models may be expressed in terms of this base model. Our approach to uniform version management is distinguished by its underlying layered architecture.

Unlike the main stream of software configuration management systems, our instrumentable version engine is completely orthogonal to the data model used for representing software objects and their relationships. In addition, we introduce version rules at the bottom of the layered architecture and employ them as a uniform mechanism for expressing different version models.

This contrasts to the main stream solution, where a specific version model --usually version graphs-- is deeply built into the system and version rules are dependent on this model.


see also
Edit Rename Changes History Upload Download Back to Top