SCM Best Practices: Determining Which Practices Are Best for You

[article]
Summary:
What's Best? What are industry best practices for Software Configuration Management (SCM)? Which best practices are best for your project and for your organization? How should these best practices be applied or implemented to solve your SCM problem domain? Is your project or organization prepared to use SCM best practices? Let's examine a collection of SCM best practices.

What's Best?  What are industry best practices for Software Configuration Management (SCM)? Which best practices are best for your project and for your organization? How should these best practices be applied or implemented to solve your SCM problem domain? Is your project or organization prepared to use SCM best practices? Are there good best practices and not-so-good best practices, or are some SCM best practices better than others? What should you know before applying SCM best practices to your project or to your organization? Let's examine a collection of SCM best practices.

Where's the Value?
I have always believed in the installation of SCM as a critical and much-needed process during early stages of the development or product lifecycles. That is, recognizing its

What's Best? What are industry best practices for Software Configuration Management (SCM)? Which best practices are best for your project - for your organization? How should these best practices be applied or implemented to solve your SCM problem domain? Is your project or organization prepared to use SCM best practices? Are there good best practices and not-so-good best practices, or are some SCM best practices better than others? What should you know before applying SCM best practices to your project or to your organization? Let's examine a collection of SCM best practices.

value and importance during the early stages of planning when the project manager is developing the project plan. A good understanding of what is to be built, the requisite resources, and the infrastructure needed to support product development is a good start in such planning. Knowing when software baselines are to be established and where they will be located are very important. Insight of the skills needed to support the development environment and the resources that will be required during each phase are key. The project must know how (and where) all product components and their relationships to other products will be managed and controlled. A change control authority must be identified. Responsibilities and roles of the SCM group must be defined and assigned. These are some of the activities and tasks that must be identified upstream - before any requirements are gathered, managed, defined, and developed - before design activities - and before any development work begins.

Examples of SCM Best Practices

So, what are these "SCM best practices?" Let's examine some institutionalized, recognized, and proven best practices in use.

According to the AIRLIE Software Council [1]:

  • Make CM everyone's job
  • Create an environment and engineering process that enables CM
  • Define and document the CM/engineering process, then select the tool set (automation) to support the process
  • The CM staffing should consist of individuals with technical expertise to support the development and maintenance of the product
  • The CM plan and procedures need to be developed and documented in the same way a software development plan (or project plan) is created at the initial stages of a project
  • Identify and store work products in a secure repository
  • Control and audit changes to work products
  • Organize work products into versioned components
  • Create baselines at project milestones
  • Record and track requests for change
  • Organize and integrate consistent sets of versions using activities
  • Maintain stable and consistent workspaces
  • Support concurrent changes to work products and components
  • Integrate early and often
  • Ensure reproducibility of software builds
  • Workspaces (where developers build, test, and debug)
  • Don't share workspaces
  • Don't work outside of managed workspaces
  • Don't use jello views
  • Stay in sync with the codeline
  • Check in often
  • Codelines (the canonical sets of source files)
  • Give each codeline a policy
  • Give each codeline an owner
  • Have a mainline
  • Branches (variants of the codeline)

Pages

About the author

TechWell Contributor's picture TechWell Contributor

The opinions and positions expressed within these guest posts are those of the author alone and do not represent those of the TechWell Community Sites. Guest authors represent that they have the right to distribute this content and that such content is not violating the legal rights of others. If you would like to contribute content to a TechWell Community Site, email editors@techwell.com.

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!