Software Configuration Management

What are Software Configuration Management Best Practices ?

The best practices of Software Configuration Management are as follows

  • Identify and store artifacts in a secure repository
  • Control and audit changes to artifacts
  • Organize artifacts into versioned components
    • Components reduce complexity
    • It is easier to identify the quality level of a particular component baseline than that of numerous individual files
    • Instantiating a physical component object in a tool helps institutionalize component sharing and reuse
    • Mapping logical design components to physical SCM components helps preserve the integrity of software architectures
  • Create baselines at project milestones
  • Record and track requests for change
  • Organize and integrate consistent sets of versions using activities
  • Maintain stable and consistent workspaces
  • Support concurrent changes to artifacts and components
  • Integrate early and often
  • Ensure reproducibility of software builds

What are the problems of not using Software Configuration Management (SCM)?

Multiple people have to work on software that is changing More than one version of the software has to be supported ie: Released systems, Custom configured systems, System(s) under development

What is a Software Configuration Management tool ?

Software tools that automate and facilitate the application of the Software Configuration Management best practices.

What are Software Configuration Management processes ?

The way SCM is performed on your project, specifically how an SCM tool is applied to accomplish a set of tasks

How can Software Configuration Management followed without tools ?

Using File Copies to Support Early SCM - Storing backup versions of the software system - Storing intermediate working versions, of certain files or of all the files that make up the system, during the development process

How can we use Shared Copy Approach for Software Configuration Management ?

An additional copy of the entire system directory structure can be created to store the latest versions of the software.

What are the Problems of not using Software Configuration Management tools ?

The copy-over problem, which causes versions of files to be lost Recovery from inappropriate changes made to the common code is difficult or impossible The number of uncontrolled copies of files makes it difficult to determine where the latest version really exists

What is a Version ?

A specific instance of a baseline or configuration item is known as Version.

What is Configuration ?

Configuration is a collection of all the elements of a baseline and a description of how they fit together.

What is Baseline ?

One or more software configuration items that have been formally reviewed and agreed upon and serve as a basis for further development

What baselines are required to be defined and managed ?

Typically aligned with major milestones. Applies to documents as well as code.

How is the current software configuration defined ?

A snapshot of everything the product has produced at some point in time.

Who must approve changes to baselines ?

Usually the Change Control Board (CCB) must approve changes to baselines.

What is the responsibility of Configuration Control Board ?

Group with the responsibility for reviewing and approving changes to baselines

How are baselines verified ?

By reviews, inspections, and the testing of code

How and when are baselines created and physically controlled ?

Through the use of document control systems, code control tools, and procedures to prevent the making of unapproved changes

Are baselines tied to project milestones ?

Many are, but during coding many may not be tied to project milestones

What is Software Configuration Item ?

A collection of software elements treated as a unit for the purposes of Software Configuration Management

What are the components of clear case ?

Version Control Workspace Management Build Management Process Control

What is Version Control ?

Version Control allows different projects to use the same source files at the same time It isolates work that is not ready to be shared by the rest of the project. It isolates work that should never be shared. It allows software engineers to continue development along a branch even when a line of development is frozen.

What is the use of Version Control ?

Allows different projects to use the same source files at the same time Isolates work that is not ready to be shared by the rest of the project Isolates work that should never be shared Allows software engineers to continue development along a branch even when a line of development is frozen

What is the use of workspace ?

Software engineers need a consistent and reproducible workspace area (a sandbox) in which they can develop and debug their code. They need to be able to share project files while shielding the project from the instability of their evolving code

What is Change Control

Proposed changes to baselines must have some level of review. The impact of proposed changes must be identified and understood. When appropriate the approval of the CCB, key managers and project members must be obtained Approved changes must be properly implemented After changes are made all affected parties must be notified

What is UCM(Unified Change Management) ?

It unifies the activities used to plan and track project progress with the artifacts being changed.

What is a view ?

A way of seeing the objects in one or more VOBs (Versioned Object Base) Version selection is based on user-defined rules

What are the types of Views ?

There are two types of views. They are Dynamic View : VOB objects are displayed from the VOB cache Snapshot View: VOB objects are copied to the client.

What is a view ?

Selects versions of VOB directories and Files. It enables developers to work in parallel .

What is Process Control ?

Enforces appropriate policies and processes across diverse development environments Integrated with ClearCase as a set of flexible, customizable tools

What is VOB ?

