In this article, we’ll describe the challenges in using ClearCase to manage legacy code, and how our extensions can help you save time, effort and money while mitigating risks.
What exactly is legacy code and what are the inherent challenges?
Legacy code is source code created for a system that is no-longer actively supported by its vendor. When referring to legacy code, we usually mean old code or old projects that were developed years ago but are still in use and thus require periodic maintenance and support for existing customers.
The challenges are:
- The code was written many years ago
- It’s quite difficult to find the original people who wrote this code. And in many cases, those individuals, even when identifiable, are no longer available.
- Support documentation is sparse or may not exist at all.
- It is very challenging to support outdated code and many technology professionals may actually be afraid to make changes to the code. The reality is that you don’t know how a particular change may impact the system and you may be legitimately afraid of breaking the existing features.
- These systems are often critical, in production on many customer sites, while downtime can be extremely costly
- The systems are running on old architecture and hardware – sometimes you can’t upgrade the infrastructure.
- Yet, you must maintain the code and these projects since your customers still depend upon these legacy systems. Additionally, you may have service level agreements (SLAs) that legally obligate you to maintain and, even enhance, this code.
Some of the challenges relate to the version control system where the code is stored. In many cases, the system is stored on the originated version control system (VCS) upon which it was developed, while the new systems that are currently being developed may use a different and newer version control system. This leads to more challenges:
- Lack of knowledge regarding how to run complex searches in the version control system, to efficiently find the context of your code snippet that can help you better understand the code
- Lack of knowledge regarding how to maintain the version control system and how to make sure it is working properly
- Lack of time to properly maintain the system or lack of an administrator to do it
Now, let’s talk about the benefits of utilizing ClearCase as your version control for legacy code:
How do you efficiently and rapidly access the code and retrieve the legacy information that you need? And how do you make sure your code is well-maintained in ClearCase repositories?
As providers of ClearCase add-on tools and service providers, we have a variety of solutions that can help meet these needs ensuring that you can support your legacy code. These solutions are unique, easily customizable, and save you time and effort. By helping you to serve your customers better and faster, our products provide you piece of mind.
Our offering for legacy code and old projects
1) ClearCheck – comprehensive and continuous health checks solution for ClearCase VOBs and environment (http://almtoolbox.com/clearcheck)
This tool helps if you lack either the knowledge or time to manually maintain ClearCase VOBs and environments (and this is a common situation when ClearCase is part of your legacy code). This add-on tool applies the best practices of keeping VOBs healthy andwill trigger an alert if something goes wrong.
- You don’t have to be a ClearCase expert to use this tool (the ClearCase knowledge is inside!)
- It’s fully automated – you don’t have to waste your time on using the tool
- It continuously scans and analyzes your system on a daily basis – to identify problems as soon as arise
- It detects ClearCase problems which are affected by hardware problems such as outage, old disks, network that has stopped working and more
“With ClearCheck we have an ongoing assurance that our ClearCase environment and VOBs are working properly. Instead of occasional manual checking which cost us money and added one more task to a busy schedule, we now get notice if there is a problem and exactly what it is. ClearCheck has made my job much easier.” Evgeny Krassilshikov, Director of R&D at harmon.ie (formerly Mainsoft)
2) Visual Annotate (http://almtoolbox.com/annotate)
This robust tool provides a variety of features that help you tackle legacy code. Here are some examples:
- Showing you traceability of your code line with your bug tracking defects. Click here to learn more
- Quickly detect who changed a particular code line and quickly detect code lines that have been changed on a certain date. Since the tool provides the information in the context of the code-lines, you no longer have to guess the version of a particular code line that was checked-in (as it works when using ClearCase Version Tree or ClearCase History tools).
- Showing all code lines that have been changed together. This colorful feature helps you see the full context, plus correlation to other code snippets. You can see correlation to code lines that have been changed together on the same file version, on the same date (or close dates), on the same UCM activity or by the same user.
- Impact analysis: showing labels and UCM baselines on which the code lines have been stamped. This helps you to quickly find out what baseline you have to fix or to be based on when you have to change your code. Further code, if you know the correlation between labels to your products on customer’s site, you can quickly identify how it affects your customers and which of your customers have to get updates when you finish your code changes
- Showing removed code lines and removed functions.
- You can get the annotated data PLUS compare it to another version on the same screen
- You can compare more than 3 versions on the same screen!
“Visual Annotate helps me quickly detect who checked-in a particular code line of a defect, so I can quickly approach him and ask him to fix it.” says a senior team leader from a leading bank.
3) R&D Reporter (http://almtoolbox.com/rnd)
This is a reporting tool that can easily find out the differences between your legacy code and more recent code.
Here are some examples:
- Comparing old baselines (even if created 15 years ago)
- Comparing streams. This is useful when you have a stream for which you can’t remember what was changed on this development line and by whom. You can easily compare this one with your active streams and quickly determine which activities, files and file versions have been changed
- Comparing many streams, all together into one report
- Comparing old views
- Smart filters that enable you to filter out all irrelevant files. This is very useful when you have to fix bugs – you can quickly filter out files from a specific date range or just filter out irrelevant files and folders
- Detect renamed, moved and removed files. The tool offers a rapid mechanism to easily detect missing files (due to “rmname” ClearCase command).
- Coming soon: Smart triggers to monitor your development status. For instance: you can continuously monitor a stream that holds your legacy code, and automatically send email alerts when the code is significantly changed and a manual merge is needed.
4) ClearEnv – setting up work environments by predefined templates (http://almtoolbox.com/clearenv)
Occasionally you have to set up work environments (views and streams), but your users can’t always remember how to do it and what’s the exact configuration. This tool enables you to setup a template at once, including all ClearCase configuration (target folders, stream strategy, view types and more), and then your developers only need just two mouse clicks to create the environments, greatly reducing the likelihood of mistakes.
This is very useful when you can’t expect them to know all of the relevant configuration details and yet they must quickly setup an environment to resolve an urgent bug in an old project.
If this does not fully answer your needs…
We have helped many customers with our professional services, including customized integrations and implementing bridges from ClearCase to other SCM
This white paper was written by Tamir Gefen, founder and CEO of ALMtoolbox, a company that specializesin providing add-on tools and ALM solutions (https://www.almtoolbox.com).