what is configuration management

Configuration Management (CM) is a series of measures to control and standardize software products and their development process and life cycle through technical or administrative means . The goal of configuration management is to record the evolution process of software products and ensure that software developers can obtain accurate product configurations at all stages of the software life cycle .

Note: configuration is a Chinese word, the pinyin is pèi zhì, with: to make up for what is missing; to set up: to set up . Configuration is to make up what is missing and set it up . Also a Go term. The cooperation between the chess pieces in the formation involves the height, distance, density and other aspects of the position of the chess pieces.

Configuration items are components of software products and development processes, that is, components that need to be equipped with software products and components in the development process . Configuration items refer to all items included in the scope of configuration management .

All work products that are included in the scope of configuration management are configuration items (CI); a pure software CIs are usually also called software configurations (CSCIs).

There are two main categories of configuration items:

Work products that are part of the Product ;

Documentation produced by the project management and institutional support processes .

The main attributes of each configuration item are: name, identifier file status, version, author, date, etc.

Items that configure the information displayed in a report.

Typical configuration items include:

Requirements specifications, design documents, source code, test plans, test scripts, test procedures, test data, standards used by the project (such as coding specifications and design specifications), acceptance plans, documents such as CM plans and project plans, and user manuals Class user documentation, training material documentation, contract documentation (including support tools such as compilers or tools used internally), quality records (review records, test records) and CM records (release records, status tracking records).

Introduction

The configuration management process is the management process of software products in the process of continuous evolution and perfection. Consistency and traceability make the product match the needs of users to a great extent . It realizes the management function of software products by controlling, recording and tracking the modification of software and the software components generated by each modification .

As early as the early 1970s, Professor Leon Presser of the University of California wrote a paper proposing the concept of control change and configuration . Then in 1975, he established a company called SoftTool and developed his own configuration. Management tool: CCC, which is also one of the earliest configuration management tools. Later, with the gradual increase of software development scale, more and more companies and teams realized the importance of software configuration management, and the corresponding software configuration management tools have sprung up like mushrooms after rain, and the more representative ones are : Marc Rochkind's SCCS (Source Code Control System) and Walter Tichy's RCS (Revision Control System), these two tools have made significant contributions to the development of future configuration management tools, most of the widely used configuration management The tools are basically based on the design ideas and architecture of the two.

The role of configuration management in the software development process and project management process

With the increasing complexity of software systems, user needs, and frequent software updates, configuration management has gradually become an important control process in the software life cycle and plays an increasingly important role in the software development process. A good configuration management process can cover all aspects of software development and maintenance, and at the same time, it also plays an important supporting role in the macro-management of the software development process, that is, project management. Good configuration management can make the software development process more predictable, make the software system repeatable, and enable users and competent departments to have greater confidence in software quality and development teams.

The ultimate goal of software configuration management is to manage software products . Since software products are constantly changing driven by the ever-changing needs of users, in order to ensure effective control and tracking of products, the configuration management process cannot only manage static and formed products, but must manage dynamic and growing products. to manage . It can be seen that configuration management is closely related to the software development process. Configuration management must be closely linked to all aspects of the software development process: manage user requirements, monitor their implementation, ensure that user requirements are finally implemented in each version of the product, and provide assistance in product release and user support, responding to users New requirements drive new development cycles . Through the control of the configuration management process, the user's demand for software products is the same as the order for ordinary products. It follows a strict process, goes through a controlled production line , and finally forms a product and sells it to the corresponding user. From another perspective, there are usually different tasks in different stages of product development, which are performed by different roles. The responsibilities of each role are clear and distinct, but at the same time they are connected and coordinated with each other.

A good configuration management process helps to standardize the behavior of each role, and at the same time provides a seamless connection for the transfer of tasks between roles , so that the entire development team moves harmoniously and intricately like a symphony. Configuration management systems also play an important role in software project management because the configuration management process directly connects the product development process, developers, and the final product, which are the focus of project managers. The control and reporting functions evolved in the configuration management process can help the project manager better understand the project progress, developer load, work efficiency and product quality status, delivery date and other information. At the same time, the standardized work flow and clear division of labor in the configuration management process are conducive to managers to deal with the dilemma of developer turnover, so that new members can quickly achieve task handover and minimize losses caused by personnel turnover.

Function

Parallel development support

Due to development and maintenance reasons, it is required that developers can work on the same software module at the same time and make different modifications to the same code part at the same time. Even the development teams distributed across regions can work together without interfering with each other. Without losing control.

revision management

Track who made, when, and why every change was made, speeding up problem and defect determination.