A VOB is a Read Only repository of Clear Case source Files, Directories , documents, etc. It is a network wide file system resource which stores version- controlled data.

What is a version Tree ?

A version tree is a Hierarchical representation of an element in which all versions are logically organized.

What are the different types of checkouts used in modern Software Configuration Management tools ?

Modern Software Configuration Management tools support both reserved and unreserved checkouts.

What is the different between reserved and unreserved checkouts ?

Consider the following situation, For developer A, who has a reserved checkout, checkin will proceed as usual. While Developer B, who has an unreserved checkout, will receive an error when trying to check in until one of three things occur.

a) Developer A, with the reserved checkout, checks in the file

b) Developer A, with the reserved checkout, cancels the checkout

c) Developer A, with the reserved checkout, changes the type of checkout from reserved to unreserved.

What are the advantages of using Software Configuration Management tool supports ?

The advantages of using Software Configuration Management tools are as follows. It supports Geographically Distributed Development. It supports Component-based Development It supports Activity-based Configuration Management

What is the tool which supports Component-based Development ?

ClearCase UCM is the tool which support component -based development.

What is Activity-based Configuration Management ?

Configuration Management based on task, defect and enhancement is known as Activity-based Configuration Management.

What is the basic concept of ClearCase UCM ?

The ClearCase UCM is working on the following two basic concepts activity-based SCM and component management

How does ClearCase UCM works ?

ClearCase UCM works as follows.

  • Software files and directories are organized into versioned components
  • Project managers create projects and assign project teams to work on these components
  • Developers make changes to components, files, and directories based on assigned activities (tasks, defects, change requests)
  • New file and directory versions are collected during Development and associated with activities (change sets)
  • Once complete, activities and their associated Change sets are delivered and integrated in a shared project integration Area
  • New component baselines are created, tested, and promoted
  • Component baselines are assembled into a system
  • Systems are tested and released

What does ClearCase do ?

Manages multiple variants of evolving software systems Tracks which version were used in software builds Performs builds of individual programs or entire release according to user-defined version specifications Enforces site-specific development policies and processes

What is Meta-Data in clear case ?

Meta data consists of the following a) Version labels are mnemonic names for particular versions. b) Attributes are name/value pairs which are used to represent information state about a version for the integrating process-control mechanisms. c) Hyperlinks enable users to define structured or ad hoc relationships between pairs of objects.

What is Programmer's Directory ?

A Programmer's working directory is the place where the newly created or modified software entities are stored. The programmer's workspace is controlled by the programmer only.

What is the purpose of change policies ?

The purpose of change policies is to guarantee that each version, revision or release conforms to commonly accepted criteria.

What does history includes ?

The history of a file element includes the creation event of the element itself, the creation event of each version of the file, the creation event of each branch, the attributes assigned to the element and/or its versions, the hyperlinks attached to the element and/or its versions, and so on.

What is version ID ?

A branch path name and version number, which indicate a version's exact location in its version tree.

What is version number ?

Version-number is the assigned integer that identifies the position of a version on its branch.

What is the use of ClearCase administrators group ?

A special group usually created in the Windows NT domain when ClearCase is installed. Only ClearCase administrative accounts and the login account for the ALBD Service should be members of this group.

What is the order in which the clear case software is to be installed ?

The clear case server is to be installed first followed by the client software

What are the different types of information included in SCMP ?

Introduction (purpose, scope, terms used) SCM Management (organization, responsibilities, authorities, applicable policies, directives, and procedures) SCM Activities (configuration identification, configuration control, and so on) SCM Schedules (coordination with other project activities) SCM Resources (tools, physical resources, and human resources) SCMP Maintenance

What is mean by Identifying Items to Be Controlled ?

A first step in controlling change is to identify the software items to be controlled. This involves understanding the software configuration within the context of the system configuration, selecting software configuration items, developing a strategy for labeling software items and describing their relationships, and identifying the baselines to be used, along with the procedure for a baseline's acquisition of the items.

What is software Library ?

A software library is a controlled collection of software and related documentation designed to aid in software development, use, and maintenance It is also instrumental in software release management and delivery activities. Several types of libraries might be used, each corresponding to a particular level of maturity of the software item

What are the SCM activities ?

The SCM activities are: management and planning of the SCM process, software configuration identification, software configuration control, software configuration status accounting, software configuration auditing, and software release management and delivery.

What is interface control ?

