4.1.2 模块化编程
模块化编程(modular programming)是一种软件设计技术,它将软件分解为若干独立 的、可替换的、具有预定功能的模块,每个模块实现一个功能,各模块通过接口(输入输出 部分)组合在一起,形成最终程序。
① 远大公司在模块化建筑领域的两个案例:6 天建成 15 层宾馆,15 天建成 30 层的 T30 酒店。
对于简单问题,可以直接构建单一模块的程序。而对于复杂问题,则可以先创建若干个较小的模块,然后将它们组装、链接在一起,从而构成复杂的软件系统。模块化编程具有以 下优点:
易设计:较大的复杂问题分解为若干较小的简单问题,使我们可以从抽象的模块功 能角度而非具体的实现角度去理解软件系统,从而整个系统的结构非常清晰、容易 理解,设计人员在设计之初可以更加关注系统的顶层逻辑而非底层细节。
易实现:模块化设计适合团队开发,因为每个团队成员不需要了解系统全貌,只需 关注所分配的小任务。另外团队可以灵活地增加人手,新人只需直接接手某个模块, 不会影响系统其他模块的开发。
易测试:每个模块不但可以独立开发,也可以独立测试,最后组装时再进行联合测 试。
易维护:如果需要修改系统或者扩展系统功能,只需针对特定模块进行修改或者添 加新模块。
可重用:很多模块的代码都可以不加修改地用于其他程序的开发。
模块化编程实际上是一条抽象设计原则的具体体现,即分离关注点(Separation of Concerns,缩写为 SoC)原则。所谓关注点,是指设计者关心的某个系统特性或行为;而分 离关注点是指将系统分解为互不重叠的若干单元,每个单元对应于一个关注点。在模块化编 程中,以程序的各个功能作为关注点,模块划分就是分离关注点的结果。一个模块可以使用 另一个模块来实现自己的功能,但除此之外模块之间最好没有交互,这是 SoC 原则的理想 目标。