Software Archaeology: Probing the Past as Foundation for the Future

Karl Wiegers
May 27 · 5 min read
Image for post
Image for post

As a consultant and author, I often receive emails posing questions about the challenges people face dealing with requirements issues on their software projects. Here’s a question on an issue many teams encounter: replacing an existing software application.

George’s Question

“I am responsible for implementing a new system to replace a mainframe application that has been in production for a very long time. We have no documented requirements for the current system, the original developers are long gone, and our user community has since been changed out.

“Does it make sense for us to document the requirements of the current system as a prerequisite to documenting the go-forward requirements? Or should we disregard what we now have in production and document the go-forward requirements from scratch?

“Reverse engineering the current system might be a good way of kick-starting the requirements process and getting our users to think about requirements in general. But I’m concerned that such an effort will result in capturing requirements that are no longer pertinent, and therefore a possible waste of time and project dollars.”

My Response

In most cases fully reverse engineering a complete set of requirements from an existing system is not a good investment. However, you don’t want to lose the knowledge that is embedded in the current application. Selective reverse engineering is the best approach. I call that process software archaeology.

Some parts of the system that you’ll re-implement in the new one are worth documenting in considerable detail. Other portions need to be reverse-engineered just to a higher level of abstraction — to use cases, for instance, rather than to detailed functional requirements. And you can ignore portions of the existing system that represent obsolete functionality you’re certain you won’t be replicating.

I suggest the following strategy for this sort of situation:

  1. Go through the major features or functional areas of the current application. Identify those you’ll need to implement more or less intact, those you’ll replace with similar but modified or extended functionality, and those you won’t include in the new system.

Avoid the all-or-nothing syndrome in which people feel like they either need a complete and highly detailed reverse-engineered requirements set or they don’t need to pull anything out of the current system. There’s valuable knowledge there worth harvesting. Use your judgment to determine what aspects of the current system are most important to specify in detail, which can be left at a higher level of abstraction, and which you can omit entirely.

=====================

If you’re interested in software requirements, business analysis, project management, software quality, or consulting, Process Impact provides numerous useful publications, downloads, and other resources.

The Startup

Medium's largest active publication, followed by +729K people. Follow to join our community.

Karl Wiegers

Written by

Author of 12 books on software development, project management, design, consulting, self-help, and a forensic mystery novel. Guitars and wine fill the voids.

The Startup

Medium's largest active publication, followed by +729K people. Follow to join our community.

Karl Wiegers

Written by

Author of 12 books on software development, project management, design, consulting, self-help, and a forensic mystery novel. Guitars and wine fill the voids.

The Startup

Medium's largest active publication, followed by +729K people. Follow to join our community.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store