Software Engineering (2160701)

BE | Semester-6   Summer-2017 | 04/27/2017

Q5) (c)

Explain SCM process in details.

  • The SCM (Software Configuration Management) is a set of activities that have been developed to manage change throughout the software life cycle
  • Purpose: Systematically control changes to the configuration and maintain the integrity and traceability of the configuration throughout the system’s life cycle

Four primary objectives

  • To identify all items that collectively define the software configuration
  • To manage changes to one or more of these items
  • To facilitate the construction of different versions of an application
  • To ensure that software quality is maintained as the configuration evolves over time
Layers of SCM Process
(Figure: Layers of SCM Process)
 

The SCM Process

  • Referring to the figure, SCM tasks can viewed as concentric layers
  • SCIs (Software Configuration Item) flow outward through these layers throughout their useful life
  • As an SCI moves through a layer, the actions implied by each SCM task may or may not be applicable
  • For example, when a new SCI is created, it must be identified.
  • However, if no changes are requested for the SCI, the change control layer does not apply
  • The SCI is assigned to a specific version of the software (version control mechanisms come into play)
  • A record of the SCI (its name, creation date, version, etc.) is maintained for configuration auditing purposes

Identification Task

  • Identification separately names each SCI and then organizes it in the SCM repository using an object-oriented approach
  • Objects start out as basic objects and are then grouped into aggregate objects.
  • Each object has a set of distinct features that identify it.
    • A name that is unambiguous to all other objects
    • A description that contains the SCI type, a project identifier, and change and/or version information
    • List of resources needed by the object
    • The object realization (i.e., the document, the file, the model, etc.)

Change Control

  • Change control is a procedural activity that ensures quality and consistency as changes are made to a configuration object
  • A change request is submitted to a configuration control authority, which is usually a change control board (CCB).
    • The request is evaluated for technical merit, potential side effects, overall impact on other configuration objects and system functions, and projected cost in terms of money, time and resources
  • An engineering change order (ECO) is issued for each approved change request
    • Describes the change to be made, the constraints to follow and the criteria for review and audit
  • The Base lined SCI is obtained from the SCM repository
    • Access control governs which software engineers have the authority to access and modify a particular configuration object
    • Synchronization control helps to ensure that parallel changes performed by two different people don't overwrite one another.

Version Control

  • Version control is a set of procedures and tools for managing the creation and use of multiple occurrences of objects in the SCM repository
  • Version Control Capabilities
    • An SCM repository that stores all relevant configuration objects
    • A version management capability that stores all versions of a configuration object
    • A make facility that enables the software engineer to collect all relevant configuration objects and construct a specific version of the software
    • Issues or bug tracking capability that enables the team to record and track the status of all outstanding issues associated with each configuration object
  • The SCM repository maintains a change set
    • Serves as a collection of all changes made to a baseline configuration
    • Used to create a specific version of the software
    • Captures all changes to all files in the configuration along with the reason for changes and details of who made the changes and when

Configuration Audit

  • Configuration auditing is an SQA activity that helps to ensure that quality is maintained as changes are made.
  • It complements the formal technical review and is conducted by the SQA group
  • It addresses the following questions
    • Has a formal technical review been conducted to assess technical correctness?
    • Has the software process been followed and have software engineering standards been properly applied?
    • Has the change been "highlighted" and "documented" in the SCI? Have the change data and change author been specified? Do the attributes of the configuration object reflect the change?
    • Have SCM procedures for noting the change, recording it and reporting it been followed?
    • Have all related SCIs been properly updated?
  • A configuration audit ensures that
    • The correct SCIs (by version) have been incorporated into a specific build
    • That all documentation is up-to-date and consistent with the version that has been built

Status Reporting

  • Configuration status reporting (CSR) is also called status accounting
  • Provides information about each change to those personnel in an organization with a need to know
  • Answers what happened, who did it, when did it happen and what else will be affected?
  • Sources of entries for configuration status reporting
    • Each time a SCI is assigned new or updated information
    • Each time a configuration audit is conducted
  • The configuration status report
    • Placed in an on-line database or on a website for software developers and maintainers to read
    • Given to management and practitioners to keep them appraised of important changes to the project SCIs