Configuration Management What and How?
Today's software projects are becoming more complex in size, sophistication, and technologies used. Now most software products cater to millions of users, support different national languages, and come in different sizes and shapes (e.g., desktop, standard, professional, enterprise). For example, operating systems, word processors, and even enterprise resource planning (ERP) packages support multiple languages and multiple currencies. Almost all application software products (such as word processors, ERP packages, and even software configuration management tools) support more than one hardware and/or software platform. For example, ERP systems can run on mainframes and client/server systems, different versions of Web browsers for the PC and Mac, and database management systems that run on MVS, UNIX, Windows NT, or Linux. The competition and the advancements in technology are driving the software vendors to include additional functionality and new features in their products just to stay in business.
Thus, today's software development environment is complex and reaction or response times are short. Millions of software professionals around the world are developing complex software systems, which consist of a myriad of components, each of which evolves as it is developed and maintained. The task of managing a software project successfully and delivering a high-quality and defect-free product on time and without any cost overrun is nearly impossible. To survive in this brutally competitive world, organizations need some sort of mechanism to keep things under control or total chaos and confusion will result, which could lead to product or project failures and put the company out of business. A properly implemented software configuration management (software configuration management) system is such a mechanism that can help software development teams create top-quality software without chaos and confusion.software configuration management ensures that the development and evolution of the different components of a system are efficient and controlled, so that the individual components fit together as a coherent whole.
Proper application of software configuration management is a key component in the development of quality software. Uncontrolled changes to the software under development are usually a significant cause of changes to a project's schedule and budget; unmanaged change is the largest single cause of failure to deliver systems on time and within budget.
One defination of Software configuration management as the discipline of identifying the configuration of a system at discrete points in time for purposes of systematically controlling changes to this configuration and maintaining the integrity and traceability of this configuration throughout the system life cycle.
The IEEE defines configuration management as a discipline applying technical and administrative direction and surveillance to identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements.
What does this definition mean?
First, software configuration management is a disciplineone that applies technical and administrative direction and surveillance. The term discipline refers to a system of rules, so the practice of software configuration management cannot be done at the whims and fancies of individuals; it has to follow a set of rules. These rules are to be specified in a document called the software configuration management plan (discussed later in this chapter). The rules should be applied in a technical and administrative framework, and monitoring (surveillance) should be constant to ensure that the rules are followed. This means that software configuration management needs an organizational setup for carrying out the technical and administrative monitoring. software configuration management requires one group of people to carry out different software configuration management functions and another group to monitor that the software configuration management activities are performed according to the rules. The size and organizational structure of this groupthe software configuration management organization or software configuration management teamwill vary with the size and complexity of the projects.
Second, the software configuration management function should identify the configuration items and document their functional and physical characteristics. IEEE defines a configuration item as an aggregation of hardware, software, or both that is designated for configuration management and treated as a single entity in the configuration management process. So the software configuration management discipline must identify the components (e.g., documentation, programs, functions, component libraries, data) of a software system. Then it should document the components' functional characteristics, such as what they are supposed to do, performance criteria, and features, as well as the physical characteristics, such as size, number of lines, number of modules, functions, and libraries.
Once the configuration items are identified and their characteristics are documented, the software configuration management system should control the changes to those characteristics. This means that once the software configuration management system is in place, any change to a configuration item should take place in a controlled way. Control does not mean prevention. It means that the software configuration management system should institute procedures that will enable people to request a change or an enhancement to a configuration item. Well-defined methods should be in place for evaluating these requests, studying the impact of each request on other configuration items, and then carrying out the changes if deemed appropriate. In other words, the software configuration management system should ensure that no changes are made to the configuration items without proper authorization.
Third, the software configuration management system should record the change management process and report it to all parties involved. This necessitates documentation of the change management process. The status of the change requests should be tracked and recorded from the point of origin until completion. Processes such as change requisition, evaluation, impact analysis, and decisions about whether to make the change or not should be documented and reported to all people involved.
Last, a mechanism should be used to verify that the system that is being developed and delivered is the one specified in the requirements definition and other related documents. In other words, the software configuration management system should ensure that what is developed and delivered is exactly what was required and specified. For this there should be some sort of an auditing or verification mechanism.
So, translated into plain English, software configuration management requires the components of a software system to be identified and their characteristics (both functional and physical) documented. Once this is done, any changes to these items should only be made through proper channels. This means that no one without proper authorization can make changes to an item. The entire process of change management should be documented and reported to all those involved. A mechanism should exist for checking and verifying that the system is being developed in accordance with the specifications.
IEEE divides the software configuration management functions into the following four activities: configuration identification, configuration control, status accounting, and audits and reviews. Configuration identification is an element of configuration management, consisting of selecting the configuration items for a system and recording their functional and physical characteristics in technical documentation. Configuration control is the element of configuration management consisting of the evaluation, coordination, approval or disapproval, and implementation of changes to configuration items. Status accounting consists of recording and reporting information needed to manage a configuration efficiently. Auditing is carried out to ensure that the software configuration management system is functioning correctly and to ensure that the configuration has been tested to demonstrate that it meets its functional requirements and that it contains all deliverable entities. We will look at these four software configuration management functions in more detail in later chapters.
Effective software configuration management is not just having a tool that records not only who made what change to the code or documentation and when but also the thoughtful creation of naming conventions, policies, and procedures to ensure that all relevant parties are involved in changes to the software. software configuration management is not just a set of standard practices that applies uniformly to all projects. software configuration management must be tailored to each project's characteristics, such as size of the project, volatility, development process, and extent of customer involvement. The best place to record how software configuration management should be performed for each project is in the software configuration management plan. The software configuration management plan documents what software configuration management activities are to be done, how they are to be done, who is responsible for doing specific activities, when they are to happen, and what resources are required.
If designed properly, implemented judiciously, and used efficiently, SCM systems will raise the productivity and profits of companies dramatically. For this to happen, the people who use the system should be educated on its potential benefits, capabilities, and ability to improve developmental productivity.

| < Prev |
|---|