SCM Labs, Inc.

What the Heck is SCM?SearchSCM Labs Home

SCM Project Roles Definition Document
Table of Contents
Purpose
This document describes the roles necessary to implement a Software Configuration Management (SCM) system in a corporate development environment. It discusses these roles during three phases of implementation the SCM implementation phase, during which the SCM system infrastructure is put into place; the project implementation phase, during which a particular development project is migrated to the SCM system; and finally, the ongoing phase that begins when the SCM system is in place and one or more development projects is under SCM control.

This document is written in such a fashion that, while it defines project "team members", it is really defining the roles that must exist within the project team. This may seem like an insignificant distinction, but it will be an important distinction to make when the time comes to select the project team, as it's possible that a single employee will fill multiple project roles, or a single project role may be filled by multiple employees.

[Back to Top]

SCM Project Team
Implementing SCM in a development organization requires installing a variety of software, policies, and procedures. Once the SCM infrastructure is in place, each software development project within the organization must be integrated into it. Finally, with all the existing development projects under SCM control, there are ongoing SCM tasks associated with administration, training, and new development. This section discusses the roles necessary for each of these three phases: SCM implementation roles, project implementation roles, and ongoing SCM support.
 
Management
Corporate Information Technology management must be involved to direct the SCM implementation project, and to ensure that the system is consistent with the goals of the organization.
SCM Administrator
During the process of putting the overall SCM system into place, the SCM administrator is essentially the "project lead", analyzing, designing, and directing the implementation of SCM system capabilities.
  • Audit existing development practices, environments, and tools.
  • Install and administer SCM-related software.
  • Create SCM project documentation.
  • Research development tools, and document their use within the SCM system.
  • Create policies, procedures, and standards, addressing the following:
    • Security
    • Directory structures
    • Coding standards
    • Releases
    • Promotions
    • Work flow
    • Bug tracking
    • Installations
The SCM administrator must possess a diverse technical background, that should include extensive development experience. Specifically, the SCM administrator should have a sound knowledge of the following:
  • Version control
  • Build control
  • Software Development Life Cycle
  • Operating systems
  • Networking
  • Databases
Systems Administrator
Implementing an SCM system requires assistance in many technical and system-related areas, including:
  • Man pages. On UNIX systems, SCM software will oftentimes take advantage of 'man' - UNIX's online help system. While the SCM administrator will generally determine how the SCM-related documentation will be connected to the 'man' facility, a systems administrator may be required for configuration and troubleshooting tasks.
  • Networking. The SCM system will provide a single location for the SCM version control repository as well as third party tools and dependent applications. With many developers accessing this single location, there are, obviously, some networking issues. For example, how can the repository be accessed from multiple machines running multiple operating systems? With the mix of UNIX and Microsoft Windows-based server and client operating systems existing nowadays, this problem can be solved using network tools like NFS, SAMBA, and others. UNIX allows file systems to be mounted, and therefore accessible, by other UNIX machines via NFS. SAMBA and other SMB servers allow Microsoft Windows-based servers or clients to mount UNIX file systems. The systems administrator must have the capability of configuring and maintaining these facilities as required by the needs of the SCM system.
  • Users and Groups. Many security-related features can be achieved via proper configuration of UNIX users and groups. The systems administrator must have the capability to create, delete, assign, and modify user and group configurations.
  • Login scripts and profiles. The systems administrator may need to perform modifications to users' system logon scripts and profiles.
  • Subject matter expert. It may be necessary for the systems administrator to work closely with the SCM administrator to provide information regarding systems, networking, environment in general.
Database Administrator
In a client-server database environment, a database administrator is needed to provide the following:
  • Database creation and maintenance. A database administrator may need to be involved to create or modify databases, schemas, database security, and database roles.
  • SCM database. The SCM project may implement an SCM database to maintain miscellaneous data mined from the repository on a regular, ongoing basis. With most of today's commercial CM tools, a database is already an integral piece of the suite for that exact reason. A database administrator will be needed to create and support those SCM databases.
  • Subject matter expert. The database administrator will serve as a subject matter expert on miscellaneous database issues.
Development Tool Specialists
In a corporate development organization, there are invariably a multitude of development tools in use. The SCM administrator must ultimately become the recognized expert on each development tool's use in an SCM context. In order to obtain the degree of understanding necessary to interpret a particular tool's SCM-related requirements, SCM administrator may need to draw on the knowledge inherent amongst the development group. Therefore, it is often times necessary to assign a tool expert (from the development group) for each development tool.
Webmaster
The SCM project will utilize the corporate intranet as the central location for SCM related documentation, including policies and procedures, coding standards, reporting, etc. In order to achieve this, someone in a "webmaster" role must be available to provide the following:
  • Provide link for SCM web-page. Obviously, the webmaster will be responsible for the overall administration of the corporate intranet in general, including maintenance of the intranet home page. From this page, we will need the webmaster to supply a link to the SCM web page.
  • Subject matter expert. The webmaster will be needed to act as an SCM information resource regarding things of an intranet nature.
