How to manage configuration of large-scale software

Source: Internet
Author: User
I. Preface
For a software enterprise, developing high-quality software products that meet user needs is its goal, the key to achieving this goal is to establish a stable, controllable, and reusable software development process. If a software enterprise wants to maintain its competitive edge, it must continuously improve its software development.

To improve the software development process, a clear and quantitative analysis of the current situation and future expectations are required. The data comes from the measurement of the software process, the premise and foundation for measurement is software.Configuration Management. Therefore, Software Configuration ManagementWorkIt aims to improve the entire software process and is for software project management and software engineering.OthersThe field lays a solid foundation to facilitate the steady development of the entire software enterprise's capability maturity. Software Configuration Management is the first step towards standardized software development management.
For small and medium-sized software development, Software Configuration Management does not play a significant role, but for large-scale software development, Software Configuration Management is crucial because of the large number of developers, large programs, and complex systems.
Software Configuration Management is so important for software development management. Its main idea and content lies in version control. Version control is one of the core ideas of Software Configuration Management. It refers to the management of various program code, configuration files and instructions during software development. The main function of version control is to track file changes. It faithfully records information such as when and who changed the content of the file. The version number of each file changes. In addition to recording version changes, another important feature of Version Control is parallel development. Software development often involves collaborative operations. Version Control can effectively solve version synchronization and development communication issues between different developers, and improve the efficiency of collaborative development. In parallel development, the most common Bug fixes for different software versions can be effectively solved by means of branch and merge in version control.

Ii. Large software systems
Large integrated system software is a large-scale integrated processing and interpretation system developed to meet the increasing needs of seismic data processing and interpretation for oil exploration and development. It consists of a system platform and application system, the system platform includes a data platform, an interactive framework Platform, a general display tool, and a visual display platform. Build a processing system, an interpretation system, and an integrated application system on this platform. The project is planned to be completed within two years, with more than 4 million program lines and more than 200 developers expected.
Experience shows that the larger the software scale, the lower the productivity. In addition, as the software scale increases, the software development success rate is also lower. In our country, the software industry has not been separated from manual workshops. Such a large-scale software development requires a change in management methods in hands-on workshops, and innovation in Software Configuration Management. Unlike some other software engineering activities, Software Configuration Management Objects (software) configuration items are not only the crystallization of a large amount of manpower and material resources, but also the accumulation of development experience, is the most valuable asset of software organizations.
Software Configuration Management runs through software development activities and covers all stages of development activities. One of its important functions is to comprehensively manage and save various configuration items and monitor the status of each configuration item, submit the Configuration Report to the project manager and project leader. Configuration Management focuses more on tool support. If a good configuration management tool is lacking, it is very difficult to implement configuration management. Software Configuration Management is a very tedious task, and is closely linked with the entire software development activity. In order to keep software development under control, it is necessary to establish a configuration management system that reflects the characteristics of software engineering, and select Software Configuration Management tools according to system requirements.

3. Software Configuration Management Tools
Firefly is an important component in Hansky Software Development Management Suite. Firefly manages program code and related documents for large-scale software development and has the following outstanding features:
1. Local workspace (LoCaL Workspace)
Local Workspace stores files under a branch downloaded from the server. When working, developers must first download the latest modified project files from the server to the Local Workspace, then you can edit, compile, and debug the project file. With Local Workspace, You can synchronize Local and server work files. At the same time, you can compare the differences between local workspace files and server files. During each download and upload, not all project files will be transmitted again, thus improving the work efficiency.
2. Label)
The Label adopts the index technology to improve the operation efficiency. By downloading the Lable function,TestConvenience.
3. Two Development Modes
Firefly supports two parallel/serial development modes, and provides a wizard to test and solve file conflicts, making the team's Development fast, convenient, and efficient.
4. Branch
In Firefly, you can easily create project branches, create branches on the master branch, create branches on the secondary branch, and create branches on the Label; when creating a branch, you can select a part of the parent branch.
When the primary branch is developed, it is possible to develop a Bug Correction Branch at the same time. When the development of the primary branch comes to an end, the Bug Correction Branch is usually merged into the primary branch, for example:

