那么如何来衡量软件的模块独立性呢?这里有两个定性的度量标准。
(1)耦合性:就是指模块之间的联系紧密程度。模块之间联系越紧密,其耦合性越强,独立性就越差。
模块的耦合性从低到高可分为以下几种类型:(假设某人为一模块)
无直接耦合 (比如陌生人之间的联系)
数据耦合 (比如去售货员与顾客之间的联系)
标记耦合 (比如两个人下棋)
控制耦合 (领导和下属之间的联系)
公共耦合 (比如图书馆的所有借书者之间的联系)
内容耦合 (比如小两口之间的联系)
在软件设计中,提高模块的独立性,建立模块间尽可能松散的系统,是模块化设计的目标。为了降低模块间的耦合度,可以采取以下措施:
(1)在耦合方式上降低模块间接口的复杂性。
(2)在传递信息类型上尽量采用数据耦合,避免使用控制耦合,慎用或有控制地使用公共耦合。在实践中要根据实际情况综合考虑。
2、内聚性
内聚性是指模块内部各个元素彼此结合的紧密程度。根据内聚性的从低到高可分为以下六种类型:
偶然内聚:指一个模块内的各处理元素之间没有任何联系。(公共汽车内的人群)
逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。(警察局里的警察)
时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。(交响乐团的演奏员)
通信内聚:指模块内所有处理元素都在同一个数据结构上的操作。或者指各处理使用相同的输入数据或者产生相同的输出数据。(建筑工地上的工人)
顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能的元素的输出就是下一功能元素的输入。(我们可以想像纺织厂中从纺纱到织布的各个操作形成的一个模块,就是一种顺序内聚)
功能内聚:这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可,模块已不可再分。(就如两个人演狮子舞,要完成狮子形象的再现,两个人缺一不可.)
耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚,低耦合,提高模块的独立性。在内聚性与耦合性发生矛盾的时候,最好优先考虑耦合性,也就是先保证耦合性低一些。