Configuration Management and ClearCase
After going dark for a while, I want to share some of the insights I got from trying to integrate the build of .NET 1.1 components into a ClearCase dominated software configuration control system.
This shall be not only useful for me, in preparing for an exam in English where writing plays a major role, but also for the members of my team, who will have to understand all the code I generated in the last weeks.
First, let me introduce to you ClearCase and how it helps a software development team manage its deliverables.
One of the basic needs you will feel when working on creating something for more than some hours or days, is a way of trying things out and being able to go back to a certain, yet well-defined state.
An easy example might be that diploma thesis you wrote using Word or TeX and there was that change you did, like adding a diagram or replacing a formatting command parameter with another, that you had better not done.
Going forward, it might also be the case you have a resume that you want to customize for different prospective employers, yet some of the facts should later be updated for all the different versions you are going to publish.
It’s the same with software. For a project of any important size, keeping track of the ongoing development and the dependencies that arise, knowing what version of which component worked well with another is a very crucial piece of information.
Even more, when some of these components have already been shipped to customers and they are encountering problems with it. Now you better have the sources available that correspond to the version they bought from you or you will have a hard time figuring out the problems they are having and even more how you are going to fix them. Your current development might have already gone miles ahead and still, your fix might be valuable for the next version.
Software that helps managing versions is commonly referred to as a version control system. Yet almost all of the systems that are available support parallel versions, so-called branches, which basically allows you to have several different configurations at a time. This is why most of them are referring to themselves as configuration management tools.
ClearCase is an important player in this market, because it’s from IBM, because it’s been there for decades, because it is capable of complying with the renowned Rational Unified Process and because over it’s long life it acquired some unique features others don’t have.
The hardest part about software is dependencies. The better you can keep track of your software’s dependencies, the better are you able to decide about the impact of changes you need to introduce into the system.
ClearCase helps you keep track of dependencies by tracking them during what is called the software build process.
Software is commonly combined from components written in some programming languages that are suited for a specific problem domain, like descriptions of a window layout for a certain culture, for implementation of an algorithm or for all the commands to create a database or publish websites.
The build process is made up of all actions to bring these components together, so they can be packaged, shipped and deployed to the computer systems of software testers or your customers. In particular, this usually involves the step of compiling source code, translating from all the domain specific languages into the commands the targeted computer system can understand.
During the process of building a component, the compilers have to combine source code and information from related, supporting components.
ClearCase can directly track these relationships during the build process as dependencies, so it can later give you the information what needs to be rebuilt when something changes. To my knowledge, no other software configuration management system has this capability as easy available as ClearCase.