The Software Configuration Management is an umbrella activity that is being applied throughout the software process.
All information produced as part of the software process are collectively called a software configuration.
According to the 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.
Fundamental sources of change:
New business or market conditions
New customer needs
Reorganizations and/or business downsizing
Budgetary or Scheduling
The IEEE defines a baseline as:
"a specification or product that has been formally reviewed and agreed upon thereafter serves as a basis for further development, and that can be changed only through formal change control procedures."
These are commonly known as checkpoints in development, as these must be completed first before moving on to the next phase.
TESTING --- Test Plans / Procedures / Testing Data
RELEASE --- Operational Software
The Software Configuration Items (SCI) are information created as part of the software engineering process.
SCI Modification Process
The Software Configuration Item can be named and organized using an object-oriented approach
Types of objects:
Basic Object
Aggregated Objects
BasicObject
A type of object 'unit of text' created during analysis, design, coding, or testing
AggregatedObjects
A type of object that has a collection of basic objects
Object Identification in Software Configuration
Features of objects:
Name: a character string
Description: a list of data items to identify the SCI type and a project ID, version information, and others.
Resources: entity that are provided, processed and/or referenced by the object
Realization: a pointer to 'unit of text' for a basic object, or null for an aggregate object
Relationship between objects:
Part-of: a hierarchical relationship
Interrelated: a cross-structural relationship
Object Identification Methods:
Evolution Graph
automated SCM Tools
Module Interconnection Language
Configuration Objects
Software Configuration Management Process
Identification
Configuration Control
Version Control
Change Control
Configuration Auditing
Status Reporting
Configuration Control enforces a rigous change control mechanism.
This requires formal procedures to:
Request changes
Carry out impact analysis
Approve changes
Carry out changes
Merging means that two diverging versions may be merged to create a singlenew version, combining both set to change requests.
Merge operations are typically done interactively with tool assistance.
The use of evolution graph is to represent different versions.
The use of an object pool is representing components, variant, versions, and their relationship.
Revision Control System is a common tool used for documentation and code development.
Technique for storing versions
Full files, meaning all files (even not modified) is stored.
Forward Delta files
Reverse Delta files
The change control authority is a group of representatives that includes:
User
Customer
Developer
To check whether changes made are fit to the current state of the project, the software engineer “checks in” to the project database through a process called Access and Synchronization Control.
Two approaches can be used to ensure proper implementation of change:
Formal Technical Review (FTR)
Software Configuration Audit
Status Reporting
Status report is a collection of details of all the things that happened during the SCM Process
The outcome of the SCM planning phase is the Software ConfigurationManagement Plan (SCMP), which might be extended or revised during the rest of the project.
The SCMP can either follow a public standard like the IEEE 828-2012, or an internal (e.g. company-specific) standard.
Common features of popular PC-based tools
SolarWinds
Ansible
Capistrano
cdist
To conform to the rest of the project, the SCMP may be:
tailored upward: to add information; to use a specific format
tailored downward: Some SCMP components might not apply to a particular project.
Component-Based Software Development
CBSD is an approach to software development that focuses on the design and development of systems with the use reusable components.
Configuration Management is the art of coordinating software development to minimize confusion.
This is also known as the art of identifying, organizing, and controlling modifications to the software being built.
The goal is to maximize the productivity by minimizing mistakes.
All information produced as part of the software process are collectively called a software configuration.