Is there a place for project management in the establishment of a configuration management (CM) infrastructure? If so, then how much project management should be included? A thin but strong layer of PM may be helpful to tie tasks together and keep
project team members in-sync with one another.
Before proceeding, let us consider the value of applying PM to a CM infrastructure effort. Where can solid PM practices help CM? PM can help:
· Achieve common goals
· Organize the work
· Prioritize the work
· Assign work or bring in expertise at the right time
· Improve better forecasting of task and project completion
· Move from an ad hoc approach to a planned approach
· Provide more control over a project
· Separate the analysis and planning phases from the execution phase
· Provide a structured implementation approach
The SCM Level That May Need PM Help
While CM can occur at several levels (e.g., organization, application, and project level), it is the application level where implementing PM practices are most advantageous. The application level is where the CM infrastructure for an application is established. This is not a trivial effort. To implement a CM infrastructure (tool, environment, and procedure) for an application, there will be many tasks and activities that must be managed, many with dependencies, utilizing multiple resources, and with a strong need for communications. Many times, I have seen CM infrastructure tasks get included in a development project plan (e.g., during the lifecycle of a development engineering project). What happens is the CM infrastructure tasks tend to take a lower priority than the development project tasks. This is because the CM infrastructure tasks are not project level tasks focused on the project lifecycle, but are application focused on the application lifecycle. Also, the common goal of a development project is to build a set of engineering delivers for the customers. The common goal for a CM infrastructure effort is to build the CM environment, technology, and procedures for the development or engineering folks.
You must determine if you actually have a project before you apply PM to it. As mentioned, establishing a CM infrastructure is focused on establishing infrastructure for an application. This includes many tasks that have a common goal of establishing a CM infrastructure. Typically, it is done once since you only need to establish a CM infrastructure once for an application. Later on, improvements or automation may occur. Also, while the CM engineer plays a key role in establishing the CM infrastructure, often times other groups are involved such as operations, development, and test.
With all of this in mind, applying PM practices to a CM infrastructure project improves the chances for a more effective SCM implementation. By using PM practices, you can define and achieve common goals, organize and prioritize the work, assign work or bring in expertise at the right time, improve better forecasting of task and project completion, move from an ad hoc approach to a planned approach, provide more control over a project, separate the analysis and planning phases from the execution phase, and ultimately provide a structured implementation approach. CM Tasks in a CM Infrastructure Effort
This section provides an overview of a CM infrastructure project. Every application must have a solid and effective CM technology & process infrastructure. An application may remain viable for a number of years and through many releases with an environment and procedures that can manage various streams of the product. The more effective the application's CM infrastructure, the better the chances for traceable and integrity of the configuration items. The CM tasks at the application level, in most cases, are a one-time-only task (e.g., you only create one Change Control procedure for an application) and specifically not intended to be repeated.
The primary CM roles best suited to implement tasks at this level are the CM manager, CM engineer, and CM coordinators. However, participation and cooperation must occur with the application owner and lead technical personnel. Some of the CM tasks at the application level include (but not limited to):
· CM analysis: This includes tasks to assess of implementation readiness, estimate the effort, analyze the current situation, and perform a risk assessment.
· CM planning: This includes tasks and activities to produce a CM infrastructure implementation project plan, establishing document standards like version numbering, etc., and establishing CM metrics.
· CM tool selection: This includes tasks to evaluate and select the best CM technology for the needs of the application.
· CM strategy and design: This includes tasks to define SCM roles & responsibilities (change control board, release engineer, etc.), tool profile, environment profiles, capacity planning, training and procedure definition, build a master configuration item list, and establish a global distributed CM/development strategy (as needed).
· CM procedural implementation: This includes tasks to establish the CM procedures needed when performing application development (e.g., problem management, change control, identification, version control, merge, build, release, audit, oversight, and report).
· CM technical implementation: This includes tasks to establish the SCM tool environment, restructuring application code, importing the baseline of code, establishing the user workspaces. This may apply to various CM technologies.
· SCM training: This includes the tasks to build user CM training materials and provide training for the users and the CM tool engineers.
· SCM transition: This includes tasks to conduct release readiness to production, prepare for cut-over of the new release, cutting over, and provide intensive support after cut-over.
For more details on CM tasks that help build a CM infrastructure for an application, considering reading Chapter 4 (Establish an SCM Infrastructure for an Application) of the "Software Configuration Management Implementation Roadmap" by Mario E. Moreira, 2004, John Wiley & Sons, Ltd Publishing
So in what areas can PM help CM? PM can help organize the tasks that lead to a common goal (e.g., CM infrastructure). PM can help CM professionals prioritize the work on a project. Many times, a full automated process and environment can wait and instead, first focus on getting the basic technology in place with manual procedures. PM helps organize the resources to bring in expertise at the right time. PM can help forecast the project completion timelines, adding a level of control, and moving the CM effort from an ad hoc approach to a more planned approach. Finally, PM can help break out the CM effort separating the early analysis and planning phase tasks from the execution phase tasks, leading to a more structured implementation approach.
Overall, PM may help CM professionals perform CM planning and execution and ultimately to a more successful implementation and adoption of CM. It is the parachute that keeps the CM effort (and its resources) together.