案卷号 | FS2011KS02 |
日期 | 2011-06-08 |
期末考试复习导航
作 者: FlareDream Studio
完成日期: 2011-6-8
签 收 人: FlareDream Studio
签收日期: 2011-6-9
修改情况记录:
修改日期 | 版本号 | 修改批准人 | 修改人 | 安装日期 | 签收人 |
2011-6-7 | Beta 1.0 | Edison Chou | Edison Chou | 无 | Wncud Chou |
目 录
1 考试说明 1
1.1 说明 1
2 结构化需求分析与概要设计 1
2.1 DFD(数据流图)与SC(结构图)的绘制 1
2.2 DD(数据字典)的设计 6
2.3 ER(实体联系图)的设计 6
3 结构化详细设计 8
3.1 PFD(程序流程图)、N-S(盒图)与PAD(问题分析图)的设计 8
3.2 判定表与判定树的设计 10
3.3 环路复杂度的计算 12
4 软件测试用例设计 13
4.1 黑盒方法测试用例设计 13
4.2 白盒方法测试用例设计 14
4.3 考试答题注意事项 17
1 考试说明
1.1 说明
《软件工程J》考试为开卷,考试题型有(1)简答题(2)综合题。
简答题都在书上现有,故不列复习点,大家到时翻书就可以填写。此题型卷面分值为40分。综合题有四道,考点会在下面一一列出,此题型卷面分值为60分。
2 结构化需求分析与概要设计
2.1 DFD(数据流图)与SC(结构图)的绘制
例1. 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
请用数据流图描绘本系统的功能。(教材课后习题)
解:
图1.1 顶层DFD
图1.2 一层DFD
图1.3 二层DFD
例2.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。(教材课后习题)
解:
图1.4 顶层DFD
图1.5 二层DFD
图1.6 三层DFD
图1.7 细化DFD
例3. 欲开发一个银行的活期存取款业务的处理系统:储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理;
(1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理;
(2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户;
(3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户。
绘制该系统的数据流图和软件结构图。(教材课后习题)
解:
图1.8 顶层DFD
图1.9 一层DFD
图1.10 二层DFD
图1.11 软件结构图(SC图)
2.2 DD(数据字典)的设计
例1. 北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。请用定义数据字典的方法,定义上述的电话号码。(教材课后习题)
解:
电话号码=[校内电话号码|校外电话号码]
校内电话号码=非零数字+ 3 位数字 //后面继续定义
校外电话号码=[本市号码|外地号码]
本市号码=数字零+8位数字
外地号码=数字零+3位数字+8位数字
非零数字=[1|2|3|4|5|6|7|8|9]
数字零=0
3位数字=3{数字}3 //3至3个数字
8位数字=非零数字+7位数字
7位数字=7{数字}7
数字=[0|1|2|3|4|5|6|7|8|9]
2.3 ER(实体联系图)的设计
例1. 储户的属性主要有姓名、住址、电话号码和身份证号码,储蓄所的属性主要是名称、地址和电话号码,而数额、类型、到期日期、利率和密码则是关系类型存取款的属性。试用E-R图描绘他们之间的关系。
解:
图2.1 E-R图
例2. 请为某仓库的管理设计一个ER模型。该仓库主要管理零件的订购和供应等事项。仓库向工程项目供应零件,并且根据需要向供应商订购零件。
解:本问题有三类实体,分别是“零件”、“工程项目”和“供应商”。
一种零件可供应多个工程项目,一个工程项目需要使用多种零件,因此,零件与工程项目之间的联系“供应”,是多对多( M ' N )联系;类似地,零件与供应商之间的联系“订购”,也是多对多( M ' N )联系。
实体类型“零件”的主要属性是:零件编号,零件名称,颜色,重量。实体类型“工程项目”的属性主要是:项目编号,项目名称,开工日期。实体类型“供应商”的属性主要有:供应商编号,供应商名称,地址。联系类型“供应”的属性是,向某工程项目供应的某种零件的数量。联系类型“订购”的属性是,向某供应商订购的某种零件的数量。
图2.2 E-R图
3 结构化详细设计
3.1 PFD(程序流程图)、N-S(盒图)与PAD(问题分析图)的设计
例1. 给出一组数从小到大的排序算法,分别用下列工具描述其详细过程:
(1)流程图;(2)N—S图;(3)PAD图
解:
图3.1 PFD图
图3.3 N-S图与PAD图
例2.画出下列伪码程序的程序流程图和盒图:
START
IF p THEN
WHILE q DO
f
END DO
ELSE
BLOCK
g
n
END BLOCK
END IF
STOP
解:
3.2 判定表与判定树的设计
例1.教材P142第7题(因题目太长所以没有打上来,大家自行参阅教材)
解:
令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。
(1)表示手续费计算方法的判定表如图所示:
判定表的每一列是一条计算规则。例如,第1列(规则1)规定,当交易总金额P少于1000元,且每股售价Q低于14元,且交易的股数n是100的倍数时,给经纪人的手续费为
(l+0.05)×0.084P
第16列(规则16)表明,当交易总金额P超过10000元,且每股售价Q在14元到25元之间,且交易的股数n不是100的倍数时,手续费为
(1+0.06)×(0.04P+134)
(2)表示手续费计算方法的判定树如图所示:
图3.5 例题1判定表
图3.6 例题1判定树
例2. 某高校研究生招生系统的初选方法如下:总分300(含)以上进入候选学生库,否则退档;数学分数不低于70分,则进入三级备选库,否则进入四级备选库;在三级备选库的基础上,如果专业课分数高于100分,则进入一级备选库,否则进入二级备选库;请画出对应的判定树。
解:
图3.7 例题2判定树
例3. 某校的课酬计算方案如下:(l)基本课酬为每节课10元;(2)如果班级人数超过40人,课酬增加:基本课酬×0.1;(3)如果班级人数超过60人,课酬增加:基本课酬×0.2;(4)如果教师是副教授,课酬增加:基本课酬×0.1;(5)如果教师是教授,课酬增加:基本课酬×0.2;(6)讲师,课酬不增加;(7)助教,课酬减少:基本课酬×0.1。请用判定表表达上述计算方案。
解:
图3.8 例题3判定表
3.3 环路复杂度的计算
计算公式:
McCabe方法:V(G)=E-N+2,其中E是流图中边的条数,N是节点数
例1. 画出下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗?
C EXAMPLE
LOOP:DO WHILE X>0
A=B+1
IF A>10
THEN X=A
ELSE Y=Z
END IF
IF Y<5
THEN PRINT X,Y
ELSE IF Y=2
THEN GOTO LOOP
ELSE C=3
END IF
END IF
G=H+R
END DO
IF F>0
THEN PRINT G
ELSE PRINT K
END IF
STOP
解:
图3.9 程序流程图 图3.10 转化后的流图
V(G) = 结点E-弧数n+1 = 17-11+1=7
= 判断结点 +1
=6 +1=7 = 封闭的区域数
4 软件测试用例设计
4.1 黑盒方法测试用例设计
例1. 某城市电话号码由三部分组成。它们的名称和内容分别是:
地区码:空白或三位数字;
前 缀:非‘0’或‘1’的三位数字;
后 缀:4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。
解:
(1)划分等价类
输入条件 | 有效等价类 | 无效等价类 |
地区码 | 1.空白; 2.三位数; | 1.有非数字字符;2.少于三位数字; 3.多于三位数字。 |
前 缀 | 3.从200到999之间的三位 | 4.有非数字字符;5.起始位为‘0’; 6.起始位为‘1’; 7.少于三位数字; 8.多于三位数字。 |
后 缀 | 4.四位数字。 | 9.有非数字字符;10.少于四位数字; 11.多于四位数字。 |
方方案 | 内容 | 输 入 | 预期 输出 | ||
地区码 | 前缀 | 后缀 | |||
1 | 空白 | 200~999之间的三位数字 | 四位数字 | ( )276-2345 | 有效 |
2 | 三位数字 | 四位数字 | (635)805-9321 | 有效 | |
3 | 有非数字字符 | (20A)723-4567 | 无效 | ||
4 | 少于三位数字 | (33 )234-5678 | 无效 | ||
5 | 多于三位数字 | (5555)345-67 | 无效 | ||
6 | 有非数字字符 | (345)5A2-3456 | 无效 | ||
7 | 起始位为‘0’ | (345)012-3456 | 无效 | ||
8 | 起始位为‘1’ | (345)132-3456 | 无效 | ||
9 | 少于三位数字 | (345) 92-3456 | 无效 | ||
10 | 多于三位数字 | (345)4562-3456 | 无效 | ||
11 | 有非数字字符 | (345)342-3A56 | 无效 | ||
12 | 少于四位数字 | (345)342- 356 | 无效 | ||
13 | 多于四位数字 | (345)562-34567 | 无效 |
例1.某电力公司有A、B、C、D共四类收费标准,并规定,居民用电每月200度以下按A类收费, 200度以上按B类收费。动力电以每月1万度为分界,非高峰用电不足1万度按B类收费,达到或超过1万度按C类收费。高峰用电不足1万度按C类收费,达到或超过1万度按D类收费。试用基于逻辑的测试方法为它设计足够的测试用例实现条件组合的完全覆盖。
解:
规则号 | 1 | 2 | 3 | 4 | 5 | 6 | ||
居民 用电 | 200度以下 | Y | ||||||
200度以上 | Y | |||||||
动力用电 | 非高峰 | 1万度以下 | Y | |||||
1万度以上 | Y | |||||||
高峰 | 1万度以下 | Y | ||||||
1万度以上 | Y | |||||||
收费 标准 | A类 | ▲ | ||||||
B类 | ▲ | ▲ | ||||||
C类 | ▲ | ▲ | ||||||
D类 | ▲ |
用电类型 | 输入数据 | 预期结果 | |
居民 用电 | 90度/月 | A | |
110度/月 | B | ||
动力用电 | 非 高峰 | 8000度/月 | B |
12000度/月 | C | ||
高峰 | 9000度/月 | C | |
11000度/月 | D |
例2.如图显示某程序的逻辑结构。
试为它设计足够的测试用例,分别实现对程序的判定覆概、条件覆概和条件组合覆概。
解:设计的测试方案如下:
覆盖种类 | 需满足的条件 | 测试数据 | 期望结果 | |
判定覆盖 | A>1,B=0 | A=2,B=0 | 执行S1 | |
A>1,B0或 A1,B=0或 A1,B0 | A=2,B=1或 A=1,B=0或 A=1,B=1 | 执行S2 | ||
条件覆盖 | 以下四种情况各出现一次 | |||
A>1 | B=0 | A=2,B=0 | 执行S1 | |
A1 | B0 | A=1,B=1 | 执行S2 | |
条件组合 覆盖 | A>1,B=0 | A=2,B=0 | 执行S1 | |
A>1,B0 | A=2,B=1 | 执行S2 | ||
A1,B=0 | A=1,B=0 | 执行S2 | ||
A1,B0 | A=1,B=1 | 执行S2 |
要求:1.用程序流程图表示该问题的算法;2.计算程序复杂度; 3.设计路径覆盖的测试用例。
解:
(1)
图4.1 例3程序流程图
(2)
图4.2 例3流图
(3)
图4.3 例3测试用例
4.3 考试答题注意事项
测试用例的填写按照陈元松老师规定的方式填写,将输入与预期输出都填写完整,如输入A,B,C为(1,2,3),得到的输出D,E,F为(3,4,5),则测试用例应填写为((1,2,3),(3,4,5)