Skip to Main Content
In industries such as banking, retail, transportation, and telecommunications, large software systems support numerous work processes and develop over many years. Throughout their evolution, such systems are subject to repeated debugging and feature enhancements. Consequently, they gradually deviate from the intended architecture and deteriorate into unmanageable monoliths. To contend with this, practitioners often rewrite the entire application in a new technology or invest considerable time in documenting the code and training new engineers to work on it. However, for very large systems, such approaches are typically impossible to carry out. As an alternative, researchers have proposed several tools to automatically modularize software that's grown to be inadequate in both quality and scalability. This case study describes the modularization approach that one company adopted to reengineer a monolithic banking application beset with maintenance and complexity problems. In this case study, we describe the modularization approach we adopted to address this situation, as well as certain other benefits we unearthed as a result of this reengineering exercise.