Software Configure Management (SCM) is just like an umbrella activity which is to be applied throughout software process. It manages and tracks emerging product and its versions also it identifies and controls configuration of software, hardware and tools that are used throughout development cycle. SCM ensures that all people involved in software process know what is being designed developed, built, tested and delivered.
Necessity of SCM :
As the program complexity increased since 1960’s, he development of SCM techniques has become more important. There was a need of SCM by developers to improve productivity, reduce costs and to keep project progressing to completion. It becomes more important when software is developed by outsourcing and by distributed development.
Basically, it gives developers a means to coordinate work of numerous people on a common product whether they work in close proximity or over a wide geographical area. Without a proper SCM plan, projects become increasingly difficult to control and can reach point where project has to be discontinued because it cannot be fixed. Also there was a effect of software lifecycle model on software configuration management.
There are several reasons to put a project under configuration process. The following problems may arise if the configuration management for software is not used.
- Inconsistency problem because of replication of objects :
We understand this with help of a scenario where every software engineer has an personal copy of an object. According to their work and requirements every software engineer makes changes to his local copy, he also intimate changes to other engineers, so that changes in interfaces are uniformly changed across all modules. However, many times an engineer makes changes to interfaces in his local copies and forget to intimate teammates about changes. This makes different copies of object inconsistent. After doing all this, finally, when product is integrated i.e. all the different modules get combined, it does not work. Therefore, when several team members works on developing an object, it is necessary for them to work on a single copy of object, otherwise inconsistency may arise.
- Problem associated with concurrent access :
Suppose there is a single copy of problem module, and several engineers are working on it. Two engineers may simultaneously carry out changes to different portions of same module and while saving can overwrite each other. In this we have discussed problem of concurrent access to program code, similar problems can also occur for any other deliverable object. Suppose
- Providing a stable development environment :
There is always a need of stable environment when project is underway for progress of software. Let’s suppose somebody is trying to integrate module A with modules B and C, he cannot make progress if developer of module C keeps changing C; this can be especially frustrating if a change to module C forces him to recompile module A. Manager freezes object to baseline when there is effective configuration management. Under configuration control, if somebody expects need of object, then base line item is presented to him. Requester make changes to his private copy, configuration is updated and a new base line get formed instantly. This establishes a baseline for others to use and depend on. Also, configuration may be frozen periodically. Freezing a configuration may involve achieving everything needed to rebuilt it.
- System accounting and maintaining status information :
It keeps track of two things i.e. who made changes and when these changes where made.
- Handling variants:
Some kind of peculiar problems are created when there are existence types of variants in software. If someone has several modules for same module, and one will find bug in them. Then it has to be fixed in all the versions and revisions.