Software Configuration Management Flashcards

1
Q

Why do we need Software Configuration Management?

A

We have a need for coordination, because

  1. multiple people are working on a constantly changing software
  2. more than one version needs to be supported
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is SCM (Software Configuration Management)?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Which activities does SCM include?

A
  1. Configuration item identification: modelling the system as a set of evolving components
  2. Change management: handling, approval & tracking of change requests
  3. Promotion management: creation of versions for other developers
  4. Branch management: management of concurrent development
  5. Build and release management: creation of versions for clients and users
  6. Variant management: management of coexisting versions
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Shortly describe each configuration management role.

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Describe a configuration item and name at least one example.

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Describe a Baseline.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is a Promotion in Software Configuration Management?

A

A version that is made available inside the company to other developers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Describe the general process in Change Management.

A
  1. Change is requested
  2. Evaluated against requirements and project constraints & reviewed by configuration control
    board -> Change is approved or rejected
  3. If approved, change is assigned to developer who will design, implement & test change
  4. Implemented change is audited to create another baseline
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Name three ways to resolve a merge conflict?

A
  1. Take mine (i.e. my changes and ignore the other changes)
  2. Take theirs (i.e. the other changes and ignore my changes)
  3. Merge the overlapping changes manually and decide per case possibly taking both changes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are the three types of branches while software development?

A
  1. Master branch: external release (e.g. Scrum product increment)
  2. Development branch: internal promotion (release candidates)
  3. Feature branches: incremental development and explorations
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Explain the process of merging the feature branch with the development branch.

A
  • 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.)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Name some good practices for branch management.

A

• 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Name some reasons on why to use Continuous Integration.

A
  • 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Define continuous integration.

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Name at least two advantages of continuous integration

A

+ There is always an executable version of the system

+ Developers and managers have a good overview of the project status

+ Automatic regression testing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What is the goal of regression testing?

A

Goal: verify that software (which was previously developed and tested) still performs correctly even after it was changed or interfaced with other software

17
Q

Name pros and cons of regression testing.

A

+ Benefit: finds errors in the existing source code immediately after a change is introduced

  • Drawback: can be very costly to execute a large test suite after each change
18
Q

What is continuous software engineering?

A
  • organizational capability to develop, release and learn (through feedback & monitoring) from software in short cycles
19
Q

Describe the workflow of a release management work flow with feedback.

A
  1. Developer commits to VC
  2. checkout, compile and test build on the continuous integration server
  3. notifies Developer about build status
  4. Release Manager releases the build and
  5. It is being uploaded to the continuous delivery server
  6. User is being notified about the release and
  7. downloads it
  8. User gives feedback
  9. and its is being uploaded
  10. feedback is being stored as issues
  11. Developer is notified about the issues
20
Q

Shortly describe continuous delivery and then name pros and cons about it.

A
  • Continuous delivery: teams keep producing valuable software in short cycles and ensure that the software can be reliably released at any time
# Benefits
\+ Accelerated time to market
\+ Building the right product: improved product quality and customer satisfaction
\+ Improved productivity and efficiency
\+ Reduced risk of a release failure

Challenges

  • Organisational: Varying interests in different departments of an organisation
  • Process: Traditional processes hinder continuous delivery
  • Technical: Maintainability of the source code & tailorable delivery workflows for heterogeneous project environments