Core Software Technologies

Telephone +1-507-260-2020
sales@corestech.com

 

Version Control Software


Choose

Managing your source code is at the heart of your development process. Everything you do as a development team is either controlled by or modeled in your source control system. Whatever development methodology you use, whether it is a traditional waterfall, a short-cycle Agile or something in between, your source control software must support that process.

 

Development Process Demands

 

Your development process places many demands on your source control system. Short-cycle methodologies in common use today require even more from the source control system in order to manage the larger volume of activity they generate. Implementing processes like Scrum and CMMI require greater and more accurate control over your development activities. If your source control system does not fully support the development process you are using that will lead to unnecessary downtime, development delays, decreased quality and productivity, and schedule overruns. Trying to get past level 2 of the CMMI model using the wrong source control system is effectively impossible.

Software engineering departments often complain that their process is getting increasingly complex and more difficult to manage, and things seem to be getting more and more chaotic. What they often don't realize is that their source control system is the root of their problem.

 

Version Control vs. Software Configuration Management

 

Not all source control systems are created equal. There are two general groups of source control systems; version control systems, and software configuration management (SCM) systems. Version control systems provide basic file-level tracking of changes and little else. Microsoft Visual Source Safe, CVS, and Subversion are examples of version control systems. These systems served well years ago when the management of the source code was much simpler. Back then longer development cycles were used, the development environments were less complex, the volume of data generated was less, and the implementation of the development process was often more disciplined.

Today, development involves shorter cycles with more data contribution and merging between branches. The data being stored in the source control system is more heterogeneous and there is more of it. Also the fast-paced and often chaotic development environment today is not as disciplined as it used to be. Most developers today simply are not well versed in source control methodologies and best practices, and financial, scheduling, and other pressures sometimes make following best practices difficult. Simple file-oriented version control systems no longer provide the tools necessary to manage today's development processes.

Software configuration management systems go far beyond the capabilities of version control systems. They provide a wealth of tools to capture, analyze, and manage all the development activity across the entire enterprise. They also include features like advanced branch management, integrated merge facilities, and productivity features to aid operational tasks. These systems shift their focus from the file-orientation that simple version control systems use to a project-oriented view of the data. This allows the team to model their processes and manage their activities at a high level, which must be done to properly control development activities across the enterprise and understand the big picture. SCM systems take care of all the housekeeping and provide features that ensure best practices are followed even when some team members may not be familiar with SCM practices or disciplined in their use.

 

SCM Software Features

 

In order for software companies to be competitive today they must take advantage of what SCM software can give them. Here are some of the features that your SCM system should have:

 

  • Project level orientation rather than file level orientation

  • Flexible and robust branching that supports all branching strategies

  • Tightly integrated merge facility

  • Support for sandbox development using private branches or workspaces

  • Ability to track changes across the enterprise

  • Ability to drill down into the change data from the project level all the way down to a single line of code

  • Ability to categorize, track, and interrogate change data in user-defined groups

  • Features to properly manage the contribution of content between branches

  • Features that support and facilitate all development methodologies including waterfall and Agile

  • Features that provide a framework to ensure best practices are followed

  • Reporting capabilities to allow team members to immediately know the state of their development project
    and what changes are contained in each branch


  • Workflow integration

  • Remote user support

  • High performance and scalable even over a WAN without the need for additional hardware or software

  • User, database, and project-level security that is easy to set up and maintain

  • Easy to install and manage with modern GUI (no command line interfaces)

There are many features that a good SCM system will have that are not listed here. The source control systems that are available today offer a wide variety of features and claims. Sometimes it is hard to keep focused on the big picture when evaluating source control software. These are just a few things you should keep in mind to make sure you make the right choice in your evaluation.

 

Source Control Software Today

 

There are two categories of source control software available today; open source and commercial. There are no open source SCM systems available. All open source systems are file-oriented version control systems that have essentially the same capabilities that they had in the late 1980's. The only SCM solutions available today are commercial solutions.

Choose

There are different levels of capability in commercial systems too. Most provide the basic requirements of a source control system, but some are missing essential features or take the wrong approach to source code management. Those systems may not be able to support your organization's workflow, or they may make it easy to get yourself into trouble. In some cases the commercial systems are not much better than open source systems, and some are expensive and do not provide a good value for the additional expense.

Just because a source control package is commercially produced does not mean it is a robust SCM system. You must evaluate the available systems in light of what your needs are now and what you expect them to be in the future. Using the wrong source control system can have a profoundly negative impact on your development efforts. Development organizations today simply cannot afford to base their operations around a source control system that doesn't support their needs. If you are using a file-oriented version control system then you know you need to step up to an SCM system. If you are currently using an SCM system, you should review what you have to make sure it still supports your needs. Selecting the right source control system is critical to your success.