When a software item will interface with another software or hardware item, a change to either item can affect the other. The planning for the SCM process considers how the interfacing items will be identified and how changes to the items will be managed and communicated. The SCM role may be part of a larger, system-level process for interface specification and control, and may involve interface specifications, interface control plans, and interface control documents. In this case, SCM planning for interface control takes place within the context of the system-level process.

What is SCMP ?

The results of SCM planning for a given project are recorded in a Software Configuration Management Plan (SCMP), a "living document" which serves as a reference for the SCM process. It is maintained (that is, updated and approved) as necessary during the software life cycle. In implementing the SCMP, it is typically necessary to develop a number of more detailed, subordinate procedures defining how specific requirements will be carried out during day-to-day activities.

What is Configuration control ?

Software configuration control is concerned with managing changes during the software life cycle. It covers the process for determining what changes to make, the authority for approving certain changes, support for the implementation of those changes, and the concept of formal deviations from project requirements, as well as waivers of them. Information derived from these activities is useful in measuring change traffic and breakage, and aspects of rework.

What is bill of materials ?

The Bill of Materials lists the constituent parts of a given version of a product, and where the physical parts may be found. It describes the changes made in the version, and refers to how the product may be installed.

What is a Build ?

A build is an operational version of a system or part of a system that demonstrates a subset of the capabilities to be provided in the final product. A build comprises one or more implementation elements (often executable), each constructed from other elements, usually by a process of compilation and linking of source code.

What is build report ?

Build Reports list all the files, their location, and incorporated changes that make up a build for a specific version of the software

What are the configuration audit findings ?

The Configuration Audit Findings identify a baseline, any missing required artifacts, and incompletely tested or failed requirements

What are configuration management policies ?

Configuration Management policies are used to monitor and safeguard project assets, and to enforce software development practices. Project policies should improve communication amongst the team members and minimize problems encountered when integrating their work.

What is configuration status accounting ?

(SCSA) It is used to describe the "state" of the product based on the type, number, rate and severity of defects found, and fixed, during the course of product development. Metrics derived under this aspect of Configuration Management are useful in determining the overall status of completeness of the project.

What is deployment diagram ?

A diagram that shows the configuration of run-time processing nodes and the components , processes , and objects that live on them. Components represent run-time manifestations of code units.

What are the different types of audit ?

Physical Configuration Audit Perform Configuration Audit Functional Configuration Audit

What is version description ?

Version Descriptions describe the details of a software release. As a minimum the description needs to include the following: a)Inventory of material released (physical media and documents), b)Inventory of software contents (file listings), c)All unique-to-site 'adaptation' data, d)Installation instructions, and e)Possible problems and known errors.

What is set up configuration management environment ?

The purpose of this activity is to establish an environment where the product can be developed and built. This is done in two parts, firstly by setting up the hardware environment, and then by establishing the development environment. Setting up the CM environment involves allocating machine resources (servers and disk space) and installing the configuration management tools Setting up the development environment involves creating repositories, setting up the product directory structure, and importing any existing files. The initial environment serves as a baseline for further development work.

What is development case ?

The Development Case describes the development process that you have chosen to follow in your project.

What is review change request ?

The purpose of this activity is to determine if the Change Request (CR) should be accepted or flagged for rejection. For accepted CRs, this activity assesses priority, effort, schedule, and so on to determine if the change is in scope for the current release.

What is change request management ?

It addresses the organizational infrastructure required to assess the cost, and schedule, impact of a requested change to the existing product. Change Request Management addresses the workings of a Change Review Team or Change Control Board.

What is change tracking ?

It describes what is done to elements for what reason and at what time. It serves as history and rationale of changes. It is quite separate from assessing the impact of proposed changes as described under 'Change Request Management'.

What is version selection ?

It the purpose of good 'version selection' is to ensure that right versions of configuration items are selected for change or implementation. Version selection relies on a solid foundation of 'configuration identification'.

What is deployment unit ?

A deployment unit consists of a build (an executable collection of components), documents (end-user support material and release notes) and installation artifacts. The purpose of this activity is to create a deployment unit that is sufficiently complete to be downloadable, installable and run on a node as a group.

What is the purpose of promote bas line ?

The purposes of this activity is to ensure that baselines (individually tested components from various implementers, and development teams, combined together to work together as a product) are 'tagged' to reflect the level of software maturity, stability and quality they may have achieved. The appropriately tagged baselined version is then available for release or further development in subsequent iterations

References

1. Rational Unified Process
2. Guide to the Software Engineering Body of Knowledge
3. Rational Clearcase