Synchronization model
From Wikipedia, the free encyclopedia
- In configuration management (CM), one has to control (among other things) changes made to software and documentation. This is called revision control, which manages multiple versions of the same unit of information. Although revision control is important to CM, it is not equal to it.
Synchronization Models, also known as Configuration Management Models (Feiler, 1991), describe methods to enable revision control through allowing simultaneous, concurrent changes to individual files.
Check-out/check-in
Feiler (1991) reports on four different synchronization models, shortly described below.
In the check-out/check-in model, files are stored individually in a repository from which they are checked out whenever the files are accessed, and checked in when they have changed. This repository can store multiple versions of the files. Because these files can be documentation or source code, but can also be a collection of files, the term Configuration item (CI) will be used from now on. The basic mechanism used to prevent conflicts by simultaneous modifications is that of locking.
Composition
The composition model is an extension on the check-out/check-in model. This model allows developers to think in configurations instead of individual files. Although the complete check-out/check-in model is represented in the composition model, it enables the use of different strategies for updating through the use of improved support for the management of configurations. A configuration is defined as being built up from a system model and version selection rules. The system model determines which files are used, while the version selection rules determine which version of the files (e.g. the latest versions or of a certain development state).
Long transactions
The long transactions model takes a broader approach by assuming that a system is built up out of logical changes. Its focus is on the coordination and integration of these changes. Basically, it uses versions of configurations and versions of files. A configuration is created based on a change request which is stored separately. Files in this configuration can be synchronized using the check-out/check-in model. When the change is completed, the complete configuration is stored back into the repository and integrated with other changes.
Change set
The change set model also works based on change requests and has a lot in common with the long transactions model. However, it starts with a certain configuration as the basis for changes. This is then changed according to the independent change requests that come in. New configurations of the product are then created by applying sets of the independently stored changes on the baseline version.
This entry covers the check-out/check-in synchronization model, including a meta-model (a process-data diagram). Because the check-out/check-in model is also included as a part of the other models discussed above, it is therefore further elaborated upon. Issues that are not discussed in detail are the three remaining synchronization models and the actual editing of CIs together with the methods related to this.
Vocabulary
| Concept | Definition |
|---|---|
| Version | A version is a state of an object or concept that varies from its previous state or condition. |
| Configuration item | An element of software or a document placed under version control. A group of CIs can also be defined as a CI (Crnkovic et al., 2003). |
| Configuration item history | A concept to facilitate version stamping. Splits version specific attributes from attributes common to all versions (Van de Weerd, 2005) |
| Document | Many types of documentation are part of software engineering. Consider documents that describe the software architecture, technical documentation, user manuals, etc. |
| Source code file | A source code file contains any series of statements written in some human-readable computer programming language. A computer program's source code is the collection of files that can be converted from human-readable form to an equivalent computer-executable form. |
| Repository | A repository is also called a vault. A repository contains only one complete version of a configuration item. Differences between versions are usually stored using a delta algorithm (Crnkovic, Asklund & Persson-Dahlqvist, 2003). |
| Versioning organization | Versions of a CI may be organized in a number of different ways. This is the parent for the concepts that describe the organization of versions (Crnkovic et al., 2003). |
| Branch | Versions organized as parallel development lines (Crnkovic et al., 2003). |
| Revision | Versions organized in a sequence (Crnkovic et al., 2003). |
| Development state | Expresses how the development of a piece of software has progressed and how much further development it may require. Each major version of a product usually goes through a stage when new features are added (alpha stage / state), then a stage when it is actively debugged (beta stage / state), and finally a stage when all important bugs have been removed (stable stage / state). |

