Why Software Configuration Management?
P.G. Daly
3/12/2003
Printer Friendly Version
Keeping track of your progress and history for applications you develop can be a daunting task, even for a small project. Many iterations of development and the rapid "Internet time" pace of the lifecycle makes audit controls even more crucial. Software configuration management can help.
The attitude of many people I've encountered when it comes to the topic of software configuration management is a reluctance by members of an intranet team to endure another layer of perceived bureaucracy that makes it more difficult to get their job done. I already have more work than any one person can possibly do with deadlines that often seem impossible. However...
Have you ever wished that you could go back to a specific version of code in an application? Have you ever needed to determine what pieces make up a particular build or release? Have you ever needed to determine the state (development, test, or production) of the life cycle of a particular file? Have you ever needed to determine who did what to what and when on a particular file? Have you ever received a visit from your friends the auditors?
If so, you should consider using a software configuration management tool.
As I'm sure you are aware, software development is an increasingly complex and dynamic activity. This development frequently occurs in teams, often in geographically distinct locations, which perform concurrent development on the same project. Multiply this by the numerous projects and sub-projects for which one team may be responsible and the result is even more overwhelming. Reduced time to market and increasingly complex code and applications only add to these challenges.
The principles of software configuration management revolve around four key components:
- Version Control
- Build Management
- Release Management
- Process Control
Version Control
Version control is simply the automated act of tracking the changes of a particular file over time. This is typically accomplished by maintaining one copy of the file in a repository, then tracking the changes to that file (rather than maintaining multiple copies of the file itself). The concepts of check-in and check-out make this possible. Each time someone needs to edit a file, they check it out for exclusive editing and then check it back in to the repository when finished, thus creating a new version. This paradigm of check-in and check-out can be as simple as I describe above or much more complex depending on the amount of parallel development and branching you have in your process.
Version control buys you a number of benefits including the ability to:
- Roll back to a previous version of a given file
- Compare two versions of a file, highlighting differences
- Provide a mechanism of locking, forcing serialized change to any given file
- Create branches that allow for parallel concurrent development
- Maintain an instant audit trail on each and every file: versions, modified date, modifier, and any additional amount of metadata your system provides for and you choose to implement.
Build Management
Whether you choose to use automated tools to build your applications or still use a manual process, a software configuration management system helps you manage your process and results.
The term "build" is defined by Webopedia, as follows:
(n) A version of a software program. The term is usually used in reference to a program that is still in development.
A particular version of a software package typically consists of anywhere from a few files to thousands of files, depending on the application. A software configuration management tool assists you in managing builds by enabling you to:
- Find out how a build was constructed and what went into its construction for debugging or reproducibility purposes.
- Compare two or more builds.
Release Management
Release management is closely tied to build management in that a specific release is essentially a production build of your application. In addition to putting the runtime software in its final form, release management includes the deployment process as well as the update of related metadata that goes into tracking a given version of a software application. The primary purpose of a release is to make the application available to its end users.
Process Control
Process control is like an umbrella across the three key concepts already discussed. It is the combination of the business processes defined for your team and the implementation of these processes within your configuration management tool.
Your processes can be as basic or as complex as your situation warrants, as automated or as manual as you desire. The key point to remember is that the process is as important if not more important than the tool you select. No tool can make up for process shortcomings or for people choosing not to follow the process.
Software Configuration Management Tools
The following is a list of some of the major tools on the market. This list is by no means exhaustive, but is meant to give you a head start on your research.
Third-Party Tools
Open Source
Summary
As you can see from the points made above, there are many benefits to configuration management in addition to simply avoiding chaos. The degree to which you implement it in your environment is up to you and determined by the size, scope, and requirements of the software for which your team is responsible.
Printer Friendly Version