Software Configuration Management Flashcards
Why do we need Software Configuration Management?
We have a need for coordination, because
- multiple people are working on a constantly changing software
- more than one version needs to be supported
What is SCM (Software Configuration Management)?
- SCM is a set of management disciplines within a software engineering process to develop a baseline
- encompasses the disciplines & techniques of initiating, evaluating & controlling change to
software products during and after software project - contains different activities and roles
Which activities does SCM include?
- Configuration item identification: modelling the system as a set of evolving components
- Change management: handling, approval & tracking of change requests
- Promotion management: creation of versions for other developers
- Branch management: management of concurrent development
- Build and release management: creation of versions for clients and users
- Variant management: management of coexisting versions
Shortly describe each configuration management role.
- Configuration manager: Responsible for identifying configuration items & 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, 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.
Describe a configuration item and name at least one example.
aggregation of software, hardware or both, designated for configuration management & treated as a single entity in the CM process, selecting the right configuration items is a skill that takes practice & is very similar to object modeling (identify configuration items, find relationships between them)
Examples:
- Software configuration items: source files, models, tests, binaries, documents, configurations
- Hardware configuration item: CPUs, sensors, actuators, physical infrastructure
Describe a Baseline.
A Baseline is a specification or product that has been formally reviewed and agreed to by responsible management. It is being used for further development.
What is a Promotion in Software Configuration Management?
A version that is made available inside the company to other developers
Describe the general process in Change Management.
- Change is requested
- Evaluated against requirements and project constraints & reviewed by configuration control
board -> Change is approved or rejected - If approved, change is assigned to developer who will design, implement & test change
- Implemented change is audited to create another baseline
Name three ways to resolve a merge conflict?
- Take mine (i.e. my changes and ignore the other changes)
- Take theirs (i.e. the other changes and ignore my changes)
- Merge the overlapping changes manually and decide per case possibly taking both changes
What are the three types of branches while software development?
- Master branch: external release (e.g. Scrum product increment)
- Development branch: internal promotion (release candidates)
- Feature branches: incremental development and explorations
Explain the process of merging the feature branch with the development branch.
- Before the changes in a feature branch are merged (promoted) into the development branch, a reviewer looks at the changes
- The reviewer only approves them if they follow specified quality requirements (e.g. regression tests have passed, coding guidelines are being followed, etc.)
Name some good practices for branch management.
• Agree on branching model, e.g. map functional requirements to feature branches
• Only one person at once works with non merge-able files -> communication, minimize
working time on such files
• Minimize feature branch lifetime (not more than “some” days): split complex requirements
into smaller ones (functional decomposition, include/extend use cases), pull regularly -> avoid serious merge conflicts
Name some reasons on why to use Continuous Integration.
- Risk 1: The later integration occurs in a project, the bigger is the risk that unexpected failures occur
- Risk 2: The higher the complexity of the software system, the more difficult is the integration of its components
+ Continuous integration addresses these risks by integrating and testing as early and frequently as possible
Additional advantages:
+ There is always an executable version of the system
+ Team members have a good overview of the project status
Define continuous integration.
- A software development technique where members of a team integrate their work frequently
- Usually each person integrates at least daily, leading to multiple integrations per day
- Each integration is verified by an automated build which includes the execution of tests – regression tests – to detect integration errors as quickly as possible
Name at least two advantages of continuous integration
+ There is always an executable version of the system
+ Developers and managers have a good overview of the project status
+ Automatic regression testing