软件工程第五周思考题 第七章

1.软件设计的目标及主要任务有哪些?

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

总体设计:体系结构设计:定义软件模块(构件)及模块之间的关系。

接口设计:包括用户接口(界面)、外部接口、内部接口。

数据设计:软件涉及的数据结构、文件系统的结构、数据库的表结构。

模块内部细节设计:包括模块所需的算法和数据结构。

2.什么是模块化思想?

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

3.模块独立性的度量标准?

①模块自身的内聚②模块之间的耦合。

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

内聚:是从功能的角度对模块内部聚合能力的度量。分为功能性内聚(解析XML文档板块)、顺序性内聚(规则引擎)、通信性内聚(学生选课系统CURD)、过程性内聚(判断文件是否有权限)、时间性内聚(处理异常板块)、逻辑性内聚(打印机和显示器)、偶然性内聚(正方形面积和绘图)

耦合:对一个软件结构内不同板块之间互联程度的度量。分为非直接耦合、数据耦合、特征耦合、控制耦合、外部耦合、公共耦合、内容耦合。

5.为什么要高内聚低耦合?是否意味着绝对?

  ①首先面向对象的主要特点是封装、继承和多态。实质上是将本来混乱的代码尽可能的抽象出共性,分门别类。最终达到复用,提高开发效率和保证软件质量的目的。大家知道蜘蛛以网来捕捉昆虫,因为网中的各个节点是互相联系的,这样增加了蜘蛛网的韧性不容易被昆虫冲破。而面向对象追求的是代码复用和运行稳定,即在模块之间减少联系。可以想象,如果各模块之间联系太过紧密对于代码复用是不容易的,因为很难会再找到同样适合的环境。同时对于运行来说也是不利的,软件发生错误是不可避免的,那么各模块如果联系紧密则错一处而动全身,好比多米诺骨牌。所以一个好的软件各模块之间的联系不能过分紧密,即低耦合。 面向对象的思想追求的是每个模块的动能单一,模块间越独立越好。即在划分模块时,只有为了完成一个功能的各个元素才会被划分到一个模块中。所以模块内部的各个元素必须是联系紧密的,否则就说明模块划分还没有到位。所以模块内部需是联系紧密的,即高内聚。
  ②并不是内聚越高越好,耦合越低越好,真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。
最强的内聚莫过于一个类只写一个函数,这样内聚性绝对是最高的。但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。对于耦合来说,最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。

posted @ 2021-06-24 15:52  琉璃青天  阅读(69)  评论(0编辑  收藏  举报