Have you ever had to deal with a large, monolithic program? Many traditional legacy applications are monolithic programs that are composed of one single module. In this single large module, you can often find code to handle the display, user interactions, business logic, and database access. There is no sense of separation.
Maintaining monolithic programs is no easy task. Given their size and complexity, programmers face many obstacles. Often, they need the help of the original author of the program to understand it (assuming the original author is still around). As a result, maintenance projects and new additions tend to grow in time, cost, complexity, and risk.
What do you do with these applications? So far in this book, you have been learning about modernizing your applications. Monolithic programs must be modernized but in parallel with an overall modernization project. You must ensure that the new applications are not designed with this approach. Modularization is the key to designing easier-to-maintain applications.
Modularity can be defined as a quantity of components within an application that are separated and recombined. Modularization is a software technique that focuses on separating the functions of a program into smaller reusable modules containing only one function that is then used throughout the whole application.
To achieve a good modular design, you must start thinking about separating functions and implementing just one function per module. If a module does many unrelated functions, you should reconsider your design.