软件生命周期-姜鑫乐和余超.ppt
软件生命周期,软件生命期(Life cycle):一个软件从定义、开发和运行维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。,生命期的划分:,软件生命周期,1.定义时期 主要任务是调查和分析。调查用户需求,分析新系统的主要目标,分析开发该系统的可行性。并写出“可行性分析报告”。需求分析在于弄清楚用户对软件的全部需求,并用“需求规格说明书”的形式准确地表达。需求规格说明书应包括对软件的功能需求、性能需求、环境约束和外部接口等描述。用户和系统分析员的相互理解与配合,是做好这一时期工作的关键。,2.软件开发时期 开发时期要完成设计和实现。设计:主要任务是将需求转变为软件的表示形式。目的是确定软件的总体结构、数据结构、用户界面和算法细节,从需求规格说明书导出软件结构图。实现编码:选定某种语言,把设计的过程性描述翻译为源程序。直到这一阶段,才产生能在计算机上执行的源程序。前面各个阶段产生的都属于软件的文档。,实现测试:按照不同的层次,又可细分为单元测试、综合测试、确认测试和系统测试等步骤。测试是保证软件质量的重要手段。测试阶段的文档称为“测试报告”,包括测试计划、测试用例与测试结果等内容。,3.运行维护时期,维护的目的,是使软件在整个生命周期内保证满足用户的需求和延长使用寿命。每一次进行维护,都应该遵守规定的程序,并填写和更改好有关的文档。维护时期不再进一步划分阶段。,软件过程模型,软件过程模型:软件项目开发和维护的总体过程思路的框架。也称之为软件开发模型或软件生命期模型。它指出了软件开发过程各阶段之间的关系和顺序,是软件开发过程的概括。它为软件开发过程提供原则和方法,并为软件工程管理提供里程碑和进度表。因此,软件开发模型也是软件工程的重要内容。,软件过程模型,瀑布模型,原型模型,螺旋模型,喷泉模型,增量模型,瀑布模型,瀑布模型的基本思想是:瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。形如瀑布流水,最终得到软件产品。它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。,特点:上一阶段的变换结果 是下一阶段的变换的 输入,相邻两个阶段 具有因果关系,紧密相联。,瀑布模型,瀑布模型的特点,1.阶段间具有顺序性和依赖性2.推迟实现的观点3.质量保证的观点,瀑布模型,需求分析,瀑布模型,瀑布模型的优点:1、强迫开发人员采用规范的技术方法;2、严格地规定了每个阶段必须提交的文档;3、每个阶段结束前必须正式进行严格的技术审查和管理复审。,瀑布模型,瀑布模型的缺点:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。,软件过程模型,瀑布模型,原型模型,螺旋模型,喷泉模型,增量模型,原型模型,原型模型也称快速原型模型,基本思想:软件开发人员在与用户进行需求分析时,以比较小的代价快速建立一个能够反映用户主要需求的原型系统,在实践过程中提出改进意见,开发人员根据用户的意见,对原型进行补充和完善,然后再由用户试用、评价、提出建议,重复这一过程,直到用户对开发的原型系统满意为止。,原型模型,主要做法是:首先建立一个能够反映用户主要需求的原型,让用户实际看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些方面还需要改进。然后将原型反复改进,最终建立完全符合用户要求的新系统。,原型模型,原型模型的特点,加工原型,快速分析和设计,建造原型,客户评价原型,1、原型系统仅包括未来系统的主要功能,以及系统的重要接口。(它不包括细节,例如异常处理,对无效输入的反应等,对系统的性能需求:如硬件运行速度等也可推迟考虑),2、为了尽快向用户提供原型,开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。,原型模型,举例:UNIX支持的SHELL语言是一种功能很强的高级语言,有人用这种语言来写一个办公自动化系统的原型系统,只需要一天就完成了编程和测试,比使用其他高级语言快了许多倍。虽然SHELL语言在运行时需要很大的支撑系统,运行速度也是比较缓慢的,不太适宜用来实现最终的实际系统,但用它来开发原型系统,可以大大加快实现的速度。,原型模型,原型模型的适应场合:原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。,软件过程模型,瀑布模型,原型模型,螺旋模型,喷泉模型,增量模型,软件分阶段增量模型示意图,软件产品的不同阶段是按产品所具有的功能划分,先开发主要功能或用户最需要的功能,然后,随着时间推进,不断增加新的辅助功能或次要功能,最终开发出一个强大的、功能完善的、高质量的、稳定的产品。,增量模型,增量模型,在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块形成的提供特定功能的代码片段构成,增量模型,增量模型是瀑布模型的线性顺序特征(重复地应用)和快速原型法的迭代特征相结合的产物。增量模型把软件看做是一系列相互联系的增量。采用线性序列,每个线性序列产生软件的一个可发布的“增量”。在使用增量模型时,第1个增量往往是实现基本需求的核心产品。即第1个增量实现了基本的需求,但很多补充的特征还没有发布。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。,增量模型,客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。增量模型与原型实现模型本质上都是迭代的,但与原型实现不一样的是其强调每一个增量均发布一个可操作产品。,软件过程模型,瀑布模型,原型模型,螺旋模型,喷泉模型,增量模型,螺旋模型,螺旋模型:综合了瀑布模型和原型模型的优点,即将两者结合,并加入了风险分析机制。螺旋模型的每一个周期都包括计划(需求定义)、风险分析、工程实现和评审4个阶段。,螺旋模型的开发步骤,1、确定目标,选择方案,设定约束条件,选定完成本周期所定目标的策略。2.分析该策略可能存在的风险。必要时通过建立一个原型来确定风险的大小;然后据此决定是按原定目标执行,还是修改目标或终止目标。3、在排除风险后,实现本螺旋周期的目标,例如,第一圈可能产生产品的规格说明书,第二圈可能实现产品的设计等。4、最后一步是评价前一步的结果,并且计划下一轮的工作。,螺旋模型,螺旋模型,如果开发小组对项目的需求已有较好的理解,则第一圈就可以直接采用瀑布模型,这时的螺旋模型可只含单圈螺线。反之,若对项目的需求没有把握,就需要经过多圈螺线,并通过开发一个或多个原型来弄清软件的需求。,螺旋模型,1、计划(需求定义)第一周期开始利用需求分析技术理解应用领域,获取初步用户需求,制定项目开发计划(即整个软件生命周期计划)和需求分析计划。经过一个周期后,根据用户和开发人员对上一周期工作成果评价和评审,修改、完善需求,明确下一周期软件开发的目标、约束条件,并据此制定新一轮的软件开发计划。,螺旋模型,2、风险分析 根据本轮制定的开发计划,进行风险分析,评估可选方案,并构造原型进一步分析风险,给出消除或减少风险的途径。此时根据风险分析的结果决策项目是否继续。所以,螺旋模型是一个风险驱动的模型。3、工程实现 利用构造的原型进行需求建模或进行系统模拟,直至实现软件系统。,螺旋模型,4、用户评价与阶段评审 将原型提交用户使用并征求改进意见。开发人员应在用户的密切配合下进一步完善用户需求,直到用户认为原型可满足需求,或对软件产品设计进行评价或确认等。螺旋模型从第一个周期的计划开始,一个周期、一个周期地不断迭代,直到整个软件系统开发完成。,螺旋模型,螺旋模型的优点:支持用户需求的动态变化。具有良好的可扩充性和可修改性。也支持软件系统的可维护性,每次维护过程只是沿螺旋模型继续多走一两个周期。原型易于用户和开发人员共同理解需求,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。,软件过程模型,瀑布模型,原型模型,螺旋模型,喷泉模型,增量模型,喷泉模型,喷泉模型是近几年提出来的软件生存周期模型。它是以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。,喷泉模型,喷泉模型,喷泉模型的特点:软件系统可维护性较好;各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡;模型具有增量开发特性,即能做到分析一点、设计一点、实现一点,测试一点,使相关功能随之加入到演化的系统中。该模型很自然地支持软部件的重用。,软件过程模型,瀑布模型,原型模型,螺旋模型,喷泉模型,增量模型,1.最佳实践(1)迭代式开发,Rational统一过程,迭代模型:软件产品的不同阶段是按产品深度或细化的程度来划分。先将产品的整个框架都建立起来,在系统的初期,已经具有用户所需要的全部功能。然后,随着时间推进,不断细化已有的功能或完善已有功能,这个过程是个迭代的过程。,1.最佳实践(2)管理需求(3)使用基于构件的体系结构(4)可视化建模使用UML(统一建模语言),在开发过程中对软件系统进行可视化建模。帮助我们提高管理软件复杂性的能力。,Rational统一过程,Rational统一过程,(5)验证软件质量 软件质量的评估贯穿于整个开发过程,由全体成员参与的所有活动。(6)控制软件变更 RUP描述了如何控制、跟踪和监控修改,以确保迭代开发的成功。,Rational统一过程,RUP使用两个维度描述软件生命周期:1.纵坐标是核心工作流(Discipline)。描述了每一组活动的分类情况。从图中我们可以看到,随着时间的变化,项目活动重点也随之发生变化。2.横坐标是时间线,展示了生命周期的概况。生命周期会分为4个阶段(Phase),每一阶段由多次迭代(Iteration)构成。,2.RUP软件开发生命周期,迭代模型,RUP的迭代模型,