Software Archeology and Forensics

Things happen. For any number of reasons (developer turnover, mergers, acquisitions) you might find yourself with a code base that nobody understands and that can’t be modified. We have a number of tools and techniques for reverse-engineering these applications and helping you build on the investment you’ve made instead of throwing it away and starting over.

We have several flavors of service depending on your future plans: Shoring and Replacing, Complete Restoration, or Discovery and Integration.

Most of the tools we have built for this service work especially well for Java-based systems, but our methodologies will work on a system in any language.

Shoring and Replacing

You might already have a strategic program under way to replace your aging system. That new program is going to solve most of your problems and propel your organization forward to its next ten years of competitiveness.

But strategic programs do not complete overnight.

While you are moving full steam ahead on your new system, you could still benefit from taking the pressure off the old system. In this context, we function like a software SWAT team, quickly understanding the code and shoring up the most painful bits with targeted interventions. With your old system squared away, your in-house team is free to concentrate on getting the new system out the door faster.

If you find your team displaying any of the below behaviors, you might benefit from our archeology and forensics services:

  • Your development teams continue to miss deadlines on the new project because they are called away unpredictably to deal with the old system;
  • Your user base or project sponsor continues to prioritize work on the old system over the new system;
  • Attempting to break-fix or enhance the old system is risky or difficult;
  • Your developers are afraid to touch the old system because they do not understand it.

In one successful example of this service, we were able to increase the throughput of a legacy transaction processing system by 400%, which extended its life by 5 years and allowed the team to continue to develop their strategic replacement.

Complete Restoration

Sometimes systems live for a long time for good reasons. They’ve been happily serving the business for 8-10 years and could happily serve it for 8-10 more.

But even a good system will age after living long enough. Development teams turn over, programming styles and practices start to mix with each other, and pretty soon your otherwise good system is creaking because it’s difficult to decipher and add functionality to.

We can help.

Our service will cut through the cruft to expose the truly living, useful elements of the system. Once that is done, we can cut out dead code, add unit tests, and refactor to leave you a system that feels almost as good as new and is more easily enhanceable by your in-house teams.

If you find yourself thinking any of these things about your current system, this service might be useful:

  • The users love this system, but my developers complain about it all the time;
  • I never have to worry about my system falling over, but enhancements to it seem to take longer than they should;
  • I wish I had unit tests to give me the confidence to make some sweeping changes here;
  • New developers take so long to ramp up, and have a hard time understanding what’s going on.

Discovery and Integration

When a large company and a start-up meet, they have to discover each other’s systems, understand how they work, and figure out how to integrate. Additionally, large companies often have different standards for design and operational documentation and the start-up has to play catch-up.

With our experience in both start-ups and large companies, we can help bridge this gap. We will work with the acquired company’s technical team and understand their product. Then we both produce documentation about it and lay out a roadmap for how to integrate it into the acquiring company’s product line in a way that preserves both company’s investments.

If you find yourself asking questions like these after a merger, then you might benefit from our services:

  • The original developers have left, now what do I do?
  • I love what their product does, now how do I understand how it works?
  • These guys bought us, now how do we integrate with their product line?
  • We just bought those guys, now where do they fit in our product line?
  • Is there any documentation for this thing?
For information please contact us.