软件工程】第七章

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

软件设计阶段的基本目标是构造系统“怎么做”的模 型描述

“ 设计先于编码”是软件工程“推迟实现”基本原则

主要任务包括:总体设计和软件详细设计

2. 什么是模块(构件)化设计思想?

分解、抽象、逐步求精、信息隐蔽和模块独立性,是软件模块化设计的指导思想。

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

模块自身的内聚(Cohesion),也称为块内联系,指一个模块内部元素彼此结合的紧密程度。

模块之间的耦合(Coupling),也称为块间联系。

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

内聚性:是从功能的角度对模块内部聚合能力的量度。

其中包括功能性内聚、顺序性内聚、通信性内聚、过程性内聚、时间性内聚、逻辑性内聚和偶然性内聚。

功能性内聚:模块各个成分结合在一起,完成一个特 定的功能。功能性模块具有内聚性最强、与其他模块 联系少的特点。

例如:解析XML文档模块(解析XML元素,解析XML 属性,解析XML注释等)

顺序性内聚:模块内的各个任务是顺序执行的。通常,上一个任务的输出是下一个任务的输入。

例如:规则引擎:一一个任务读配置,输出执行计划。 另一个任务以执行计划为输入,执行该计划。

通信性内聚(信息内聚) :模块内部的各个任务靠公 用数据联系在一起,即都使用同一个输入数据,或者产生同一个输出数据。

例如:学生管理系统的数据库CRUD操作,都对学生 信息进行增删查改操作。

过程性内聚:模块内的各个任务必须按照某一特定次序执行。在函数级别的模块比较常见。

例如:读/写文件操作、判断文件是否存在、判断文件是否有相应权限、打开文件、读(或写)文件。

时间性内聚:模块内的各个任务由相同的执行时间联系在一起

例如:初始化模块,异常处理模块。某个异常处理模块封装了“释 放资源” 、“记录日 志”、“通知用户”几个任务。

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

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

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

例如:一个处理正方形的模块有两个功能:计算面积, 画出这个正方形。

耦合性:是对一个软件结构内不同模块之间互连程度的度量

其中包括非直接耦合、数据耦合、特征耦合、外部耦合、公告耦合和内容耦合。

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

数据耦合:调用下属模块时,如果交换的都是简单变量,便构成数据耦合。

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

控制耦合:模块间传递的信息不是一般的数据,而是作为控制信息的开关值或标志量。

外部耦合:若允许一组模块访问同一个全局变量,可称他们为外部耦合。

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

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

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

高内聚,低耦合的好处体现在系统持续发展的过程中,高内聚,低耦合的系统具有更好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发,持续的支持业务的发展,而不会成为业务发展的障碍。

在软件设计中,应力求做到高内聚,尽量少用中内聚,不用低内聚。一般来说,在系统较高层次上的模块功能复杂,内聚要低一些;而较低层次上的模块内聚程度较高,达到功能内聚的可能性比较大。

耦合是影响模块结构和软件复杂程度的一一个重要因素,应该遵循如下设计原则:尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用内容耦合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值