它使得每个模块都包含着执行预期功能的一个唯一方面（aspect）所必需的所有东西。模块接口表达了这个模块所提供的和所要求的元素。这些在接口中定义的元素可以被其他模块检测。模块实现包含了工作程式码，它们对应于在接口中声明的元素。模块化编程密切相关于结构化编程和物件导向编程，他们有着通过分解成更小部份的方式，促进大型软件和系统的建构的相同目标，并且都大致起源于1960年代。尽管这些术语的史上的用法曾经是不相容的，“模块化编程”现在指称将整个程序的代码分开成各部份的高层分解：结构化编程是采用结构化控制流的低层