第一、二章习题及答案(一)名词解释1. 软件2. 文档3. 软件危机4. 软件工程5. 软件工程过程6. 软件生存周期7. 软件生存周期模型(软件开发模型)(二)填空题1. 在信息处理和计算机领域内,一般认为软件是、和。
2. 国家标准“计算机软件开发规范”中,把软件生存周期划分为8个阶段,即、、、、、、和。
3. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内分为、、和四个步骤。
4. 软件工程过程包含的7个过程是、、、、、和。
5. 结构化方法包括结构化方法、结构化方法和结构化程序设计方法。
它是一种面向的开发方法,其实质就是分解。
(三)单项选择题1. 软件文档是()。
A. 程序B. 工具C. 文书和资料D. 数据2. 软件是一种()性工业产品。
A. 理论B. 知识(或逻辑)C. 消耗D. 体力3. 需求分析是在()进行的。
A. 用户B. 用户和分析设计人员之间C. 开发人员内部D. 使用和维护人员间4. 软件的主要结构和功能是在()阶段决定的。
A. 分析设计B. 编程C. 测试D. 维护5. 螺旋模型的开发实施基本和()模型相吻合。
A. 瀑布B. 再利用组装C. 螺旋D. 原型6. 在软件开发模型中,提出最早、应用最广泛的模型是()。
A. 瀑布模型B. 喷泉模型C. 增量模型D. 螺旋模型7、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。
八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( )。
A、详细计划B、可行性分析C、运行阶段D、测试与排错8、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大( )。
A、详细设计阶段B、概要设计阶段C、需求分析阶段D、测试和运行阶段9、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标( )。
A、需求分析阶段B、详细设计阶段C、概要设计阶段D、可行性研究阶段10、软件工程的出现主要是由于( )。
A.程序设计方法学的影响B.其它工程科学的影响C. 软件危机的出现D.计算机的发展11、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( )A、硬件环境B、软件开发的环境C、软件开发工具和软件开发的环境D、开发人员的素质12、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( )A、基于瀑布模型的结构化方法B、基于需求动态定义的原型化方法C、基于对象的面向对象的方法D、基于数据的数据流开发方法13、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的( )A、控制流B、数据流C、程序流D、指令流14、软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( )A、分析阶段B、设计阶段C、编码阶段D、测试阶段15、软件开发模型是指软件开发的全部过程、活动和任务的结构框架。
主要的开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。
螺旋模型将瀑布模型和演化模型相结合,并增加了(1),它建立在(2)的基础上,沿着螺线自内向外每旋转一圈,就得到(2)的一个新版本。
喷泉模型描述了(3)的开发模型,它体现了这种开发方法创建软件的过程所固有的(4)和(5)的特征。
(1) A、系统工程 B、风险分析 C、设计评审 D、进度控制(2) A、模块划分 B、子程序分解 C、设计; D、原型(3) A、面向对象 B、面向数据流 C、面向数据结构 D、面向事件驱动(4) A、归纳 B、推理 C、迭代 D、递归(5) A、开发各阶段之间无“间隙” B、开发各阶段分界明显C、部分开发阶段分界明显D、开发过程不分段(四)简答题1. 简述软件的特点?2. 软件危机是怎样产生的?其表现形式是什么?说明产生软件危机的原因。
3. 什么是软件生存期?有何重要性?在国家标准“计算机软件开发规范” 中,把软件生存周期划分为哪几个阶段?4. 简述主要的软件生存期模型(或软件开发模型)。
5. 简述瀑布模型的阶段划分和各阶段的主要任务以及瀑布模型存在的问题。
6. 增量开发和演化开发有什么相同和不同的地方?(一)名词解释答案1. 在信息处理和计算机领域内,一般认为软件是计算机程序、各种相关的文档和数据的集合。
2. 文档指为了委托、购入、使用、开发、维护软件,以及管理开发过程所需要的所有的文书和资料。
3. 软件危机是在软件发展第二阶段末期的规模较大的项目开发中,出现了与当初的计划推迟交工、费用比预算大幅度上升、不能满足用户要求、可靠性低、维护困难等问题,导致了软件危机。
4.见P2。
5. 软件工程过程指在获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。
6. 软件生存周期是指一个软件从立项开始,经过制造、测试、使用和维护直到软件废止为止的整个时期。
7. 软件生存周期模型(软件开发模型)是按软件生存周期,描述软件开发过程中各种活动如何执行的过程,借鉴在其他工程领域活动中所使用的方法把软件开发变成可视过程而采用的一种模型。
(二)填空题答案1. 程序文档数据2. 可行性研究与计划需求分析概要设计详细设计实现综合测试确认测试使用与维护3. 制定计划风险分析开发实施用户评估4. 获取过程供应过程开发过程操作过程维护过程管理过程支持过程5. 分析设计数据流功能(三)单项选择题答案1.C2.B3.B4.A5.A6.A7.C8.C9.A 10.C11.C 12.C 13.B 14.C 15.(1)B (2)D (3)A (4)D (5)A(四)简答题答案1. 软件既是知识产品,又是与汽车、建筑物一样的工业产品,此外,软件还具有类似艺术、学术那样的知识性创造的特点,因此,可以说软件就是知识性工业产品,它具有一些独特的特性:①软件是逻辑产品,它具有无形性,通过计算机的执行才能体现它的功能和作用。
②不存在磨损和消耗问题。
③其成本主要体现在软件的开发和研制上,可进行大量的复制。
④主要靠脑力劳动生产。
⑤开发和维护成本高。
2. 软件危机是随着第三代计算机的诞生而产生的。
第三代计算机(集成电路计算机)与第二代计算机相比,性能大大提高,因此,以前不能实现的应用系统有了实现的可能性,这就促进了大规模软件系统的设计。
由于在小规模软件系统中使用的方法和技术已经不适用了,因此在规模较大的项目开发中出现了与当初的计划推迟交工、费用比预算大幅度上升、不能满足用户要求、可靠性低、维护困难等问题,造成了软件危机。
软件危机的主要表现是:①预算上升,完成时间一再拖延。
②开发的软件不能满足用户的要求。
③开发过程没有统一的规范和完整的文档,导致软件的可维护性差。
④没有确保软件质量的体系,软件可靠性差。
产生软件危机的原因,一方面是由于软件的规模越来越大、结构越来越复杂,使得开发和管理都变得很困难,从而导致开发费用不断增加、进度和质量控制困难、可靠性无法保证;另一方面由于软件开发技术、软件生产方式和软件开发工具落后,满足不了开发大规模软件系统的需要。
3. 软件生存周期是指一个软件从立项开始,经过制造、测试、使用和维护直到软件废弃为止的整个时期。
其方法是从时间角度对软件开发和维护的整个复杂的过程依次划分为若干个阶段,每个阶段都有明确并且相对独立的任务和完成标志。
这种按软件生存周期划分阶段的方法,便于开发中大规模软件时不同人员的分工合作,降低了整个软件的开发难度并使软件开发过程有条不紊地进行,提高了软件的可靠性和可维护性,从而提高了软件的生产率。
在国家标准“计算机软件开发规范”中,把软件生存周期划分为8个阶段,即可行性研究与计划、需求分析、概要设计、详细设计、实现、综合测试、确认测试、使用与维护。
4. 软件生存期模型主要有:(1) 瀑布模型(2) 演化模型(3) 螺旋模型(4) 喷泉模型(5) 增量模型具体说明见教材或课件.5. 瀑布模型的阶段划分和各阶段的任务为:(1) 系统需求(2) 软件需求(3) 需求分析以上阶段要是根据系统的使用者(需方)需求进行具体分析,制定系统应完成的功能、目标、各项服务和限制,确定工作范围和所花费的代价。
并且以用户和软件开发人员都能理解的形式加以定义和明确。
(4) 系统和软件设计先把用户的需求分成硬件需求和软件需求,在此基础上确定整个系统的结构。
在软件设计中,进一步把用户的要求和系统的目标在软件系统的各项功能中表现出来,并分别使之达到能够进行程序设计的程度。
(5) 编码在这个阶段中,软件的设计已经以程序集合或单元程序的形式完成,并包含了验证各个单元程序是否满足式样要求的单元测试。
(6) 综合测试和系统测试把各个单元程序和程序组结合起来,作为一个完整的系统进行测试。
在这种测试中,一方面要发现和排除系统或程序中的错误,更重要的是要确认已完成的系统是否满足用户和设计者的要求。
测试后,把这个软件提供给用户。
(7) 运行和维护运行和维护是软件生存期中需要时间较长的一个阶段,在这一阶段,系统被实际装入并实际应用,那些在软件开发初期没有被发现的错误,或者是用户提出新的要求,都需要在这一阶段加以解决。
瀑布模型的问题之一是对软件工程中的反复性质认识不足,另外还有一个缺点是在开发工程的初期,就必须把规格式样确定下来,而在有些情况下,由于用户的需求不明确,某些规格式样开始是不太好确定的。
软件工程是复杂的、多变的工程,用单纯的线性模型很难完全表示出来6. 增量模型和演化模型都是从概要的需求出发进行开发的,但两者有明显的不同。
增量模型是从一些不完整的系统需求出发开始开发,在开发过程中逐渐发现新的需求规格说明,并进一步充实完善该系统,使之成为实际可用的系统。
而演化开发的目的是为了发现并建立一个完整的经过证实的需求规格说明,并以此作为正式系统的开发基础。
因此,演化开发阶段的输出是需求的规格说明,是为了降低整个软件生成期的费用而拉大需求分析阶段的一种方法,大部分演化原型是“用完就扔”的类型。