您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第2章_软件生存周期与软件过程课件
第2章软件生存周期与软件过程Chapter2SoftwareLifeCycle&SoftwareProcess2.1软件生存周期(SoftwareLifeCycle)●一个软件从开始计划起,到废弃不用的整个时期,称为软件生存周期。●把软件生存周期划分为较小的阶段的目的:给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,使软件复杂性变得较易控制和管理。●软件生存周期模型(SoftwareLifecycleModel)根据软件生存周期为各项开发活动的流程确定一个合理的框架,称为软件生存周期模型或软件开发模型(即描述软件开发过程中各种活动如何执行的模型。)2.1.1软件生存周期的主要活动●软件生存周期包含3个时期:计划、开发和运行时期。●各时期又分为若干阶段,共6个阶段。需求分析软件设计测试编码图2.1典型的软件生存周期运行维护可行性研究开发时期运行时期计划时期1.可行性研究(FeasibilityStudy)(详见第35页,2.6.1)●解决“是否能做?是否值得做?”的问题。(Whethercando?Whetheritisworthtodo?)●主要文档:可行性论证报告(FeasibilityReport)、项目实施计划(简称项目计划,ProjectPlan)。2.需求分析(RequirementAnalysis)●解决系统“做什么?(Whattodo?)”问题。●弄清用户对系统的需求,包括功能需求、性能需求、环境约束和用户界面等(其中功能需求是最重要的),建立分析模型。●主要文档:需求规格说明书(SoftwareRequirementSpecification,SRS)。及初步的系统用户手册提交管理机构评审3.软件设计(SoftwareDesign):分为总体设计和详细设计。①总体设计(GeneralDesign;又称概要设计,PreliminaryDesign)主要确定软件的体系结构。把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应软件工程9②详细设计(DetailDesign):又称过程设计(ProcessDesign),主要设计每个模块的实现细节。●主要文档:概要设计说明书和详细设计说明书(PreliminaryDesignSpecification&DetailDesignSpecification)。提交管理机构评审4.编码(Coding):把设计翻译为源程序●编写源程序(SourceProgram)。5.测试(Testing):●进行单元测试、集成测试、确认测试和系统测试。●主要文档:测试计划(TestingPlant)、测试报告(TestingReport)等。●3.~5.解决“怎么做?(Howtodo?)”的问题。6.运行维护(Running/Maintenance):●做好软件的维护工作。●主要文档:维护申请单(MaintenanceRequestForm)和软件修改报告(SoftwareChangeReport)等2.1.2生存周期和软件过程的关系1.从软件生存周期到软件过程●软件过程(SoftwareProcess):围绕软件开发所进行的一系列活动。(通俗地,也可以把软件过程称为“软件开发模型”)2.软件过程的演变传统的线性开发模型→迭代的过程模型2.2传统的软件过程(ConventionalSoftwareProcess)2.2.1瀑布模型(WaterfallModel)●瀑布模型:是一种基于软件生存周期的线性开发模型。WaterfallModelREQUIREMENTSANALYSISSYSTEMDESIGNPROCESSDESIGNCODINGTESTINGOPERATION&MAINTENANCE●瀑布模型的特点:1.阶段间的顺序性和依赖性:各个阶段按自上而下、相互衔接的固定次序,如同瀑布逐级下落。2.推迟实现的观点:瀑布模型在编码以前安排了分析阶段和设计阶段,直到设计阶段结束,才实现编码,有利于提高软件质量。允许迭代,但却是间接迭代变更可引起混乱3.质量保证的观点(文档驱动):(1)每个阶段都要完成规定的文档。(2)每个阶段结束前都要对已完成的的文档进行复审(审查)。4.存在的问题:–不适合需求模糊的系统。–开发的初始阶段很难彻底弄清软件需求。●为了解决这个问题,提出“快速原型模型”。软件工程17用户要求编码需求分析模块说明详细设计需求规格说明软件结构图总体设计单元测试程序清单确认测试综合测试系统测试瀑布模型的阶段与文档WaterfallModel–features1.Verywelldistinguishedprocess(easytounderstand).2.Everystepsinthemodelcompleteswithamilestone.3.Amilestoneisdefinedasacompletionofsetofdocuments.4.Whenthedocumentsareapprovedthenextstepcanbetaken.(瀑布模型的特点:1.过程清晰,比较容易理解;2.每一阶段结束都有一个里程碑来标志;3.里程碑定义了一组文档集合;4.只有文档被大家认可后,下一阶段才能启动。)软件工程19间洁性提供一个模板,使得分析、设计、编码、测试与维护工作可以在该模板的指导下有序展开,避免开发过程的随意性。采用此方法划分阶段,可以很容易地为各个阶段分配相应的资源瀑布模型的优点软件工程20瀑布模型的优点可强迫开发人员采用规范的方法严格地规定了每个阶段必须提交的文档要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证瀑布模型的缺点–周期长:顺序推进,环环审查–需求难以准确把握(不能准确提出和沟通、不能快速适应变化的需求),导致返工甚至推倒重来–无法预测新引入模块的影响–最终的形式难以预料–不适合需求模糊的系统2.2.2快速原型模型(RapidPrototypeModel)1.原型开发的优越性●快速原型模型的中心思想是:首先建立一个能够反映用户主要需求的原型,让用户看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进;然后将原型反复改进,最终建立符合用户要求的新系统。快速原型模型示意图快速分析运行原型快速设计建造原型客户评价修改开始2.原型开发的方法(1)原型系统仅包括未来系统的主要功能以及系统的重要接口,不包括系统的细节。(2)开发原型系统时尽量使用能缩短开发周期的先进的语言和工具(如4GL)。(3)把原型系统作为基础,通过补充和修改获得最终的实际系统。(快速原型模型也常常被当作帮助定义软件需求的一种手段,大多数原型都废弃不用。)3.原型模型的启示–“逼真”的原型可以使用户迅速作出反馈。–循环回溯和迭代:非线性模型。4.应该防止的偏向–舍不得抛弃,从而影响软件质量。5.原型模型的种类–渐进型:对原型补充和修改获得最终系统。–抛弃型:原型废弃不用。AdvantagesandDisadvantagesofPrototype1.Advantages–Requirementsbetterspecifiedandvalidated–Stronginvolvementofthecustomerintheprototypingphase2.Disadvantage–Higherdevelopmenteffort原型模型的优缺点:1、优点:需求说明可以被更好的描述和验证;在原型阶段用户可以更深地加入到开发中来。2、缺点:需要更高的开发技术要求。Prototypeisapartiallydevelopedproductthatenablescustomersanddevelopertoexaminesomeaspectoftheproposedsystemanddecideifitissuitableorappropriatesforthefinishedproduct.(原型是一个被开发的部分产品,用来使用户和开发者对想象产品的某些方面进行测试,判断它是否适合于最终的产品。)软件工程27用户界面的开发:用得最多的地方。工作流的模拟:如可演示出系统中的一个具体的购物过程(包括在什么地方产生此类购买活动,针对不同活动所产生的各种用户界面与对话框等)。采用这种方法可以对整个工作流加以模拟,并且可以让用户与软件开发人员亲眼看到相应的过程,考虑到所有可能的场景,从而在最终产品中不漏掉任何一种逻辑情况。快速原型模型的适用性软件工程28存在多个客户的情况:在此情况下,针对变化所作出的原型可能不能令所有的客户满意,因此很可能花大代价制作多个原型。即使每个原型均能各自满足相应客户的要求,也可能存在相互矛盾的需求。最终客户并不明确的情况:产品有关的功能很可能对于真正的客户来说是无意义的。无法将外部的客户请到开发现场为开发人员提供帮助。快速原型模型的不适用性软件工程292.3软件演化模型基本思想:分期完成,分步提交,先提交一个有限功能的版本,再逐步地使其完善。主要特点:利用“迭代”方法,使渐进开发生产出逐步完善的软件版本兼有线性顺序模型和原型模型的特点。据策略不同分为:增量模型和螺旋模型2.3软件演化模型(SoftwareEvolutionaryModel)2.3.1增量模型(IncrementalModel)●增量模型是瀑布模型的顺序特征与快速原型模型的迭代特征相结合的产物。它把软件看做一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量。时间分析增量1增量1交付客户设计编码测试分析增量2增量2交付客户设计编码测试分析增量3增量3交付客户设计编码测试分析增量4增量4交付客户设计编码测试系统和信息工程软件工程32优点–能在较短的时间内向用户提交部分功能的构件;–逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,减少一个全新软件可能给用户带来的冲击。缺点–增量构件的划分依赖于系统功能的构成和软件开发人员的经验;–要求软件系统的体系结构具有高度的可扩充性和开放性。2.3.2螺旋模型(SpiralModel)●螺旋模型是在结合瀑布模型与快速原型模型的基础上增加了风险分析而形成的。1.典型的迭代模型●螺旋模型是一种迭代模型,每迭代一次,螺线线就前进一周,每轮螺旋均包含以下4个活动:(1)计划:确定目标,选择方案。(2)风险分析:分析所选方案,考虑如何识别和消除风险。(3)建立原型:实施本周期的开发任务。(4)用户评审:用户评价前一步结果,提出修正建议。决定目标、方案和限制评价方案、识别风险、弱化风险开发、验证、下一级产品计划下一阶段集成测试SpiralModelSuggestedbyBoehm(1988);Combinesdevelopmentactivitieswithriskmanagementtominimizeandcontrolrisks.螺旋模型,1988年由勃姆提出。综合了风险管理到开发活动中,以控制风险使其最小化。螺旋模型主要适用于内部开发的大规模软件项目。当风险过大时,可方便的终止项目。2.风险分析:软件开发存在风险,风险分析的目的就是要了解、分析并设法降低和排除风险。对高风险的大型软件,螺旋模型是一个理想的开发过程。3.螺旋模型的特点在项目开发的所有阶段都考虑各类风险。2.3.3构件集成模型(ComponentIntegratedModel)1.面向对象的基本概念(1)对象(Object):数据和操作的封装体。(2)类(Class):类是对象的抽象,对象是类的实例。(3)继承(Inheritance):子类可以共享父类的数据和操作。(4)消息(Message):对象通过消息进行通信。●面向对象=对象+分类+继承+通过消息的通信ObjectOriented=Object+Classfication+Inheritance+CommunicationwithMessage软件工程38对象(Object):现实世界中实体或事物的抽象表示,是属性和相
本文标题:第2章_软件生存周期与软件过程课件
链接地址:https://www.777doc.com/doc-2154798 .html