计算机科学与导论课后习题答案 第8章 软 件 工 程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章 软 件 工 程
习题(答案)
一、选择题
1. D 2. B 3. C 4. B 5. A
6. C 7. A 8. D 9. BD 10. C
11. B 12. C
二、 简答题
1.什么叫软件危机?
答:在计算机领域中,简单地说,把大型软件开发和维护过程中遇到的一系列严重的问题称为“软件危机”(Software Crisis)。
随着计算机应用的普及和深化,计算机软件的数量、规模、复杂程度和开发所需的人力、物力等都在急剧增加,计算机发展初期个人编写小程序的传统方法,已不再适合现代大型软件的开发,用传统方法开发出来的许多大型软件甚至无法投入运行。同时,由于计算机应用领域和硬件技术得到丁飞速发展,软件的生产速度、质量和规模远远适应不了对软件的需求,造成大量人力、物力、财力的浪费,在软件开发和维护过程中出现了巨大的困难,这就是软件危机。
2.软件危机的表现形式是什么?
答:软件危机的表现形式:
(1) 软件的质量难以保证
开发的软件可靠性差。由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。这种不可靠的软件,轻者会影响系统正常工作,重者会发生事故,造成生命财产的重大损失。
(2) 软件开发成本和开发进度难以控制
经费预算经常突破,完成时间一再拖延。由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计算很难制定。主观盲目制定的计算,执行起来和实际情况有很大差距,使得开发经费一再突破。由于对工作量和开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。
(3) 软件的维护非常困难
开发的软件可维护性差。开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作。开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。 程序结构不好,运行进发现错误也很难修改,导致维护性差。
(4) 用户对“已完成”的软件系统不满意
开发的软件不能满足用户要求。开发初期对用户的要求了解不够明确,未能得到明确表达。开发工作开始后,软件人员和用户又未能及进交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的要求,使开发失败。
3.什么叫软件工程?
答:软件工程是研究大规模程序设计的方法、工具和管理的一门工程科学,也就是运用系统的、规范的和可定量的方法来开发、运行和维护软件的系统工程。
软件工程是—门交叉学科,涉及到计算机科学、管理科学、工程学和数学。软件工程的理论、方法、技术都是建立在计算机科学的基
础上,它是用管理学的原理、方法来进行软件生产管理;用工程学的观点来进行费用估算、制定进度和实施方案;用数学方法来建立软件可靠性模型以及分析各种算法和性质。
软件工程是指导计算机软件开发和维护的工程学科。
4.软件工程的目标是什么?
答:软件工程的目标可概括为:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需要的软件产品。
5.简述软件工程过程。
答:软件工程过程包含如下7个过程。
(1) 获取过程:获取过程为需方按合同获取一个系统、软件产品或服务的活动。
(2) 供应过程:供应过程为供方向需方提供合同中的系统、软件产品或服务所需的活动。
(3) 开发过程:开发过程为开发者和机构为了定义和开发软件或服务所需的活动。引过程包括需求分析、设计、编码、集成、测试、软件安装和验收等活动。
(4) 操作过程:操作过程为操作者和机构为了在规定的运行环境中为其用户运行一个计算机系统所需要的活动。
(5) 维护过程:维护过程为维护者和机构为了管理软件的修改,使它处于良好运行状态所需要的活动。
(6) 管理过程:管理过程为软件工程过程中各项管理活动,包括项目开始和范围定义;项目管理计划;实施和控制,评审和评价;项目完成。
(7) 支持过程:支持过程对项目的生存周期过程给予支持。它有助于项目的成功并能提高项目的质量。
6.简述软件生存周期。
答:软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。通常,软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。
7.常见的软件开发模型有哪些?
答:常见的软件工程模型有:瀑布模型、螺旋模型、快速原型模型、智能模型等等。
8.简述喷泉模型。
答:喷泉模型是一种以用户需求为动力,以对象作为驱动的模型。它适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。系统某些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。
9.简述智能模型。
智能模型又称智能生存周期模型,是基于知识的软件开发模型,它把瀑布模型与专家系统结合在—起。该模型在实施过程中要建立知识库,将模型本身、软
件工程知识与特定领域的知识分别存入数据库。以软件工程知识为基础的生成规则构成的专家系统与含应用领域知识规则的其他专家系统相结合,构成这一应用领域软件的开发系统。
10.简述模块划分的原则。
答:模块的划分不能够随意进行,而是应该遵循一定的原则:
(1) 划分的模块要有尽量高的功能独立性,而模块之间应该是低耦合(关联少)的。
(2) 模块的大小要适宜,过大,增加模块本身的复杂性;过小,模块数增多,会增加模块间关联度。
(3) 模块间接口是必须是明确的。
(4) 模块间可以有调用关系,这个调用的层次不能太多。
(5) 尽量注意提高模块的复用率,提高开发效率。
11.简述结构化方法遵循的原则。
答:结构化方法通常遵循以下原则:
(1) 用户参与的原则。由于整个软件开发工作的复杂性,用户的需求分析至关重要,但是,用户的需求不是一次就能够明确的,而是随着系统开发工作的深入,用户的需求表达和开发人员对用户需求的理解才能逐步明确、深化和细化。这就要求软件的开发要有用户的积极参与。否则,往往导致开发缓慢、不断反复、甚至失败。
(2) 先分析、再设计、后实现的原则。结构化方法强调在进行系统设计和系统实施之前,要先进行充分的需求调查与分析,进行可行性的论证,即首先解决系统“做什么”的问题,然后再进入系统设计、系统实施阶段,来解决“如何做”的问题。
(3) 自上向下的原则。在系统分析、设计、实施等各阶段,结构化方法都强调“自项向下”的原则,即从总体目标和功能出发,逐级分解、逐步细化,将整个开发系统分解,先实现某些子系统,然后再实现总的目标和功能。遵循这个原则,可以将一个复杂的问题分解成若干个比较简单的问题分别加以解决,从而降低了解决问题的难度。
(4) 阶段成果文档化。结构化方法强调要将每一工作阶段的成果,用明确的文字和标准化的图形、表格等文档化工具进行完整而又准确的描述。这些文档即可标志阶段开发工作的结束,又是下阶段工作开展的主要依据。
12.简述软件质量的含义。
答:从实际应用的角度来看,软件质量的定义包含以下三个方面:
(1) 与所确定的功能和性能需求的一致性。
(2) 与所成文的开发标准的一致性。
(3) 与所有专业开发的软件所期望的隐含特性的一致性。
13.简述软件质量保证的含义
答:软件的质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
14.简述软
件可靠性的含义。
答:软件可靠性是指一个程序按照用户的要求和设计的目标,执行其功能的正确程度。一个可靠的程序应要求是正确的、完整的、一致的和健壮的。
15.简述设计质量的评审内容。
答:设计质量的评审内容:
(1) 评价软件的规格说明是否合乎用户的要求,即总体设计思想和设计方针是否明确;需求规格说明是否得到了用户或单位上级机关的批准;需求规格说明与软件的概要设计规格说明是否一致等。
(2) 评审可靠性,即是否能避免输入异常(错误或超载等)、硬件失效及软件失效所产生的失效,一旦发生应能及时采取代替或恢复手段。
(3) 评审保密措施实现情况,即是否提供对使用系统资格进行检查;对特定数据的使用资格、特殊功能的使用资格进行检查,在查出有违反使用资格情况后,能否向系统管理人员报告有关信息;是否提供对系统内重要数据加密的功能等。
(4) 评审操作特性实施情况,即操作命令和操作信息的恰当性,输入数据与输入控制语句的恰当性;输出数据的恰当性;应答时间的恰当性等。
(5) 评审性能实现情况,即是否达到所规定性能的的目标值。
(6) 评审软件是否具有可修改性、可扩充性、可互换性和可移植性。
(7) 评审软件是否具有可测试性。
(8) 评审软件是否具有复用性。
16.简述容错软件的含义。
答:容错软件的定义,有以下4种:
(1) 规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件为具有容错功能的软件,即容错软件。
(2) 规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态,则称之为容错软件。
(3) 规定功能的软件,在因错误而发生错误时,仍然能在一定程度上完成预期的功能,则把该软件称为容错软件。
(4) 规定功能的软件,在一定程度上具有容错能力,则称之为容错软件。
17.简述软件开发环境。
答:软件开发环境是指在计算机的基本软件的基础上,为了支持软件的开发而提供的一组工具软件系统。
软件工程环境是一组方法、过程及计算机程序(计算机化的工具)的整体化构件,它支持从需求定义、程序生成直到维护的整个软件生存期。
三、讨论题
1.软件是计算机的灵魂,用软件工程的方法来保证软件开发过程的顺利进行有哪些好处?
答案略。
2.学习了软件工程后,你觉得在哪些方面的收获最大?
答案略。