Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

CS442

Software Project Management


Lecture 5
Dr. Riem Hamdi
riem.hamdi@must.edu.eg
Object-Oriented Software Engineering
Using UML, Patterns, and Java

Chapter 13,
Configuration &
Build Management
CH 13: Road Map
1. An Overview of Configuration
Management
2. Configuration Management Concepts
3. Configuration Management Activities
4. Managing Configuration Management
Outline of the next two Lectures 1/2
• Purpose of Software Configuration
Management (SCM) Today

• Some Terminology
• Software Configuration Management
Activities Lecture on
Build Management

• Outline of a Software Configuration


Management Plan
• Build and Release Management
• Continuous Integration
What is Software
Configuration Management?
• Definition Software Configuration
Management:
– A set of management disciplines within a
software engineering process to develop a
baseline
– Software Configuration Management
includes the disciplines and techniques of
initiating, evaluating and controlling
change to software products during and
after a software project
Administering Software
Configuration Management
• Software Configuration Management is a
project function with the goal to make
technical and managerial activities more
effective
• Software Configuration Management can
be administered in several ways:
§ Organization-wide
§ Project-specific
§ Distributed among the project members
§ Mixture of all of the above.
Configuration Management
Activities (1)
• Software Configuration Management
Activities:
1. Configuration item identification is the modeling of the system as a
set of evolving components.

2. Promotion management is the creation of versions for other


developers.

3. Release management is the creation of versions for the client and


the users.

4. Branch management is the management of concurrent


development.

5. Variant management is the management of versions intended to


coexist.
Configuration Management Roles
• Configuration Manager
– Responsible for identifying configuration
items
– Also often responsible for defining the
procedures for creating promotions and
releases
• Change Control Board Member
– Responsible for approving or rejecting
change requests
• Developer
Terminology
• We will define the following terms
1. Configuration Item
2. Baseline
3. SCM Directories
4. Version
5. Revision
6. Release
What are the items to be
considered for configuration
management?
Pop up Quiz
Terminology: Configuration Item
Configuration Item: An aggregation of hardware, software, or both,
designated for configuration management and treated as a single entity in
the configuration management process.
• A composite of configuration items is defined as a configuration
management aggregate (CM aggregate)
• Software configuration items are not only source files but all types of
documents
• In some projects, not only software but also hardware configuration items
(CPUs, bus speed frequencies) need to be put under control!
• So, one of the configuration managers tasks is to define the configuration
items
Configuration Items
• Not every entity needs to be under configuration management control all the time
• Selecting the right configuration items is a skill that takes practice
– Very similar to object modeling
– Use techniques similar to object modeling for finding configuration items and find the
relationships between them.

• Two Issues:
– What: Selection of Configuration Items
§ What should be under configuration control?
– When: When do you start to place entities under configuration control?

• Choices for the Project Manager:


– Starting with Configuration Items too early introduces bureaucracy
– Starting with configuration Items too late introduces kinds of chaos and confusion
Configuration Item Candidates Configuration Item
Candidates

Models Subsystems Documents

Object Model Dynamic Model RAD ODD ....

Database User Interface ....

.... Code Data Unit Test ....

“The project”
Which of these Entities should be
Configuration Items?
• Problem Statement • Source code

• Software Project Management • API Specification


Plan (SPMP)
• Input data and data bases
• Requirements Analysis
Document (RAD) • Test plan

• System Design Document • Test data


(SDD)
• Support software (part of the
• Project Agreement product)

• Object Design Document • Support software (not part of


(ODD) the product)

• Dynamic Model • User manual

• Object model • Administrator manual


Possible Selection of Configuration
Items
• Problem Statement ! Source code

• Software Project Management • API Specification


Plan (SPMP)
! Input data and data bases
! Requirements Analysis
Document (RAD) • Test plan

! System Design Document (SDD) ! Test data

• Project Agreement ! Support software (part of the


product)
! Object Design Document (ODD)
• Support software (not part of the
• Dynamic Model product)

• Object model • User manual

• Functional Model • Administrator manual

! Unit tests
Terminology: Version
Version:
• Identifies the state of a configuration item or a
configuration aggregate at a well-defined point in time.
• Different versions have different functionality.
• Versions that are intended to coexist are called variants.
Terminology: Baseline
Baseline: “A specification or product that has been formally
reviewed and agreed to by responsible management, that
thereafter serves as the basis for further development, and
can be changed only through formal change control
procedures.”

• Examples:
– Baseline A: The API has been completely defined;
– Baseline B: All data access methods are implemented and
Naming Schemes for Baselines
• Many naming scheme for baselines exist
(1.0, 6.01a, ...)
• A 3 digit scheme is quite common:
7.5.5

Major, Minor, Small Revision


External Release Internal Release (Developer)
(Customer) (Developer)
Types of Baselines
• As systems are developed, a
series of baselines is developed,
usually after a review (analysis
review, design review, code review,
system testing, client acceptance,
...)
– Developmental baseline
– Functional baseline
– Product baseline
Transitions between Baselines
Baseline A (developmental)

Baseline B (functional, first prototype)

Baseline C (product, beta test)

Release

How do we manage changes in baselines?


=> Change Management
Time
Controlling Changes
• Two types of controlling change:
• Promotion: is a version that has been made available to
other developers in the project

– The internal development state of a


software is changed
Release: is a version that has been made
available to the client or the user
– A changed software system is made
visible outside the development
organization. Master Software
User
Programmer
Promotion Directory Release Repository
Terminology: SCM Directories
• Programmer’s Directory (Dynamic Library)
– Library for holding newly created or
modified software entities
– The developer’s workspace is controlled
by the developer only

• Master Directory (Controlled Library)


• is a library of promotions

• Manages the current baseline(s) and for controlling changes made


to them

• Changes must be authorized


Standard SCM Directories

• Programmer’s Directory
– (“Dynamic Library”)
Promotion
– Completely under control
of one programmer Central source
code archive

• Master Directory Release

– (“Controlled Library”)
Foo’95 Foo’98
– Central directory of all
promotions
Pop up QUIZ!
Communication failure is costly and can have a high, and sometimes fatal, impact on the project and
the quality of the delivered system.

You might also like