软件工程课后作业汇总
软件工程课后作业汇总
软件设计”内容部分的课后作业参考答案
1.图1所给出的程序流程图代表一个非结构化的程序。
1)请说出图1所示的程序流程图所代表的是非结构化程序的原因;
2)通过设计,请你将其改造为一个与之等价的结构化程序(注:用N-S 图表示)。
答:1)图1所示的程序的循环控制结构有两个出口,显然 不符合结构化程序的定义,因此是非结构化程序。
2)等价的结构化程序的N-S 图如下图a 所示:
图1
图a
2.请写出图2所示程序流程图的PDL 语言代码。 答:PDL 语言代码如下:
BEGIN LOOP :IF P1 THEN 图2
S1
IF P2 THEN
S2
IF P3 THEN
S3
IF P4 THEN
S4
GOTO LOOP ELSE
GOTO EXIT
ENDIF
END
ELSE GOTO EXIT
ENDIF ELSE GOTO EXIT ENDIF ELSE GOTO EXIT ENDIF
3.图3(不完整的顺序图)描述了图书管理系统中读者借书的一般过程。已知借书过程中各对象之间传递的消息有:1)递过借书证;2)递过书;3)插入借书证;4)借书证有效;5)读条形码;6)条形码有效:7)确认事务;8)检查借书证;9)借书证有效;10)送回条形码;11)检查条形码;12)条形码有效;13)确认事务。请分析实际借书过程,然后在图3中补画以上消息。 答:补画消息后的完整顺序图如图3所示
图3
4.某校根据教师的职称与类别(专职、兼职)来决定其课时津贴标准。本校专职教师:教授50元,副教授40元,讲师30元,助教20元;外聘兼职教师:教授60元,副教授50元,讲师40元,助教30元。请用判定表表示上述问题。 答:教师课时津贴判定表如下表(见下页)所示。
“需求分析”内容部分的课后作业参考答案
1.请根据以下问题描述,画出领料业务的数据流图。
车间填写领料单,交给仓库要求领料,库长根据用料计划审批领料单,未批准的领料单退回车间,已批准的领料单送往仓库保管处,由仓库管理员查阅库存账。若账上有货则通知车间前来领料,否则将缺货情况通知采购员。
答:领料业务的数据流图如下图所示
用料计划 库存账 领料通知
2.请画出关于某图形用户界面的状态图。
该图形用户界面具有一个主菜单、一个包含文件打开命令的文件菜单项、并且每一个菜单项都包含退出命令。假设每次只能打开一个文件。
答:该图形用户界面的状态图如下图所示
3.请将下列类或对象之间的关系区分为继承关系、聚集关系和关联 关系。
1)人与学生 2)车与司机 3)公司与职员 4)车与奔驰车 5)老师与教授 6)班级与学生
答:题中类或对象之间的关系分别为:1)继承;2)关联;3)聚集;4)继承;5)继承;6)聚集
4.请用形式化语言定义下述文字描述中的“电话号码”。
某高校可用的电话号码有以下几类:校内电话号码由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
〈8位数字〉∷=〈非零数字〉+〈7位数字〉 〈7位数字〉∷={数字}7
〈数字〉∷=0|1|2|3|4|5|6|7|8|9
5.请为下述牙科诊所管理系统建立相应的用例模型(注:用用例图
表示)和对象模型(注:用类图表示)。
王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员等3个职员。王大夫需要一个软件系统来管理预约。
当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定的时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。
系统能按病人姓名和按日期进行查询,能显示记录的病人数据和预约信息,还能从病人记录中获知病人的电话号码。接待员可以取消预约,可以打印出前两天预约但尚未接诊的病人清单,还可以打印出关于所有病人的每天和每周的工作安排。
答:牙科诊所管理系统的用例模
如图1所示。
图1 用例图
牙科诊所管理系统的对象模型如图2所示。
图2 类图
“软件测试”内容部分的课后作业
1.作教材第332页上的第14.6、14.7和14.8题。
2.下图给出了用盒图描述的一个程序的算法,请用条件测试法(即逻辑覆盖法)设计测试用例,要求做到语句覆盖和路径覆盖。
答:
(1)实现语句覆盖的测试用例如下
① 覆盖THEN 部分的语句,即使得条件(A>0)and (B>0)和条件(C>A)or (D
均为真
测试输入:A=1, B=1, C=2, D=0 预期输出:X=2, Y=2
② 覆盖ELSE 部分的语句,即使得条件(A>0)and (B>0)和条件(C>A)or (D
均为假
测试输入:A=0, B=-1, C=0, D=1 预期输出:X=1, Y=1 (2)实现路径覆盖的测试用例如下
① 覆盖使得条件(A>0)and (B>0)和条件(C>A)or (D
测试输入:A=-1, B=-2, C=-3, D=3 预期输出:X=1, Y=0
② 覆盖使得条件(A>0)and (B>0)为假和条件(C>A)or (D
测试输入:A=-1, B=-2, C=1, D=-3 预期输出:X=1, Y=4
③ 覆盖使得条件(A>0)and (B>0)为真和条件(C>A)or (D
测试输入:A=1, B=1, C=0, D=2 预期输出:X=2, Y=2
④ 覆盖使得条件(A>0)and (B>0)和条件(C>A)or (D
3.以下是一段用PDL 语言书写的程序。请认真阅读该程序,然后按题后要求完成相应任务。 Start Input(A, B, C, D)
If (A>0) and (B>0) Then X=A+B Else X=A-B End
If (C>A) or (D
Print(X,Y) Stop 要求:(1)画出该程序的流图,并计算其Cyclomatic 复杂性度量;
(2)用基本路径测试法给出测试路径; (3)为各测试路径设计测试用例。
答:
(1)程序流图如下所示;Cyclomatic 复杂性度量为5
(2)测试路径有5条,分别为;
path1:1→2→3→4→6→7→9→11→12 path2:1→2→5→6→7→9→11→12 path3:1→2→3→5→6→7→9→11→12 path4:1→2→3→4→6→7→8→9→11→12 path5:1→2→3→4→6→7→8→10→11→12 (3)测试用例为:
path1:取A=1,B=1,C=2,D=2(任意) 期望结果:X=2,Y=0 path2:取A=0,B=1(任意),C=2,D=0(任意) 期望结果:X=-1,Y=2
path3:取A=1,B=0,C=2,D=0(任意)
期望结果:X=1,Y=2
path4:取A=1,B=1,C=0,D=-1 期望结果:X=2,Y=1 path5:取A=1,B=1,C=0,D=2
期望结果:X=2,Y=2
4.以下是一求最小值的程序,其中data 是数组,n 是data 数组的长度。
int Min(int n, int data[ ])
{
int k, j; k=0;
for ( j=1; j
if ( data [j]
要求:(1)画出该程序的流图,并计算其Cyclomatic 复杂性度量;
(2)用基本路径测试法给出测试路径; (3)为各测试路径设计测试用例。
答:
(1)程序流图如下所示;Cyclomatic 复杂性度量为3
③
(2)测试路径有3条,分别为;
path1:①→②→③
path2:①→②→④→⑤→⑥→②→„ path3:①→②→④→⑥→②→„ (3)测试用例为:
path1:取n=1,data[0]=1 期望结果:k=0
path2:取n=2,data[0]=1,data[1]=0 期望结果:k=1
path3:取n=2,data[0]=0,data[1]=1
期望结果:k=0