Home | Company | Clients | Technologies | Employment | Contact | terms of business  
SCM - Source Configuration Management - providing a development environment

The complexity of software development is often underestimated, resulting in inadequate processes that jeapoardise product schedules, writes Matthew Herrmann.

Software development encompasses many activities, including requirements elicitation, database development and conversion of legacy data. While version control for source code is paid at least lip service, other aspects of the process are usually not even considered.

This view is due predominantly to the rise and rise of graphical tools. Most development occurs in integrated development environments, which provide a graphical view of many development artifacts, such as relational database diagrams and documents. While such tools greatly increase productivity, they often store information in binary formats, alienating the developer from a complete understanding of the document that is being created, and limiting prospects of software configuration management. Still worse, the integration of version control into these programs often makes users reluctant to version control anything existing outside the IDE. I am a strong advocate of graphical tools for development, and am a long-term user of Visual Basic, and database modelling applications. However, a key step in using these tools is being able to export and import data via a canonical text format. There is no special magic in the selection of text as a storage format, except that it is well supported by version control systems. Such support makes the following demands a reality:

  • The software should always be built on a machine with identical versions of software installed.
  • Features added to a customer's branch should carry all of the additional deployment requirements and updates to documentation. When this feature becomes part of the mainstream product, all documentation, deployment and computer configuration information should be automatically carried across.
  • If one line of code is changed to correct a bug in software 6 months ago, the only change in the package given to the customer should be that particular line of code.
These demands are not controversial, but can be difficult to attain. For long-term systems development they are worth achieving, as they allow elimination of spurious factors when troubleshooting issues. The utility of custom-built scripts to manage the software process can be illustrated by a number of success stories:
  • An automated deployment system verified that a recent rise in instability in a series of customer computers was unrelated to a software upgrade. The problem was a Windows XP system DLL component that had been modified by other software. This was achievable by tracing all changes to the exact libraries deployed, the software changes and the impact of those modifications.
  • Complete version control of SQL Server schemas and data allowed a preliminary version of the software to be deployed at a customer site while development continued. The changes to the data at the customer site were automatically patched into the development version, along with bug fixes to stored procedures, when it was time to release the development version.
As XML continues to become the standard document storage format, taken up by newer versions of Microsoft products and other vendors, a complete SCM-controlled environment will become easier to attain. Until then, scripts and custom tools will be needed to take bridge the gap between project artifacts and version management systems.

Matthew Herrmann is a director of Far Edge Pty Ltd, and an active member of CVS and SCM-related newsgroups.

< Previous