Although versioning and configuration management are accepted as basic requirements of an SCM, there are so many requirements for Software Configuration Systems that should be considered by a CM user. This paper describes a set of ideal requirements for an SCM system that can effectively enhance the software development cycle.
Selecting an SCM tool is not a trivial exercise in most cases. It requires thought and planning, and preferably sufficient time to analyze the requirements and evaluate a tool based on the requirements. This article describes a set of ideal requirements for a SCM system.
1. Version Control
A version control system must be capable of managing the evolution of a single component along multiple and simultaneous development paths.
Simultaneous development by many people demand the following:
- Sophisticated version naming &
- Automatic merge tools
Most importantly, because the software development environment consists of much more than source code, the version control facility must provide the ability to handle versions of many types of development objects–source, binaries, documentation, project plans, spreadsheets, pdf files etc. as well as the directories that contain them. The system must also be able to provide support for additional types of files.
2. Complete transparency
Users want to preserve their existing investments in their data and their tools. A new SCM system must be able to import the version history and auxiliary information from the existing system and must allow access to versions kept in the new system by users still using the old. Lastly, the core CM system must run on Unix platforms and have complete interoperation among them.
3. Build auditing
The configuration management system must provide the user with the ability to record every detail of components used in a software build, and the ability to completely recreate the build environment. The system must be able to maintain and declare most build dependencies in order to improve build accuracy and development productivity. For this, the system must be capable of doing file-system level auditing. This allows the system to capture and record complete configuration information for every build. This is the only way of supporting complete Rebuildability and maintainability.
Guaranteed rebuild ability is required for the maintenance of software systems. An engineer must be able to assume that the original product can be faithfully reproduced so that changes can be applied to the base version.
5. System build support
The SCM system is responsible for identifying, reproducing, and operating on the components of a software system to form a consistent end product. In order to be acceptable for use with complex product environments, the build facility should maximize build speed to facilitate the iterative development cycle and work with the core CM system to ensure rebuildability.
6. Process Management
Process management is defined in terms of milestones, rules and responsibilities of the software development process that ensure that changes introduced to the software are carefully guided through a software development lifecycle with the highest possible level of quality.
Users of a SCM system must have the ability to tune the tool to their environment and their style of developing software. They require process control functions that enable them to:
- Control who can make changes.
- Define and enforce process stages and the transitions between them.
- Define and enforce a controlled way of development with clear responsibilities and high level of visibility. With the existence of software lifecycles, one can be sure that the development of an important piece of software will go through the desired stages (i.e. testing, quality assurance, etc.) before it is released for use in operation.
The configuration management system must provide the ability to provide reports based on the following:
Set of Modified/Deleted files between two releases
These reports are very vital for status accounting in Configuration Management.
The CM system records the relationships among objects that are used explicitly to build a piece of software. However, relating a product's requirements not just to the code modules that implement them, but also to the routines that test them and the documentation that describe them are all necessary to support requirements traceability. Linking of the objects in the software development environment, and the means to browse those links is a key capability of a fully functional SCM system.
9. Support for distributed development
A significant segment of today's software industry is moving towards a model of project organization that involves the use of multiple engineers at multiple sites working on a single software system or set of highly interdependent software systems. An example of this kind is the trend of dispersed development although the system is the same. Regardless of the team size and geographical distribution, software development teams need a powerful CM solution that allows them to work together efficiently and productively. These are supported by variety of techniques including LAN or WAN, Internet, FTP etc.
Security is an important requirement in SCM. The CM tool should enable the users to set access rights and privilege sets for each user in the Project.
Other requirements/features that need to be taken into consideration are:
- Platforms that the CM Tool supports
- Performance X
- Reliability and Support
- Transaction based updates
- Integration with Microsoft Developer Studio or other IDEs
- Integration with other tools (e.g. defect tracking)
- Scriptable to enable automation of tasks
- Effective front end GUI.
- Search & Retrieve feature
- Keyword substitution
Many software companies today seek a CM tool, which address the above-mentioned requirements, today. These tools eliminate a lot of manual administrative error-prone tasks and permit procedural flexibility and adapt to changes in the composition of the software organization and its specific process, policy and methodology.
Effective Software Configuration Management, Bob Ventimiglia.
Configuration Management tools–CMTF