There are times when Software Configuration Management (SCM) gets implemented and the results may not be as positive as one would hope. There can certainly be many reasons for this, but some times, it comes down to whether or not due diligence was performed during SCM planning, an important criteria for successfully implementing SCM. Other success criteria include: sponsorship (management commitment to the SCM effort); funding (money to purchase appropriate SCM tools and infrastructure); and personnel (persons trained, skilled, and experienced in the areas of SCM tools and process). However, effective SCM Planning should cover sponsor, funding, and personnel tasks if structured appropriately.
Identifying the Best SCM Level
Even with a focus on SCM planning, we should ensure that the SCM effort is occurring at the appropriate level. A way of approaching this is to consider that SCM can benefit a company at different levels. This is what I refer to adding dimensions (or levels) to SCM Planning. By identifying: the primary benefactor of the SCM task or SCM effort; who you have to work with to make a task happen (upper management, application owner/product manager, or project manager/staff), and; the repetition of the task at hand, may help you align the tasks or effort to the appropriate level.
The levels in which SCM can be focused to ensure an increased possibility of success include:
- Organization level - tasks targeted toward upper management that benefit the organization by ensuring that SCM is at a level that can change the culture. These tasks are usually done once , but may need occasional verification.
- Application level - tasks targeted toward the application owner or product manager that benefit the application (typically SCM infrastructure tasks) by adding control mechanisms (technology and procedures) that improve the stability of an application. These tasks are usually done once per application.
- Project level - tasks targeted toward project management (and their staff) that benefit the project by ensuring code and release integrity and provide time-to-market advantages of the project’s delivery (or release). These tasks are done numerous times and should be repeatable.
As a brief case study, by using the above as a guideline, when you want to establish an SCM policy for the company, then the primary benefactor is the organization. Therefore, you know that you should meet with the appropriate level of management to get buy-in and approval for that policy. However, if you want to implement an SCM infrastructure (tool and procedure) for an application, then the benefactor is the application, so therefore, you would want a specific SCM effort to implement the SCM infrastructure. Many times, I’ve seen an SCM infrastructure tasks get included in a development project plan (a.k.a. during the lifecycle of a development project). What happens is the SCM infrastructure tasks impact or takes a lower priority than the development project tasks. This is because the SCM infrastructure tasks are not “project” level tasks focused on the project lifecycle, but are “application” level tasks focused on the application lifecycle.
With all of this in mind, by aligning SCM tasks to the appropriate level, the chances for a more effective SCM implementation may increase.
SCM Tasks Recommended for the Organization Level
This section provides an overview of SCM tasks that have more value at the organizational level. While the SCM tasks listed are in an order, it is not hard-and-fast so feel free to modify (add, change, delete) as appropriate.
The primary SCM role best suited to implement these tasks is the SCM manager (if one exists) or an SCM champion (someone who is versed in the area of SCM and is committed to provide leadership in this area). This person will work primarily with management to complete the tasks and should be prepared to ensure the meetings with management are as effective and productive as possible. The SCM tasks at the organization level may include (but not limited too):
- Raising Awareness of Software Configuration Management – establish a common understanding of SCM within the organization and to ensure people are aware of the effort being proposed.
- Determining Management Commitment & Support - determine what level of management commitment exists.
- Establishing an SCM group or Function - establish dedicated personal to improve