其他分享
首页 > 其他分享> > 地信1902李孟雪 第七章思考题

地信1902李孟雪 第七章思考题

作者:互联网

1.软件设计的目标及主要任务是什么?

答:

(1)目标:

软件系统需求是将软件需求变换为用于构造软件的蓝图。基本目标是构造系统“怎么做”的模型描述。

软件设计的目标是对将要实现的软件系统的体系结构、系统的数据、系统模块间的接口、以及所采用的算法给出详尽的描述。

(2)主要任务:

①数据设计将分析模型转化为设计类的实现以及软件实现所要求的数据结构。

②体系设计定义了软件的主要结构元素之间的联系,可用于达到系统所定义需求的体系结构风格和设计模式以及影响体系结构实现方式的约束。

③接口设计描述了软件和协作系统之间、软件和使用人员之间是如何通信的。接口是信息流和特定行为的类型。

④构件设计将软件体系结构的结构元素变换为对软件构件的过程性描述。

2.什么是模块化设计思想?

答:

把一个大型软件系统的全部功能,按照一定的原则合理地划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体,这就是软件的模块化设计。软件的模块化设计可以简化软件的设计和实现,提高软件的可理解性和可测试性,并使软件更容易得到维护。

包括分解、抽象、信息隐蔽、逐步求精、模块独立性。

3.模块独立性的两个度量标准是什么?

答:

模块独立性由两个定性的标准量度,即模块自身的内聚和模块之间的耦合,前者也称为块内联系或模块强度,后者也称为块间联系。模块独立性越高,则块内联系越强,块间联系越弱。

4.内聚和耦合的含义是什么?各有哪些种类?请举例说明每一类型。

答:

内聚性是从功能的角度对模块内部聚合能力的量度。内聚性,又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。

包括:

高内聚:①功能性内聚:模块各个成分结合在一起,完成一个特定的功能。功能性模块具有内聚性最强、与其他模块联系少的特点。例如XML文档模块(解析XML元素、解析XML属性、解析XML注释)

        ②顺序性内聚:模块内的各个任务是顺序执行的。通常,上一个任务的输出是下一个任务的输入。例如:功能引擎:一个任务读配置,输出执行计划。另一个任务以执行计划为输入,执行该计划。

中内聚:③通信性内聚:模块内部的各个任务靠公用数据联系在一起,即都用同一个输入数据,或者产生同一个输出数据。例如:学生管理系统的数据库CRUD操作,都对学生信息进行增删查改操作。

        ④过程性内聚:模块内的各个任务必须按照某一特定次序执行。例如:读/写文件操作:判断文件是否存在、判断文件是否有相应权限、打开文件、读(或写)文件。

低内聚:⑤时间性内聚:模块内的各个任务由相同的执行时间联系在一起。例如,初始化模块,异常处理模块。

        ⑥逻辑性内聚:模块通常由若干个逻辑功能相似的任务组成,通过模块外引入的一个开关量选择其一执行。这种内聚增大了模块间的耦合。

        例如:一个输出设备模块将打印机类和显示器类封装到同一个包里,该包即输出设备模块。打印机类和显示器类虽然都具有输出功能,但是具有不同的职责。

        ⑦偶然性内聚:模块内的各个任务在功能上没有实质性的联系,纯属“偶然”因素组合了块内各个互不相关的任务。

耦合性是对一个软件结构内不同模块之间互联程度的量度。耦合性是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。

包括:

强耦合:  ①内容耦合:若一个模块可以直接访问另一个模块中的内部数据,或者一个模块直接转到另一个模块的内部,或者一个模块有多个入口,则称为内容耦合。

较强耦合:②公共耦合:允许一组模块访问同一个全局性的数据结构。全局性的数据结构可以是共享的通信区、公共的内存区域、任何存储介质文件、物理设备等。

         ③外部耦合:允许一组模块访问同一个全局变量。

中耦合: ④控制耦合:模块间传递的信息不是一般的数据,而是作为控制信息的开关值或标志量。例如,逻辑性内聚的模块调用。

弱耦合: ⑤特征耦合:调用下属模块时,如果交换的是数据结构,便构成特征耦合。由于传递的是数据结构,不仅数据量增加,而且会使模块的相关性增加。

        ⑥数据耦合:调用下属模块时,如果交换的都是简单变量,便构成数据耦合。它通过参数传递,而不是通过全局数据、配置文件、共享内存等其他方式。传递的是基本数据类型,而不是数据结构。

        ⑦非直接耦合:同级模块之间没有信息传递,即没有耦合。非常底层的模块自给自足,可以无耦合;较高层的模块,通常需要重用其他模块的功能,产生耦合。

5.为什么要高内聚和低耦合?高内聚低耦合是否意味着内聚越高越好,耦合越低越好呢?

答:

高内聚、低耦合使程序模块的可重用性、移植性大大增强。高内聚,低耦合的好处体现在系统持续发展的过程中,高内聚,低耦合的系统具有更好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发。如果各模块之间联系太过紧密对于代码复用是不容易的,因为很难会再找到同样适合的环境。同时对于运行来说也是不利的,软件发生错误是不可避免的,那么各模块如果联系紧密则错一处而动全身,所以一个好的软件各模块之间的联系不能过分紧密,即低耦合。面向对象的思想追求的是每个模块的动能单一,模块间越独立越好。即在划分模块时,只有为了完成一个功能的各个元素才会被划分到一个模块中。所以模块内部的各个元素必须是联系紧密的,否则就说明模块划分还没有到位。所以模块内部需是联系紧密的,即高内聚。

但是这也不意味着内聚越高越好、耦合越低越好。真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。最强的内聚莫过于一个类只写一个函数,这样内聚性绝对是最高的。但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。对于耦合来说,最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。

标签:联系,思考题,任务,地信,模块,内聚,耦合,软件,1902
来源: https://www.cnblogs.com/1002-/p/14643724.html