软件工程概述一.填空题1.计算机科学中的研究成果均可用于软件工程,但计算机科学更侧重于_____________、而软件工程侧重于_____________。2.计算机程序及其说明程序的各种文档称为_____________。计算任务的处理图像对象和处理规则的描述称为_____________。有关计算机程序功能、设计、编制、使用的文字或图形资料称为_____________。3.软件开发环境是相关一组_____________的集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成的。4.CASE这一术语的英文是_____________。5._____________是指工具运行在相同的硬件/操作系统平台上。_____________是指工具使用共享数据模型来操作。_____________是指工具提供相同的用户界面。6.根据支持的范围,CASE工具可分为_____________、_____________和_____________工具。7.软件危机的主要原因有_____________和_____________。8._____________模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发处理的,开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。9.结构化方法总得指导思想是_____________。它的基本原则是功能的_____________与_____________。它是软件工程中最早出现的开发方法,特别适用于数据处理领域的问题。10.面向对象开发方法包括_____________、_____________、_____________、三部分。11.瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。它包括_____________、项目开发计划、_____________、_____________、_____________、_____________、_____________、_____________,它规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。12.瀑布模型本质上是一种_____________顺序模型。13.构造原型时,必须注意_____________取舍,忽略一切暂时不关心的部分。14.属性指的是类中对象所具有的_____________。不同对象的同一属性可以具有相同或不同的_____________。15.结构化方法和原型化方法是软件开发中常使用的两种方法,在实际的应用中,它们之间的关系表现为_____________。解答:1.原理和理论、如何建造一个软件系统2.文件、程序、文档;3.软件工具;4.ComputerAidedSoftwareEngineering;5.平台集成、数据集成、表示集成;6.窄支持、较宽支持、一般支持;7.软件本身的特点、缺乏好的开发方法和手段;8.增量;9.自顶而下逐步求精、分解、抽象;10.面向对象分析、面向对象设计、面向对象实现;11.可行性分析、需求分析、概要设计、详细设计、编码、测试、维护;12.线性;13.功能性能;14.性质(数据值)、属性值;15.相互补充;二.判断题1.瀑布模型的存在问题是缺乏灵活性。()2.软件是一种逻辑产品。()3.软件工程学科出现的主要原因是程序设计方法学的影响。()4.有关计算机程序功能、设计、编制、使用的文字或图形资料称为文档。()5.CASE开放式工作台或者提供控制集成机制,或者可剪裁,其数据集成或协议是独立的。()6.在软件的开发与维护过程中,用来存储、更新、恢复和管理一个软件的多版本,它是版本控制工具。()7.平台集成是指工具运行在相同的硬件/操作系统平台上。()8.软件生存周期模型有多种,功能模型是软件生存周期模型。()9.从结构化的瀑布模型看,在软件生命周期中得8个阶段中,详细设计阶段出错,对软件的影响最大。()10.软件生存周期中时间最长的阶段是需求分析阶段。()11.软件开发的结构化生命周期方法将软件生命周期划分成需求分析、功能定义、系统设计。()12.增量模型是一种整体开发模型。()13.构造模型时,主要考虑全部功能。()14.瀑布模型本质上是一种线性迭代模型。()15.快速原型思想是在研究概要设计阶段的方法和技术中产生的。()解答:1.√2.√3.×4.√5.×6.√7.√8.×9.×10.×11.×12.×13.×14.×15.×三.名词解释1.软件工程;2.软件生命周期模型;3.经济可行性;4.社会可行性;5.投资回收期;6.结构冲突;7.模块化;8.对象;9.白盒测试;10.耦合;11.内聚;12.系统流程图;13.独立路径;14.喷泉模型;15.变换模型;解答:1.软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科。2.软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。3.进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。4.要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。5.投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。6.输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。7.把程序划分成独立运行且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。8.描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。9.白盒测试又叫做结构测试,把程序看成装在一个透明的白盒子里,按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。10.耦合是对一个软件结构内各个模块之间互连程度的度量。11.内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。12.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素表达了系统中各种元素之间的信息流动)情况。13.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看,一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径。14.喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。15.变换模型是一种适合于形式化开发方法的模型,从软件需求形式化说明开始经过一系列变换,最终得到系统的目标程序。此模型必须有严格的数学理论和形式化技术的支持,尚处于研究和实验阶段。四.简答题1.请简要说明可行性分析的内容。2.请写出六种软件CASE工具。3.什么是软件工程?软件工程的目标是什么?4.什么是结构化分析方法?该方法使用什么描述工具?5.软件设计的基本原理包括什么?6.简述容错技术的四种主要手段,并解释7.软件生命周期划分成哪些阶段8.简要说明软件危机产生的原因解答:1.技术可行性:技术分析说明使用现有系统是否能完成本系统的开发。经济可行性:经济分析应着重两个因素“成本和收益”,应向管理层提供有关这两方面足够的信息。如果项目的收益大于成本,则此项目可以说是经济上可行。操作可行性:系统的操作方式是否能够在组织内得到认同,是否违背有关法律、制度、道德、文化等因素。2.(1)PowerDesigner(分析设计工具或软件建模工具),(2)RationalRose(分析设计工具或软件建模工具),(3)WinRunner(测试工具),(4)MSProject(项目管理工具),(5)MSVisio(软件开发绘图工具)、(6)VSS(软件配置工具)。3.软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。目标:1合理预算开发成本,付出较低的开发费用、2实现预期的软件功能,达到较好的软件性能,满足用户的需求、3提高软件的可维护性,降低维护费用、4提高软件开发生产率,及时交付使用。4.结构化的分析方法是面向数据流的方法,因此,此方法研究的核心是数据的组成和数据流向和对数据的加工处理。结构化分析方法用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直至找到满足功能要求的所有可实现的软件元素为止描述工具:1系统流程图2数据流程图3数据字典4IPO图5层次方框图6实体—关系图7状态—变迁图。5.①模块化:指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。模块化是软件解决复杂问题所具备的手段。②抽象:是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素。软件工程中每一步都是对软件解决方法的抽象层次的一次细化。③信息隐蔽:指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的。通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。④模块独立性。指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量模块独立性有两个标准耦合性和内聚性,可判断设计方案的优劣。6.结构冗余:包括静态冗余、动态冗余和混合冗余。信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。冗余附加技术:指为实现上述冗余技术所需的资源和技术。7.软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。1.软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析2.开发时期:总体设计、详细设计、编码和单元测试、综合测试。3.维护时期:主要任务是使软件持久地满足用户的需要。8.1.软件缺乏可见性,导致对软件开发成本,工作量,速度的估计不准确。2.对用户要求没有完整准确的认识,不能适应用户的需求。3.缺乏对软件产品和开发过程的质量控制,导致软件产品的质量往往靠不住。4.在实践过程中或多或少的采用了错误的方法和技术。5.开发和维护过程中文档化工作做的不好,缺乏配置管理。五.论述题(方案1)1.从软件过程中选择3种说明其名称、示意图以及特点。2.试论述软件工程方法学的3个要素。3.试论述软件生命周期模型4.评价软件工具的原则?5.软件生命周期划分成哪些阶段6.什么是软件过程?它与软件工程方法学有何关系?7.试论述可行性研究的任务8..试论述需求分析的准则9.试论述需求分析的任务10.试论述应该从哪些方面研究目标系统的可行性?11.在软件开发过程中必须遵循下列软件工程原则。12.软件工程是开发、运行、维护和修复软件的系统化方法,它包含哪些要素?试说明之。13.什么是CASE?CASE工具有哪些分类?14.软件工程标准化的意义是什么?都有哪些软件工程标准?15.什么是软件开发环境?请列出其发展情况。解答:1.1.螺旋模型:螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型瀑布模型:瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。增量模型又称演化模型。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。2.通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。三要素:方法、工具和过程。3.瀑布模型:优点:1.可强迫开发员采用规范的方法2.严格地规定了每个阶段必须提交的文件3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:传统的瀑布模型过于理