Team Development Overview |
|
---|---|
Version Control and Software Configuration Management: Past, Present, and Future |
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:
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.
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.
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:
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.