07 Lecture Flashcards
Why Configuration Management?
- Multiple people work on artifacts that are changing
- More than one version of the artifact has to be supported
- Software Configuration Management (SCM)
Definition of Software Configuration Management
- A set of management disciplines within a software engineering process to develop a baseline*
- Software Configuration Management encompasses the disciplines and techniques of initiating, evaluating and controlling change to work products during and after a
software project
IEEE Standard for Configuration Management in Systems
and Software Engineering
IEEE 828-2012
Configuration Management Roles
- Configuration Manager
- Change Control Board Member
- Developer
- Auditor
Responsibilities of the Configuration Manager
- Responsible for identifying configuration items
* Also often responsible for defining the procedures (workflows) for creating promotions and releases
Responsibilities of the Change Control Board Member
Responsible for approving or rejecting change requests
Responsibilities of the Developer
Creates promotions triggered by change requests or the normal activities of development. The developer checks in changes and resolves conflicts
Responsibilities of the Auditor
Responsible for the selection and evaluation of promotions for release and for ensuring the consistency and completeness of this release
What is a Configuration Item
An aggregation of software, hardware, or both, designated for configuration management and treated as a single entity in the configuration management process
Which SCM Directory are there
- Programmer’s Directory
- Master Directory
- Software Repository
What is the Programmer’s Directory?
(IEEE 1042: Dynamic Library)
• Also called working copy
• Library for holding newly created or modified software entities
• The programmer’s workspace is controlled by the programmer only
What is the Master Directory?
(IEEE 1042: Controlled Library)
• Manages the current baseline(s) and is for controlling changes made to them
• Changes must be authorized
What is the Software Repository
(IEEE 1042: Static Library)
• Archive for the various baselines released for general use
• Copies of these baselines may be made available to requesting organizations
Define Version
An initial release or re-release of a configuration item associated with a complete compilation or recompilation of the item. Different versions have different functionality
Define Release
The formal (external) distribution of an approved version, e.g. a potentially shippable product increment in Scrum
Define Promotion
A version that is made available (internally) to other developers, e.g. a new commit in the version control system
Define Revision
Change to a version that corrects only errors in the design/code, but does not affect the documented functionality
Define Baseline
A specification or product that has been formally reviewed and agreed to by responsible management
Thereafter it serves as the basis for further development and can be changed only through change control procedures
Which types of Baselines are there
- Developmental baseline
- Functional baseline
- Product baseline
What is the oldest Software Version Control
RCS [Tichy 1975]
What is Monolithic Architecture for Version Control
e.g RCS
Developers has a simple local database that keeps all the changes to files under revision control
What is Repository Architecture for Version Control
e.g. Subversion
• A single (central) server contains all the versioned files
• Developers check out files from the server to their computer (programmer’s directory), change them and check them back into the central server (master directory)
• Administrators have fine-grained control over who can do what
• Problem: Single point of failure in the central VCS server: possibility of loosing all the versions and their history if the server crashes
What is Peer-to-Peer Architecture for Version Control
• Addresses the single point of failure problem
• Each programmer’s directory (Computer A, Computer B,…) fully mirrors the master directory (Server Computer)
• Programmers can work offline and create versions
(commits and branches)
• Not all versions are promoted to the master directory
(they need to be pushed)
• If the server dies and a programmer has a full copy of
the master directory, it can be copied back to the server computer
• Example: Git
Advantages of DVCS (Distributed Version Control System)
+ Ability to work offline (local commits)
+ Ability to work incrementally (small commits)
+ Ability to context switch efficiently (lightweight branching)
+ Ability to do exploratory coding efficiently (lightweight branching)
Disadvantages of DVCS (Distributed Version Control System)
- High learning curve
- Scaling issues
- Less administrative control
What does git add
Add changed files to the staging area
What does git commit
Commit selected changed files of the staging area to your local repository
What does git push
Upload local commits to a remote repository
What does git pull
Download and merge remote commits into your working copy
What does git clone
Clone a complete repository into a new working directory
Define Change Management
Change management is the handling of change requests
Explain the general change management process
- The change is requested
- The change request is evaluated against requirements and project constraints and reviewed by the configuration control board
- Following these assessments, the change request is approved or rejected
- If it is approved, the change is assigned to a developer and designed, implemented and tested
- The implemented change is audited to create another baseline
What is the purpose of change policies
The purpose of a change policy is to guarantee that each promotion or release conforms to commonly accepted criteria
What does Change Request specify
Specifies the procedures for requesting a change to a baselined configuration item and the information to be documented: