您好,欢迎访问三七文档
一基本概念1简述1983年IEEE为软件下的定义。5822926计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。2简述软件危机的表现有哪些?以及解决软件危机的途径有哪些?软件危机的主要表现包括:(1)软件开发进度难以预测,开发成本难以控制,导致超预算、超时;(2)产品功能难以满足用户需求;(3)软件产品质量无法保证;(4)软件缺少适当的文档资料,维护困难;(5)软件成本超过硬件成本;(6)软件开发生产率的提高速度跟不上计算机应用普及深入的趋势;解决软件危机的途径有:1管理措施:项目管理、配置管理、过程管理、质量控制2技术措施:开发过程、开发技术与方法和开发工具3软件工程的定义1993年IEEE给出的定义:软件工程是:①系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。”软件工程是围绕软件开发的一门交叉学科:软件工程=计算机科学+工程学+管理学4软件工程的10个知识领域软件工程过程(SoftwareEngineeringProcess)软件工程工具和方法(SoftwareEngineeringToolsandMethods)软件需求(SoftwareRequirement)l软件设计(SoftwareDesign)软件构造(SoftwareConstruction)软件测试(SoftwareTesting)软件维护(SoftwareMaintenance)软件配置管理(SoftwareConfigurationmanagement)软件工程管理(SoftwareEngineeringmanagement)软件质量(SoftwareQuality)5软件工程的目标是什么,软件工程的三要素都是什么?软件工程的目标:软件工程必须以有组织的质量保证为基础,进行全面质量管理,不断地过程改进使软件工程方法走向成熟。软件工程的三要素包括:过程、方法和工具过程为及时合理地开发出满足用户需求的计算机软件而进行一系列有组织的活动。过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理。方法为软件开发提供“如何做”的技术,它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列的开发活动如何来做。开发方法经历了从面向结构、面向对象、面向组件到面向服务的发展工程。工具为过程和方法提供自动的或半自动的支持。这些软件工具被集成起来,建立起一个支持软件开发的系统,称之为计算机辅助软件工程(CASE,ComputerAidedSoftwareEngineering)。6软件工程的七条基本原理美国著名的软件工程专家巴利•玻姆(BarryBoehm)提出了软件工程的七条基本原理:1.用分阶段的生命周期计划严格管理;2.坚持进行阶段评审;3.实行严格的产品控制;4.采纳现代程序设计技术;5.结果应能清楚地审查;6.开发小组的人员应少而精;7.承认不断改进软件工程实践的必要性。7简述软件过程的定义,软件过程又可以分为那几个类型?软件过程(SoftwareProcedure)是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。软件过程可概括为基本过程、支持过程和组织过程等三种类型。其中,基本过程包括:获取过程、供应过程、开发过程、运作过程和维护过程。支持过程包括:文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程和问题解决过程等过程。组织过程包括:管理过程、基础设施过程、改进过程和培训过程。8里程碑(MileStone)思想阶段工作的目标进行总结、评审、调整和部署下一个里程碑。目的:合理分配,细化管理“粒度”,降低项目风险。9基线思想基线是指一个(或一组)配置项在项目生命周期的不同时间点的一种状态,各阶段有各阶段的基线:需求基线、设计基线、测试基线等。基线一旦建立后变化需要受控制。10简述软件生存周期的概念,说明软件生存周期划分为那几个主要时期?每个时期有包括哪些主要阶段?软件生存周期是指软件产品从定义到开发、使用和维护,直到最终被弃用的时期,称为生存周期。生存周期的可划分为计划时期、开发时期和运行时期等三个主要时期。其中计划时期包括问题定义和可行性研究两个阶段。开发时期包括需求分析、总体设计、详细设计和实现等四个阶段。运行时期的又称为运行和维护阶段。11简述教材中介绍了那些软件开发模型?这些模型各有什么特点?教材中重点介绍了瀑布、原型、增量、螺旋四个传统模型和RUP、XP两个现代模型。其中,瀑布模型严格按照生存周期开发软件,每个阶段必须完成规定的、完整、准确的合格文档,前一阶段的输出文档就是后一阶段的输入文档。其主要特点包括:①活动间具有顺序性和依赖性;②推迟实现的观点;③质量保证的观点;快速原型模型法是开发人员在一个基本的需求的基础上快速开发出一个软件原型,然后由用户使用和评价原型、开发人员根据用户意见再修改原型,然后再使用评价再修改、直至将原型进化为最终产品。快速原型模型的特点包括:①做出系统原型,及早向用户展示系统要实现的界面及功能,增强用户的合作信心;②直观化的表达,容易交流,消除理解上的歧义;③修改集中在前期的原型确认上,较大程度减少后期实施中的返工。④入手快,加快开发进度;增量模型是一种演化模型,先完成一个系统子集的开发,再按同样的开发步骤增加子集,如此递增下去直至满足全部系统需求。每个增量可按快速原型法进行。增量模型的特点包括:①无须等待获取完整需求就可入手,尽快见到成果,增强双方信心;②分步开发,降低复杂性和难度,减少技术风险,并可并行开发;③边开发边投入,可及早发现问题,减少投资风险;④各个子集是逐渐并入已有的系统中,加入子集不能破坏已构造好的部分,这需要软件具备开放式的体系结构;⑤适用于需求不完整的软件开发,指的是需求逐渐摸清、逐步完善,并非随意改变,需求改变过大会导致整体性失控。后面要介绍的XP(极限编程)属于该模型。螺旋模型(Spiralmodel)是一种融合了瀑布模型、快速原型模型和增量模型的演进模型,并引入风险分析机制。适合大型复杂的系统开发。螺旋模型特点包括:①多种模型结合的一种演进模型,融合了瀑布模型、快速原型和增量模型的所有特点,融进了循环往复、迭代演进的思想;②增加风险分析,一旦风险成立,原方案应终止、修订,力求风险可控③客户始终参与每个阶段的开发,每个阶段的成果需客户确认,避免错误的积累。统一过程RUP(RationalUnifiedProcess)是由Rational公司在推出统一建模语言UML后,推出的一个软件开发框架RUP,称为软件统一开发过程。12统一过程RUP定义了那几个主要阶段?初始阶段(Inception):主要完成商业需求,确定项目边界。里程碑是生命周期目标(LifecycleObjective),评价项目基本的生存能力。细化阶段(Elaboration):主要完成领域问题分析和软件设计。获取用户需求(功能和非功能需求),建立需求模型;进一步确立体系结构和设计软件结构等工作。里程碑是生命周期结构(LifecycleArchitecture)。构造阶段(Construction):主要完成系统实现、测试,里程碑是初始功能(InitialOperational),产品版本常被称为“beta”版。交付阶段(Transition):重点是确保软件对最终用户是可用的。里程碑:产品发布(ProductRelease)13统一过程RUP工作流16个核心过程工作流(CoreProcessWorkflows)商业建模(BusinessModeling):弄清项目边界和约束,做出计划。需求(Requirements):描述系统应做什么,开发人员和用户达成需求基线。分析和设计(Analysis&Design):将需求转化成计算机可以实现的模型。实现(Implementation):用程序设计语言将设计模型组织成可执行的文件、数据。测试(Test):是发现软件中的错误,在实验环境下验证所有的需求是否被正确的实现。部署(Deployment):将软件分发给最终用户,安装在真实的环境下,由用户操作运行。23个核心支持工作流(CoreSupportingWorkflows)是对核心过程工作流的配套支持和管理,保障核心过程工作流顺畅、高效运行。配置和变更管理:工作文档的管理,在版本更新、需求变更中做到各类文档及时、同步跟踪,保证各文档内容完整、一致。项目管理(ProjectManagement):资源配置、评估监控、风险控制、计划调整等管理工作,目的效益最大化。环境(Environment):软件开发环境,包括人员、设备、过程和工具,以及各种规范、指导手册和保障措施。14简述rup模型中基线与里程碑的概念,二者之间的关系。基线,是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础,也可以理解成为一个阶段的起点并已经制定了相应的工作标准,并且只有经过授权后才能变更这个标准。里程碑,是计划中确定的阶段性工作完成目标,要求提交阶段交付物,作为阶段评估的标准。基线和里程牌的关系:基线是为了建立参照点,是阶段的起点;里程牌是建立阶段性目标,是阶段终点,最后的里程牌可能是一次迭代的终结。15简述软件计划的目标和主要工作.软件计划的目标:研究项目的可行性,研究合理地运用软件项目开发所需的资源、经费,掌握开发进度,控制项目开发过程按此计划进行。主要工作包括:确定项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预算计划、人力资源计划等。16软件计划的活动有哪些?这些活动的内容是什么?软件计划主要活动包括:问题定义,可行性研究,项目计划。这些活动的内容是:问题定义:确定项目实施范围,回答项目“做什么?”的问题。可行性研究:项目的必要性和可能性。制定项目计划:编制项目开发计划。17简述问题定义的目的和主要任务。问题定义的目的:弄清要计算机解决的根本问题所在(要解决的问题是什么?),确定新系统的作用域,以及项目所需的资源、工期和经费。问题定义的主要任务:编写项目报告提交审查,作为可行性分析的依据。18简述可行性分析的目的、任务和内容。可行性分析的目的:确定项目的必要性和可能性。可行性分析的任务包括:可行性分析;写可行性研究报告;编制开发计划。可行性分析的内容包括:技术、经济和社会三个方面的可行性:19简述需求分析的目的、必要性和参与角色需求分析的目的是:弄清用户对系统的细节要求,完整、准确、清晰、具体地回答目标系统“做什么”。准确地理解用户提出的软件功能、性能及其环境的要求。需求分析的必要性:用户与开发者的知识领域不同,产生歧义;软件开发失败50%是需求不合理,早期错误易放大。参与角色:开发方包括分析师、设计师和架构师。用户方包括领域专家、用户和部门负责人。20需求开发的任务有哪些?需求开发的任务包括需求获取:收集用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。需求分析:通过符号和文字说明描述系统模型,使用户和开发者间建立共同语言基础,消除理解上的歧义的过程。需求说明:既编写需求文档,也称编写需求规格说明书。需求说明书是需求分析阶段的最终成果,也是需求分析阶段复审的依据;是用户领域专家、软件分析师、软件设计师共同交流的途径和媒介;是交付给用户文档的一部份;需求验证:即需求评审。根据需求说明书,分析师、设计师、客户会审文档,对需求的正确性、一致性、完整性、无二义行进行评审、确认。21需求的层次软件需求包括三个不同的层次:业务需求、用户需求、功能需求,也包括非功能需求。1.业务需求(businessrequirement)业务需求是反映企业/组织对软件系统的高层次目标要求,即软件系统的建设目标。业务需求通常是“问题定义”或“可行性研究”阶段获取的内容;在需求规格说明书中反映在项目背景、系统目标或任务概述的描述中。获取的主要对象是客户方的高管、专家、部门负责人。2.用
本文标题:软件工程期末复习
链接地址:https://www.777doc.com/doc-4237191 .html