Title: Software Configuration Management SCM
1Software Configuration Management (SCM)
- Software Configuration Management (SCM)
- The art of identifying, organizing and
controlling modifications to the software being
built - Goal to minimize mistakes
- SCM is an umbrella activity, applied throughout
the software engineering process. -
2Software Configuration Management (SCM)
- Output of software engineering process
- 1) computer programs
- 2) documents describing the programs
- 3) data structures
- Software configuration
- The items that comprise all information
produced as the part of the software engineering
process are collectively called a software
configuration.
3Software Configuration Management (SCM)
- First Law of System Engineering
- No matter where you are in the system life
cycle, the system will change and the desire to
change it will persist throughout the life cycle. - Software Configuration Management
- A set of activities that have been developed to
manage change throughout the software life cycle. - Sources of Change
- new business or market conditions
- new customer needs
- organization and/or business downsizing
- budgetary or scheduling constraints
4Software Configuration Management (SCM)
- Baseline
- A baseline is a milestone in the development
of software that marked the delivery of one or
more software configuration items. - Example Design specification ? documented,
reviewed ? errors found, corrected ? approved
BASELINE.
5Software Configuration Management (SCM)
- IEEE defines a baseline as
- A specification or product that has been formally
reviewed and agreed upon, that thereafter serve
as the basis for further development, and that
can be changed only through formal change control
procedures.
6Common Baselines
System engineering Requirement
analysis Software design Coding Testing Releas
e
System specification Software requirement
specification Design specification Source
code Test plans/Procedures/Data Operational
system
7Software Configuration Item (SCI)
- SCI Information created as part of Software
Engineering process. - SCIs used as target in SCM
- System specification
- Software project plan
- Software requirements specification
- Preliminary user manual
- Design specification
- Source code listing
- Test Specification
- Operation and installation manuals
- Executable program
- Database description
- As-built user manual
- Maintenance documents
- Standards and procedures for SE
8Software Configuration Management (SCM)
9Software Configuration Management (SCM)
- SCM Process
- Identification
- Version control
- Change control
- Configuration auditing
- Status reporting
10Software Configuration Management (SCM)
- Identification of objects in Software
Configuration - Two types of objects
- basic object unit of text created during
analysis, design, coding, or testing by a
software engineer. - example a section of requirement
specification, source code of a module, suite of
test cases - Aggregated objects a collection of basic objects
and other composite objects. Example design
specification
11Software Configuration Management (SCM)
- Features of objects
- name a unique character string
- description a list of data items to identify the
SCI type and a project id, version information,
etc. - resources entity that are provided, processed,
referenced by the object - realization a pointer to unit of text for a
basic object or null for an aggregate object
12Software Configuration Management (SCM)
- Relationships between objects
- part-of a hierarchical relationship
- interrelated a cross-structural relationship
- Object identification methods
- evolution graph
- automated SCM tools
- module interconnection language
13Software Configuration Management (SCM)
- Separately defined objects
- Design specification
- Data Model
- Test specification
- Module N
- Source code
- Curved arrow
- Compositional Relation
- Double headed arrow
- Indicates interrelationship
14Evolution Graph
obj 1.4
obj 1.3
obj 1.2
obj 1.0
obj 1.1
obj 2.0
obj 2.1
obj 1.1.1
obj 1.1.2
15Version Control
- Some of the issues
- When an executable is built, the versions of its
constituents must be consistent. - If A depends upon B and B is recompiled, A may
also need to be recompiled. - What if multiple people need to modify same SCI?
- Need to know what version different customers
have - How do you keep track of 100s or 1000s of
modules?
16Version Control
- Evolution graph to represent different versions
- Uses an object pool representing components,
variants and versions, and their relationship - RCS (Revision Control System) is common tool.
- Use for documentation as well as code development.
17Change Control
- Change request from user
- Developer evaluates
- Change report is generated
- Change control authority makes decision (ECO)
Change request is denied User is informed
Request is queued, persons are assigned Check
out SCI(s)
18Change Control (contd)
- Make the change/review change
- Check in changed SCIs
- Establish a baseline for testing
- Do SQA and promote changes for inclusion in
next release - Rebuild appropriate version
- Audit the SCI changes/ include changes in new
version - Release the new version
19 Access and Synchronization Control
Access control which software engineers have the
authority to access/modify a particular
configuration item.
Synchronization control parallel changes,
modified by two different people do not overwrite
each other.
20Configuration Audit
- Two approaches can be used to ensure proper
implementation of change - formal technical review (FTR)
- software configuration audit
- CA assesses a configuration object for
characteristics that are not generally considered
during review - CA generally checks
- SCM procedures followed
- all related SCIs properly updated
- change date and author specified
- Changes incorporated
- FTR conducted
- SE standards followed
21Status Reporting
- Event occurred -- An SCI received updated ID
- people involved
- Time happened
- Effects on others
- Generated on a regular basis
- To improve communication among all parties
22 - Scope in this class
- Ensuring, Verifying, and Maintaining Software
Integrity - 1. Software Quality Assurance
- 2. Software Testing Techniques
- 3. Software Testing Strategies
- 4. Software Maintenance
- 5. Software Configuration Management
-
- Reference Book
- Roger S. Pressman