Team Development Overview

Version Control and Software Configuration Management:
Past, Present, and Future

Contents

Introduction
Team Development
A Bit of History
Architectural Evolution
First Generation - File Based
Second Generation - Project Repository Based
Third Generation - File Transparency Based
Approaches to Version Control and Software Configuration Management
Flexibility - For Software Engineers
Control - For Management
A Peek into the Future
Components of Team Development
Version Control
Workspace and Release Management
Build Management
Process Management
User Interfaces
Architecture
Integrations and Tool Interfaces
Conclusions


Introduction

Version Control (VC) and Software Configuration Management (SCM) have greatly evolved in the last twenty years. Tools have gone from file oriented versioning utilities to full blown repository-based systems that manage projects and support team development environments, even across geographic locations.

This document presents a brief overview of team development, the evolution of this industry, and the trends that are going to shape the next generation of products. It also includes a list of typical product features. Complementary to this document are a succinct guide on How to Select the Right Team Development Product, and specific product reviews that discuss leading Version Control and Software Configuration Management tools.


Team Development

The terms Version Control and Software Configuration Management describe some of the mechanisms employed by tools that manage software applications. Team Development indicates the end result that these tools should help us accomplish. Just controlling software versions and configurations is no longer enough. Today we are dealing with: Combine this with: ...and the old days of monolithic applications for a single host look like a Hawaiian vacation. What is required today is a way of managing the complexity of software projects while empowering team members to work effectively together (as opposed to becoming very skilled at circumventing the system).

In a nutshell, a team development solution should:


A Bit of History

It's not easy to classify VC and SCM tools. Most vendors claim very similar sets of functionality, therefore we find it easier to look at the evolution of this industry not in terms of supported features, but in terms of underlying architecture and methodological orientation. First we are going to outline the architectural evolution of the industry, then we are going to group tools by their approach to VC and SCM.


Architectural Evolution

First Generation - File Based

First generation tools provide what is commonly known as Version Control. These are tools that are file based in that they store changes to individual files in file archives. They support a check-out/check-in model, and provide branching. Archives store the contents and the meta data (user name, labels, comments, etc.) for each file version.

Public domain SCCS and RCS are the "grandparents" of version control. Many other tools evolved from their model, and many tools in different generations still use them as their file archiving mechanism. CVS is a public domain tool that enhances RCS.

First generation commercial products include Sun Microsystems TeamWare that is basically a souped up SCCS with a GUI. Intersolv PVCS and MKS Source Integrity are also commercial products that have added, on top of file archives, a GUI, a project meta data layer, a promotion model, and additional functionality.


Second Generation - Project Repository Based

Tools in the second generation are easy to identify because they store all project and file metadata in a database (repository) that is separate from their file archives. This architecture shifts the focus from the file level to the project level and provides a central view of all project information. This results in better support for parallel development and team coordination, and provides the necessary infrastructure to implement process management.

Second generation products cover a wide range of functionality: from the more simplistic, but very intuitive, Microsoft Visual SourceSafe; to the fast command line P3 tool; to the change request based IBM CMVC; to the change-set based TrueSoftware Aide-de-Camp/Pro; to the process oriented Platinum CCC, and SQL Software PCMS.

Architecture Tools
1st Generation File Based SCCS, RCS, CVS
TeamWare, PVCS,
Source Integrity
2nd Generation Project Repository Based AdC/Pro, CCC
CMVC, P3, PCMS,
SourceSafe
3rd Generation File Transparency
with Project Repository
ClearCase, Continuus/CM


Third Generation - File Transparency Based

A challenge of second generation tools is that controlled files cannot be accessed directly from other tools unless copies are placed into working directories from the repository. This can result in the proliferation of local copies and the temptation to overwrite the repository with changes made in the local workarea, potentially undoing changes made in the meantime by other users. To address this issue come third generation tools that add "file transparency" while retaining the benefits of a project repository.

Two third generation products are Atria ClearCase and Continuus/CM from Continuus. ClearCase accomplishes file transparency by means of a proprietary file system (MVFS) that intercepts system file access calls (open(), read(), etc.) and routes them to its repository. Continuus/CM provides direct file access by creating symbolic links from user workareas to its cache directories. Another unique aspect of third generation products is that the view of an application that users see is defined by configuration specs that automatically select the applicable file versions to accomplish things like "Give me release 5 of this product for Sun Solaris, plus all the changes made to fix bugs 678, 679, and 681 that have been approved by QA."


Approaches to Version Control and Software Configuration Management

