《软件工程》习题参考答案4
作者名:不详 来源:网友提供 06年6月8日
第4章
1. 什么是软件概要设计?该阶段的基本任务是什么?
把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。
基本任务:
⑴设计软件系统结构,具体为:
采用某种设计方法,将一个复杂的系统按功能划分为模块。
确定每个模块的功能。
确定模块之间的调用关系。
确定模块之间的接口(模块之间传递的信息)
评价模块的结构质量
⑵进行数据结构及数据库的设计
⑶编写概要设计的文档
主要内容有:概要设计说明书,数据库说明书(DBMS的简介,概念模型,逻辑设计,结果)用户手册,修订测试计划(测试的策略﹑方法﹑步骤)
⑷评审:是否完整地实现了规定的功能﹑性能要求。设计方案是否可行。关键的处理及内部接口定义的正确性,有效性,各部分的一致性。
2.软件设计的基本原理包括哪些内容?
⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成
整体,可以满足问题的要求。模块化即按照一定的原则,将软件划分成若干个模块,每个模块完成一个特定的功能,然后把这些模块按照某种方法组装成一个软件系统。(可降低复杂度、减少工作量)
模块具有以下几种特性:
接口:模块的输入输出。
功能:指模块实现什么功能。
逻辑:描述模块内部如何实现要求及所需的数据。
状态:该模块的运行环境,模块间调用与被调用关系。
⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。通过抽象确定组成软件的过程实体。
⑶信息隐蔽:将模块实现自身功能的细节与数据"隐蔽"起来。模块间仅交换为完成系统功能所必须的信息。
⑷模块独立性:每个模块只完成系统要求的独立的子功能。
3.衡量模块独立性的两个标准是什么?各表示什么含义?
内聚和耦合
内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。
耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。
4.模块的耦合性有哪几种?各表示什么含义?
⑴内容耦合:一个模块直接操作或修改另一模块的数据,或者不通过正常入口直接转入 另一模块
⑵公共耦合:两个或多个模块通过共同引用一个全局数据环境相互作用
⑶控制耦合:模块之间通过传递控制信息相互作用
⑷标记耦合:两个模块之间通过传递公共指针或地址相互作用的耦合
⑸数据耦合:模块之间通过传递数据交换信息
⑹无耦合:模块间无任何关系,独立工作
5.模块的内聚性有哪几种?各表示什么含义?
⑴偶然内聚:一个模块各个成分之间毫无关系
⑵逻辑内聚:将几个逻辑上相关的功能放在同一个模块中
⑶时间内聚:一个模块完成的功能在同一时间执行
⑷过程内聚:一个模块内部的处理成分是相关的,而且必须以特定的次序执行
⑸通信内聚:一个模块的所有成分都集中在同一个数据结构上
⑹顺序内聚:一个模块的各个成分同一个功能密切相关,而且一个成分的输出,作为另外一个成分的输入
⑺功能内聚:模块内的所有成分属于一个整体,完成单一的功能。(内聚最高)
6.什么是软件结构?简述软件结构设计的优化准则。
⑴改进软件结构,提高模块独立性 首先设计出软件初始结构,评价该结构,通过模块分解或合并,力求降低耦合提高内聚。
⑵模块的规模应该适中
⑶模块结构的深度、宽度、扇出和扇入应适中
深度:软件结构中控制的层数
宽度:软件结构中同一层次上最大模块总数
扇入:某一模块有多少直接调用它的上级模块数目(越大越好)
扇出:一个模块直接控制(调用)下级模块的数目。(越少越好,3,4个为宜,不超过9个,
"顶层扇出较高,中间扇出较少,底层模块高扇入多"
⑷一个模块的作用域(范围),应处在这个模块的控制域(范围)之内
模块的作用域:受该模块内一个判定影响的所有模块的集合
模块的控制域:这个模块本身以及所有直接或间接从属于它的模块的集合
7.什么是模块的影响范围?什么是软件的控制范围?它们之间应建立什么关系?
模块的影响范围(作用域):受该模块内一个判定影响的所有模块的集合
模块的控制范围(控制域):这个模块本身以及所有直接或间接从属于它的模块的集合
一个模块的影响范围(作用域),应处在这个模块的模块的控制范围(控制域)内。
8.什么样是"事物流"?什么是"变换流"?试将相应形式的数据流图转换为软件结构图
数据流图(DFD)一般可分为"变换流","事物流"两种。
"变换流":由输入﹑输出﹑变换(或称处理)三部分组成,是一顺序结构。
"事物流":它的某个加工,分离成许多发散的数据流,形成许多加工路径,并且根据输入值选择其中一个路径来执行。(这人加工称为事务处理中心)
9.试述"变换分析"﹑"事物分析"设计步骤。
变换分析设计步骤:
⑴确定变换中心,逻辑输入和输出。
⑵设计软件结构的顶层和第一层--变换结构:顶层的功能是完成所有模块的控制(名称应是系统名,以体现完成整个系统功能)
第一层至少有三种功能模块:输入﹑输出和变换模块
⑶设计中﹑下层模块,对第一层的模块自顶向下分解。
输入模块由两部分组成:接收数据﹑转换成调用模块所需信息。
输出模块由两部分组成:将数据转换成下属模块所需的形式﹑ 发送数据
变换模块:对每个基本加工建立一功能模块
⑷设计的优化 :输入部分求精,每个物理输入设置专门模块,以体现系统的外部接口。其它输入模块与转换数据模块都很简单时,可将它们合并。
输出部分求精:每个物理输出设置专门模块,其它也可适当合并。
变换部分求精:根据设计准则,对模块适当合并。
事务分析的设计步骤:
⑴确定事务中心和加工路径
⑵设计顶层(事务机构)和第一层 顶层模块有两个功能:接收数据和根据事务类型调动相应处理模块。
⑶中下层模块的设计﹑优化工作与变换结构相同。
事务型软件结构包括两部分: 接收分支 发送分支出 通常包括一调度模块,当事务类型不多时,可与主模块合并 。
10.图是某系学籍管理的一部分,(a),(b)分别是同一模块A的两个不同设计方案,你认为哪一个设计方案较好?请陈述理由。

答:我认为(b)方案较好。要评价一个软件结构设计,主要看模块的独立性,要从软件结构的耦合性和内聚性两个方面来衡量。对于(a)方案,模块A与模块B之间形成了控制耦合,因此独立性不高,而在B模块内部,有两个不同的功能被放在一起,形成的是逻辑内聚,内聚性不高。对于(b)方案,模块A与B1和B2之间是数据耦合,独立性较强,在B1和B2内部,只完成单一的功能,是功能内聚,因此内聚性高,可维护性好,因此相比而言(b)方案比(a)方案更好些。
11.请将图4-16的DFD转换为软件结构图。(注:图中⊕表示或者)

解:我们可以看出主图是变换型DFD,而子图是事务型DFD。根据结构设计的方法,得到的结构图如下:


12.将第3章习题中的第10题、第11题设计成相应的软件结构图(SC)和HIPO图。
某银行的计算机储蓄系统功能是:将储户的存户填写的存款单或存款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户。
2、某图书管理系统有以下功能:
⑴借书:输入读者借书证。系统首先检查借书证是否有效,若有效,对于第一次借书的读者,在借书证上建立档案。否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10,拒借,末达10本,办理借书(检查库存,修改库存目录并将读者借书情况录入借书文件。)
⑵还书:从借书文件中读出与读者有关的记录,查阅所借日期,如超期(3个月)作罚款处理。否则,修改库存目录与借书文件。
(3)查询:通过借书文件,库存目录文件查询读者情况﹑图书借阅及库存情况,打印统计表。
把上面数据流程图转换为软件结构图和IPO图










|