if(datalist[j]>datalist[k])k=j;
returnk; }
(1)画出该程序的控制流图,并计算其McCabe环路复杂性。
控制流图如下,McCabe环路复杂性为3。
(2)用基本路径覆盖法给出测试路径。
测试路径:
Path1:
①→③Path2:
①→②→④→⑥→…Path3:
①→②→⑤→⑥→…
(3)为各测试路径设计测试用例。
测试用例:
Path1:
取n=1,datalist[0]=1,预期结果:
k=0
Path2:
取n=2,datalist[0]=1,datalist[1]=0,预期结果:
k=0
Path3:
取n=2,datalist[0]=0,datalist[1]=1,预期结果:
k=1
5、下图显示了某个学校课程管理系统的部分类图,其中一个学生(student)可以知道所有注册课程的教师(instructor),一个教师也可以知道所有注册课程的学生。
现在提出一个新的需求:
"一个教师也可以是某些课程的学生",那么下面设计A-C中哪一个是最好的?
为什么?
设计B是最好的。
学生和教员均可以从Candidate类继承而来;抽象出Role类,使Candidate类与Role类之间形成多对多的关联关系,实现了"一个人既是教师又是某门课的学生"这个需求。
设计A:
设计B:
设计C:
6、所谓分层体系结构是按层组织软件的一种软件体系结构,其中每层软件建立在低一层的软件层上,下图显示了一种分层体系结构。
请选择正确的答案,将其对应的序号填入图中的()。
供选择的答案:
①高效性②通用性③保密性④专用性⑤系统软件⑥中间件⑦应用软件⑧支撑软件⑨特定业务⑩子系统窗体底端
一、选择
1、(A)是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。
A软件过程B软件工具C质量保证D软件工程
2、(D)是以追求更高的效益和效率为目标的持续性活动。
A质量策划B质量控制C质量保证D质量改进
3、CMM提供了一个框架,将软件过程改进的进化步骤组织成5个成熟度等级。
除第1级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过程域又包含若干(A)。
A关键实践B软件过程性能C软件过程能力D软件过程
4、在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,(C)是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
A业务需求B功能要求C非功能需求D用户需求
5、(A)意味着一个操作在不同的类中可以有不同的实现方式。
A多态性B多继承C类的复用D封装
6、在面向对象的系统中,系统责任的良好分配原则是(B)。
A在类之间均匀分配B集中分配在少数控制类中C根据交互图的消息进行分配D根据个人喜好进行分配
7、软件配置项是软件配置管理的对象,即软件工程过程中产生的(C)。
A接口B软件环境C信息项D版本
8、软件测试计划开始于需求分析阶段,完成于(B)阶段。
A需求分析B软件设计C软件实现D软件测试
二、问答题
1、判断下列叙述的正确性,将结果(√正确,×错误)填入()中,并改正错误的说法。
(1).(×)在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。
改正:
在软件开发的过程中,一个错误修复和改正得越晚,为此所花费的代价就会越高。
(2).(√)在需求分析中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
(3).(×)软件需求规格说明书在软件开发中具有重要的作用,是软件可行性分析的依据。
改正:
软件可行性分析应在需求分析之前,因此,软件需求规格说明书不应成为软件可行性分析的依据。
(4).(√)模型是对现实的简化,建模是为了更好地理解所开发的系统。
(5).(×)UML语言支持面向对象的主要概念,并与具体的开发过程相关。
改正:
UML语言支持面向对象的概念,并独立于具体的开发过程。
(6).(√)用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。
(7).(×)好的测试用例应能证明软件是正确的。
改正:
好的测试用例在于能发现至今未发现的错误。
(8).(√)白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求。
(9).(√)当软件开发项目的进度有可能拖延时,增加开发人员并不能加快进度。
(10).(×)软件技术复审是由用户和测试人员实施的一种质量保证活动。
改正:
软件技术复审是由软件开发人员实施的一种质量保证活动。
2、你认为一个好的软件开发人员应具备哪些基本素质?
答:
(1)牢固掌握计算机软件的基本知识和技能;
(2)善于分析和综合问题,具有严密的逻辑思维能力;(3)工作踏实细致,遵循标准和规范,具有严格的科学作风;(4)工作有耐心、有毅力、有责任心;(5)善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系;(6)具有良好的书面和口头表达能力。
3、需求工程包括哪些基本活动?
每一项活动的主要任务是什么?
答:
(1)需求获取(问题识别):
采集、识别和提取用户的需求,对问题和需求形成文档化的描述,使各种人员达成一致的理解和认可。
(2)需求分析:
分析和综合所采集的信息,建立系统的详细逻辑模型。
(3)需求规格说明:
编写软件需求规格说明书,明确、完整和准确地描述已确定的需求。
(4)需求验证:
评审软件需求规格说明,以保证其正确性、一致性、完备性、准确性和清晰性。
(5)需求管理:
定义需求基线,在整个项目过程中跟踪需求状态及其变更情况。
4、为什么软件需要维护?
简述软件维护的过程。
答:
在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。
软件维护的过程:
(1)确认维护要求。
(2)对于改正性维护申请,评价错误的严重性。
对于严重的错误,立即安排人员,分析问题原因,进行"救火"性的紧急维护;对于不严重的错误,根据任务情况和轻重缓急进行统一安排。
(3)对于适应性和完善性维护申请,需要确定申请的优先级,然后安排维护工作。
并不是所有的完善性维护申请都必须承担,需要考虑商业需要、现有资源、未来发展方向等进行决定。
5、根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。
"一个程序读入3个整数,它们分别代表一个三角形的3个边长。
该程序判断所输入的整数是否构成一个三角形,以及该三角形是一般的、等腰的或等边的,并将结果打印出来。
"
要求:
设三角形的3条边分别为A、B、C,并且
(1)列出等价类表,格式如下:
输入条件
有效等价类
无效等价类
是否构成一个三角形
(1)A>0且B>0且C>0且
A+B>C且B+C>A且
A+C>B。
(2)A≤0或B≤0或C≤0
(3)A+B≤C或A+C≤B
或B+C≤A
是否等腰三角形
(4)A=B或A=C或B=C
(5)A≠B且A≠C且B≠C
是否等边三角形
(6)A=B且A=C且B=C
(7)A≠B或A≠C或B≠C
(2)设计测试用例,格式如下:
用例n:
输入【A,B,C】覆盖等价类……(列出等价类序号),输出结果为……。
用例1:
输入【3,4,5】覆盖等价类(1,2,3,4,5,6),输出结果为构成一般三角形。
用例2:
三者取一输入【0,1,2】覆盖等价类
(2),输出结果为不构成三角形。
输入【1,0,2】覆盖等价类
(2),输出结果为不构成三角形。
输入【1,2,0】覆盖等价类
(2),输出结果为不构成三角形。
用例3:
三者取一输入【1,2,3】覆盖等价类(3),输出结果为不构成三角形。
输入【1,3,2】覆盖等价类(3),输出结果为不构成三角形。
输入【3,1,2】覆盖等价类(3),输出结果为不构成三角形。
用例4:
三者取一输入【3,3,4】覆盖等价类
(1)(4),输出结果为等腰三角形。
输入【3,4,4】覆盖等价类
(1)(4),输出结果为等腰三角形。
输入【3,4,3】覆盖等价类
(1)(4),输出结果为等腰三角形。
用例5:
输入【3,4,5】覆盖等价类
(1)(5),输出结果为不是等腰三角形。
用例6:
输入【3,3,3】覆盖等价类
(1)(6),输出结果为等边三角形。
用例7:
三者取一输入【3,4,4】覆盖等价类
(1)(4)(7),输出结果为不是等边三角形。
输入【3,4,3】覆盖等价类
(1)(4)(7),输出结果为不是等边三角形。
输入【3,3,4】覆盖等价类
(1)(4)(7),输出结果为不是等边三角形。
6、下图显示了配置管理中的存取和控制,请选择合适的答案,将其对应的序号填入()中。
A①B⑥C⑨D⑧
供选择的答案:
A:
①软件工程人员②配置人员③质量保证人员B:
④异步控制⑤同步控制⑥存取控制
C~D:
⑦管理⑧登入⑨检出⑩填写变更请求
7、UML关系包括关联、聚合、泛化、实现、依赖等5种类型,请将合适的关系填写在下列描述的()中。
①用例及其协作之间是(实现)关系。
②在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是(关联)关系。
③类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是(依赖)关系。
④在MFC类库中,Window类和DialogBox类之间是(泛化)关系。
⑤森林和树木之间是(聚合)关系。
8、下图显示了某个学校课程管理系统的部分类图,其中一个学生(student)可以知道所有注册课程的教师(instructor),一个教师也可以知道所有注册课程的学生。
现在提出一个新的需求:
"一个教师也可以是某些课程的学生",那么下面设计A~C中哪一个是最好的?
为什么?
设计C最好。
学生和教员均可以从Candidate类继承而来;抽象出Role类,使Candidate类与Role类之间形成多对多的关联关系,实现了"一个人既是教师又是某门课的学生"这个需求。
设计A:
设计B:
设计C:
窗体顶端
一、选择
1、在软件生存周期的瀑布模型中一般包括计划、(C)、设计、编码、测试、维护等阶段。
A可行性分析B需求采集C需求分析D问题定义
2、ISO9000是由ISO/TC176制定的关于(B)和质量保证的国际标准。
A质量控制B质量管理C质量策划D质量改进
3.软件工程的基本要素包括方法、工具和(A)。
A过程B软件系统C硬件环境D人员
4.软件的复杂性是(A),它引起人员通信困难、开发费用超支、开发时间超时等问题。
A固有的B人为的C可消除的D不可降低的
5.软件需求分析阶段的测试手段一般采用(C)。
A总结B阶段性报告C需求分析评审D不测试
6.(C)是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A多态性B继承C封装D消息
7.协作图反映收发消息的对象的结构组织,它与(D)是同构的。
A用例图B类图C活动图D时序图
8.软件测试是为了(B)而执行程序的过程。
A纠正错误B发现错误C避免错误D证明正确
9.面向对象分析是对系统进行(A)的一种方法。
A需求建模B程序设计C设计评审D测试验收
10.在结构化分析方法中,(C)表达系统内部数据运动的图形化技术。
A数据字典B实体关系图C数据流图D状态转换图
11、在项目计划发生延迟的情况下,增加更多的程序员一定会加快进度。
错
12、软件错误可能出现在开发过程的早期,越早修改越好。
对
13、不完善的系统定义往往是导致软件项目失败的主要原因。
对
14、一个成功的项目唯一提交的就是运行程序。
错
15、只有质量差的软件产品才需要维护。
错
16、UML是一种直观化、明确化、构建和文档化软件产物的通用语言。
错
17、一个好的测试用例在于能发现至今未发现的错误。
对
18、面向对象的分析是面向计算机系统建立软件系统的对象模型。
错
19、软件工作的考虑范围主要是程序设计和实现。
错
20、等价类划分方法将所有可能的输入数据划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。
对
二、问答题
1、(共10分)下图显示了McCall质量模型,请选择正确的答案,并将其对应的序号填入图中的括号(3596)。
供选择的答案:
①高效性②通用性③可测试性④专用性⑤可复用性⑥可使用性⑦应用软件⑧支撑软件⑨正确性⑩硬件环境
2、(共10分)UML关系包括关联、聚合、泛化、实现、依赖等5种类型,请将合适的关系填写在下列描述的()中。
1.在学校中,一个导师可以指导多个研究生,一个研究生可以由多个导师指导,那么导师和研究生之间是(关联)关系。
2.交通工具与卡车之间是(泛化)关系。
3.公司与部门之间是(聚合)关系。
4.图形与矩形之间是(泛化)关系。
5.参数类及其实例类之间是(实现)关系。
3、(共20分)回答下列问题:
1.软件工程的基本目标是什么?
软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下:
(1)合理预算开发成本,付出较低的开发费用;
(2)实现预期的软件功能,达到较好的软件性能,满足用户的需求;
(3)提高所开发软件的可维护性,降低维护费用;
(4)提高软件开发生产率,及时交付使用。
2.原型化方法主要用于解决什么问题?
试说明这种方法的主要优缺点。
建立原型的主要原因是为了解决在产品开发的早期阶段需求不确定的问题,用户、经理和其他非技术项目风险承担者发现在确定和开发产品时,原型可以使他们的想象更具体化。
原型在软件开发过程中可以起到以下主要作用:
(1)明确并完善需求原型作为一种需求工具,它初步实现所理解的系统的一部分。
用户对原型的评价可以指出需求中的许多问题,在你开发真正产品之前,可以最低的费用来解决这些问题。
(2)探索设计选择方案原型作为一种设计工具,用它可以探索不同的用户界面技术,使系统达到最佳的可用性,并且可以评价可能的技术方案。
(3)发展为最终的产品原型作为一种构造工具,是产品最初子集的完整功能实现,通过一系列小规模的开发循环,你可以完成整个产品的开发。
3.在下列用例图中,哪些是系统角色?
Banknetwork、Manager、Clerk
4、(共20分)下面是一段插入排序的程序,将R[k+1]插入到R[1…k]的适当位置。
R[0]=R[k+1];
j=k;
while(R[j]>R[0]){
R[j+1]=R[j];
j--;}
R[j+1]=R[0];
用路径覆盖方法为它设计足够的测试用例(while循环次数为0、1、2次)。
画出该程序的流程图:
测试用例设计
循环
次数
输入数据
预期结果
覆盖路径
j
R[i-2]
R[i-1]
R[i]
R[i+1]
R[0]
j
R[i-2]
R[i-1]
R[i]
R[i+1]
约束
路径
0
i
-
-
1
2
2
i
-
-
1
2
<
①③
i
-
-
1
1
1
i
-
-
1
1
=
①③
1
i
-
1
3
2
2
i-1
-
1
2
3
><
①②③
i
-
2
3
2
2
i-1
-
1
2
3
>=
①②③
2
i
1
3
4
2
2
i-2
1
2
3
4
>><
①②②③
i
2
3
4
2
2
i-2
2
2
3
4
>>=
1②③
单项选择题
1.哪个活动可在可行性分析阶段进行?
(D)
A.编码B.测试C.设计D.制订市场营销计划
2.在数据流程图中,有名字及方向的成分是(C)。
A.控制流B.信息流C.数据流D.信号流
3.以下各图中不是UML使用的图是(A)。
A.数据流程图B.用例图C.类图D.顺序图
4.下图中,类的关系是(A)。
A.依赖B.关联C.聚集D.泛化
5.甘特图是一种(D)。
A.UML模型B.过程模型C.系统构架的抽象模型D.进度计划的表达方式
6.下面不属于软件配置管理任务的是(D)。
A.变更控制B.配置审核C.状态报告D.用例分析
7.数据耦合、公共耦合、印记耦合、控制耦合的耦合性从低到高的顺序是(B)
A.数据、公共、印记、控制B.数据、印记、控制、公共
C.控制、数据、印记、公共D.控制、数据、公共、印记
8.软件需求分析的主要任务是准确地定义出要开发的软件系统是(C)
A.如何做B.怎么做C.做什么D.对谁做
9.可行性分析研究的目的是(B)
A.争取项目B.项目值得开发否C.开发项目D.规划项目
10.具有风险分析的软件生存周期模型是(C)
A.瀑布模型B.喷泉模型C.螺旋模型D.增量模型
11.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)
A.软件工程B.软件周期C.软件危机D.软件产生
12.程序的三种基本控制结构的共同特点是(C)
A.只能用来描述简单程序B.不能嵌套使用C.单入口,单出口D.仅用于自动控制系统
13.数据字典是用来定义_________中的各个成份的具体含义的。
(D)
A.流程图B.功能结构图C.系统结构图D.数据流图
14.为了使软件具有清晰结构和良好的风格,下面关于程序设计风格的叙述不可取的有(C)
A.尽量不要进行浮点数的相等比较B.应当有适量的注释C.尽可能对代码优化D.使用有意义的标识符
15.使用白盒技术设计测试用例的方法包括(B)
A.边界值分析B.循环测试C.等价类划分D.回归测试
16.下列模块内聚中,内聚性最强的是(A)。
A.功能内聚B.偶然内聚C.过程内聚D.顺序内聚
17.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:
-