通过分解成更小部份的方式，促进大型软件和系统的建构的相同目标，并且都大致起源于1960年代。尽管这些术语的史上的用法曾经是不相容的，“模块化编程”现在指称将整个程序的代码分开成各部份的高层分解：结构化编程是采用结构化控制流的低层代码使用，而面向对象编程是对象的“数据”使用，对象是某种数据结构。在面向对象编程中，使用接口作为一种架构上的模式（pattern）来构造模块叫做基于接口编程 。
语言支持.正式支持模块概念的语言包括：Ada、Algol、、C#, Clojure、COBO