结构推理 模块的内聚性包括哪些类型?
【正确答案】内聚性有6种类型:偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚,它们的内聚性由低到高。
   (1)偶然内聚。指一个模块内的各处理元素之间没有任何联系。这是最差的内聚情况。
   (2)逻辑内聚。指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。如产生各种类型错误的信息输出放在一个模块,或从不同设备上的输入放在一个模块,这是一个单入口多功能模块。这种模块内聚程度有所提高,各部分之问在功能上有相互关系,但不易修改,当某个调用模块要修改此模块公用代码时,而另一些调用模块又不要求修改。另外,调用时需要进行控制参数的传递,造成模块间的控制耦合,调用此模块时,不用的部分也占据了主存,降低了系统效率。
   (3)时间内聚。把需要同时执行的动作组合在一起形成的模块为时间内聚模块。如初始化一组变量,同时打开若干文件,及同时关闭文件等,都与特定时间有关。时间内聚比逻辑内聚程度高一些,因为时间内聚模块中的各部分都要在同一时间内完成。但是由于这样的模块往往与其他模块联系得比较紧密,如初始模块对许多模块的运行有影响,因此和其他模块耦合的程度较高。
   (4)通信内聚。指模块内所有处理元素都在同一个数据结构上操作(有时称之为“信息内聚”),或者指各处理使用相同的输入数据或者产生相同的输出数据。
   通信内聚的模块各部分都紧密相关于同一数据(或者数据结构),所以内聚性要高于前几种类型。同时,可把某一数据结构、文件、设备等操作都放在一个模块内,从而达到信息隐藏。
   (5)顺序内聚。指一个模块中各个处理元素都紧密相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。
   (6)功能内聚。这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。 因此模块不能再分割。功能内聚的模块易于理解、易修改,因为它的功能是明确的、单一的,因此与其他模块的耦合是弱的。功能内聚的模块有利于实现软件的重用,从而提高软件开发的效率。
【答案解析】