This function establishes and manages the project branch and records the parent-child relationship between branches, avoiding confusion caused by the merger of the two sides, it provides strong support for simultaneous development of multiple software versions.
4. Change set
Firefly regards each workspace check as a change set, and each change set is saved as the history of the project branch. The management personnel can conveniently query the branch history through the WEB interface.
5. atomic transactions
The atomic Transaction concept is used to treat a warehouse operation that contains multiple files as a Transaction. The commit of all files is only successful or unsuccessful, there is no intermediate status (for example, the status of some successful submissions and the other failed submissions ). In this way, exceptions in some operations, such as network interruptions during the submission process, can be handled to ensure the consistency of the software system and prevent other developers from compiling or running the wrong code.
6. Local Records
The Delta operation supports records of local versions. In a work zone, a file is modified, and then a new version can be recorded locally through the Delta operation. After being submitted to the server, other users can access this version.
7. Permission Control
Firefly adopts a permission control system similar to NTFS, which can not only control permissions at the project branch level, but also go deep into the directory/file level for permission setting. By default, file permissions are inherited from directories, you can also manually adjust the permissions of a specific file and subdivide the permissions. This permission system can ensure that all the development work involved in the project is under control, so as to ensure that the project is not disturbed and can be smoothly developed.

4. Establish a Configuration Management System
1. Management Level
Establish our own management system based on the features of the Configuration Management System and the actual situation and needs. In the past, we have successfully developed other large and medium-sized software, but the configuration management system is very imperfect. Some major configuration items (source code and program documentation) rely on manual management. Due to the high mobility of personnel, there is no unified configuration management system, and development activities cannot be effectively controlled and the accumulation of team wealth cannot be formed. Some people are not clear about what configuration management is, and they are not easy to accept about the use of the configuration management system. They think that using the Configuration Management System for program version control limits development activities, this increases the workload for development. In particular, the development of this ultra-large-scale software system requires a tight schedule and heavy tasks. If the improper use of the Configuration Management System Affects the project progress or causes loss of source programs, it will cause huge losses to the development and the consequences will be unimaginable.
To this end, we have selected a solution to reduce management risks from the management level and system integration aspects. First, we have adopted two layers of management level (Figure 1 Layer 2 management level chart ).
2. Create a repository
Based on the two-layer management mode, configuration management and version control are mainly used by project-level and sub-project-level Configuration administrators. In terms of the structure of the integrated system, although the system is huge and contains many subsystems, a system should be integrated eventually, and the management mode determines that version control is in a certain stage of project development, include version control when forming a preliminary system model. Therefore, create a program code library on the Firefly server to store the initial integrated source code. Using such a library structure is conducive to the unified management and control of configuration items, while also improving the compilation and publishing efficiency.

3. permission settings
A code repository is created to facilitate unified management. However, how can developers obtain operation permits for corresponding configuration items (source code) based on the division of tasks, other Source Code cannot be operated. To this end, you can use the file-level access permission settings provided by Firefly to set user permissions for different directories. Only users with read and write permissions for this directory can perform operations on these directories, authorize a file directory for the Subsystem Configuration administrator. 2. Set the src/ApThe directory is authorized to the smq user.

????????
Figure 2 permission settings

4. Branch Division
· Integration Branch
For the purpose of system integration testing, create an Integration Branch and control permissions for different sub-projects of the branch. Each sub-project must include the development results into the branch, any changes made to the configuration items included in the branch must be obtained from the branch first, and then uploaded to the branch. Software integration testing is carried out in this branch. The project-level Configuration Administrator has the management and read/write permissions on the Integration Branch. The sub-project-level Configuration administrator only has the read and write permissions on the specified directory. (Figure 3 branch chart)
· Trunk Branch
The main branch corresponds to the Publishing Branch of the entire software development organization. After the current tasks of each sub-project are completed, the versions that can be released are merged into the branch, which generates the release version. For each release baseline and related information, the version on this branch shall prevail. The project configuration Administrator is responsible for the management of this branch. (Figure 4 branch and tag)
The two types (branches) defined above are centrally managed by the configuration administrator. The corresponding version selection rules are customized based on the actual situation of each development stage to ensure the normal operation of development activities.
For example, the software version 1.0 has been released, and the development team is developing Version 2.0 to add new features to the software. At this time, if the Bug found in Release 1.0 must be corrected, we must create a bugfix branch from Release 1.0 and make necessary corrections to Release the revised version of Release 1.1, the release of this version is not directly related to the development of version 2.0. After the test of Version 2.0 is completed, it must be merged with the bugfix branch of version 1.0 to release version 2.0. In this parallel development process, it is very important to create branches and merge branches.


