suited to handle this kind of deployment because deployment engineers can package their
application once and deploy it seamlessly through several different channels. In Chapter 7, we
provide an example of ad-hoc deployment using CD-ROMs.
Client Configurations and Software Configuration
This section covers some advanced topics generally not needed in simpler cases, but required
for a sound resource management in more complex situations. We already mentioned how con-
figuration techniques could be useful for managing modules and the various resources involved
in the deployment.
We will focus on the client side of the abstract model exposed in Chapter 2. In doing so, we
will slightly change our approach, making it become more practical. We will mention the more
important concepts in the software-configuration discipline, whose principles are useful to rig-
orously set out and successively manage any non-trivial software deployment.
First of all, let's see what configuration management is all about. Configuration management
(CM) is a discipline for controlling generic items over their whole lifecycle. These items are
organized in configurations —sets of both hardware or software units treated like a single logi-
cal entity. There are four distinctive elements in any configuration management activity:
• Configuration Identification. Identify and document the characteristics of configuration
• Configuration Control. It is necessary to control changes to configurations and their
• Configuration Status Accounting. Record and report the information needed to manage
• Auditing. To verify the conformance of the configuration items to given specifications
and contractual requirements. Despite an important part of CM, we won't see it here. We
are interested in using the SCM discipline for purposes other than contractual ones.
Software configuration management (SCM) is the application of configuration management to
software systems. When applied to software artifacts, the previous first three activities become
the following ones.
• Configuration Identification. At any given time, the configuration of the software could
be identified. This involves using a consistent versioning notation.
• Configuration Control. Software configuration changes are systematically recorded.
Although this is always the case during software development, it may turn out to be use-
ful or even necessary for software deployment.