version control

  • Any historical version of the software system can be reproduced simply and unambiguously.

  • Product release management: manage and plan software changes, consistent with software release plans, pre-customized life cycles or related quality processes; project managers can clearly understand the status of the project at any time.

management process

build management

Based on the version control function of the software repository, the build process is automated.

process control

  • Implement development specifications, including access control, implementation of development rules , etc.

  • Change request management: track and manage defects (Defect), function enhancement requests (RFE) or tasks (Task) that occur during the development process, strengthen communication and collaboration, and be able to keep abreast of the status of changes.

code sharing

Provide a good storage and access mechanism, developers can share their own development resources.

process

Develop a configuration management plan

The configuration administrator formulates the "Configuration Management Plan", which mainly includes configuration management software and hardware resources, configuration item plan, baseline plan, delivery plan, backup plan, etc. CCB approves the plan.

Configuration repository management

Configuration administrators create configuration libraries for projects and assign permissions to each project member. Each project member operates the configuration library according to their own authority. The configuration administrator regularly maintains the configuration library, such as clearing junk files, backing up the configuration library, and so on.

version control

During the project development process, most of the configuration items have to go through several revisions before they can be finalized. Any modification to configuration items will generate a new version. Since there is no guarantee that the new version will be "better" than the old version, the old version cannot be discarded. The purpose of version control is to save all versions of configuration items according to certain rules, avoid version loss or confusion, and quickly and accurately find any version of configuration items.

There are three states of configuration items: "Draft", "Officially Released" and "Under Modification". This procedure establishes the rules for status transition and version number of configuration items.

change control

During project development, changes to configuration items are almost inevitable. The purpose of change control is to prevent configuration items from being modified arbitrarily and causing confusion.

Modifying a configuration item in the "draft" state is not considered a "change" and does not require the approval of the CCB, and the modifier can execute it according to the version control rules.

When the status of a configuration item becomes "officially released" or "frozen", no one can modify it at will, and it must be executed according to the rules of "application→approval→execute change→re-evaluation→end" .

configuration audit

In order to ensure that all personnel (including project members, configuration managers, and CCB) comply with configuration management specifications, quality assurance personnel should regularly audit configuration management work. Configuration auditing is a "process quality check" activity that is one of the job responsibilities of quality assurance personnel .

implement

To implement a configuration management system, the general steps and issues to be considered are as follows:

1. Planning and adjusting the web development environment

A well-planned development environment is a prerequisite for implementing a configuration management system. At this stage, the configuration management system should be planned, mainly considering the following issues:

  • Network bandwidth and topology

  • Server selection, naming convention

  • storage location

  • Naming conventions for developers and groups, etc.

2. Design configuration management library

According to the requirements of project development, design the storage mode of development resources. A good storage mode will help reduce the burden on management, enhance the access performance of the configuration management library, and at the same time facilitate the control of access rights and protect software assets .

3. Define the roles of the configuration management system

At this stage, all roles related to configuration management need to be identified, including the corresponding activities of all his roles. During the development process, a developer may play multiple roles, but a task can only be performed by one role at the same time.

The roles in general configuration management mainly include:

  • Project Manager: The project manager's role in configuration management is to develop the project's organizational structure and configuration management strategy with the help of configuration managers, system administrators, and system architects. These tasks include: custom development of subsystems, custom access control, development of common policies, development of integration milestones, and system integration.

  • Configuration administrator: The responsibility of the configuration administrator is to implement and maintain the configuration management environment according to the development organizational structure and strategies formulated by the project manager. Its main responsibilities are as follows: create a configuration management library, perform daily backup and recovery of the memory card, maintain the configuration management environment, and manage users related to configuration management.

  • Software Developer: A software developer creates, modifies, and tests development artifacts in accordance with the project's development and configuration management policies .

  • Integrator: Merge the software to form the corresponding baseline or release version.

  • QA personnel: need to have a deep understanding of software configuration management, and its main job is to track the status of the current project, test, report errors, and verify its repair results.

4. Develop a configuration management process

This is an important stage in the implementation of configuration management. Its main purpose is to formulate corresponding configuration management processes according to the needs of project development to better support development. The main activities include:

  • Customize parallel development strategy: A reasonable parallel development strategy should have the following characteristics: coordinate the complexity and requirements of the project, create branch types and metadata uniformly, formulate effective specifications for change integration in the development process, and reflect the methods and methods in the development process in a timely manner. changes in demand.

  • Release version management: A key activity in the software development process is to extract relevant versions of artifacts to form staged versions or releases of the software system, which we generally refer to as stable baselines. A stable baseline represents the start of new development activities, and a well-tailored series of activities will result in a new stable baseline. By effectively utilizing this function, the relationship between artifact versions can be managed and tracked throughout the project development process.

 

