当前位置:文档之家› 软件生命周期模型

软件生命周期模型

软件生命周期模型.软件生命周期对于一个软件的研制,从问题的提出,经过开发、使用、维护、修订,直到最后终止使用而被另一软件所取代,就像是一个生命体从孕育、出生、成长到最后消亡,软件的这个状态变化的过程称为生命周期(life cycle)。

软件生命周期的演化具有阶段性,依据一定的原则,可以把软件生命周期划分为若干不同阶段,相邻的阶段既相互区别又相互联系,每个阶段都以其前一阶段的工作成果作为本阶段工作的基础。

软件生命周期的划分有助于软件开发和管理人员根据不同阶段的特点进行软件开发及其管理。

软件开发的经验表明,软件开发越到后期,改正前期开发工作的失误越困难,因此在软件开发工作中应该对软件开发工作的阶段性给予充分认识,在前期工作不无分的前提下不应过早地进入软件开发的下一阶段。

依据不同的原则对软件生命周期的划分也不同,《软件工程国家标准--计算机软件开发规范》(GB8566-88)中将软件生命周期划分为8个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现(包括单元测试)、组装测试(集成测试)、确认测试、使用和维护。

本书按照人们所习惯的粗分方法把上面8个阶段划分为计划、开发和维护3个阶段,在概述其他两个阶段的基础上重点介绍软件的开发过程。

2.软件开发方法在规定的投资规模和时间限制内,实现符合用户需求的高质量软件是软件开发的目标,为实现这一目标,人们根据软件开发的特点,提出了多种软件开发策略。

通过不同的软件开发模型阐明从问题提出到最终软件实现,软件开发工作过程的阶段性任务分解,并规定了每一个阶段的目标、任务以及工作结果的表达形式。

常见的软件设计模型有:瀑布模型(waterfall model)、渐进模型(increamental model)、演化模型(evolutionary model)、螺旋模型(spiral model)、喷泉模型(fountain model)、智能模型(intelligent model)等。

这里介绍其中的3种。

(1)瀑市模型瀑市模型1970年由W.Royce提出,其开发过程依照固定顺序进行,各阶段的任务与工作结果如图1所示。

该模型严格规定各阶段的任务,上一阶段任务输出作为下一阶段工作输入。

此模型适合于用户需求明确、开发技术比较成熟、工程管理严格的场合使用,其缺点是:由于任务顺序固定,软件研制周期长,前一阶段工作中造成的差错越到后期越大,而且纠正前期错误的代价高。

图1瀑布型开发过程(2)渐进模型从一组简单的基本用户需求出发,首先建立一个满足基本要求的原型系统。

通过测试和运行原型系统,有用户提出进一步细致的需求,然后修改和完善原型系统,反复进行这个过程直到用户满意为止。

该模型适合开发初期用户需求不甚明确,相关技术和理论需要不断研究、反复实验以及开发过程需要经常与用户交互的场合,学习或研究类软件的开发常用此法。

由于用户在整个软件开发过程中都直接参与.因此最终的软件产品能够很好地满足用户的需求。

渐进模型开发过程如图2所示。

图2渐进型开发模型(3)喷泉模型该模型主要用于面向对象软件技术开发项目,其特点是各项活动之间没有明显的界限。

由于面向对象技术的优点,该模型软件开发过程与开发者对问题认识和理解的深化过程同步。

该模型重视软件研发工作的重复与渐进,通过相关对象的反复迭代并在迭代中充实扩展,实现了开发工作的迭代和无间隙,该开发过程分为:分析、设计、实现、确认、维护和演化。

CMM概述软件产品的质量在很大程度上取决于开发软件时开发和维护过程的质量。

软件开发过程是人员密集和设计密集的作业过程,若缺乏有素的训练,就难以建立起支持实现成功改进软件过程的基础,改进工作亦将难以取得成效。

美国困会在20世纪80年代就注意到IT行业的这个现实,希望IT行业能以标准化的方式履行软件开发的能力。

在1984年,国会与美国的主要公司和研究中心合作,建立了-个由联邦资助的非盈利组织,称为软件工程研究所(Software Engineering Institute,SEI),附属于卡内基一梅隆大学。

Capability Maturity Model缩写为CMM,是SEI的一个早期研究成果,描述的这个框架勾画出软件开发组织从无定规的混沌过程向训练有素的成熟过程演进的途径。

CMM是一个事实上的软件工程过程方面的国际标准。

CMM是CMM族模型中制订最早、影响也最大的一个。

CMM是用于评价一个组织软件过程成熟度和识别增加这些过程的成熟度所需要的关键实践的-个模型,是建立软件组织所使用的过程成熟度的模型以及定义和测量过程成熟度的有效方法,在实际中被软件开发组织用于软件过程改进和评估。

CMM采用5级等级结构。

如果一个组织被评估为5级,它便达到了完全的成熟水平。

它有一套实践、方针和规范,使各个团队能以一种可预见的、可靠的和可重复的方式生产出高质量的软件。

据SEI估计,全世界只有1%-2%的IT组织达到了5级的水平。

而评估为1级的组织则缺乏这种能力,质量或多或少成为一个不可预见、无法管理的目标,成功与否不仅依靠组织,而更多地依赖于个人。

CMM的5个等级分别为:第一级,初始级;第二级,可重复级;第二级,已定义级;第四级,已管理级;第五级,优化级。

在每一个等级上,CMM首先设定一组一般目标,再定义一组关键过程域(KPA,Key Process Area),而关键过程域则靠若干关键实践来实现。

