《软件工程》练习题答案Word下载.docx
《《软件工程》练习题答案Word下载.docx》由会员分享,可在线阅读,更多相关《《软件工程》练习题答案Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
34.动态多变量
35.数据流图
36.三种基本控制结构
37.事务分析设计
38.功能
39.用户组织的管理模式及规范
40.符号表示习惯
41.不可再分解的
42..软件需求明确
43.累计经济效益(折合成现在值)
44.硬件/操作系统
45.差别估算法
三、判断题
1.错
2.对
3.对
4.错
5.错
6.错
7.对
四、名词解释
1.软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
2.数据字典是用来定义数据流图中的各个成分的具体含义的。
它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。
3.内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
4.JSP方法是面向数据结构的设计方法,其定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构。
5.软件生存周期包括一个软件从提出开发要求开始直到该软件报废为止的整个时期。
包括:
可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等。
6.概要设计是在需求分析的基础上通过抽象和分解将系统分解成模块,确定系统功能实现。
7.也称块间联系。
指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
8.信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。
9.一个模块的作用范围是指受该模块内一个判定影响的所有模块的集合。
10.结构化分析方法(SA)是需求分析中使用最多的方法之一,适用于数据处理类型软件的需求分析。
基本思想是采用自顶向下,逐步分解的方法分析整个系统,有效地控制系统开发的复杂性。
11.CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。
CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD(计算机辅助设计)、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。
因而,CASE领域是一个应用、继承和综合的领域。
12.结构化分析方法是需求分析中使用最多的方法之一,适用于数据处理类型软件的需求分析。
基本思想是采用自顶向下、逐步分解的方法分析整个系统,有效地控制系统开发的复杂性。
五、简答题
1.模块的内聚性包括:
(1)偶然内聚
(2)逻辑内聚
(3)时间内聚
(4)通信内聚
(5)顺序内聚
(6)功能内聚
2.
(1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
(2)软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。
(3)在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。
(4)软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
(5)软件的开发至今尚未完全摆脱手工的开发方式。
(6)软件的开发费用越来越高,成本相当昂贵。
3.
耦合是对一个软件结构内各个模块之间互连程度的度量。
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。
4.计算机软件包括与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。
5.需求分析的任务是确定待开发的软件系统“做什么”。
具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册。
6.项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用估算软件。
7.在软件开发的早期,快速开发一个目标软件系统的原型,让用户对其进行评价并提出修改意见,然后开发人员根据用户的意见对原型进行改进。
8.软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
9.
(1)制定软件质量保证计划。
(2)按照质量评价体系控制软件质量要素。
(3)对阶段性的软件产品进行评审。
(4)对最终软件产品进行确认,确保软件质量。
10.支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
11.软件从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。
12.
(1)风险标识
(2)风险估算
(3)风险评价
(4)风险驾驭和监控。
13.
(1)一致性
(2)可理解性
(3)可修改性
(4)可追踪性
14.
(1)引言。
(2)可行性研究前提。
(3)对现有系统的分析。
(4)所建议系统的技术可行性分析。
(5)所建议系统的经济可行性分析。
(6)社会因素可行性分析。
(7)其他可供选择方案。
(8)结论意见。
15.
(1)经费预算经常突破,完成时间一再拖延。
(2)开发的软件不能满足用户要求。
(3)开发的软件可维护性差。
(4)开发的软件可靠性差。
16.它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
17.在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
18.
(1)自顶向下的估算方法
(2)自底向上的估算方法
(3)差别估算法
(4)根据经验估算公式
19.
(1)软件的规模越来越大,结构越来越复杂。
(2)软件开发管理困难而复杂。
(3)软件开发费用不断增加。
(4)软件开发技术落后。
(5)生产方式落后。
(6)开发工具落后,生产率提高缓慢。
20.进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
21.CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。
CASE把软件开发技术、软件工具和软件开发方法集成到一个统一而一致的框架中,并且吸收了CAD、软件工程、操作系统、数据库、网络和许多其他计算机领域的原理和技术。
22.
(1)规模:
总共的指令数或源程序行数。
(2)难度:
通常由程序中出现的操作数的数目所决定的量来表示。
(3)结构:
通常用与程序结构有关的度量来表示。
(4)智能度:
即算法的难易程度。
23.
(1)三种基本结构为:
顺序结构选择结构重复结构
(2)顺序结构的图解逻辑选择结构的图解逻辑重复结构的图解逻辑
AseqAselect(条件1)Aiterwhile(条件)
BBB
CAor(条件2)Aend
DC
AendAend
24.软件工程是一门工程性的学科,其目标主要是成功地建造一个大型软件系统。
付出较低的开发成本;
达到要求的软件功能;
取得较好的软件性能;
开发的软件易于移植;
需要较低的维护费用;
能按时完成开发任务,及时交付使用;
开发的软件可靠性高。
面临的主要问题是:
软件费用、软件可靠性、软件维护、软件生产率、软件重用。
25.
(1)采用自顶向下,逐步求精的程序设计方法。
(2)使用三种基本控制结构构造程序,分别是顺序,选择和循环
(3)采用主程序员组的组织形式。
六、理论应用题
1.
2.
(1)3个过程是:
软件定义过程、软件开发过程、软件使用与维护过程。
(2)9个阶段有:
可行性研究、需求分析、概要设计、详细设计、实现、组装测试、验收测试、使用与维护、退役。
4.
(1)软件开发的生产率P为:
P=L/E=12.1×
103LOC/24PM=504LOC/PM
(2)开发每行代码的平均成本C为:
C=S/L=168000美元/12100LOC=13.9美元/LOC
(3)代码出错率EQR为:
EQR=N/L=29个/12.1KLOC=2.4个/KLOC
(4)软件的文档率D为:
D=Pd/L=365页/12.1KLOC=30页/KLOC
5.
(1)描述本系统功能的数据流图如下所示:
(2)描绘计算机储蓄系统中数据对象的实体-联系图。
6.
7.下图为一个改进方案,将模块G的位置提高,使其作用范围为控制范围的子集,减少模块之间的联系。
8.
(1)数据流图:
(2)软件结构图:
《软件工程》练习题二答案
1.B2.D3.A4.B5.D
6.A7.D8.D9.D10.B
11.D12.C13.C14.A15.A
16.B17.C18.A19.B20.D
21.D22.D23.A24.B25.B
26.A27.D28.D29.B30.D
31.D32.C33.C34.A35.D
36.C37.A38.A39.B40.C
41.B42.B43.A44.D45.B
46.B47.A48.C49.D50.D
51.D52.D53.A54.C55.C
56.B57.D58.C59.C60.D
1.可移植性
2.输出结果
3.歧义性
4.判定树
5.形式语言
6.顺序选择循环
7.程序占用的存储空间
8.数据
9.机器
10.编码
11.最后
12.对象
13.询问
14.副作用
15.复杂度
16.确认
17.宽度优先策略
18.机器
19.菜单
20.实例化
21.窗口
22.减少
23.三
24.改正
25.机器
26.父类
27.循环
28.错误
29.白盒
30.难易
31.面向维护
32.自底向上或相反顺序
33.软件概要设计
2.错
1.指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。
或(不同的对象,收到同一消息可以产生不同的结果。
)
2.具有相似或相同性质的对象的抽象就是类。
3.对象是客观实体在问题域中的抽象。
4.程序的可移植性指把一个软件(或程序)从一个计算机环境移植到另一个计算机环境的容易程度。
5.系统流程图是描绘物理系统的工具,它用图形符号来表示系统中的各元素。
它表达了系统中各个元素之间的信息流动的情况。
6.集成测试也称组装测试或联合测试。
是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。
组装模块的方式有两种:
渐增式测试和非渐增式测试。
结构冗余:
包括静态冗余、动态冗余和混合冗余。
信息冗余:
为检测或纠正信息在运算或传输中的错误,须外加一部分信息。
时间冗余:
指重复执行指令或程序来消除瞬时错误带来的影响。
冗余附加技术:
指为实现上述冗余技术所需的资源和技术。
2.软件测试是
(1)为了发现错误而执行程序的过程;
(2)一个好的用例能够发现至今尚未发现的错误的测试。
(3)一个成功的测试是发现至今尚未发现的错误的测试。
3.就程序设计语言的工程特性而言,对程序编码有如下要求:
(1)可移植性
(2)开发工具的可利用性
(3)软件的可重用性
(4)可维护性
4.软件测试的目的是为了发现程序中的错误而执行程序的过程。
正确认识测试的目标是十分重要的,测试目标决定了测试力案的设计。
如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;
相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。
由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。
5.编码风格又称程序设计风格或编程风格。
编码的目标从强调效率转变为强调清晰。
良好的编码风格能在一定程度上弥补语言存在的缺陷,而如果不注意风格就很难写出高质量的程序。
尤其当多个程序员合作编写一个很大的程序时,需要强凋良好而一致的编码风格,以便相互通讯,减少因不协调而引起的问题。
总之,良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。
6.程序设计语言具有一致性、二义性、紧致性、局部性等特点。
7.
(1)机器语言、汇编语言:
依赖于机器,面向机器
(2)高级语言:
独立于机器,面向过程或面向对象
(3)面向问题语言:
独立于机器,非过程式语言(4GL)
(1)节简化
(2)模块化
(3)简单化
(4)文档化
(1)系统错误
(2)加工错误(算法错误)
(3)数据错误
(4)代码错误
10.静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。
11.动态测试是指事先设计好一组测试用例,然后通过运行程序来发现错误。
12.单元测试、集成测试、验收测试、系统测试
(1)编写易于修改和维护的代码
(2)编写易于测试的代码
(3)编写详细的程序文档
(4)编程中采用统一的标准和约定,降低程序的复杂性
(5)分离功能独立的代码块形成新的模块
14.根据程序的输入特性,将程序的定义域划分为有限个等价区段——“等价类”,从等价类中选择出的用例具有“代表性”,即测试某个等价类的代表值就等价于对这一类其他值的测试。
如果某个等价类的一个输入数据(代表值)测试中查出了错误,说明该类中其他测试用例也会有错误。
15.软件复用是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。
复用的软件成分—称为可复用构件(ReusableComponent),从旧软件中提取,也可以专门为复用而开发。
面向对象方法之所以特别有利于软件复用,是由于它的主要概念及原则与软件复用的要求十分吻合。
支持复用的OO概念与原则是:
对象与类、抽象、封装、继承与一般——特殊结构、整合与整体——部分结构、粒度控制、多态性。
对象与类:
OO方法用对象描述问题域中的事务,并用类作为同种对象的抽象表示。
类是系统的基本构成单位,它符合可复用构件所应具备的那些特性:
完整性、独立性、可标识性、一般性、抽象、封装:
尤其是OO方法的对象封装性,为软件复用技术提供了良好的条件。
16.
(1)对象模型:
表示了静态的结构化的系统数据性质,描绘了系统的静态结构,从客观世界实体的对象关系角度来描绘对象。
(2)动态模型:
该模型描述了系统的控制结构,它表示了瞬间的、行为化的系统控制性质,它关心的是系统的控制及操作的执行顺序,它从对象的事件和状态的角度出发,表现了对象的相互行为。
(3)功能模型:
描述了系统的所有计算。
指出发生的时间、事件和客体。
17.
(1)提高软件开发过程的能见度;
(2)提高开发效率;
(3)作为开发人员阶段工作成果和结束标志;
(4)记录开发过程的有关信息便于使用与维护;
(5)提供软件运行、维护和培训有关资料;
(6)便于用户了解软件功能、性能。
(1)建立明确的软件质量目标
(2)利用先进的软件开发技术和工具
(3)建立明确的质量保证工作
(4)选择可维护的程序设计语言
(5)改进程序文档
1.PDL语言:
N=1
WHILEN<
=10DO
IFA(N)<
=A(N+1)MAX=A(N+1);
ELSEMAX=A(N)ENDIF;
N=N+1;
ENDWHILE;
PAD图:
(1)划分等价类并编号,如下表示:
(2)为合理等价类设计测试用例,表中有两个合理等价类,设计两个例子
(3)为不合理等价类测试用例,至少设计一个测试用例
Start
a
b
DoUntilx6
Ifxlthen
f
Ifx4then
DoUntilx5
i
EndUntil
Else
g
h
Endif
SelectCasex2
Case1:
DoWhilex3
c
EndWhile
Case2:
d
Case3:
e
EndSelect
End.Until
Stop
(1)程序图如下所示:
(2)计算其巡回秩数:
V(G)=E–N+2=13–10+2=5
(1)语句覆盖测试用例
令x=2,y=0,z=4作为测试数据,程序执行路径为abcde。
(2)判定覆盖——分支覆盖
可以设计如下两组数据以满足判定覆盖:
x=3,y=0,z=1(通过路径abce);
x=2,y=1,z=2(通过路径acde)。
x=2,y=1,z=1;
覆盖路径acde
x=1,y=1,z=1;
覆盖路径ace
x=3,y=0,z=1;
覆盖路径abce
(1)判定/条件覆盖——它是指设计足够的测试用例,即满足条件覆盖又满足判定覆盖。
(2)测试用例:
x=2,y=0,z=3(覆盖x>
1,y=0,x=2,z>
1,通过路径abcde);
x=1,y=1,z=1(覆盖x≤1,y≠0,x≠2,z≤1,通过路径ace)。
10.
11.
(1)如图所示程序的循环控制结构有两个出口,因此是非结构化的程序。
(2)利用附加变量flag设计的等价的结构化程序如下图
(3)不用附加变量flag设计的等价的结构程序如下图
语句覆盖 A=3B=0
①原始分②标准分③招生计划④录取线
(1)
环路复杂性=判断数+1=6+1=7(个)
(2)
路径1:
0—①—(13)—(19)
路径2:
0—②—③—(14)—(19)
路径3:
0—②—④—⑤—(15)—(19)
路径4:
0—②—④—⑥—⑦—(16)—(19)
路径5:
0—②—④—⑥—⑧—⑨—(17)—(19)
路径6:
0—②—④—⑥—⑧—⑩—(11)―(18)—(19)
路径7:
0—②—④—⑥—⑧—⑩—(12)—(19)
(1)判定条件可能取值表:
条件名称
取值
符号
取值数
性别
男
M
M1=2
女
F
年龄
不满18岁
C
M2=3
满18岁小于50岁
Y
超过50岁
L
硕士
G
文化程度
本科
U
M3=2
(2)计算组合数2*3*2=12;
(3)初步判定表
1
2
3
4
5
6
7
8
9
10
11
12
性别
年龄
组长
√
领导
科研
行政
资料员
考研
(4)简化后的判定表
1,2,3
7,8,9
5,11
------
-----