the code, and setting up user workspaces; a CM test phase to ensure all processes are working as expected (checkout/checkin, build, migrate, branch, etc.); and a CM release phase consisting of just-in-time training, cutting over to the CM infrastructure, and providing rigorous cut-over CM support. The book, “Software Configuration Management Implementation Roadmap” by Mario E. Moreira provides detailed steps for each phase and templates to more efficiently complete these steps.
Manage/Improve the CM Tool
This includes the responsibility of maintaining and upgrading the CM tool on the server(s) and clients, managing the licenses, and establishing some level of automation such as writing triggers. In addition, it may include integrating the CM technology with other tools such as a development technology IDEs and/or a defect tracking technology.
Manage/Troubleshoot the CM Environment
This includes the continuous responsibility of setting up new product repositories (and importing code into it), helping the users set up workspaces, perform regular troubleshooting for users, training the users in using the CM technology, environment and processes.
This includes the responsibility of continuous building of the product release, ensuring the compiler versions are up-to-date, working with a build technology (either inside or outside of the CM technology), establishing a build process, and the ability to improve the build process.
Package/Migrate the Release
This includes the responsibility of capturing all of the pieces that are needed to establish a running system (a.k.a., release package that may be comprised of deliverables from the builds, items needed from databases, configuration instructions) and the tasks of preparing the preliminary release notes, and migrating the release to test and staging areas.
Install the release
This includes the responsibility of taking the release package and installing it into the production environment (onto a production server or onto production media).This will include validating the release once in production with appropriate smoke tests (ability to install, run, and execute minimal functional tests).This may include preparing the final release notes and notification of release completion.
Aligning CM Responsibilities to CM Roles
With an understanding of the key CM responsibilities in the development-to-production slice of the project lifecycle, we can look at what are the common CM titles or roles that we see in the workplace. Typically, we see roles like CM tool administrator (e.g., ClearCase administrator, AccuRev administrator, etc.), build engineer, release engineer, etc. How would they align with the responsibilities mentioned above? Below is a “CM Roles to Responsibilities Matrix” that provides a simplistic perspective on how certain CM roles would align with the responsibilities mentioned above.
Figure 1: CM Roles to Responsibilities Matrix