软件工程第五版习题及解答Word下载.docx
《软件工程第五版习题及解答Word下载.docx》由会员分享,可在线阅读,更多相关《软件工程第五版习题及解答Word下载.docx(31页珍藏版)》请在冰豆网上搜索。
![软件工程第五版习题及解答Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/4/01dd1d32-8430-41b6-8001-1371bcaa8dfc/01dd1d32-8430-41b6-8001-1371bcaa8dfc1.gif)
软件开发费用不超过X万元。
5.初步设想:
建议在系统中完成安排航班、打印取票通知、打印票务账单、打印机票等主要功能。
6.可行性研究:
建议进行大约X周的可行性研究,研究费用不超过X元。
(2)可行性分析技术可行性:
使用现有的技术能够实现此系统,在现有资源(包括硬件资源、软件资源、技术人员的技术水平和已有的工作基础)条件下,技术风险不大,项目可以实现。
经济可行性:
此系统能够方便旅客订票,具有一定的经济效益和社会效益。
法律可行性:
此项目开发要符合航运系统相关要求。
操作可行性:
现有制度、人员素质、操作方式可行。
(3)系统流程图
第3章
、判断题
1-5BACDB6-10ABDAA11-15BABDB16-20ADCDB
1、需求分析的基本任务是要准确地理解旧系统、定义新系统的目标,为了满足用户需要,回答“系统必须做什么”的问题,即确定系统必须完成哪些工作,对新系统提出完整、准确、清晰、具体的要求。
具体任务是:
明确问题定义、导出软件的逻辑模型、编写软件需求规格说明书。
“做什么”,即深入描述软件的功能和性能,确定软件设计的限制和软件与其他系统元素的接口细节,定义软件的其他有效性需求。
“怎么做”,即着手软件需求的实现:
用比较抽象概括的方式确定目标系统如何完成预定的任务,确定系统的物理模型。
2、建立目标系统逻辑模型的一般过程:
(1)由当前物理系统导出当前系统物理模型;
(2)由当前系统物理模型,导出当前系统逻辑模型;
3)参考当前系统逻辑模型,设想出新系统逻辑模型。
3、数据流图是用于表示系统逻辑模型的一种工具。
它从数据传递和加工的角度,以图形的方式描述数据在系统中流动和处理过程。
它表示了系统内部信息的流向以及系统的逻辑处理功能。
数据流图的主要成分有四种:
数据流、数据存储、加工、数据流的源点和终点。
4、
数据词典是数据的集合,它对数据流图中的各个元素作完整的定义和说明,是数据流图的补充工具。
数据流图和数据词典共同构成系统的逻辑模型,两者缺一不可。
其内容包括:
数据流、数据项、数据结构、数据存储、加工逻辑、外部实体6类元素。
四、应用题
1、
“学生管理系统”的顶层图和0层图。
顶层图:
0层图:
学生档案={学号+姓名+性别+年龄+专业+班级}成绩库=学号+课程号+分数
课程库=课程号+课程名+学分
学生信息=学号+姓名+性别+年龄+专业+班级考试成绩=学号+课程号+分数
学号=”00001”...”99999”
姓名=2{汉字}4
专业=”01”...”99”注:
专业代号2位数字班级=”01”...”99”注:
班级代号2位数字学分=0..99
2、数据流图如下:
3、
0层图:
0层图
判定表如下:
设:
性别
:
男:
M
女:
F
学历
初中:
A
高中B大专:
C
年龄
小于25:
C
25至40:
Y40以上:
L
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
B
Y
脱产学习
X
电工
技术员
修理工
钳工
车工
清洁工
化简后的判定表
7-9
16-18
--
脱产学习
判定树:
年龄学历性别
男
男---修理工女–--清洁工
男钳工
女车工
男---钳工
女–--车工
技术员
脱产学习
电工
技术员
结构化语言:
IF年龄>
40THEN
SWITCH(学历){CASE:
“初中”
IF性别为“男”THEN做修理工
ELSE做清洁工
CASE:
“高中”
IF性别为“男”THEN做修理工ELSE做清洁工CASE:
“大专”做技术员
ELSEIF年龄>
=25且年龄<
40THENSWITCH(学历){CASE:
IF性别为“男”THEN做钳工ELSE做车工
IF性别为“男”THEN做钳工
ELSE做车工
“大专”
做技术员
}
ELSE
SWITCH(学历)
{CASE:
“初中”脱产学习
“高中”做电工
“大专”做技术员}
5、
国内
N
重量
H
运费(元)
6W
6.5(W-20)+120
24
12W
13(W-20)+240
判定表
注:
设重量为W(单位为Kg)
重量<
=2Kg,重量>
2Kg且重量<
=20Kg,重量>
20Kg,分别用L、M、H表示
重量<
=2Kg
国内重量>
2Kg且<
=20Kg
重量>
20Kg
国际重量>
12元
6W元
24元
12W元13(W-20)+240
6、
设汇款金额为
汇额
<
=200
>
200且<
=5000元
5000
W元。
判定树如下:
本埠/外埠
汇费
2元W*0.01元50元
汇额(元)
本埠
汇费(元)
W*0.01
50
三种汇额分别用符号
M、H表示,汇款额用W表示。
L、
可简化为:
第4
1√2√3×
6√7×
8√
1-5CBCDB6-10DACCA11-15CABDC
1、软件设计中一般应遵循以下原则:
模块化、抽象、信息隐蔽与局部化、一致性、完整性和可验证性。
2、总体设计又称概要设计,是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构和数据库模式。
3、
(1)模块功能的完善化
(2)消除重复功能,改善软件结构(3)模块规模应该适中(4)模块的深度、宽度、扇出和扇入都应适当(5)模块的作用范围应该在控制范围之内(6)力争
降低模块接口的复杂程度(7)设计单入口、单出口的模块(9)模块功能应该可以预测
1、模块A和B是数据耦合,模块B是功能内聚。
2、模块A和B是控制耦合,模块B是逻辑内聚。
1√2×
3×
4×
5×
1-5ACACA
1、
(1)算法设计
(2)数据结构设计(3)模块接口细节设计(4)测试用例设计(5)数据库物理设计(6)数据代码设计(7)其他设计(8)编写详细设计说明书并进行评审。
2、在设计数据输入界面时应做到:
尽量简化用户的工作、减少输入的出错率;
减轻用户的记忆负担、尽可能减少输入量并实现自动输入;
对共同的输入设置默认值;
使用代码或缩写;
自动填入已输入过的内容;
列表式输入;
数据分组输入。
3、代码设计的原则是标准化、唯一性、可扩充性、简单性、规范性和适应性。
(1)求整数1-n的累加和SUM,其中n的值由键盘输入。
PAD图如下
2)求整型数组K[50]中的最大值和次大值。
N-S图如下:
定义数组k[50]fst=k[0],sed=k[1]
I=3
当i<
=50时
T
k[i]>
fst
scd
scd=fstfst=k[i]
Scd=k[i]
I=i+1输出fst,scd
3)求s=1-1/2!
+1/3!
-1/4!
+⋯.+1/n!
,其中n的值由键盘输入。
PAD图如下:
输入N
3.将程序流程图转化为PAD图
(1)
当P
直到O
结束
2)
4)
(5)
对于分支结构
if(f)
a;
elseb;
只使用顺序和循环结构的PAD图如下:
第6章
一、选择题
1-5CBDDA6-10CADDA10-15CAACC
二、简答题
1.简要介绍用例图的三个要素。
用例图主要包括以下三个元素:
1用例(UseCase):
用例是系统的使用过程或要执行的动作序列,用来描述某个参与者使用系统所完成的功能。
在图中用椭圆来表示,用例名称可写在椭圆中或椭圆下面。
2参与者(Actor)。
或称角色或执行者,它是系统外部的一个实体(可以是任何的事物或人所扮演的角色等)。
在图中用一个小人图形表示。
3关联。
表示角色与用例之间的驱动和反馈关系,也可以表示用例间的包含与扩展关系。
在图中用线段或带箭头的线段表示。
2.分别写出UML对象图中对象的三种表示方式。
在UML中,对象图和类图一样采用矩形图示,不过对象名称下方有下划线(类名称下方没有下划线),通常对象名采用:
对象名:
类名、:
类名或对象名三种格式表示,中间形式是尚未给对象命名,最后一种形式是省略了类名。
3.举例说明类图和对象图之间的关系。
对象图展示了一组对象和它们之间的关系。
对象图是类图的实例,对象之间的连接是类之间关联的实例。
类图和对象图的不同点在于对象图显示类的多个对象实例,而不是实际的类。
4.活动图的主要作用是什么,状态图的主要作用是什么?
状态图和活动图都属于行为图,主要用于分析、设计阶段描述对象的行为。
状态图适于描述单个对象状态的变化情况,活动图适于描述一个工作过程、多个对象之间的合作。
状态图描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。
活动图(ActivityDiagram)是状态图的变种。
状态图适于描述单个对象状态的变化情况,而活动图的目的是描述动作(执行的工作和活动),以及对象状态改变的结果,适于描述一个工作过程、多个对象之间的合作。
与状态图不同的是,活动图中动作状态的迁移不是靠事件触发,当动作状态中的活动完成时就触发迁移,活动图中的一个活动结束后将立即进行下一个活动。
三、应用题
略。
1-5BDCAC6-10CAACA1CCBAD
二、简答题
1、面向对象分析通常要建立哪三种模型?
它们分别描述系统的哪些方面?
面向对象分析通常要建立三种模型,分别是对象模型、动态模型和功能模型。
其中:
对象模型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的模型;
动态模型描述系统的控制结构,它是用来确定各个对象之间交互及整体的控制结构的模型;
功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。
2、对象模型有哪五种层次?
复杂问题(大型系统)的对象模型由5个层次组成,即主题层、类-&-对象层、结构层、属性层和服务层。
(1)类-&
-对象层:
定义类和属性。
在这个层次将分析与待开发软件对应的各个现实世界的实体,并从中抽象出类和对象。
(2)结构层:
定义对象和类之间的层次结构关系,如一般-特殊结构(即继承结构)、整体
-部分结构(即组合结构)。
(3)属性层:
定义属性。
为类和对象层中抽取出来的各个类和对象设计静态属性和它们之间的关系。
(4)服务层:
定义对象和类的动态属性以及对象之间的消息通信。
(5)主题层:
主题是指导读者理解大型、复杂模型的一种机制。
定义若干个主题,把有关的对象分别划归不同的主题,每个主题构成一个子系统。
3、建立对象模型的基本过程是什么?
建立对象模型的基本过程如下:
1、第一代语言(机器语言)、第二代语言(汇编语言)、第三代语言(高级语言)类繁多,又可分为传统的基础语言、结构化语言和专用语言三类。
2、1)源程序文档化2)数据说明3)语句构造4)输入与输出5)效率
(1)项目的应用领域。
(2)用户的要求。
(3)软件开发工具。
(4)算法和数据结构的复杂性。
(5)软件开发人员的知识。
(6)系统的可移植性要求。
1.
一方面尽量不使用“非”条件;
另一方面语句格式不规范。
改为:
if(x<
=0)
{
x=-x;
2.
if((i+1)%10==0)
printf(”%n5”,d*(a+i));
else
printf(”%,5*d(a”+i));
3.按编码风格优化后的代码为程序名称:
sumint.c设计者:
王永涛日期:
2008年4月22日程序功能:
由键盘输入若干个整数,计算它们之和,并打印整数个数及其和
#include<
stdio.h>
voidmain()
intcount,j=1printf(“请输入整数个数scanf("
%d"
&
count);
while(j<
=count)
printf(“请输入第scanf("
x);
sum=sum+x;
j++;
printf("
%d个整数的和为%d\n"
j,sum);
}}
for(i=0;
i<
n-1;
i++)
t=i;
for(j=i+1;
j<
n;
j++)
if(a[j]<
a[t])
t=j;
if(t!
=i)
{temp=a[t];
a[t]=a[i];
a[i]=temp;
/*****************************
程序名:
sumints.c
程序功能:
求整数1~n的累加和sum,其中n的值由键盘输入*****************************/
voidmain()
inti,n,sum=0;
printf(“请输入整数个数n\n”);
for(i=1;
=n;
i+++)
scanf(“%d”);
/*输入整数,使用空格、回车或TAB键分隔*/sum=sum+i;
/*计算累加*/
printf(“1~%d的累加和sum=%d\n”,n,sum);
第9章
一、判断题1×
2√
1-5CABAD6-10ABACA11-15ADDDD
1、软件测试的目的是为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量。
软件测试是软件开发过程中的一个重要阶段,是软件产品正式投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
软件测试的结果也是分析软件可靠性的重要依据。
在软件测试中,应注意以下指导原则:
(1)所有测试都应追溯到需求
(2)坚持“尽早地和不断地进行软件测试”。
(3)测试用例应由输入数据和预期的输出结果两部分组成。
(4)程序员应避免测试自己的程序。
(5)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
(6)充分注意测试中的群集现象。
(7)严格执行测试计划,排除测试的随意性。
(8)应当对每个测试结果做全面检查。
(9)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。
(10)应长期保留所有测试用例。
保留测试用例有助于以后修改程序后的回归测试。
2、测试过程分为4个步骤,即单元测试、组装测试、确认测试和系统测试。
数据源有:
(1)软件配置:
包括软件需求规格说明、软件设计规格说明、源代码等。
(2)测试配置:
包括测试计划、测试用例、测试驱动程序等。
(3)测试工具:
测试工具为测试的实施提供某种服务,以减轻测试过程中的手工劳动,提高测试效率。
3、黑盒测试法与白盒测试法的根本区别是设计测试用例的方法不同。
前者是测试产品的功能,后者是测试产品的内部结构和处理过程。
通过黑盒测试主要发现以下错误:
(1)是否有不正确或遗漏了的功能。
(2)界面是否有错,能否正确地接受输入数据,能否产生正确的输出信息。
(3)是否有数据结构或外部数据库访问错误。
(4)性能是否满足要求。
(5)是否有初始化或终止性错误。
白盒测试法是一种程序级的微观上的测试,不适合于大单元、大系统的测试,主要用于很小单元的测试,以及从事软件底层工作、生产构件的测试人员使用。
4、软件测试的目的是尽可能多地发现程序中的错误,而调试的目的是根据测试时发现的错误,找出错误的原因和具体位置,并改正错误。
测试与调试的不同如下表所示。
测试与调试的不同
测试(test)
调试(debug)
目的是发现错误
目的是找出错误位置并排除
有计划
被动的
以已知条件开始,使用预先定义的程序,有预知的结果
以不可知内部条件开始,结果一般不可预见
由独立的测试组,在不了解软件设计的条件下完成
由程序作者进行,谁开发的程序就由谁来调试
5、
(1)面向对象的单元测试面向对象的单元测试是进行面向对象集成测试的基础。
面向对象的单元测试以类或对象为单位。
由于类包含一组不同的操作,并且某些特殊的操作可能被多个类共享,因此,单元测试不能孤立地测试某个操作,而是将操作作为类的一部分来测试。
(2)面向对象的集成测试因为在面向对象的软件中没有层次的控制结构,并且构成类的成分彼此之间存在着直接或间接的交互作用,所以,传统意义上的自顶向下和自底向上的集成策略将不再适用。
(3)面向对象的确认测试在确认测试层次,不需要再考虑类的实现和交互的具体细节,只要验证交互过程及功能,包括提供的用户界面,用户可见的操作,软件的反