Establishing a Baseline


Practioners of software configuration management have defined a few basic terms that are useful in managing external deliverables. These are presented in Table 15-1. Managing dependencies or prerequisites is central to effective configuration management, as even very simple software often has components that depend on specific versions of other components .

Table 15-1. Configuration Management Terms

Term

Definition

Program Family

The total of all versions of all product components. This chapter focuses on the subset available for external distribution.

Component/Artifact

The smallest discrete entity identified in the system. Each component or artifact distributed to a customer must be uniquely identified and versioned. The tools the development team uses can track components at a much finer level of granularity, even down to each function or method. A well-managed project places more than just the source code under configuration management: Interfaces, test plans, test cases, technical and end- user documentation, MRDs, and even project plans on large, important projects are all candidates. A good rule of thumb is that any independently replaceable component should be uniquely identified.

Version

A fixed or "frozen" component or other artifact. In software, it is important to maintain versions of source artifacts (e.g., source code) and things that can be derived from them (e.g., object code, API documentation), because we typically don't distribute the source artifact but the derivations . A derived version can be uniquely recreated from the source. You may need to establish both internal version and external version identifiers.

Revision

A new version of a component or artifact that is intended to supersede the old. Revisions are usually linearly ordered and are often sequentially numbered to reflect this ordering (e.g., as in a sequentially increasing project build number).

Variation

An alternative implementation of a component or other artifact. An example is a software component designed to perform the same task on different operating platforms that require slightly different implementations . Variations are not sequentially orderedthey are alternatives.

Distribution

A version created for distribution to a set of customers, usually made up of one or more certified components and/or artifacts. By definition, a product contains a list or configuration of its components.

Release

A named and versioned collection of components and artifacts that are generally for external distribution to one or more customers and that have been certified. (It is what tarchitects commonly think of as the product, although marketects use a slightly different definition of "product.") A release can be simple or complex and is often recursively structured. Unlike revisions, releases may not be strictly linear, especially in the case of patches to a major system.

Of course, the easiest way to manage dependencies is to make certain that the release has the correct version of all of required components. In practice, however, this is often impossible because of licensing agreements and because not every release contains all components. I'll discuss this issue in greater detail later.



Beyond Software Architecture[c] Creating and Sustaining Winning Solutions
Beyond Software Architecture[c] Creating and Sustaining Winning Solutions
ISBN: 201775948
EAN: N/A
Year: 2005
Pages: 202

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net