Here we group tools by their approach to version control and configuration management. Keep in mind that no tool fits perfectly in just one category, and that usually elements of different categories are mixed in each product. However, understanding the primary approach helps match products to the culture of an organization. We see two primary approaches in this industry today: flexibility and control.


Flexibility - For Software Engineers

Tools in this class put a stronger emphasis on catering to the needs of software engineers.


Control - For Management

Management needs for formalized procedures are at the forefront in these products.

A Peek into the Future

What are the current trends and what can we expect next? The last few years have seen a strong push to integrate configuration management with problem tracking. This has helped organizations close the gap between the recording and tracking of problems and their actual resolution. The metrics that become available from this type of integration go a long way in helping organizations improve the quality of their software and the effectiveness of their software processes.

The other new threshold that has been crossed is that of supporting teams distributed across different sites. This effort is still in its infancy, but is showing promising results with products like ClearCase and Continuus/CM. We expect this area to mature further in the next few years with complete wrappers of automation being built around what are now rudimentary mechanisms.

On another front, the mainstreaming of client/server applications and rapid application development tools, is pushing both RAD vendors and SCM vendors to provide good team development solutions for these environments that go beyond basic version control and manage projects and file sharing between applications.

And who can ignore the Internet and intranets? How is the "great equalizer" going to impact team development? We certainly hope to see soon Web interfaces to existing SCM products. But more importantly, the Internet is shifting the emphasis from files and projects, to information and access. Therefore, we are tempted to predict that mechanisms to access project file over the Internet will soon make virtual teams a very workable reality. Having done that, these virtual teams will need to find an Internet equivalent to the brainstorming sessions that take place in front of the coffee maker, while grinding and brewing dark espresso beans.

Sounds like groupware, doesn't it? Team members will want to see what tasks are active for what release, and be able to browse project notes to understand the impact of another task on their own code before it becomes an integration nightmare. And when a customer/user reports a problem, wouldn't it be nice to be able to look up the project notes to find out what tasks affected the area of functionality in question, get down to the individual problem reports or enhancements, and even the specific files. And doing this from a UK office, accessing project information in the US while everybody there is asleep. If only browsers could support "sniff" files, we could even include the smell of brewing coffee in the project notes...

Will SCM vendors interface with groupware tools? Will they build groupware functionality into their tool? We will probably see a mixture of both. If we really wanted to get esoteric, we could also predict that the fourth generation of SCM products will support truly fine grained objects, and will rely on embedded versioning services from object oriented operating and file systems. But this discussion requires too much coffee.


Components of Team Development

In this section we list the building blocks of functionality that should comprise team development solutions: This is intended as a pool of information against which to match your requirements to determine what is relevant to you. It can also be used as a baseline against which to compare individual tools to determine how complete their solution is and to assess their specific way of implementing functionality. Although all these features may look reasonable and necessary, no single tool includes them all, or implements them in a way that you would necessarily deem satisfactory. It is therefore important that you determine a scale of priorities in order to find the best possible match that you can live with.


Version Control

Version control deals with organizing projects and project components, tracking changes, and supporting parallel development.


Workspace and Release Management

Workspace and Release Management provides a working environment in which different team members can access and modify the specific version of project components they need.


Build Management

Build management automates the creation of deliverable products. This may not be a consideration when working with development tools that include and require their own build utility, but is an important issue when working with more traditional programming languages such as C, C++, Fortran, etc.


Process Management

More formal organizations require the definition and enforcement of policies and procedures to bring discipline and standardization to their software development process.


User Interfaces

How users and other applications interface with the product.


Architecture

How the product fits in your computing environment.


Integrations and Tool Interfaces

Team development is not a stand-alone function. A good solution must work well with the other software development and maintenance tools that an organization employs.


Conclusions

The rapid changes in computing and application architecture, and the wide-spread development of applications at the departmental level are forcing a new level of awareness of team development in software organizations, and are pushing vendors to make their team development products more sophisticated and yet easier to use.

Version control and configuration management tools cover a wide range of approaches and functionality. A third generation tool is not necessarily "better" than a first generation tool. It all depends on which characteristics best match your needs and environment. Buying the most advanced product could be a mistake if you are only trying to handle a very simple situation. Therefore, the issue is not which product is best, but which one is the best match for you.

In closing, we want to acknowledge the pioneering work of dedicated professionals and vendors that through the last twenty years have succeeded in making software configuration management and team development a well respected and valued discipline.



Alex Lobba
tel. 805/563-1369 - fax 805/563-6021
E-Mail: alobba@silcom.com

Last Updated: 05/17/96 - Copyright ©1996 Alex Lobba