Loading

Software Configuration Management Checklist


The demand of technically advanced devices is increasing day-by-day in today’s day and age. People all over the globe, wait eagerly for the release of new devices, which have latest applications and great software enhancements. Whether you look at a smartphone device or a desktop computer, everything is changing rapidly and getting modified, to increase the convenience of the end users. These demands of exceptionally great and advanced applications and software systems, has had a great impact on the development and testing techniques and methods. Software engineers are using new and innovative methods to develop and test a software, which validates its performance, functionality, effectiveness, features, and quality. Software Configuration Management is one such technique, which has garnered great importance in the Software Development Life Cycle (SDLC). Software Configuration Management (SCM) is the overall management of the software product or system, which includes technical aspects of the project, organizations, and the control of modifications and changes to the project plan, which are executed during the development phase.

Defining Software Coniguration Management:

Also known as Software Control Management, Software Configuration Management (SCM) is the discipline for systematically controlling the changes that take place during the development process. It consists of standard processes and techniques, which are often used by organizations to manage the changes that are introduced in their software products. Software Configuration Management further helps in identifying individual elements and configurations, tracking changes, and version selection, control, and the establishments of baselines. Moreover, it aims at controlling changes introduced to large and complex software systems, through reliable version section and version control. If something goes wrong in a software system, Software Configuration Management can determine what was changed and who changed it. Also, if a configuration is working well, it can determine how to replicate it across many hosts.

Components of Software Configuration Management:

IEEE STD defined Software Configuration Management in 1987 as “the discipline of managing the evaluation of complex systems”. Its main purpose is to systematically control changes in the system’s configuration and maintain the integrity and traceability of the system configuration throughout its life cycle. Additionally, Software Configuration Management is an umbrella activity that is applied throughout the software process. This process controls the basic components of the software such as, software objects, program code, test data, test output, design documents, and user manuals. Moreover, there are four major components of Software Configuration Management, all of which play a very crucial role in completing the process of configuration management. These components are:

  1. Configuration Identification: It is the process of identification of Configurations Items (CI) and developing a method to uniquely identify each individual. Configuration identification provides labels for the baselines and their updates. It is majorly concerned about the items placed under configuration management, components of the product, the versions of the configuration items, and more.
  2. Configuration Control: Configuration control is the process of deciding and coordinating the approved changes for the proposed Configuration Identifications and implementing all the changes on the appropriate baseline. Moreover, configuration control only addresses the process after changes are approved.
  3. Status Reporting: Status reporting involves recording all the changes, modification and necessary information on the status of the development process, which are then reported to the configuration items. Also, it provides a mechanism for maintaining a record of where the system is at any point, with respect to what appears in published baseline documentation. With the assistance of status reporting, one can track baseline updates and ensure that there is progress within the development of the project.
  4. Configuration Verification and Auditing: It is the process of verifying the correctness of the product and its components, in order to ensure the conformance to requirements. Additionally, it means verifying the correctness of the Configuration Status Accounting information. Configuration verification and auditing ensures that all the configuration items have been correctly identified and accounted for and that all the changes have been registered, assessed, approved, tracked, and correctly implemented. Also, it measures the effectiveness of the configuration management process.

Purposes Of Software Configuration Management:

The major work of a software configuration management is to identify, report, control, verify and audit the system’s configuration. However, the responsibilities of Software Configuration Management is not limited to these components. There are other numerous roles of this process that make it popular amongst all software engineers. Hence, mentioned below are some other purposes of Software Configuration Management:

  • Managing the process and tools for builds.
  • Ensuring adherence to the organization's development process.
  • Managing the software and hardware that host the system.
  • Facilitates team interactions related to the process.
  • Makes sure every defect has traceability back to the source.

Software Configuration Management Checklist:

If we look at a single process of Software Development Life Cycle (SDLC), we will find that it is full of various complicated and simple phases, each of which require different development and testing techniques. Similarly, the process of Software Configuration Management is an amalgamation of several activities and procedures. In order to keep a track of each and every element of the system, a software developer needs to prepare a checklist, which can assist him/her is performing configuration management without missing out any issue or component. Therefore, here is a software configuration management checklist, to assist software developers with the process of Software Configuration Management:

  1. Functionality: The performance and functionality of the system should be tested, including version control, workplace management, build management, and process control.
  2. Version Control System is in Place: All the configuration items should be stored in the Version Control System, even if they do not seem to resemble configuration items.
  3. Version Control Repository Structure: The repository should be structured according to the best configuration management practices. One should have the right structure for the database objects. Another thing to check is to verify that different configuration item types are stored in isolation.
  4. Repository Size and Contents: Software artefacts that can be built from other artefacts shall not be stored in Version Control System, but shall be built upon request. To eliminate unnecessary and unintended storage of wrong items, one should use appropriate hook scripts.
  5. Build and Deployment Automation: It is important to note, whether or not the system can be built with a build script automatically. Moreover, one should also check if changes can be deployed automatically in the system or not. This is an important prerequisite for other build related requirements.
  6. Continuous Integration: Performing continuous integration during software configuration management is important, if the builds are happening automatically. Even if unit tests are not present, then it is always useful to test that system builds without any problem and CI engine can be used for automated, scheduled deployments to test environment.

Advantages Of Software Configuration Management:

Managing software systems and application after changes or modifications are implemented in them, is the most important part of software development process. It can prevent expenditure of extra efforts, time and cost on the project, which would have been invested in making sure that the software is developed perfectly. Therefore, with the assistance of Software Configuration Management, software developers and testers can ensure that their product is developed as per client’s demand and fulfil all their requirements. Other advantages of implementing Software Configuration Management are:

  • Reduces redundant work.
  • It effectively manages simultaneous updates.
  • With the assistance of Software Configuration Management, software engineers can avoid configuration related issues in the software.
  • It facilitates team coordination.
  • Helps in building management; managing tools used in builds.
  • Allows defect tracking, which ensures that every defect has traceability back to its source.

Conclusion:

A software consists of a collection of items such as, programs, data, codes, documents and more, that are changed at any time during the software development process. In a software, the design, code and even the requirements are changed frequently to achieve appropriate results and outcomes. This easily changeable nature of software and the fact that changes are implemented so often in the software, require that the changes should be done in a controlled manner. To ensure this, Software configuration management (SCM) is executed during the software development process. It is the discipline for systematically controlling the changes that take place during development. Creating proper SCM standards and processes during the early stages of project is strategic and can reduce risk and provide cost mitigation. Moreover, it helps control change without impeding justifiable changes. Hence, with the assistance of Software Configuration Management, a software developer can implement changes in the software effortlessly and ensure its quality, functionality, performance and effectiveness.