PMIT 6111 Lecture 8 Configuration Management
PMIT 6111 Lecture 8 Configuration Management
08
1
Why Software Configuration Management ?
2
Configuration Management Activities
The configuration management of a software system
product involves four closely related activities
• Version control This involves keeping track of the multiple versions
of system components and ensuring that changes made to
components by different developers do not interfere with each other.
• System building This is the process of assembling program
components, data, and libraries, then compiling and linking these to
create an executable system.
• Change management This involves keeping track of requests for
changes to delivered software from customers and developers,
working out the costs and impact of making these changes, and
deciding if and when the changes should be implemented.
• Release management This involves preparing software for external
release and keeping track of the system versions that have been
released for customer use.
3
Configuration Management Activities 4
Configuration Management Roles
• Configuration Manager
Responsible for identifying configuration items. The configuration manager
can also be responsible for defining the procedures for creating promotions
and releases
• Change control board member
Responsible for approving or rejecting change requests
• Developer
Creates promotions triggered by change requests or the normal activities of
development. The developer checks in changes and resolves conflicts
• Auditor
Responsible for the selection and evaluation of promotions for release and
for ensuring the consistency and completeness of this release
5
Terminology
Term Explanation
Configuration item or Anything associated with a software project (design, code, test data,
software configuration document, etc.) that has been placed under configuration control. There are often
item (SCI) different versions of a configuration item. Configuration items have a unique name.
The process of ensuring that versions of systems and components are recorded
Configuration control and maintained so that changes are managed, and all versions of components are
identified and stored for the lifetime of the system.
An instance of a configuration item that differs, in some way, from other instances
Version of that item. Versions always have a unique identifier, which is often composed of the
configuration item name plus a version number.
A baseline is a collection of component versions that make up a system. Baselines
are controlled, which means that the versions of the components making up the
Baseline
system cannot be changed. This means that it should always be possible to
recreate a baseline from its constituent components.
A codeline is a set of versions of a software component and other
Codeline
configuration items on which that component depends.
6
Change management
7
Factors in change analysis
8
Change management and agile methods
9
System building 10
12
Tools for system integration and building
5. Once the system has passed its tests, check it into the build
system but do not commit it as a new system baseline.
6. Build the system on the build server and run the tests. You need to
do this in case others have modified components since you
checked out the system. If this is the case, check out the
components that have failed and edit these so that tests pass on
your private workspace.
7. If the system passes its tests on the build system, then commit the
changes you have made as a new baseline in the system
mainline.
17
Continuous integration 18
Daily building
For large systems or for systems where the execution platform is not
the same as the development platform, continuous integration is
usually impossible. In those circumstances, frequent system building is
supported using a daily build system:
1. The development organization sets a delivery time (say 2 p.m.) for
system components. If developers have new versions of the
components that they are writing, they must deliver them by that
time. Components may be incomplete but should provide some
basic functionality that can be tested.
2. A new version of the system is built from these components by
compiling and linking them to form a complete system.
3. This system is then delivered to the testing team, which carries out
a set of predefined system tests.
4. Faults that are discovered during system testing are documented
and returned to the system developers. They repair these faults in
a subsequent version of the component.
19
Release management
20
Release planning
21
Factors influencing system release planning
• .
22