La programación modular divide un problema complejo en subproblemas más simples mediante la creación de módulos o subprogramas, cada uno de los cuales resuelve un subproblema. Los módulos se comunican entre sí a través de interfaces bien definidas y, aunque a menudo se implementan como funciones o procedimientos, no son sinónimos de estos términos.