模块设计之“模块”与“模块化”
模块泛指软件系统的功能部件。在软件的体系结构设计完成之际,我们就已经确定了所有模块的功能,并且把模块安放在体系结构的恰当位置上。
每个模块都具有特定的、明确的功能(否则不能成为模块)。人们在设计模块时应当尽量使模块的功能独立,因为功能独立的模块可以降低开发、测试、维护的代价。但是功能独立并不意味着模块是绝对孤立的。所有的模块应当能够被集成为一个系统,所以模块之间必定要交流信息、相互配合。
模块类似于我们玩“搭积木”游戏:我们用积木搭成一个房子,每块积木可以被看成是一个模块,它们都是整个系统(房子)的一个部分,并且有特定的功能;各个积木之间还有豁口,可以组合,如同各个模块之间的接口,同时各个积木又是相互独立的。
“模块化“(Modularization)是指,将系统分解为一系列功能模块,然后逐一实现这些模块,最后把所有的模块集成为原来的系统。这样做的好处是能够大大降低系统的开发难度。
再比如组装计算机,我们去电子商场买到了组装计算机所用的各个模块(主板、内存、CPU、显卡、声卡、机箱、键盘、鼠标、显示器),然后把它们组装在了一起。把计算机分成一个个的模块,使得类似于我们这样的普通用户也可以对计算机进行简单的维修(最起码可以换某一个部件)。这种好处是显而易见的。
是否将系统分解得越细,得到的功能模块越多越好呢?不是的。虽然这样做可以使实现模块的代价更低,但是把功能模块集成为原来系统的代价却增大了很多,得不偿失,所以一个系统的模块数量不能过多也不能过少。那么多少算是恰如其分呢?不知道,要靠设计师的判断。