A.X=1,X=100B.X=0,X=1,X=100,X=101C.X=2,X=99D.X=0,X=101
2.下列关于软件验收测试的合格通过准则错误的是(C)
A.软件需求分析说明书中定义的所有功能已全部实现B.所有测试项没有C.立项审批表、需求分析文档、设计文档和编码实现不一致D.验收测试工件齐全
3.以下关于集成测试的内容正确的有(D)
①集成测试也叫组装测试或者联合测试②测试在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失③测试一个模块的功能是否会对另一个模块的功能产生不利影响④测试各个子功能组合起来,能否达到预期要求的父功能⑤测试全局数据结构是否有问题⑥测试单个模块的误差累积起来,是否会放大,从而达到不能接受的程度
A.①②④⑤⑥B.②③④⑤⑥C.①②③⑤⑥D.以上全部正确
4.为了提高测试的效率,应该(D)
A.随机的选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划D.选择发现错误的可能性大的数据作为测试数据
5.软件调试的目的是(A)
A.找出错误所在并改正之B.排除存在错误的可能性C.对错误性质进行分类D.统计出错的次数
6.单元测试一般以白盒为主,测试的依据是(A)
A.模块功能规格说明B.系统模块结构图C.系统需求规格说明D.统计出错的次数
7.下次关于α、β测试的描述中正确的是(C)
A.α测试不需要用户代表参加B.β测试不是验收测试的一种C.α测试可以有用户代表参加D.β测试是系统测试的一种
8.软件测试的目的是(B)
A.评价软件的质量B.发现软件的错误C.找出软件中所有的错误D.证明软件是正确的
9.软件测试用例主要由输入数据和(C)两部分组成
A.测试计划B.测试规则C.预期输出结果D.以往测试记录分析
10.在黑盒测试中,着重检查输入条件组合的方法是(D)
A.等价类划分法B.边界值分析法C.错误推测法D.因果图法
第八章软件维护技术
1.随着软硬件环境变化而修改软件的过程是(B)
A.校正性维护B.适宜性维护C.完善性维护D.预防性维护
2.为了提高软件的可维护性,在编码阶段应注意(B)
A.保存测试用例和数据B.提高模块的独立性C.文档的副作用D.养成好的程序设计风格
3.为提高系统性能而进行的修改属于(C)
A.纠正性维护B.适应性维护C.完善性维护D.测试性维护
4.软件生命周期中,(D)阶段所站的工作量最大
A.分析阶段B.设计阶段C.编码阶段D.维护阶段
5.系统维护中要解决的为题来源于(D)
A.系统分析阶段B.系统设计阶段C.系统实施阶段D.上述3个阶段(A、B、C)都包括
6.软件维护的副作用,是指(C)
A.开发时的错误B.隐含的错误C.因修改软件而造成的错误D.运行时的误操作
第一章软件工程引论
1.软件工程出现的主要原因是软件危机的出现。
√
2.文档是软件产品的一部分,没有文档的软件就不能称为软件。
√
3.软件危机的主要表现是软件需求量迅速增加,软件价格上升。
×
4.一个成功的项目唯一应该提交的就是运行程序法。
×
5.与计算机科学的理论研究不同,软件工程是一门原理性学科。
×
第二章软件生命周期及开发模型
1.瀑布模型和增量模型都属于整体开发模型。
×
2.原型模型可以有效地适应用户需求的动态变化。
×
3.螺旋模型在瀑布模型和增量模型的基础上增加了风险分析活动。
√
4.软件过程改进也是软件工程的范畴。
√
5.在软件开发中采用原型系统策略的主要困难是成本问题。
×
第三章结构化需求分析
1.需求分析的主要目的是制定软件开发的具体方案。
×
2.用户对软件需求的描述不精确,往往是产生软件危机的原因之一。
√
3.分层的DFD图可以用于可行性分析阶段,描述系统的物理结构。
×
4.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取有价值的需求。
√
5.需求规格说明数描述了系统每个功能的实现。
×
第四章结构化软件设计
1.在同一用户界面中,所有的菜单选择,命令输入、数据显示和其它功能应采用不同的形式和风格。
×
2.最高的耦合度是数据耦合。
√
3.编程中应采用统一的标准和约定,降低程序的复杂性。
√
4.流程图也称为框图程序,是程序最常用的一种表示法。
√
5.理想的人机界面应针对具有典型个性的特定的一类用户设计。
√
6.重视程序结构的设计,能是程序具有较好的层次结构。
√
7.软件过程不用遵循“自上而下,逐步求精”的原则和单入口单出口的结构化设计思想。
×
8.软件开发、设计几乎都是从头开始,成本和进度很难估计。
√
9.耦合度是对软件结构中模块间关联程度的一种度量。
在设计软件是应追求耦合尽可能紧密的系统。
×
10.SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相适应。
×
第五章面向对象的需求分析
1.边界对象表示了系统与参与者之间的接口。
在每一个用例中,该对象从参与者处收集信息,并将之转换为一种实体对象和控制对象使用的形式。
√
2.采用面向对象的方法开发软件的过程中,抽取和整理用户需求并建立问题域精确模型的过程叫面向对象分析。
√
3.继承仅仅允许单重继承,即不允许一个子类有多个父类。
×
第六章面向对象的软件设计
1.面向对象程序设计应该在面向对象分析之前,因为只有产生了设计结果才可以对其进行分析。
×
2.面向对象设计产生的结果在形式上可以与面向对象分析产生的结果类似,例如都可以使用UML表达。
√
第七章软件测试技术
1.软件测试就是为了验证软件功能的实现是否正确,是否完成既定目标的活动,所以软件测试在软件工程而后期才开始具体的工作。
×
2.发现错误多的模块,可能残留在模块中的错误也多。
√
3.测试人员在测试过程中发现一处问题,如果问题影响不大,而自己有可以修改,应立即将此问题正确修改,以加快、提高开发的进程。
×
4.路径测试不属于单元测试的内容。
√
5.测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。
×
6.软件测试只能发现错误,但不能保证测试后的软件没有错误。
√
7.集成测试是有最终用户来实施的。
×
8.所有的逻辑覆盖标准中,查错能力最强的语句覆盖。
×
9.等价类划分方法能够有效的检测输入条件的各种组合可能引起的错误。
×
10.验收检测方法需要考察模块间接口和各模块之间的联系。
×
第八章软件维护技术
1.维护申请报告是一种由用户产生的文档,它用作计划维护任务的基础。
×
2.维护阶段是软件生存周期中时期最短的阶段,也是花费精力和费用最少的阶段。
×
3.在软件维护中,因修改软件而导致出现错误或其它情况成为维护的副作用。
√
4.为了提高软件的可维护性和可靠性而对软件进行的修改称为适应性维护。
×
5.维护的副作用有编码副作用、数据副作用、文档副作用3种。
√
第一章软件工程引论
1.什么是软件危机它和软件工程有什么关系
答:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:
如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
2.简述软件和软件工程的定义以及软件工程的形成过程。
答:
软件是与计算机系统操作有关的程序、规程、规则及其文档和数据的统称。
软件由两部分组成:
一是机器可执行的程序和有关的数据;二是与软件开发、运行、维护、使用和培训有关的文档。
软件工程是指导计算机软件开发和维护的工程学科。
它强调按照软件产品的生产特性,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前最好的技术结合起来,以便经济地开发出高质量的软件并有效地维护它。
软件工程的发展经历了以下3个阶段。
第一阶段:
20世纪70年代,—传统软件工程时代。
第二阶段:
20世纪80年代,—过程软件工程时代。
第三阶段:
进入20世纪90年代以后,—构件软件工程时代。
3.软件工程的目标是什么如何解决多目标之间的矛盾
答:
软件工程的目标:
软件开发成本较低。
软件功能能够满足用户的需求。
软件性能较好。
软件可靠性高。
软件易于使用、维护和移植。
能按时完成开发任务,并及时交付使用。
有些目标之间是相互补充的,如易于维护和高可靠性之间、功能强与可用性之间;有些目标是彼此相互冲突的,如若只考虑降低开发成本,很可能同时也降低了软件的可靠性,如果一味追求提高软件的性能,可能造成开发出的软件对硬件的依赖性较强,从而影响到软件的可移植性;不同的应用对软件质量的要求不同,如对实时系统来说,其可靠性和效率比较重要;对生命周期较长的软件来说,其可移植性、可维护性比较重要,所以,应该根据不同的系统需求决定个目标之间的重要性。
4.在软件开发中软件开发工具有什么作用
答:
软件开发工具是指用来辅助软件开发、维护和管理的软件。
现代软件工程方法得以实施的重要保证是软件开发工具和环境。
软件开发工具使软件在开发效率、工程质量、减少软件开发对人的依赖性等多方面得到改善
5.什么是软件支持过程它与软件工程方法学有何关系
答:
软件过程是指生产满足需求且达到工程目标的软件产品所涉及的一系列相关活动,它覆盖了需求分析、系统设计、实施以及支持维护等各个阶段。
软件过程有各种分类方法。
按性质划分软件过程可概括为基本过程类、支持过程和组织过程类。
可见软件支持过程是软件过程中的一种。
6.在软件工程知识体系中,将软件工程划分为哪些知识域
答:
SWEBOK将软件工程知识体系划分为10个知识域,分为两类过程。
一类是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类是支持过程,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量。
7.提出的软件工程基本原则的作用是什么
答:
1.采用分阶段的生命周期计划,以实现对项目的严格管理
2.坚持进行阶段评审,以确保软件产品质量
3.实行严格的产品控制,以适应软件规格的变更
4.采用现代程序设计技术
5.软件成果能清楚地审查
6.开发小组人员应该少而精
7.承认不断改进软件工程实践的必要性
第二章软件生命周期及开发模型
1.简述什么是软件生命周期。
根据国家标准《计算机软件开发规范》,软件生命周期主要包括哪几个阶段
答:
作为工程化的一般特征,软件产品和其他工业产品一样,软件产品也包括设计、生产、使用和消亡几个阶段,并称之为软件的生命周期,即指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代,而停止该软件使用的全过程。
国家标准GB8566—1988《计算机软件开发规范》将软件生命周期划分为几个阶段:
可行性研究、项目计划、需求分析、总体设计、详细设计、编码实现(包括单元测试、集成测试、确认测试)、系统运行和维护。
这几个阶段又可以归纳为3个阶段,即软件定义阶段,软件开发阶段和软件运行维护阶段。
2.瀑布模型有哪些特点对于里程碑,你有哪些认识
答:
1970年最早提出瀑布模型。
答:
瀑布模型的特点:
(1).线性化模型结构;
(2).各阶段具有里程碑特征;(3).基于文档的驱动;(4).严格的阶段评审机制。
其中的里程碑是指瀑布模型中的阶段只能逐级到达、不能跨越;每个阶段都有明确的任务,都需要产生确定的成果。
由于瀑布模型是一种线性模型,要求项目严格按规程推进,必须等到所有开发工作全部完成以后才能获得可以交付的软件产品。
因此,瀑布模型不太适用于用户需求经常变更的软件项目。
瀑布模型是一种基于里程碑的阶段过程模型,它所提供的里程碑式的工作流程,为软件项目按规程管理提供了便利。
例如,按阶段制订项目计划,分阶段进行成本核算,进行阶段性的评审等。
这为提高软件产品质量提供了有效保证。
3.试说明原型模型的两种实现方案各有什么特点,各适用于哪些情况。
答:
原型可以分为3类。
1)抛弃式原型:
这种原型在目的达到后即被抛弃,原型不作为最终产品,如上所述。
2)进化式原型:
这类原型的形成和发展是逐步完成的,它是高度动态迭代和高度动态循环,每次迭代都要对系统重新进行需求规格说明、重新设计、重新实现和重新评价,所以是对付变化最为有效的方式。
3)增量式模型:
系统是一次一段地增量构造,与演化式原型的最大区别在于增量式开发是在软件总体设计基础上进行的。
4.一般认为,只有大型项目才采用螺旋模型,原因是什么
答:
螺旋模型的优越性在于它吸收了“进化”的概念,使得开发人员和用户对每一个演化层出现的风险均有所了解,并对此做出反应。
但使用该模型需要丰富的风险评估经验和专门知识,如果项目风险较大又未及时发现,势必造成重大损失。
实际上,对软件项目进行风险分析也需要费用,假如项目风险分析费用过高,甚至超过了项目的开发费用,显然就不合适了。
一般大型项目才有较高的风险,才有进行详细风险分析的必要。
因此,这种模型比较适合大型的软件项目。
5.为什么说构建复用模型是一种有利于软件按工业流程生产的过程模型
答:
对象技术将事物实体封装成包含数据和数据处理方法的对象,并抽象为类。
经过适当的设计和实现的类也可称为构件。
由于构件具有一定的通用性,可以在不同的软件系统中被复用。
在基于构件复用的软件开发中,软件由构件装配而成,这就如同用标准零件装配汽车一样。
构件复用技术,它能带来更好的复用效果,并且具有工程特性,更能适应软件按工业流程生产的需要。
6.敏捷方法的价值观和原则与传统的方法有哪些联系和区别
答:
相对于“非敏捷”,敏捷不仅是体现在有效地响应变化,它还包括鼓励程序员团队与业务专家之间的紧密协作、面对面地沟通(认为比书面的文档更有效)、强调可运行软件的快速交付而不是中间产品,敏捷过程提倡可持续开发。
建立紧凑而自我组织型的团队,能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。
7.有什么情况下会建议不用敏捷方法来开发软件系统
从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。
8.具有原型化的瀑布模型具有什么特点他和瀑布模型最大的不同是什么
答:
为了克服瀑布模型的问题,可以在需求阶段或设计阶段平行地进行几次快速建立原型的工作。
原型开发后,可以获得更为清晰的需求反馈信息,既可以消除风险或减少不确定性,又可以采用平行瀑布模型方式。
在瀑布模型的各阶段间转换时,可以适当并行扩展各阶段的开发工作。
例如,在需求分析完成60%时,就可以开始进行这60%已完成分析部分的设计工作,同时并行进行其余40%的需求分析。
第三章结构化需求分析
1.简述什么是需求分析需求分析的任务是什么
答:
需求分析:
开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务:
⑴问题识别:
双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求;分析与综合,导出软件的逻辑模型;编写文档:
包括编写"需求规格说明