Figure 3 branch
?
Figure 4 branch and label

· Product baseline
When a Development Milestone ends or a major event occurs, use the Tag feature provided by the Configuration Management System to mark the Integration Branch and trunk branch as the product baseline, you can publish and reproduce versions by TAG (Figure 4 branch and tag ).
· Local workspace corresponding to the Branch
After the configuration items are included in the centralized repository and different branches are created for different purposes, the management layers are initially set, the configuration item is modified by the sub-project configuration administrator in the "check out/check in" mode. The local work zone must be set for the project-level Configuration administrator, any change to the authorized directory must be made in the local workspace.
· Development Workspace
Developers modify and test the configuration items in their own private workspace according to the project requirements. The private workspace can be a CVS version control software workspace or other, your modification activity will not be affected by others, nor will it affect other developers. The modified and tested configuration items will be submitted to the Sub-project configuration administrator, who will upload the configuration to the Integration Branch.
5. gradually improve the branch Creation Method
1. Create a platform branch based on development needs
The Branch determined by the management level is an integrated branch of the main branch. However, as development activities go deeper, the issue of mutual restraint occurs between system platform development and application development, after the platform program is changed, the development of the application will be affected before it is associated with the application. In severe cases, the application development cannot proceed normally. To find the cause, sometimes it takes a day or two to affect the development progress. In view of this situation, a new branch of the system platform is created. The sub-project team of the system platform develops and integrates the branch. After the test is passed, the sub-project team is associated with the application and re-uses the branch merging function, the integration of programs into the Integration Branch not only achieves the purpose of program control, but does not affect the development progress, effectively improving the development efficiency. This branch method shows the efficiency of scientific management.
2. Create a link branch for convenient management
After a period of time, the platform Branch and the integrated branch application encountered a new problem. The platform change must be tested by the application. However, applications on the system platform branch cannot be updated from time to time, unless the application of the Integrated branch is merged into the platform Branch, which brings a lot of trouble to management. To solve this problem, using the link function provided by FireflyV3.0, you can create a link on the system branch to link to the Application Section of the Integration Branch. In this way, the platform branch can obtain the file of the application system change at any time, this greatly facilitates the production of the test version. (Figure 5 link point ).
In the development process, the system branch and application integration branches and linked applications enable the platform development and application development in an orderly manner, eliminating the impact of platform changes on application development and promoting the development progress, it effectively controls platform and application changes and plays a very good role in version management and control during development.


Figure 5 link points

3. Enable trunk branches for the published Product
After the project development stage ends, in the product release stage, in addition to the establishment of the product baseline, the main branch is enabled as the Production Branch, and the program that passes the test on the Integration Branch is enabled, merge to Production Branch and release version in a timely manner. In the early stage of product release, users and trial production have found many problems and frequent program changes. A new version should be integrated every week. To mark versions compiled at different times, apart from version numbers, added the BuildNumber label, as shown in 4.