configuration management

Generally speaking, to implement a configuration management system, relevant personnel need to receive the following training:

  • Administrator training: For configuration administrators, mainly learn about configuration management tool management.

  • Developer training: For developers, mainly learn common operations related to configuration management tools and development.

  • Management process training: for all personnel, the purpose is to understand configuration management strategies and processes, and how to combine them with development management and project management.

experience

Focusing on configuration management, some companies in the world dedicated to software engineering research have introduced various tool software that meet the ISO 9000 configuration management standard on the basis of a deep understanding of ISO 9000, such as PVCS from INTERSOLV and Clear Case from Rational. These configuration management tools are oriented to the needs of software standardization, engineering, and automation, and help the development team improve the scientific management level, thereby improving engineering efficiency and reducing engineering costs. Now take PVCS as an example, combined with practical experience, to talk about the benefits of implementing configuration management:

save money

1. Shorten the development cycle

Use the Version Manager of PVCS to manage and track the version of program resources, establish the company's code knowledge base, and save each process version in the development process, which greatly improves the code reuse rate and facilitates simultaneous maintenance of multiple versions and new versions. development, prevent system crashes, and maximize code sharing. At the same time, project managers can view the project development log through Version Manager, testers can test the software according to the development log and different versions, engineers can get different running versions from Version Manager, and Version Manager can be installed on the Web Server for external use Builders access the latest version without the need for a developer to be on site.

Use Tracker to set up problem tracking and message communication between development groups. The combination of its Notify module and email greatly strengthens the communication between development groups. The Reporter module can sort out the problems found and report them in the form of reports. , as a guide for development.

The above are the two main modules of PVCS. Scientific application can greatly improve development efficiency and avoid the chaotic situation of code coverage, insufficient communication, and disordered development . If the company's original knowledge base is used, work efficiency can be improved. Shorten the development cycle.

2 . Reduce construction costs

After using PVCS for software configuration management, establish a development management specification , mount the version management file on the company's internal Web server, access the Version Manager directly through Netscape, and the engineering personnel access the intranet remotely to obtain the latest version required. Developers do not need to go to the site, and on-site engineers collect feedback through the other party's system administrator, and submit it in writing to the project manager of the company's internal development team. The development team discusses and decides whether to modify it, and makes a written reply. In this way, multiple project sites can be responded to at the same time, preventing developers from being assigned to various project sites, dispersing forces, and insufficient personnel, and saving a lot of travel expenses at the same time.

Conducive to the establishment of knowledge base

1. code object library

Software code is the crystallization of the mental work of software developers, and it is also a valuable asset of software companies. Various code objects formed during the long-term development process are like parts blanks, which are components of the rapid generation system. The long-term fact is that once a developer leaves his job, the code he originally made basically becomes garbage and no one cares about it. The reason is that there is no special management of each person's useful objects, and the scope of its use is extended to the company level, standardized, explained and popularized . Version Manager provides a platform and warehouse for object management, which is conducive to the establishment of a company-level code object library.

2. Business and experience library

Through the comments and Tracker of PVCS Version Manager, a complete development log and problem collection can be formed, which can accompany the entire development process in text, and will not disappear according to the transfer of a certain person, which is conducive to the company's accumulation of business experience, whether it is version rectification or version upgrade , have an important guiding role.

Standardized management

1. Quantitative workload assessment

In traditional development management, the workload has always been an inestimable indicator. It is quite arbitrary to rely on the developers themselves, and it is too subjective to rely on the management personnel . After adopting PVCS management, developers check in the modified files every day before leaving get off work, which records the detailed description of the modification on the day, and these descriptions can be used as a measure of workload.

2. specification test

After the adoption of PVCS, the test has real work. The test staff will do specific tests on each day's work according to the detailed description of the daily modification, which is also assessable for the testers. the randomness of its work.

3. Strengthen coordination and communication

After adopting PVCS, through the Version Manager document sharing and its specific locking mechanism, and the integration of Tracker and email, the communication between project members has been greatly strengthened, so that problems can be found in time, modified in time, and notified in time, but without additional increase A lot of work.

the essence

Specifically, configuration management includes the following:

  • Identification: Identifying the structure of a product, its components and their types, assigning them unique identifiers, and providing access to them in some form.

  • Control: Control the modification of configuration items through a certain mechanism.

  • Status Reporting: Record and report the status of configuration items and metadata.

  • Configuration Audit: Confirm product integrity and maintain consistency across configuration items.

