search menu icon-carat-right cmu-wordmark

Frankensteining Software: Recycling Parts of Legacy Systems

May 2016 Presentation
Jennifer Manning (IBM), Joseph Kramer (IBM)

This session covers software modularity, experiments to improve decision making and reduce risks, and analyzes a legacy system to make decisions for future design.


Software Engineering Institute




Evolving the architecture of legacy systems for unintended use is difficult. The architectures are not documented well, the team that built the system has often moved on, old and out-of-date code is permanently intertwined, and the technology trends of the present are dramatically different from when the system was first developed. This is the situation our team found itself in while working to design a new cloud version of an existing product.

In this talk, we will share our story about evolving an enterprise search platform to create an isolated, portable crawler. The existing system has been in active development since the early 2000s and was initially designed for use in traditional data centers. Since then, it has evolved into a more pluggable product, able to connect to a variety of data sources. We wanted to recreate this functionality in the cloud, but we had a tight time constraint. We soon realized we might be able to migrate part of the previous code instead.

During this session, you will learn about modularity, using experiments to improve decision making and reduce risks, and analyzing a legacy system to make well-grounded decisions for future design. We will demonstrate these lessons with examples from our experiences with this project.