Modular Programming is a subset of procedural programming that enforces a logical structure on the program being written to make it more efficient and easier to understand and modify. It can often be used in a variety of applications and functions with other components of the system. It is closely related to structured programming and object-oriented programming, all having the same goal of facilitating construction of large software programs and systems by decomposition into smaller pieces, and all originating around the 1960s.