From the above description, we know that the basic unit of configuration management is configuration item.

In a "philosophical" sense, it documents three aspects of a configuration item:

  • from where? This entry boils down to the question of WWW, (Who) who created it? (When) When was it created? (Why) Why is this configuration item created?

  • Where are you currently? This item records the current storage location and status of configuration items.

  • Where are you going? Configuration controls are used to "assemble" configuration items into the correct version .

Configuration items can be large-grained or small-grained. If individual requirements are tracked, it is not necessary to define the entire requirements specification document as a configuration item, each requirement can be defined as a configuration item; if software development tools are also put into the configuration management system, then the configuration item is defined as a file level It is not appropriate, you only need to track the version of the development tool, that is, it is enough to define the entire configuration tool as a configuration item.

In short, configuration items can be either file-level granularity or file version-level granularity. Of course, the smaller the granularity, the higher the cost of management, but the higher the accuracy of configuration.

A complete SCM system should have three core functions: version control, change control, configuration control and two supporting functions: status statistics and configuration audit.

version control

A version, also known as a configuration identifier, refers to the potential existence of a specific instance of a particular object. A specific object here refers to the software component unit managed by the version maintenance tool, generally refers to the source file; a specific example refers to a software component unit with certain content and attributes restored by the software developer from the software library. true copy. For example, every modification to a source file generates a new version.

Version control is to manage different versions of configuration objects created during the software development process to ensure that the correct version and combination of versions can be obtained at any time.

Currently, typical tools in this area are VSS and CVS.

change control

Change control is achieved through the process of classifying, tracking and managing Change Requests (CR for short) . There are two sources of change: functional changes and bug fixes (Bug-Fix). Functional change is to add or delete certain functions. Defect patching is the repair of existing defects .

The body that controls changes is called the Change Control Board (CCB). The Change Control Committee shall hold regular meetings to analyze and sort out the recent change requests and make decisions. And to follow a certain change mechanism.

A typical change mechanism is as follows:

The state of a configuration item can be promoted as the change process progresses. A tool for this is Bugzilla .

configuration control

Configuration control enables users to compose a software system with specific attributes (configuration) by selecting the appropriate version . This flexible "assembly" strategy makes the configuration management system use existing building blocks (versions) to assemble various A variety of models with different functions.

Each release of a software product is a collection of configuration items (source code, documentation, data) . Configuration control is to ensure the integrity and accuracy of each configuration.

For example, to release version 32.6 of the software, it is necessary to check out all the correct configuration items in the source code, documentation, and data that should be included in this version.

During the development process, various baselines are established at different stages. The establishment of a baseline is a typical application of configuration control functions. So, the baseline is a milestone configuration.

General commercial software configuration management tools have the function of configuration control, but there are differences in flexibility and accuracy.

status report

The status report should answer the so-called 4W questions:

  • What: what happened?

  • Who: Who did this?

  • When: When did this happen?

  • Why: Why do you do this?

Status reporting should also be able to report the status of all configuration items and change requests.

configuration audit

A configuration audit reviews the following items:

  • Whether the entire configuration management process conforms to the specification

  • Whether the configuration items are consistent with the requirements and the records are correct

  • Whether the composition of the configuration is consistent

  • other

As the software industry pays more and more attention to quality, many projects set up a quality assurance department to conduct configuration audits . So now it can also be said that configuration auditing is an SQA (Software Quality Assurance) activity.

Business Models for Configuration Management

The implementation of configuration management consists of two parts: tools and specifications.

Today, when the software development process is automated, it is unimaginable to implement configuration management with complete configuration without the support of tools. So choosing a tool that fits your company or project is crucial. In the configuration management system, the following four models can be summarized. Current commercial tools generally adopt one or more of these models.

  • CICO model

  • organizational model

  • long transaction model

  • Changeset model

Through the understanding of the business model, it can help to know whether a certain tool is suitable for a certain company or project.

CICO model

The CICO model is primarily concerned with versioning individual files. The figure shows the working process of a CM system supporting the CICO model. Users work with libraries and file systems. Files are versioned and stored in the repository, and the generation of new versions is controlled by the repository tools. However, files are not directly accessible in the library, and users must check out (ie Check out) a version of a file into the workspace in order to read its contents. Changed files can be checked into the library (ie Check in), resulting in a new version of the file.

Representative tools for this model are SCCS and CVS.

organizational model

The organization model is naturally derived from the CICO model, built on the basis of the component version diagram, and also relies on the concepts of repository and workspace, and can implement concurrency control by locking components. The focus of the organization model is to strengthen the support for creating configurations, managing related historical information and using them as working environment under the support of CM system.

