A systematic software configuration management(SCM) process with appropriate tool support needs to be deployed. It is concerned with tracking and controlling changes to the software. Maintenance phase-work products associated with software change. Each member of development or maintenance team would assign to handle modification requests. In the above situation, unless a proper configuration management system is deployed, several problems can appear.
Context in which configuration management is necessary: Development phase- work products get modified. Maintenance phase- work products change due to various types of enhancements. State of work products change both during development as well as maintenance phase. The state of all work products at any point of time is called the configuration of the software product. Effectively tracking and controlling the configuration of a product through entire life cycle. Configuration management tool- effective.
Few Terminologies: Configuration: Work products referred as configuration items. Assume as a set of files representing various work products. Work products(W1,W2,… Wn ). Version: Development and maintenance activities are carried-the configuration keeps on changing. Refer last week/month configuration. Version is a configuration that existed at certain point in time. It is a numbering scheme that helps us identify a specific configuration at certain point of time.
Revision: It is numbering scheme that is used to identify that state of configuration item at any time. Each time work product updated its change. Work product goes through series of updates till it reaches desired state. Successive states of work products-successive revisions. Baseline: It is a software configuration that has been formally reviewed and agreed upon and serves as a basis for further development. Variant: Variants are versions that are intended to coexist. Different variants may be needed to run the software on different operating systems or different hardware platforms. Even the initial delivery of software might consist of several versions and more variants mat be created later.
Purpose of software configuration management: Problems associated with concurrent access: Important reason for configuration management is to control the access to the different deliverable objects. Example: single copy is maintained, several developers working on it. One / two developers carry out changes to same work product leads to problem. Undoing Changes: It becomes easy to undo some part of a version or even rollback development to a certain version. Unless proper configuration management systems is in place, it become svery difficult to undo a change.
System Accounting: It denotes keeping track of who made a particular change to a configuration item, what change was exactly made. Knowing what, who, and when changes will help understanding why changes were made. Handling Variants: If you have several variants of the same module and find that a bug exists in one of them. Then it has to be fixed in all versions and revisions. Making a change to one program should reflected in all relevant versions and revisions.
Accurate Determination of project status normally: Project manager-responsible for using configuration management tool. With the help of it, PM can easily determine the current state of the project. Preventing Unauthorized access to the work products: CM helps to implement a controlled change process. It therefore becomes possible to prevent unauthorized changes to the work products. Configuration Management Process: Two principal activities: Configuration Identification: Deciding which parts of the system should be kept under configuration management. Configuration Control: Ensure that the changes to a system occur smoothly.
Configuration Identification: PMs classify the work products associated with a software development process in three main categories Controlled-work products that are put under configuration control. TMs should follow some formal procedure to change these. Pre-controlled-not yet under configuration control, but will be. Uncontrolled-will not be subject to configuration control. Controllable work products: Requirement specification Design documents Tolls used to build system(linkers, analysers , parsers,etc .,) Source code for each module Test cases Problem reports.
Configuration Control: It is a part of configuration management system- most directly affects the day-today operations of developers. It allows only authorized changes to the controlled objects and prevents unauthorized changes. PM-give permission to some members.
Modification to a work Product under Configuration Control: Made a reserve request when there is a need for change. A reserve request will be honoured only if authorization has been given by PM to that member. After the reserve command successfully executes, a private copy th work product is created in their local directory. Once they have satisfactorily completed all necessary changes to the work product on their private copy, the changes need to be restores in Configuration management repository. However, restoring the changed work product to the system configuration requires the permission of a change control board(CCB). Change is well motivated. Developer has considered and documented the effects of the change. Changes interact well with other developers. CCB have validated the change . Release Management: A release management process systematizes the work carried out by the developers to provide a new release of software. Minimal effort on the part of the developer to upload a new release of software.