软件工程概论的练习题及答案.docx
- 文档编号:17825734
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:126
- 大小:496.86KB
软件工程概论的练习题及答案.docx
《软件工程概论的练习题及答案.docx》由会员分享,可在线阅读,更多相关《软件工程概论的练习题及答案.docx(126页珍藏版)》请在冰点文库上搜索。
软件工程概论的练习题及答案
概述
一、填空题
1、软件由计算机程序、数据和文档组成。
2、软件是一种逻辑产品,它与物质产品有很大的区别。
3、计算机系统由硬件、软件、使用计算机的人、数据库、文档和执行过程组成。
4、软件的发展,到现在为止,经历了三个阶段:
程序设计、程序系统和软件工程。
5、程序设计时代的生产方式是个体手工艺者,程序系统时代的生产方式是手工作坊,软件工程时代的生产方式是工程化。
6、软件工程是一门综合性的交叉学科,它涉及计算机学科工程学科、管理学科和数学学科。
7、计算机科学的成果都可用于软件工程,但计算机科学着重于理论和原理,软件工程着重于建造软件系统。
8、软件工程研究的主要内容是方法、过程和工具等三个方面。
9、软件开发各阶段任务的划分应尽可能相对独立,同一阶段任务的性质应尽可能相同。
10、瀑布模型是将软件生存期各个活动规定为依线性顺序连接的若干阶段的模型。
它规定了各阶段的活动由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。
11、演化模型是一种非整体开发模型。
先开发一个原型软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的产品。
12、螺旋模型将开发过程分为几个螺旋周期。
在每个螺旋周期内分为四个工作步骤:
制定计划、风险分析、开发实施、用户评估。
13、喷泉模型是一种以用户要求为动力,以对象为驱动的模型。
它使开发过程具有迭代性和无间隙性,适用于面向对象开发方法。
二、单项选择题
1、软件产品的生产主要是C。
A.制造B.复制C.开发D.研制
2、个体手工劳动是B时代的软件生产方式。
A.程序系统B.程序设计C.软件工程D.程序编码
3、软件工程是一门C学科。
A.理论性B.原理性C.工程性D.心理性
4、软件开发费用只占软件生存期全部费用的B。
A.1/2B.1/3C.1/4D.2/3
5、在软件开发过程中大约要花费C%的工作量进行测试和调试。
A.20B.30C.40D.50
6、准确地解决“软件系统必须做什么”是B阶段的任务。
A.可行性研究B.需求分析C.软件设计D.程序编码
7、软件生存期中时间最长的是D阶段。
A.需求分析B.软件设计C.软件测试D.软件运行/维护
8、在软件生存期的模型中,D适合于大型软件的开发它吸收了软件工程中“演化”的概念。
A.喷泉模型B.基于知识的模型C.瀑布模型D.螺旋模型
9、在软件生存期中,用户的参与主要在A。
A.软件定义阶段B.软件开发阶段C.软件维护阶段D.整个软件生存期过程中
10、在软件开发过程中的每个阶段都要进行严格的D,以尽早发现在软件开发过程中产生的错误。
A.检验B.验证C.度量D.评审
11、在软件开发和维护过程中需要变更需求时,为了保持软件各个配置成分的一致性,必须实施严格的B
A.产品检验B.产品控制C.产品标准化D.开发规范
12、实践表明,采用先进的开发技术可提高软件开发的生产率,还可提高软件的D。
A.可靠性B.可使用性C.安全性D.可维护性
13、为了提高软件开发过程的A,有效地进行管理,应当根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准。
A.可见性B.生产率C.安全性D.有效性
14、随着开发小组人数的A,因交流开发进展情况和讨论遇到的问题而造成的通信开销也急剧增加。
A.增加B.降低C.稳定D.不稳定
15、为保证软件开发的过程能够跟上技术的进步,必须不断地灵活地改进软件工程C。
A.原则B.工具C.过程D.方法
三、选择填空题
1、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括内。
软件是计算机系统中与硬件相互依存的另一部分,它是包括(②)、(⑦)及(⑤)的完整集合。
其中,(②)是按事先设计的功能和性能要求执行的指令序列。
(⑦)是使程序能够正确操纵信息的数据结构。
(⑤)是与程序开发、维护和使用有关的图文材料。
供选择的答案:
A~C.①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表
2、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括内。
开发软件时对提高软件开发人员工作效率至关重要的是(①)。
软件工程中描述生存周期的瀑布模型一般包括计划、(①)、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成(③)和(⑥)两步。
供选择的答案:
A.①程序开发环境②操作系统的资源管理功能③程序人员数量④计算机的并行处理能力
B.①需求分析②需求调查③可行性分析④问题定义C、D.①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计 ⑧软件体系结构设计
3、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括内。
有人将软件的发展过程划分为4个阶段:
第一阶段(1950~1950年代末)称为“程序设计的原始时期”,这时既没有( A ),也没有( B ),程序员只能用机器指令编写程序。
第二阶段(1950年代末~1960年代末)称为“基本软件期”。
出现了(①),并逐渐普及。
随着(④)的发展,编译技术也有较大的发展。
第三阶段(1960年代末~1970年代中期)称为“程序设计方法时代”。
这一时期,与硬件费用下降相反,软件开发费急剧上升。
人们提出了(⑤)和(⑧)等程序设计方法,设法降低软件的开发费用。
第四阶段(1970年代中期~现在)称“软件工程时期”。
软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如(⑤)、(④)、编码、单元测试、综合测试、(①)及其整体有关的各种管理技术。
供选择的答案:
A~D:
①汇编语言②操作系统③虚拟存储器概念④高级语言⑤结构式程序设计⑥数据库概念⑦固件⑧模块化程序设计
E~G:
①使用和维护②兼容性的确认③完整性的确认 ④设计⑤需求定义⑥图象处理
4、从供选择的答案中选出与下列有关软件需求分析叙述相对应的正确答案,将其编号填入到相应的括内。
软件工程的最终目的是以较少的投资获得可维护的、可靠的、高效率的和可理解的软件产品。
软件工程技术应遵循(⑦)、(④)、(⑥)、(③)、一致性、确定性、完备性、可验证性、抽象和信息隐蔽。
原型法适用于开发较复杂的系统,原型可分为三种:
(②)、(⑤)和(④)。
供选择的答案:
A~D①有效性②合理性③局部化④协同性 ⑤实用性⑥模块化⑦抽象⑧信息隐蔽E~G:
①复用型②实验型③废弃型④演化型 ⑤探索型
四、问答题
1、什么是软件?
它的特性是什么?
答:
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。
软件的特点是:
(1)软件是一种逻辑实体,而不是具体的物理实体。
它具有抽象性。
(2)软件的生产与硬件不同,它没有明显的制造过程。
(3)在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
然而它存在退化问题。
(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
(5)软件的开发至今尚未完全摆脱手工艺的开发方式。
(6)软件本身是复杂的。
软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7)软件成本相当昂贵。
2、试比较软件发展的三个时期的特点,从软件所指、软件工作范围、软件开发组织、决定质量的因素、开发技术和手段等几个方面说明它们的差别。
答:
3、软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?
试说明之。
答:
软件工程包括三个要素:
方法、工具和过程。
软件工程方法为软件开发提供了“如何做”的技术。
它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。
软件工程的过程则将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。
过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。
4、软件工程过程有哪几个基本过程活动?
试说明之。
答:
软件工程过程的基本过程活动有4步:
·P(Plan):
软件规格说明。
规定软件的功能及其运行的限制;
·D(Do):
软件开发。
产生满足规格说明的软件;
·C(Check):
软件确认。
确认软件能够完成客户提出的要求;
·A(Action):
软件演进。
为满足客户的变更要求,软件必须在使用的过程中演进。
5、试说明“软件生存期”的概念。
答:
软件与任何一个事物一样,有它的孕育、诞生、成长、成熟、衰亡的生存过程。
这就是软件的生存期。
它分为6个阶段:
(1)软件项目计划:
在这一步要确定软件工作范围,进行软件风险分析,预计软件开发所需要的资源,建立成本与进度的估算。
根据有关成本与进度的限制分析项目的可行性。
(2)软件需求分析和定义:
在这一步详细定义分配给软件的系统元素。
可以用以下两种方式中的一种对需求进行分析和定义。
一种是正式的信息域分析,可用于建立信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。
另一种是软件原型化方法,即建立软件原型,并由用户进行评价,从而确定软件需求。
(3)软件设计:
软件的设计过程分两步走。
第一步进行概要设计,以结构设计和数据设计开始,建立程序的模块结构,定义接口并建立数据结构。
第二步做详细设计,考虑设计每一个模块部件的过程描述。
经过评审后,把每一个加细的过程性描述加到设计规格说明中去。
(4)程序编码:
在设计完成之后,用一种适当的程序设计语言或CASE工具生成源程序。
应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详细设计描述。
(5)软件测试:
单元测试检查每一单独的模块部件的功能和性能。
组装测试提供了构造软件模块结构的手段,同时测试其功能和接口。
确认测试检查所有的需求是否都得到满足。
在每一个测试步骤之后,要进行调试,以诊断和纠正软件的故障。
(6)软件维护:
为改正错误,适应环境变化及功能增强而进行的一系列修改活动。
与软件维护相关联的那些任务依赖于所要实施的维护的类型。
6、试论述瀑布模型软件开发方法的基本过程,比较它的优点和缺点。
答:
瀑布模型规定了各项软件工程活动,包括:
制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。
并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。
瀑布模型为软件开发和软件维护提供了一种有效的管理图式。
根据这一图式制定开发计划、进行成本预算、组织开发力量,以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,从而保证了软件产品及时交付,并达到预期的质量要求。
瀑布模型的缺点是缺乏灵活性,特别无法解决软件需求本身不明确或不准确的问题。
这些问题的存在对软件开发会带来严重影响,最终可能导致开发出的软件并不是用户真正需要的软件,并且这一点在开发过程完成后才有所察觉。
面对这些情况,无疑需要进行返工或是不得不在维护中纠正需求的偏差。
但无论上述哪一种情况都必须付出高额的代价,并将为软件开发带来不必要的损失。
7、试说明演化模型软件开发方法的基本过程,比较它的优点和缺点。
答:
由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。
因此,可以先做试验开发,其目标只是在于探索可行性,弄清软件需求;然后在此基础上获得较为满意的软件产品。
通常把第一次得到的试验性产品称为“原型”。
演化模型从需求分析开始。
软件开发人员与用户一起定义待开发软件系统的总目标,定义需求,确定软件的工作范围。
然后快速设计软件中对使用者可见部分的表示,进而建造原型,再让用户或客户评估原型,根据评估结果,修改和细化待开发软件系统的需求,使之满足用户的需求。
这个过程是一个迭代的过程。
演化模型的优点是:
·演化模型能够得到更好的软件需求,它不仅能够处理模糊的需求,而且开发人员与用户可通过原型充分进行交流;
·演化模型给用户提供了机会,以更改用户原来设想的不尽合理的最终系统;
·演化模型使得开发出来的最终系统更容易维护,对用户更友好;
·演化模型可以降低总的开发费用,缩短开发时间。
演化模型的缺点是:
·对于开发人员不熟悉的领域,演化模型可能误导开发者把系统的次要部分当作主要框架,作出不切题的原型;
·原型过快地收敛于需求集合,使得某些基本方面被忽视;
·长期在原型环境下开发,只注意得到令人满意的原型,容易“遗忘”用户环境与实际客户环境之间的差别。
8、试说明螺旋模型软件开发方法的基本过程,比较它的优点和缺点。
答:
对于复杂的大型软件,开发一个原型往往达不到要求。
螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析,弥补了两者的不足。
螺旋模型是一种风险驱动的模型。
在软件开发中存在各种风险。
项目越复杂,设计方案、资源、成本、进度等因素的不确定性越大,项目开发的风险也就越大。
及时对风险进行识别、分析,采取对策,可消除或减少风险的损害。
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相吻合。
在每个螺旋周期内按四个象限,分为四个工作步。
第一,制定计划:
确定软件目标,选定实施方案,明确项目开发的限制条件;第二,风险分析:
分析所选方案,识别风险,通过原型消除风险;第三,开发实施:
实施软件开发;第四,客户评估:
评价开发工作,提出修正建议,建立下一个周期的计划。
螺旋模型适合于大型软件的开发,应该说它是最为实际的方法,它吸收了软件工程“演化”的概念,使得开发人员和客户对每个演化层出现的风险有所了解,继而做出应有的反映。
螺旋模型的优越性比起其它模型来说是明显的,但并不是绝对的。
模型的使用需要具有相当丰富的风险评估经验和专门知识。
如果项目风险较大,又未能及时发现,势必造成重大损失。
此外,螺旋模型是出现较晚的新模型,远不如瀑布模型普及,要让广大软件人员和用户充分肯定它,还有待于更多的实践。
9、软件工程的基本目标有哪些?
试说明它们之间的关系。
答:
组织实施软件工程项目,从技术上和管理上采取了多项措施以后,最终希望达到以下几个主要的目标:
付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发工作,及时交付使用。
在具体项目的实际开发中,企图让以上几个目标都达到理想的程度往往是非常困难的。
10、软件工程的基本原则有哪些?
试说明之。
答:
在软件开发过程中必须遵循下列软件工程原则。
·抽象:
采用分层次抽象,自顶向下、逐层细化的办法进行功能分解和过程分解,可以由抽象到具体、由复杂到简单,逐步得到问题的解。
·信息隐蔽:
遵循信息封装,使用与实现分离的原则,将模块设计成“黑箱”,可以将实现的细节隐藏在模块内部,使用者只能通过模块接口访问模块中封装的数据。
·模块化:
按模块划分系统的体系结构,使得各模块间有良好的接口。
这样有助于信息隐蔽和抽象,有助于表示复杂的系统。
·局部化:
按抽象数据类型思想及问题域中的概念来建立模块,确保模块之间低耦合,模块内部高内聚。
这有助于控制解的复杂性。
·确定性:
软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。
这有助于人们之间的沟通,保证整个开发工作协调一致。
·一致性:
强调软件开发过程的标准化、统一化。
包括文档格式的一致,工作流程的一致,内、外部接口的一致,系统规格说明与系统行为的一致等。
·完备性:
软件系统不丢失任何重要成分,可以完全实现系统所要求功能。
·可验证性:
开发大型的软件系统需要对系统自顶向下、逐层分解。
系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。
11、软件工程的基本原理有哪些?
试说明之。
答:
软件工程的基本原理是:
·按软件生存期分阶段制定计划并认真实施。
在软件生存期中需要完成许多不同性质的工作,所以应把软件生存期划分为若干阶段,并相应制定出可行的计划,且按照计划对软件的开发和维护活动进行管理。
不同层次的管理人员都必须严格按照计划各尽其职地管理软件的开发和维护工作。
·坚持进行阶段评审。
软件的质量保证工作不能等到编码阶段结束之后再进行。
错误发现得越晚,为改正它所需付出的代价就越大。
因此,在每个阶段都要进行严格的评审,以尽早发现在软件开发过程中产生的错误。
·坚持严格的产品控制。
在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。
但由于外界环境的变化或软件工作范围的变化,在软件开发过程中改变需求又是难免的,不能硬性规定禁止客户改变需求,只能依靠科学的产品变更控制技术来顺应需求的变更。
其中主要是实施基线配置管理。
·使用现代程序设计技术。
实践表明,采用先进的技术可提高软件开发的生产率,还可提高软件的可维护性。
其中包括结构化程序设计技术,Jackson程序设计技术,面向对象程序设计技术等。
·明确责任。
软件产品是看不见摸不着的逻辑产品。
为了提高软件开发过程的可见性,有效地进行管理,应当根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使得工作结果能够得到清楚的审查。
·用人少而精。
合理安排软件开发小组人员的原则是参与人员应当少而精,即小组的成员应当具有较高的素质,且人数不应过多。
人员素质高能大大提高软件开发的生产率,明显减少软件中的错误。
软件开发小组人员少而精可以减少因交流开发进展情况和讨论遇到的问题而造成的通信开销。
·不断改进开发过程。
必须不断地灵活地改进软件工程过程,积极主动地采用新的软件技术,注意不断总结经验。
此外,需要注意收集和积累出错类型、问题报告等数据,用以评估软件技术的效果和软件人员的能力,确定必须着重开发的软件工具和应当优先研究的技术。
12、有人说:
软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。
对否?
请解释你的回答。
答:
软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。
这个说法是对的。
在1970年代,GTE、TRW和IBM等三家公司对此问题做了独立研究,最后它们得到相似的结论:
从表中可以看出,在需求分析阶段检查和修复一个错误所需的代价只有编码阶段所需代价的1/5到1/10,而在维护阶段做同样的工作所付出的代价却是编码阶段的20倍。
项目管理
一、填空题
1、要成功地完成软件开发工作的一个主要的决定性因素是项目管理。
2、软件过程是软件生存期中的一系列相关工程活动集合。
3、所有的软件开发都可以看成是一个问题循环解决过程,其中包括4个截然不同的阶段:
状态捕捉、问题定义、技术开发和方案综合。
4、在制定软件项目计划之前,必须先明确项目的目标和范围。
项目的目标标明了软件项目的目的但不涉及如何去达到这些目的。
5、对软件进行度量,是为了表明软件产品的质量,弄清软件开发人员的生产率,建立项目估算的基线,帮助调整对新的工具和附加培训的要求。
6、软件质量的事后度量包括正确性、可维护性、完整性和可使用性。
其中完整性包括危险性和安全性。
7、软件范围包括功能、性能、限制、接口和可靠性。
8、软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。
资源包括人与工具。
9、对于一个大型的软件项目,要进行一系列的估算处理。
主要靠分解和类推的手段进行。
10、基本COCOMO模型是一个静态单变量模型,它用一个已估算出的源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。
11、成本-效益分析的目的,是从经济角度评价开发一个新的软件项目是否可行。
12、风险估计从两个方面估价风险。
一是估计一个风险发生的可能性。
一是估价与风险相关的问题出现后将会产生的结果。
13、一个软件任务由一个人单独开发,生产率最高。
14、在与软件成本相关的影响因素中,人员的能力是最大影响因素。
15、软件开发所需的人力随开发的进展逐渐增加,在编码与单元测试阶段达到高峰,以后又逐渐减少。
16、在建立项目组织时应注意的原则有三:
①尽早落实责任,指定专人负责;②减少接口,要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失;③责权均衡。
17、风险出现概率可以使用从过去项目、直觉或其它信息收集来的度量数据进行统计分析估算出来。
18、用各种不同的方法对风险进行分类是可能的。
从宏观上来看,可将风险分为项目风险、技术风险和商业风险。
二、选择题
1、所有的软件开发都可以看成是一个问题B过程。
A.顺序解决B.循环解决C.分类解决D.分组解决
2、软件项目管理所涉及的范围覆盖了整个软件D。
A.开发过程B.运行与维护过程C.定义过程D.生存期
3、为使软件开发获得成功,一个关键问题是必须对软件范围、风险、资源、任务、里程碑、成本,进度等做到心中有数,而C可以提供这些信息。
A.计算机辅助工程B.软件开发工具C.软件项目管理D.软件估算
4、软件范围标明了软件要实现的基本功能,并尽量以A的方式界定这些功能。
A.定量B.规范C.统一D.定性
5、只要事先建立特定的度量规程,很容易做到B开发软件所需要的成本和工作量、产生的代码行数等。
A.间接度量B.直接度量C.间接估算D.直接估算
6、为了计算特征点,可以像计算功能点那样,对信息域值进行计数和加权。
此外,需要对一个新的软件特征A进行计数。
A.算法B.计算误差C.程序复杂性D.效率
7、对于软件的D,有一种简单的面向时间的度量,叫做平均变更等待时间MTTC(MeanTimeToChange)。
这个时间包括开始分析变更要求、设计合适的修改、实现变更并测试它、以及把这种变更发送给所有的用户。
A.可靠性B.可修改性C.可测试性D.可维护性
8、软件的完整性是度量一个系统抗拒对它的C攻击(事故的和人为的)的能力。
A.可靠性B.正确性C.安全性D.容错性
9、对每一种软件资源,应说明4个特性:
资源的描述,资源的有效性说明,资源在何时开始需要,使用资源的持续时间。
最后两个特性统称为A。
A.时间窗口B.时间安排C.日程安排D.资源定义
10、业务系统计划工具借助特定的C建立一个组织的战略信息需求的模型,导出特定的信息系统。
A.过程性语言B.形式化语言C.元语言D.伪码
11、软件开发成本主要是指软件开发过程中所花费的B及相应的代价。
A.劳动力B.工作量C.资源D.持续时间
12、自顶向下估算软件成本的方法主要是从项目的整体出发进行B,即根据已完成项目的总成本(或总工作量),来推算待开发软件的总成本(或总工作量),然后按比例将它分配到各开发任务单元中去。
A.分解B.类推C.推导D.评估
13、自底向上估算软件成本的方法主要是把待开发软件A,直到每一个子任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 概论 练习题 答案