Frankensteining Software: Recycling Parts of Legacy Systems

Evolving the software 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. In this video, you will learn about modularity, using experiments to improve decision making and reduce risks, and how to analyze a legacy system to make well-grounded decisions for future design. We will demonstrate these lessons with examples from our experiences with this project.

Video producer: http://www.sei.cmu.edu/saturn/