CMM根据关键过程域对软件过程能力进行评估,无论哪个KPA,它们的实施活动都统一按五个公共属性进行组织,即每一个KPA都包含五类KP。

每一个KPA都确定了一组目标,若这组目标在每一个项目都能实现,则说明企业满足了该KPA的要求。

若满足了某一个级别的所有KPA要求,则表明达到了这个级别所要求的能力。

依据软件过程能力的不同将软件企业分为5个不同的软件能力成熟级别。

CMM为软件企业的过程能力提供了一个阶梯式的进化框架。

它基于过去所有软件工程成果的过程改善的框架,吸取了以往软件工程的经验教训。

它指明了一个成熟的软件组织在软件开发方面需要管理的那些主要工作、这些工作之间的关系,以及以怎样的先后次序,一步一步地做好这些工作使软件组织走向成熟。

CMM是目前国际上最流行也是最实用的软件生产过程标准。

迄今为止,CMM既不是政府标准也不是行业协会标准,而是软件工程研究所发表的一份技术报告;不过,它在美国已成为事实上的标准。

鉴于CMM的巨大应用前景,SEI己在美国注册了CMM的专利和商标。

与此同时,围绕以CMM为基础的软件过程评估和软件能力评价建立了从审核员培训到提供评估和评价的一整套服务体系。

SEI给CMM下的定义是:对于软件组织在定义、实现、度量、控制和改善其软件过程的进程中各个发展阶段的描述。

这个模型便于确定软件组织的现有过程能力和查找出软件质量及过程改进方面的最关键的问题,从而为选择过程改进战略提供指南。

CMM1.1版包括四部分:"软件能力成熟度模型"和"能力成熟度模型的关键惯例"。

"软件能力成熟度模型"主要是描述这种模型的结构,并且给出该模型的基本构件的定义;为便于读者理解,还进一步对成熟度模型及其构件做了大量解释。

"能力成熟度模型的关键惯例"除了重复叙述能力成熟度模型结构及其构件外,以大量篇幅详细描述了每个"关键过程域"涉及的"关键惯例"。

"关键过程域"是指一组相关联的活动,通过执行这些活动可以实现既定的过程能力。

所谓"关键惯例"是指使关键过程域得以有效实现和制度化的作用最大的基础设施和活动。

各个关键惯例按每个关键过程域的5个"公共特性"(对执行该过程的承诺,执行该过程的能力,该过程中要执行的话动,对该过程执行情况的度量和分析,及证实所执行的活动符合该过程)归类,逐一详细描述。

按CMM的规定,做到了某个关键过程的全部共键惯例就认为实现了该关键过程,实现了某成熟度级别及其以下各级所含的全部关键过程就认为达到了该级别。

CMM把软件开发组织的能力成熟度分为5个可能的等级。

除了第1级外,其他每一级由几个KPA组成。

每-个KPA都由上述5种公共特性子以表征。

CMM给每个关键过程规了一些具体目标。

按每个公共特性归类的关键惯例是按该关键过程的具体目标选择和确定的。

如果恰当地处理了某个关键过程涉及的全部关键惯例,这个关键过程的各项目标就达到了,也就表明该关键过程实现了。

这种分级的思路在于把一个组织执行软件过程的成熟程度分成循序渐进的几个阶段,这与软件组织提高自身能力的实际推进过程相吻合。

这种成熟度分级的优点在于,这些级别明确而清楚地反映了过程改进活动的轻重缓急和先后顺序。

这点很重要,因为大多数软件组织只能在某一段时间里集户开展少数几项过程改进活动。

CMM指明了过程改进的途径,是-套指南,能够通过持续的重复测量与提炼来稳步创造与改进开发环境。

不要把CMM设想为-套规则,应该将它理解为一个学科,一套做事的方法。

在这套指南下让你裁剪和塑造自己的大纲,以适应不同组织的特定要求。

CMM指明了一个组织从出生到成熟的成长道路。

还要求对整个IT组织的有关部分,从高层管理者到软件生产第一线的工作者,都要做出坚定的、长期的实施承诺。

成熟的过程需要长期的努力。

IT组织之间存在着巨大的差别,它们的客户不同、使用的工具不同,人员智力与专业背景不同,从事的项目属于不同的类型,规模有大有小,要求也各不相同。

因此它们应当以CMM为指导,以自己的方式走向成热。

在一处适用的东西,到另一处可能不适用。

因此灵活性、专业解释和恰当的实施,是在CMM下走向成功的关键。

CMM有两个基本用途:软件过评估和软件能力评价。

软件过程评估目的是确定-个组织的当前软件过程的状态,找出组织所面临的急需解决的与软件过程有关问题,进而有步骤地实施软件过程改进,使组织的软件过程能力不断提高。

因此,软件过程评估关注一个组织的软件过程有哪些需改进之处及其轻重缓急。

评估组采用CMM来指导他们进行调查、分析和排优先次序,组织可利用这些调查结果,参照CMM中的关键实践所提供的指导,规划本组织软件过程的改进策略,能够促使软件企业形成更先进、更科学、更新兴的管理模式。

各种不同水平的企业都能够从CMM中获取不同的营养,找出自己改进、发展的方向。

严格来说,对于软件企业软件能力的评估,实际上是对-个企业的软件开发能力的评估。

一个企业达到相应的CMM级别,就具有相应的软件开发能力,可以说是一个资质的证明。

软件能力评价目的是识别合格的能完成软件工程项目的承制方,或者监控承制方现有软件工作中软件过程的状态,进而提出承制方应改进之处。

相关主题