6. Integrate the software version based on the test phase
Starting from software engineering and product quality assurance,Software TestingUse the third-level Test method:Unit TestIntegration testing and production testing (trial production), because the project development time is tight, the first-level test cannot be completed, and then the next-level test can be started, all of which adopt the rolling development and testing method, in most cases, it is implemented at the same time, which brings great difficulties to version control and integration. Therefore, three integration environments are established. Version control and integration of the three versions are completed through branch, test baseline, and branch merge.
1. Unit Test
Unit Testing is performed by developers on a relatively stable system development platform. a relatively stable system platform must be integrated with a system platform version.
2. Integration Testing
Integration testing is an important stage in which subsystems can be run. Because integrated software is a project developed almost simultaneously between the system platform and application system, the assembly of the system platform, the application system, and the platform and application must be completed in the integration test phase.
3. Production Test
Production Testing requires a stable version after integration testing. This version is marked with tags.
4. Version backtracking
During testing, there are often problems with the new version of the program. You need to go back to the previous version, you can use the version management function provided by the Configuration Management System to easily return to any program version.

VII. Improve and improve the Configuration Management System
There have been some successes and lessons in development management and version control over the past two years. When I first used the configuration management system, I was not familiar with its functions and usage, and encountered many problems, it has had some impact on project development. At one time, the idea of giving up the configuration management tool was first introduced. Finally, with the support of various personnel, the configuration management system can continue to play a role in management.
1. Improve the management level
In the system integration stage, the configuration management system is used for version control, which solves many problems, promotes the development efficiency, and provides a favorable guarantee for the project to be completed on schedule. However, at the management level, the developer's development activities are not under unified control. This method can easily lead to the problem that the modified version is not the final version.
In view of the above phenomena and the usage experience over the past two years, when the project development enters a new stage (Development version 2.0), the version control scope is extended to every developer, make the development activities of each developer always under version control, as shown in management level 6.
2. Add sub-branch
To achieve the above purpose, the sub-system configuration administrator should also be the branch administrator. Therefore, the sub-branch of the application sub-system is created under the Integration Branch, and the sub-branch is managed by the sub-system configuration administrator and Set User Permissions respectively, integrate subsystems, and then merge them into the Integration Branch.
3. Local Workspace
Each developer's workspace uses a local workspace connected to the configuration management system, and development activities are always under control.

8. Experience and experience
Experience in version control and management mainly reflects the following aspects:
1. Create a large-scale software configuration management system centered on "version control"
How to ensure that software development is carried out in an orderly and controlled manner for software development projects such as an unprecedented ultra-large scale and with a development cycle of only two years, it is a key problem to be solved for successful project development.
First, you must develop a software configuration management system that reflects the characteristics of the project to keep development under control. Accordingly, the project team decided to introduce a Configuration Management System for configuration management and version control. This was the first time that a configuration management system was used in such a large-scale software project. Because it was the first time to use the software, based on the past software development experience, combined with the characteristics of the project and the current situation of Software Configuration Management, developed a version control hierarchy suitable for the project (see figure 1 ), branch policy and permission control.
2. Create a configuration management system based on the needs of Software Development
In the project development process, the version control hierarchy and branch policies are improved and practical based on the specific operation practices of each development stage. The establishment of the configuration management system makes the development model of development institutions gradually enter the new era of engineering development management.

IX. Conclusion
After two years of project development practice, many developers have a new understanding of the concept of version control, from the initial resistance to the later active requirements to use the configuration management system, the development atmosphere of software engineering is basically formed.
Over the past two years, with the support of the project leader, subproject leaders at all levels, and project department leaders, the Integrated System Configuration Management System has been developed and improved ever since, the concept of management personnel and developers has been changed, and a version control and management system suitable for large-scale application software project development has been initially formed, accumulating rich technical and management experience. The establishment of the Configuration Management System has enhanced the development team's version control capability for large-scale software development, laid the technical foundation for the sustainable development of the development team, and accumulated software wealth.
Effectively recording and controlling the product version evolution process in the software development process is the basis for improving process control. The effective implementation of the Software Configuration Management System makes software development activities reasonably and orderly, laying the foundation for further improving software project management and development management. Establish development and test controlled databases, determine controlled baselines, and strictly control version management and changes for source programs and runtime environments to ensure product consistency, correctness, and security during the project process, this effectively reduces the development risks and shortens the product development cycle. Therefore, the configuration management system, as one of the main processes of development management, plays an irreplaceable role in the successful development of an integrated system for processing and interpretation.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.