Is Configuration Management (CM) integrated into your development process? Do you have a good way to assess this? Do you have a process to improve the situation? Development without CM will eventually lead to lost code, delays in release schedules, and regression in functionality (amongst other negative impacts). One could say if the "Tower of Development" does not have CM bands to keep it together, this structure becomes the Tower of Babel, doomed to fail. But enough depressing talk. What can CM professionals do to make the development world a better place? How can CM professionals make CM improvement efforts collaborative so that development team feels involved, engaged, and heard?
Guidance is on the way! The purpose of this article is less a narrative of CM and the development process, and more of a set of steps that can help assess the level of CM in the current development process (and environment), then identify ways to improve the situation.
Step #1 - Assessment
Like most improvement efforts, the first step in the process should be assessing the current state of CM within the development process. This provides valuable information about what is occurring within the development process from a CM perspective. While these questions focus on the key areas of CM, feel free to tailor these questions. Consider moving these questions into a spreadsheet and adding an "answers" column where you can put what you found as well as any thoughts for improvement and a "rating" column where you provide a score as to areas that are in better shape and the areas that need improvement (this can be helpful in sorting later on).
The questionnaire is divided into sections. Again, feel free to tailor.
A. CM Plan
- Are CM Roles & Responsibilities documented and communicated?
- Are CM Procedures placed in a common repository, communicated to developers, and easily viewed/retrieved?
- Do CM tasks live in the Project Plan?
B. CM Process
- Is there a Change Control process defined for managing changes to the following baselines: (a) requirements, (b) project plan, and (c) production?
- Is there a Development/CM process currently defined and followed?
- Is there a Checkout/Checkin Procedure defined and followed?
- Is there a Branching/Merging Procedure defined and followed?
- Is there a Build Procedure defined and followed?
- Is there a Release Procedure defined and followed?
C. CM and other Tools
- Does the project currently use a CM Tool for managing: (a) code, (b) 3rd party tools needed for build time, (c) documents, and (d) test cases
- Are there any integrations between CM tool and Development tool(s)
D. Development and Build
- How does the code get baselined to establish a new development stream/branch?
- How often do builds occur?
- Who performs the official builds?
- Are builds automated?
- Is there a build cycle defined?
- What happens to the output of a build?
- Does parallel development occur?
- Is branching currently setup? If so, what is the working model?
E. Test and Production
- How is code moved to Test?
- Who performs the code migration to Test?
- Does a Release Schedule/Plan exist?
- Are Release Notes prepared?
- Is there a Release Readiness meeting in place?
- Who performs the code migration to Production?
- Is there a Backout and Recovery Procedure?
- Is a Release naming convention defined?
- Are there release label naming conventions established?
F. Audits and Status Reporting
- Do SCM process audits occur?
- Do SCM baseline audits occur?
- Is there regular SCM status reporting?
- Are SCM risks being identified?
Step #2 - Results
Once you have completed the questionnaire, the second step is to review the answers to the questions and sort them by the areas