- What are Software Configuration Management Best Practices ?
- What are the problems of not using Software Configuration Management (SCM)?
- What is a Software Configuration Management tool ?
- What are Software Configuration Management processes ?
- How can Software Configuration Management followed without tools ?
- How can we use Shared Copy Approach for Software Configuration Management ?
- What are the Problems of not using Software Configuration Management tools ?
- What is a Version ?
- What is Configuration ?
- What is Baseline ?
- What baselines are required to be defined and managed ?
- How is the current software configuration defined ?
- Who must approve changes to baselines ?
- What is the responsibility of Configuration Control Board ?
- How are baselines verified ?
- How and when are baselines created and physically controlled ?
- Are baselines tied to project milestones ?
- What is Software Configuration Item ?
- What are the components of clear case ?
- What is Version Control ?
- What is the use of Version Control ?
- What is the use of workspace ?
- What is Change Control
- What is UCM(Unified Change Management) ?
- What is a view ?
- What are the types of Views ?
- What is a view ?
- What is Process Control ?
- What is VOB ?
- What is a version Tree ?
- What are the different types of checkouts used in modern Software Configuration Management tools ?
- What is the different between reserved and unreserved checkouts ?
- What are the advantages of using Software Configuration Management tool supports ?
- What is the tool which supports Component-based Development ?
- What is Activity-based Configuration Management ?
- What is the basic concept of ClearCase UCM ?
- How does ClearCase UCM works ?
- What does ClearCase do ?
- What is Meta-Data in clear case ?
- What is Programmer's Directory ?
- What is the purpose of change policies ?
- What does history includes ?
- What is version ID ?
- What is version number ?
- What is the use of ClearCase administrators group ?
- What is the order in which the clear case software is to be installed ?
- What are the different types of information included in SCMP ?
- What is mean by Identifying Items to Be Controlled ?
- What is software Library ?
- What are the SCM activities ?
- What is interface control ?
- What is SCMP ?
- What is Configuration control ?
- What is bill of materials ?
- What is a Build ?
- What is build report ?
- What are the configuration audit findings ?
- What are configuration management policies ?
- What is configuration status accounting ?
- What is deployment diagram ?
- What are the different types of audit ?
- What is version description ?
- What is set up configuration management environment ?
- What is development case ?
- What is review change request ?
- What is change request management ?
- What is change tracking ?
- What is version selection ?
- What is deployment unit ?
- What is the purpose of promote bas line ?
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
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
Software tools that automate and facilitate the application of the Software Configuration Management best practices.
The way SCM is performed on your project, specifically how an SCM tool is applied to accomplish a set of tasks
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
An additional copy of the entire system directory structure can be created to store the latest versions of the software.
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
A specific instance of a baseline or configuration item is known as Version.
Configuration is a collection of all the elements of a baseline and a description of how they fit together.
One or more software configuration items that have been formally reviewed and agreed upon and serve as a basis for further development
Typically aligned with major milestones. Applies to documents as well as code.
A snapshot of everything the product has produced at some point in time.
Usually the Change Control Board (CCB) must approve changes to baselines.
Group with the responsibility for reviewing and approving changes to baselines
By reviews, inspections, and the testing of code
Through the use of document control systems, code control tools, and procedures to prevent the making of unapproved changes
Many are, but during coding many may not be tied to project milestones
A collection of software elements treated as a unit for the purposes of Software Configuration Management
Version Control Workspace Management Build Management Process 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.
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
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
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
It unifies the activities used to plan and track project progress with the artifacts being changed.
A way of seeing the objects in one or more VOBs (Versioned Object Base) Version selection is based on user-defined rules
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.
Selects versions of VOB directories and Files. It enables developers to work in parallel .
Enforces appropriate policies and processes across diverse development environments Integrated with ClearCase as a set of flexible, customizable tools
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.
A version tree is a Hierarchical representation of an element in which all versions are logically organized.
Modern Software Configuration Management tools support both 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.
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
ClearCase UCM is the tool which support component -based development.
Configuration Management based on task, defect and enhancement is known as Activity-based Configuration Management.
The ClearCase UCM is working on the following two basic concepts activity-based SCM and component management
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
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
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.
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.
The purpose of change policies is to guarantee that each version, revision or release conforms to commonly accepted criteria.
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.
A branch path name and version number, which indicate a version's exact location in its version tree.
Version-number is the assigned integer that identifies the position of a version on its branch.
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.
The clear case server is to be installed first followed by the client software
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
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.
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
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.
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.
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.
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.
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.
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.
Build Reports list all the files, their location, and incorporated changes that make up a build for a specific version of the software
The Configuration Audit Findings identify a baseline, any missing required artifacts, and incompletely tested or failed requirements
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.
(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.
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.
Physical Configuration Audit Perform Configuration Audit Functional Configuration Audit
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.
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.
The Development Case describes the development process that you have chosen to follow in your project.
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.
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.
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'.
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'.
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.
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
References1. Rational Unified Process
2. Guide to the Software Engineering Body of Knowledge
3. Rational Clearcase