A configuration in an organization model consists of a system model and version selection rules. The system model lists all the components that make up the system. Version selection rules specify the version selection for each component that makes up the configuration. Selection rules are used in system models to select component versions, that is, to bind a component to a certain version. The mode of operation of this model is: the developer defines the whole system according to the components of the model, and chooses the appropriate version for each component at each step. Versioning works as shown in the diagram.

CM support is primarily concerned with maintaining the version history of the system and its components, and selecting versions of components that conform to a consistent configuration. A configuration version is only considered if the version of the selected component matches the version of the other selected components.

The representative tool for this model is CCC.

long transaction model

The long transaction model primarily supports system-wide evolution involving a series of atomic changes and the coordination of system changes by a team of developers. Developers primarily work with configurations rather than individual artifacts. The result of a transaction commit is a new configuration version, and a series of successive changes results in a series of configuration versions, called a development path.

In the long transaction model, the main work object of the developer is configuration. The developer first selects the system configuration version, and then focuses on the system structure. The version of the artifact is implicitly determined by the configuration. Long transactions consist of two concepts: workspaces and concurrency control schemes. A workspace originates from a repository or a fixed configuration within an enclosed workspace. A workspace consists of a working configuration and a collection of saved configurations. A working configuration represents a configuration in which components and system structures can be changed dynamically. Provides transparent library access through workspaces, applies efficient library storage techniques to workspaces, and manages versions of derived artifacts.

The representative system for this model is NSE.

Changeset model

Mainly focused on support for logical changes to the system configuration. A changeset introduced in this model represents a collection of modifications to different components that make up a logical change, and it is a record of the logical change after the activity that created the change is completed. Users of CM systems that support this model can directly manipulate changesets. In the changeset model, a configuration can be described as consisting of a baseline and a set of changesets.

Propagation of changes to other configurations can be done by including the respective changesets. Developers use different integration strategies to include logical change sets into a new system release. The benefits of this are very obvious. For example, to maintain 10 different versions of a product, it is now necessary to modify a defect (Bug) for all versions. Simply repeating the same tool 10 times is clearly unacceptable. And through the change set, this logical change can be freely transferred from one version to another.

Developers can track logic changes and determine whether those changes belong to a specific configuration. This approach to configuration management, because of its focus on logical changes, is called change-oriented configuration management. It differs from the other three CM models today because the version-oriented approach used by the other three CM models focuses on component and configuration versions.

In the case of a single artifact, a changeset is a collection of differences between two file versions, usually referred to as deltas. For configurations, a changeset is a collection of differences between two configuration versions. This set of differences is the incremental set of modified components between two configuration versions, that is, the incremental set of changed components.

A change-oriented view is different from a version-oriented view. There are two differences. One is that the explicit representation of logical changes allows tracking of change sets related to individual artifacts and configurations. The second is that the ability to reference individual change sets and selectively incorporate them into configuration management provides support for the management of system evolution based on the propagation of logical changes to maintained system configurations.

Representative tools for this model are UCM and SABLIME.

Application of configuration management

The most important element of cloud security is configuration management.

In a SaaS environment, configuration management is handled entirely by the cloud provider. Where possible, customers can propose some patch management and configuration management to the vendor through Attestation Business Standards Announcement (SSAE) No. 16, Service Organization Control (SOC) report or ISO certification and Cloud Security Alliance's Security, Trust and Assurance registration certificate practical requirements.

In a PaaS environment, the development and maintenance of the platform is the responsibility of the provider. Libraries and tools for application configuration and development may be managed by enterprise users, so security configuration standards are still defined internally. These criteria should then be applied and monitored in the PaaS environment.

conclusion

Configuration management itself is constantly enriched and developed both in theory and practice. For example, the application of configuration management to the management of "knowledge base" has created the new field of "content management". Status reports and data statistics provided by configuration management also provide decision-making basis for software measurement. Configuration management provides project management with various perspectives to monitor project progress, and provides a guarantee for project managers to accurately grasp the project progress. Configuration management also provides a collaborative platform for developers, on which everyone can communicate and collaborate more efficiently. It can be said that configuration management is the cornerstone of software development!

Configuration management has been greatly recognized in China in recent years. It is no exaggeration to say that without configuration management, there would be no software development, no software quality, no development of the software industry. With the expansion of the scale of the software industry, the implementation of configuration management is not a question of whether or not, but a question of when and how to implement it.

Reposted from:  Configuration Management (Controlling Software Products Through Technology) - Baidu Encyclopedia

Guess you like

Origin blog.csdn.net/fuhanghang/article/details/129982215