[Back to Top]
Project Implementation Roles
The following enumerates the roles necessary to adapt each software development project to the SCM system:
SCM Administrator
The SCM administrator will need to determine project requirements and configure version control for the project accordingly. In addition, the SCM administrator must serve as the "project manager" for the task of implementing SCM for the project, coordinating the order of the tasks and the individuals involved. The SCM administrator will also be responsible for determining resource requirements (e.g. diskspace) necessary to support individual projects.
Development Manager
The development manager supplies the SCM administrator with project-related information, identifying the developers on the project, and designating a project lead for SCM related needs. The development manager for the project must also be involved to coordinate SCM related activities with the ongoing development activities of the project, helping to ensure a smooth implementation.
Project Lead
The project lead will serve as the point of contact for the SCM administrator on project-related issues, helping to determine project-specific requirements, and answering questions about development tools and environments.
Developers
One or more developers will be required for each project to be placed under SCM control. While the project may consist of only a single developer who also fills a project lead role (or a project lead filling a developer role), the responsibilities include the following:
  • Source code modifications. Developers will be responsible for making any source code modifications necessary to support changes in security requirements, directory structures, and coding standards.
System Administrator
Depending on the project, and the changes it must undergo in order to be integrated into the SCM system, a system administrator may need to be involved to create or modify directories, permissions, groups, or users.
Database Administrator
A database administrator may need to be involved to create or modify databases, schemas, database security, and database roles.

[Back to Top]

Ongoing Support Roles
With the SCM system implemented, and one or more projects placed under SCM control, ongoing support begins. The necessary roles, and their associated responsibilities are as follows:
SCM Administrator
Ongoing support of the SCM system requires the following of the SCM administrator:
  • SCM system administration. SCM administration includes assigning and removing CM tool licenses as developer turnover occurs.
  • User support and troubleshooting. The SCM administrator must support day to day user activities, troubleshooting and repairing problems as they occur.
  • Create and maintain projects. New development projects will occur that need to be created in the SCM system. Changing development requirements associated with a project - for example new developers, or lines of development - will require the SCM administrator to perform project maintenance on an ongoing basis.
  • Perform official project builds. When development is ready to "cut a new release", SCM administration must extract and build the release, checking the targets back into the project.
  • Perform "logical" promotions. When development promotes a release to testing, or testing to production, it is an SCM administration function to perform the "logical" promotion of the software release within the version control archives.
  • Research and document new development tools. As it is an SCM administration function to research and document existing development tools, it is also an SCM administration task to research and document any new development tools introduced into the development organization.
  • Documentation. Virtually all SCM documents should be considered "living" documents, requiring changes as hardware and software technologies change. It is an SCM administration function to be cognoscente of any changes that may impact SCM documentation, and to update any affected documents accordingly.
  • Reporting. In addition to standard reports generated on a regular basis, the SCM system will support ad hoc reporting to provide specific information to users, project leads, and management. The SCM administrator will need to maintain the standard reports and handle any ad hoc requests.
  • Training. As employees are hired, or require refresher courses, the SCM administrator will provide formal and informal training.
Systems Administrator
From a system administration standpoint there will always be a need to maintain system users, groups, security, login scripts, profiles, changing directory structures, and other system related issues.
Database Administrator
On an ongoing basis, a database administrator is required for the following:
  • SCM database. Ongoing administration of the SCM database will be required.
  • Administer development, testing, and production databases. Coordinate the creation, upgrade, and maintenance of multiple database instances and schemas used by development, testing, and production.
Production Control
Once a project has been placed under SCM control and releases of that project have been promoted to Production, Production Control will be responsible for installing those releases into Production environments. As a result, an individual is needed to extract releases from the SCM system and install them in production locations. This is very much a system administrator type of function, requiring sufficient security privileges to remove and install files in a production environment. In an environment where software is being developed for multiple platforms, this may require knowledge of many operating systems and tools. For example, in a Microsoft Windows environment, does a particular application get installed on a network server or on multiple client PC's? In the latter case, such an installation might be achieved with an automated tool like Systems Management Server ("pushing" the software out to the clients), or via some other means. Regardless, the production control individual must possess the capability to perform many types of installations, possibly using many types of tools.

[Back to Top]

Copyright 2001 SCM Labs, Inc. All rights reserved.