软件生命周期模型选择及WBS分解指南
软件生命周期模型选择及WBS分解指南
软件生命周期模型选择及WBS分解指南一、概述同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为“软件生命周期”。
软件生命周期模型,通俗说就是,软件开发过程中所遵循的模式,即把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。
软件生命周期模型和项目开发过程有非常紧密关系,它是经过多次实践总结出来适合于不同项目使用的经典、有效的软件开发方法,它按照软件生命周期的各个阶段划分任务,依照一定的规则和步骤,有效地进行软件开发。
选用恰当的软件生命周期模型进行软件开发,可以提高产品质量;降低项目管理难度;缩短开发进度;便于项目状态跟踪;为过程改进和度量提供基线;改善组织级的过程弱势,提高过程能力成熟度级别。
为了便于分类汇总和统计各种生命周期模型的指标和数据,结合公司软件开发过程的实际,我们选择了常用的几种基本模型进行了描述,项目开发小组在进行项目策划时,可以根据模型的适用前提、优缺点和项目的实际需要进行选择,并在《项目实施计划》中,参加评审。
二、软件生命周期模型常用的软件生命周期模型有:瀑布模型、迭代模型、增量模型、原型模型等。
以上所提到的件生命周期模型病不存在孰优孰劣的问题,每一种模型在实际工作中都有所应用。
只要选择了最适合的,并按照此模型的流程来开发软件,都会取得成功。
需要强调的是,不管采用什么模型,项目实施中有四项活动是必不可少的——需求、设计、编码和测试。
不管是有意识还是无意识,这些活动都会出现在项目过程中。
这也是最重要的四项活动,其他的活动其实都是为这些活动服务的,不管是配置管理、风险管理,还是评审等等。
以下对各种常用的软件生命周期模型的设计思想、WBS划分(Work Breakdown Structure,即工作分解结构)、优缺点、使用范围进行分析。
1、瀑布模型(1)基本思想瀑布模型(Waterfall Model)是最基本也最常用的一种生命周期模型,又称线性模型。
软件生命周期模型选择及WBS分解指南
软件生命周期模型选择及WBS分解指南引言:在软件开发过程中,选择合适的软件生命周期模型对于项目的成功实施和交付至关重要。
同时,编制合理的工作分解结构(Work Breakdown Structure, WBS)也是项目管理的关键一环。
本文将为您提供一些关于软件生命周期模型选择和WBS分解的指南,希望能够帮助您在软件开发项目中取得更好的成果。
一、软件生命周期模型选择指南:1.需求的稳定性:如果项目需求相对稳定不易改变,可以选择传统的瀑布模型。
而如果需求较为不稳定,可能需要采用迭代或增量模型来适应变化。
2.时间和成本要求:如果项目有严格的时间和成本要求,并且对风险承担能力要求较低,可以选择瀑布模型。
如果项目对时间和成本要求有一定的弹性,并且可以承担一定的风险,可以选择敏捷或增量模型。
3.项目规模和复杂度:如果项目规模较小且较简单,可以选择敏捷模型或增量模型。
而对于较大且较复杂的项目,可以选择瀑布模型或融合多种模型的混合模型。
4.团队成熟度和经验:如果项目团队对软件开发过程较为熟悉,并且具有较丰富的经验,可以选择敏捷模型。
而对于缺乏经验和技术实力较弱的团队,可以选择瀑布或增量模型,以确保项目的可控性。
5.客户合作度:如果项目需要与客户密切合作,并根据客户的反馈进行及时调整,可以选择敏捷模型。
而对于客户合作度较低的项目,可以选择瀑布模型或增量模型。
二、WBS分解指南:WBS是将项目工作分解为可管理和控制的小块的过程,是项目管理的基本工具之一、下面是一些关于WBS分解的指南:1.确定项目的总目标:首先需要明确项目的总目标和范围,以便将其分解为具体的工作包。
2.定义阶段和子阶段:将项目分解为不同的阶段和子阶段,以便更好地管理和控制项目进展。
3.确定工作包:将每个阶段和子阶段分解为具体的工作包,每个工作包应该具有明确的可交付成果和工作范围。
4.确定工作包的工作内容:将每个工作包进一步分解为可以被分配给团队成员的具体工作任务,确保每个任务都具有可测量和可跟踪的成果。
生命周期模型及选择指南
附录:标准项目生命周期图21
生命周期模型及选择指南
软件生命周期模型及选择指南
1目的和范围
本文用以描述中地公司推荐的软件项目生命周期(以下简称LC)模型,并说明如何根
据项目特性选择合适的LC模型。
2生命周期可选模型简介
软件生命周期指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、
生命周期模型及选择指南
5、过程的可见性强,便于过程质量控制;
6、只要需求是稳定的,则进度也是稳定的。
.2
1、无法解决软件需求不明确或不准确的问题;
2、灵活性差,依赖于早期进行的需求调查,不能适应需求的变化;
3、由于是单一流程,开发中的经验教训不能及时反馈并应用于本产品的过程改进。
.3适用项目
1、充分理解用户需求,需求是确定不变的;
8、要求开发周期时间较充分。
.4阶段划分
1、需求开发
2、项目计划
3、概要设计
4、详细设计
5、编码和单元测试
6、集成测试
7、系统测试
8、验收测试
9、验收
10、发布
2.1.3中等简化V字模型(V4模型)
针对项目的实际情况,对V字(瀑布)模型进行演化是必要的。中等简化V字模型是
在标准瀑布模型基础上根据组织中一些小项目等的实际需要演化来的。流程图如下所示:
3、充分理解该解决方案的技术和体系;
4、需要一个可维护性和可支持性较高的解决方案;
5、所有过程工作产品的控制基线,需要有可见度和可靠性;
6、 适用于新的有较多用户的产品、平台/中间件开发项目,或者是用户对开发过程有严 格要求的工程定制项目;
7、项目经理有一定的项目管理经验;
软件工程软件生命周期模型
软件工程软件生命周期模型在软件工程领域,软件生命周期模型是一种重要的框架,用于指导软件开发的过程。
它为软件开发团队提供了一种结构化的方法,以确保软件的开发能够高效、高质量地完成。
软件生命周期模型就像是一张地图,指引着开发人员从项目的启动到最终的交付。
它涵盖了软件从概念形成到退役的整个过程,包括一系列的阶段、活动和任务。
常见的软件生命周期模型有瀑布模型、快速原型模型、增量模型、螺旋模型和敏捷模型等。
瀑布模型是最早出现的软件生命周期模型之一。
它将软件开发过程分为明确的几个阶段,如需求分析、设计、编码、测试和维护。
每个阶段都必须在前一个阶段完成且经过评审后才能开始。
这种模型的优点是流程清晰,文档规范。
但它的缺点也很明显,如果在后期发现前期的错误,修改成本会很高,而且不适应需求的频繁变更。
快速原型模型则是在获取基本需求后,快速构建一个原型系统。
用户通过使用原型来进一步明确需求,开发人员根据反馈进行修改和完善。
这个模型的好处是能够快速获得用户的反馈,尽早发现问题。
但由于原型往往不够完善,可能会给用户造成误解。
增量模型是把软件系统逐步分解为多个增量构件,每个构件分别开发和交付。
这样可以在较短的时间内交付部分功能,让用户逐步看到成果。
但它对软件的架构设计要求较高,需要很好地规划各个增量之间的接口。
螺旋模型则是将瀑布模型和快速原型模型结合起来,并加入了风险分析。
它沿着螺旋线不断迭代,每一轮迭代都包括制定计划、风险分析、实施工程和客户评估等步骤。
这种模型适用于大型、复杂且高风险的项目,但管理成本相对较高。
近年来,敏捷模型在软件开发中越来越受欢迎。
敏捷开发强调团队的快速响应和持续交付,通过短周期的迭代来不断完善软件。
常见的敏捷方法有 Scrum 和 Kanban 等。
敏捷模型注重人与人之间的沟通和协作,能够更好地适应需求的变化,但对团队成员的素质和自组织能力要求较高。
在选择软件生命周期模型时,需要考虑多个因素。
首先是项目的特点,比如项目的规模、复杂度、需求的稳定性等。
软件开发生命周期模型的选择
软件开发生命周期模型的选择在软件开发中,生命周期模型是一种用于描述软件开发过程的框架。
不同的生命周期模型为软件开发提供了不同的指导方针和步骤,从而有助于开发团队在项目执行期间遵循规范和有效地组织开发过程。
但是,不同的开发项目具有不同的特点和需求,因此选择合适的生命周期模型是非常重要的。
本文将对软件开发生命周期模型进行探讨,并讨论在选择过程中需要考虑的因素。
一、生命周期模型概述生命周期模型是软件开发中的一个重要概念,其目的是为软件开发过程提供一种组织方法,使得软件开发流程变得更加明确可控。
常见的生命周期模型主要有瀑布模型、迭代模型、螺旋模型、敏捷方法等。
瀑布模型是软件生命周期模型中最经典的模型,其具有层次分明、逐步推进,且每个阶段都有明确定义的文档和交付成果的特点。
瀑布模型适合开发复杂性低、需求稳定的软件项目,但当需求发生变更时,会导致大幅度返工,增加项目延误和成本。
迭代模型强调快速、迭代式的开发环节,通过不断迭代,逐步完善系统,具有灵活性和应变能力,适合于需求不稳定的软件开发项目。
螺旋模型是一种风险驱动的生命周期模型,强调对开发过程中出现的风险进行管理,并在开发周期的各个阶段不断调整和完善计划。
该模型适用于需要高度可靠性、安全性和稳定性的软件项目。
敏捷方法是一种应对快速变化的软件开发方法,其主要特点是将软件开发过程分解为较短的周期(通常为2至4周),每个周期内的成果可以及时交付和评估。
因此,敏捷方法适用于需要快速响应市场、客户需求的软件开发项目。
以上介绍的生命周期模型仅是其中的一部分,根据项目的不同特点和需求,开发团队可以选择不同的生命周期模型。
二、选择生命周期模型的考虑因素在选择软件开发生命周期模型时,需要考虑多种因素,包括以下几个方面:1. 项目特点不同的项目具有不同的特点,例如项目复杂度、需求稳定性、风险程度等。
在选择生命周期模型时,应根据项目特点选择合适的模型。
如果项目需求稳定、复杂度低,则瀑布模型适合;如果项目需求变化较快,则可以考虑采用迭代模型或敏捷方法。
软件开发生命周期与模型选择
软件开发生命周期与模型选择在当今数字化时代,软件开发已经成为了各个行业的核心竞争力之一。
无论是金融、医疗、零售还是制造业,软件的开发与运维都扮演着至关重要的角色。
然而,软件开发并非一蹴而就的过程,而是需要经历一个完整的生命周期。
本文将探讨软件开发生命周期的各个阶段,并介绍不同的开发模型,以帮助读者更好地选择适合自己项目的开发模型。
软件开发生命周期可以被分为几个阶段,包括需求分析、设计、编码、测试和维护。
在需求分析阶段,开发团队与客户紧密合作,明确软件的功能和性能要求。
这一阶段的重点是确保团队对客户需求的准确理解,以避免后续开发过程中的误解和偏差。
接下来是设计阶段,开发团队将根据需求分析的结果,设计出软件的整体架构和模块划分。
这一阶段的目标是确保软件的可扩展性和可维护性,以便在后续的开发和维护过程中更加高效地进行。
编码阶段是将设计文档转化为实际可执行代码的过程。
开发团队将根据设计文档中的指导,使用合适的编程语言和工具,逐步实现软件的各个功能模块。
这一阶段需要开发团队具备良好的编码能力和团队协作能力,以确保代码质量和开发进度。
测试阶段是整个软件开发生命周期中至关重要的一环。
开发团队将对已经编写好的代码进行全面的测试,包括功能测试、性能测试和安全测试等。
通过不同的测试手段,可以及早发现和修复潜在的问题,确保软件的质量和稳定性。
最后一个阶段是维护阶段,也是软件开发生命周期中最长的一个阶段。
在软件交付给客户后,开发团队需要持续关注软件的运行情况,并及时修复和升级软件。
这一阶段的目标是确保软件的稳定性和可用性,以满足客户的需求。
除了软件开发生命周期的不同阶段,选择合适的开发模型也是软件开发过程中的重要决策之一。
常见的开发模型包括瀑布模型、迭代模型和敏捷模型等。
瀑布模型是一种线性的开发模型,适用于需求明确、变化较少的项目。
在瀑布模型中,每个阶段的工作都是按照顺序进行的,一旦进入下一个阶段,就很难回到上一个阶段。
生命周期模型选择指南.doc
2-2-3-6-3.需求分析人员根据收集的需求资料进行需求分析,产出《需求规格书》。
2.2.
《需求规格书》
《需求追溯表》
2.2.
《需求规格书》通过评审,并纳入配置库。
2.2.
2-2-3-9-1.需求分析阶段所花的工作量。
2-2-3-9-2.需求分析阶段所花的成本。
《同行评审指南》
2.2.4.4
需求分析阶段完成。
2.2.
2-2-4-5-1.项目经理
2-2-4-5-2.设计人员
2-2-4-5-3.度量分析人员
2-2-4-5-4.配置管理人员
2.2.4.
2-2-4-6-1.项目经理与设计人员选择项目的技术解决方案。
2-2-4-6-2.设计人员设计体系结构,产出《体系结构设计说明书》、《接口设计说明书》设计
2-2-4-9-1.设计阶段所花的工作量。
2-2-4-9-2.设计阶段所花的成本。
2-2-4-9-3.评审的工作量、缺陷密度、评审速度。
2.2.
2.2.5.1
在概要设计和详细设计基础上,完成软件的编码。对于完成的代码,应进行单元测试。
2.2.
设计实现与集成(TS&PI)过程定义中系统实现流程。
同行评审(VER)过程定义。
2-2-3-9-3.评审的工作量、缺陷密度、评审速度。
2.2.
2.2.4.1
在已定义的需求基础上,完成系统设计。
2.2.
设计实现与集成(TS&PI)过程定义中系统设计流程。
决策分析(DAR)过程定义。
同行评审(VER)过程定义。
2.2.
《系统设计指南》
浅议软件项目生命周期模型与选择
浅议软件项目生命周期模型与选择作者:李霞来源:《中国新技术新产品》2012年第22期摘要:本文介绍了软件项目生命周期模型及选用原则,以指导项目组根据项目具体情况进行活动和任务安排,规范项目过程,保证项目质量和开发效率。
关键词:软件项目;生命周期模型;选择中图分类号::TP311.52 文献标识码:A正确的选择生命周期模型是软件开发成功的第一步。
软件项目经理在对项目进行策划时,首先需要考虑选择适用的软件生命周期模型。
合适的项目周期模型使得项目开发过程流程化、易于管理,同时能够提高开发速度和产品质量,更好的满足客户的要求。
1软件项目生命周期模型介绍1.1标准生命周期模型1.1.1标准生命周期模型将项目分成5个阶段,分别为构思阶段、计划阶段、开发阶段、稳定阶段和部署阶段,每个阶段定义了主要的工作目标和活动,每个阶段的结束以完成各自的里程碑为标记。
1.1.2模型图图 1 标准生命周期模型图通过使用分阶段和里程碑驱动的方式,使整个项目过程的可预见性和可管理性增强,项目质量可以得到有效的控制和提高。
每个阶段的结束包括一个里程碑,里程碑表示某个时间点,在这个时间点上,应该完成一组预先指定的交付成果。
里程碑的设立,可以帮助团队成员定期同步工作成果;产物经过正式评审,还可以确保项目进展方向的正确性,保证不偏离预定的业务目标。
在模型图中定义的里程碑为阶段里程碑(也称为主里程碑),在每个阶段的进行中,也可以在阶段内部定义其他中间里程碑(也称为次里程碑),如完成系统架构设计的里程碑等。
中间里程碑将一个阶段内的工作分成便于管理的几部分,由项目组根据项目情况制定,生命周期模型中对中间里程碑不做硬性要求。
此外,标准生命周期模型还是一个迭代方法,通过把一个大项目分为几个版本将风险减至最小。
在软件项目开发中,一般可先开发、测试和部署那些核心的、基本的功能,然后在后续的版本中添加其他功能。
使用多版本的方法,可以将复杂的大项目分解成几个较小的项目,使它们更便于管理。
软件开发生命周期选择指南
修改记录目录1目的 (1)2软件开发生命周期选择指南 (1)2.1工程特征: (1)1目的软件开发生命周期选择指南的目的:就是指导工程组初步选择适用本工程的软件开发生命周期模型,以便根据软件工程自身特点裁剪公司标准软件开发生命周期过程,用于定义软件工程过程PDSP。
2软件开发生命周期选择指南这一节描述了工程的特性,这些特性被用来作为选择适宜的LC模型的标准。
共有11种特性。
每一种规那么都有一个对它是如何影响对模型的选择和它使用指导的描述。
在XXXX-TOSSP的工程中,总共有7种推荐的模型。
两张表格详细描述了7种模型以及规那么的适宜值。
●表格1按照正规性递减的顺序提供了根本的瀑布模型–标准V 瀑布, 4阶段V 瀑布和3阶段V 瀑布。
●表格2包括了大部。
●表格3提供了标准软件开发生命周期模型的工程特性的总结。
●在表格4中列出了一个真实工程对生命周期选择的例子来说明对表格3的使用。
●使用这节为你的工程选择和简短列出适宜的生命周期模型。
使用工程的特征和给出的值来作为指导。
工程的适应性矩阵或记录方案〔POR〕可以影响对适宜LC的最终选择。
同其他在PDSP中规定的选择模型的规那么一起,捕获你的工程的特征以及生命周期的选择。
在XXXX-TOSSP中,这个数据被周期性地用来对特征作重新校准。
●利用下一节所详细描述的模型,有适应或裁剪地最终选出最适宜的模型。
2.1 工程特征工作量:大: 工作量> 30 工程月(EM)中: 工作量在15-30 EM之间小: 工作量在6-15 EM之间非常小: 工作量< 6 EM团队规模:数量的团队规模。
一般来说,越是大的团队要使用越是严格和正规的LC模型,以便通过增加互相依赖和沟通来应付风险。
大: >30中: 10 到30小: 3 到10非常小: <3周转时间:多: > 12月中: 6-12 月少: 3-6 月非常少: < 3 月以下对工程特征的分类为高、中和低。
生命周期模型选择指南
生命周期模型选择指南生命周期模型选择指南目录1.目的 (1)2.范围 (1)3.项目生命周期 (1)3.1.瀑布模型 (3)3.1.1.V字模型 (4)3.1.2.中等简化V字模型 (6)3.1.3.最简化V字模型 (7)3.2.原型模型 (9)3.3.螺旋模型 (10)3.4.增量模型 (12)3.5.迭代模型 (13)1.目的1)根据项目类型和实际情况,从公司认可的生命周期模型选择合适的生命周期模型;2)根据所选择的生命周期模型,裁剪和细化标准过程,使裁剪后的过程符合项目的特点和实际情况。
2.范围本文件适用于公司所有类型的项目。
3.项目生命周期生命周期模型是从项目需求定义直至经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
生命周期模型一般分为:瀑布模型、原型模型、迭代模型、增量模型。
软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。
目前软件开发实践中使用的各种生命周期模型,都是下面各阶段的不同排列与组合。
∙系统需求∙需求分析∙设计(概要设计和详细设计)∙编码实现∙测试∙使用与维护各阶段主要工作、应完成的文档、质量控制手段见下表。
该生命周期模型适合于所有项目。
一个完整的开发类项目生命周期一般分为:需求分析、设计、编码、测试、发布、实施以及运行维护阶段。
3.1.瀑布模型1)特点●阶段间具有顺序性和依赖性:必须等前一阶段的工作完成之后,才能开始后一阶段的输入。
对本阶段工作进行评审,若得到确认,则继续下阶段工作,否则返回前一阶段,甚至更前阶段。
只有前一阶段输出正确,后一阶段才能正确;●推迟实现的观点:在编码之前,设置了需求分析与设计的各个阶段,分析与设计阶段的根本任务规定在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现;●质量保证的观点是每个阶段都坚持两个做法:规定文档,没有文档就没有完成该段任务;每个阶段结束前都要对完成的文档进行评审,以便尽早发现问题,改正错误。
生命周期选择的指南
目录1. 目的 (2)2. 范围 (2)3. 职责 (2)4.工作程序 (2)4.1公司定义的软件生存周期模型 (2)4.2软件生存周期模型的选择准则 (2)4.2.1 瀑布模型选择准则 (2)4.2.2增量模型选择准则 (2)4.2.3 快速原型选择准则 (3)4.3软件生存周期模型 (3)4.3.1 瀑布模型 (3)4.3.2 增量模型 (3)4.3.3 快速原型模型 (4)4.4各阶段的任务、活动、工作产品和质量控制 (5)4.4.1 标准型 (5)4.5软件生存周期裁剪指南 (7)4.5.1裁剪指南 (8)5.参考资料 (9)1. 目的指导项目组在制定项目开发计划阶段,选择适合项目特点的生存周期,并能按照软件生存周期定义的工作流程进行工作。
2. 范围本过程适用于新开发的软件项目。
3. 职责软件项目经理负责根据项目的特点选择合适的生存周期。
4.工作程序4.1公司定义的软件生存周期模型软件生存周期定义可视软件项目特性识别和所选软件开发模型而异,公司拟推荐采用的软件生存周期模型有1、瀑布模型2、增量模型3、快速原型模型4.2 软件生存周期模型的选择准则定义一个适用的软件生存周期是软件项目策划的基点,也是用以规范项目管理的重要手段。
为此,对项目定义软件生存周期时,应首先根据各项目的特性和选择准则从本规范中选取一个合用的软件生存周期模型,随后再通过裁剪给出适用于本项目的软件生存周期定义。
4.2.1 瀑布模型选择准则1、用户开始就给出明确的需求,且在开发过程中需求没有或很少变化;2、分析设计人员对应用领域很熟悉;3、低风险项目(对目标、开发环境很熟悉);4、用户应用环境稳定;5、用户除提出需求以外,很少参与开发工作;6、用户接受在项目的开发晚期才能得到程序的运行版本。
4.2.2增量模型选择准则1、用户需求在整个项目开发过程中可能发生变化;2、客户接受分阶段交付;3、分析设计人员对应用领域不熟悉或难以全面把握;4、中等或高风险项目(对工期过紧且可分阶段提交的项目或对系统目标、开发环境不熟悉的项目);5、用户需要参与整个软件开发过程;6、使用面向对象的语言或第四代语言。
软件产品WBS分解指南修订稿
软件产品W B S分解指南WEIHUA system office room 【WEIHUA 16H-WEIHUA WEIHUA8Q8-软件产品WBS分解指南一、概述同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为“软件生命周期”。
软件生命周期模型,通俗说就是,软件开发过程中所遵循的模式,即把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。
软件生命周期模型和项目开发过程有非常紧密关系,它是经过多次实践总结出来适合于不同项目使用的经典、有效的软件开发方法,它按照软件生命周期的各个阶段划分任务,依照一定的规则和步骤,有效地进行软件开发。
选用恰当的软件生命周期模型进行软件开发,可以提高产品质量;降低项目管理难度;缩短开发进度;便于项目状态跟踪;为过程改进和度量提供基线;改善组织级的过程弱势,提高过程能力成熟度级别。
为了便于分类汇总和统计各种生命周期模型的指标和数据,结合公司软件开发过程的实际,我们选择了常用的几种基本模型进行了描述,项目开发小组在进行项目策划时,可以根据模型的适用前提、优缺点和项目的实际需要进行选择,并在《项目实施计划》中,参加评审。
二、软件生命周期模型常用的软件生命周期模型有:瀑布模型、迭代模型、增量模型、原型模型等。
以上所提到的件生命周期模型病不存在孰优孰劣的问题,每一种模型在实际工作中都有所应用。
只要选择了最适合的,并按照此模型的流程来开发软件,都会取得成功。
需要强调的是,不管采用什么模型,项目实施中有四项活动是必不可少的——需求、设计、编码和测试。
不管是有意识还是无意识,这些活动都会出现在项目过程中。
这也是最重要的四项活动,其他的活动其实都是为这些活动服务的,不管是配置管理、风险管理,还是评审等等。
以下对各种常用的软件生命周期模型的设计思想、WBS划分(Work Breakdown Structure,即工作分解结构)、优缺点、使用范围进行分析。
软件生命周期及模型选择
关键字:软件生命周期、软件生命周期模型、软件开发方法论瀑布模型、螺旋模型、增量模型、迭代模型、敏捷开发黑盒测试、灰盒测试、白盒测试系统测试、集成测试、单元测试1软件生命周期依据不同的原则对软件生命周期的划分也不同,《软件工程国家标准——计算机软件开发规范》(GB8566—88)中将软件生命周期划分为8个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现(包括单元测试)、组装测试(集成测试)、确认测试、使用和维护。
本书按照人们所习惯的粗分方法把上面8 个阶段划分为计划、开发和维护3个阶段,在概述其他两个阶段的基础上重点介绍软件的开发过程。
2. 软件生命周期模型瀑布模型/改进的瀑布模型虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段.由于需要对每一个阶段进行验证,瀑布模型要求每一个阶段都有明确的文档产出,对于严格的瀑布模型每一个阶段都不应该重叠,而应该是在评审通过,相关的产出物都已经基线后才能够进入到下一个阶段.瀑布模型的优点仍然是可以保证整个软件产品较高的质量,保证缺陷能够提前的被发现和解决.采用瀑布模型可以保证系统在整体上的充分把握,使系统具备良好的扩展性和可维护性.但对于前期需求不明确,而又很难短时间明确清楚的项目则很难很好的利用瀑布模型.另外对于中小型的项目,需求设计和开发人员往往在项目开始后就会全部投入到项目中,而不是分阶段投入,因此采用瀑布模型会导致项目人力资源过多的闲置的情况,这也是必须要考虑的问题.很多人往往会以进度约束而不选择瀑布模型,这往往是一个错误的观点.导致这种情况的一个关键因素往往是概念需求阶段人力不足.因此在概念需求阶段人力能够得到充分保证的情况下,瀑布模型和迭代模型在开发周期上并不会存在太大的差别.反而是很多项目对于迭代或敏捷模型用不好,为了赶进度在前期需求不明确,没有经过一个总体的架构设计情况下就开始编码,后期出现大量的返工而严重影响进度.架构设计是软件开发中一个重要的关注点.因此在RUP中也提及到软件开发要以架构为核心.因此在架构设计完成后系统会被分为相关的子系统和功能模块.每个功能模块间的接口都可以定义清楚.在这种情况下,当模块B的详细设计做完成后往往就没有必要等到其它模块的详细设计都要完全作完才开始编码,因此在架构设计完成后可以将系统分为多个模块并行开发,每个模块仍然遵循先设计和编码测试的瀑布模型思路.这是瀑布模型的一种最重要的改进思路,也可以说这是一种增量开发的模型.当一个新系统的开发存在多个完全不相关的独立需求的功能开发的时候,这个时候也可以选择将整个开发过程按独立的需求来分为多个小瀑布进行操作.这种方式的最大问题就是没有一个完全总体的设计,架构设计人员无法在洞悉了所有需求后从系统的可扩展性,复用等方面总体规划.在项目管理中有一种压缩进度的方法叫赶工,因此瀑布模型的另外改进处就在适当的重叠各个阶段过程,达到资源的有效利用.比如我们通过讨论,会议确定的实现方式就可以开始执导下一个阶段的工作而不一定完全等到相关的交付物文档化出来.螺旋模型首先螺旋模型是遵从瀑布模型的.即需求->架构->设计->开发->测试的路线.螺旋模型最大的价值在于整个开发过程是迭代和风险驱动的.通过将瀑布模型的多个阶段转化到多个迭代过程中,以减少项目的风险.螺旋模型的每一次迭代都包含了以下六个步骤1.决定目标,替代方案和约束2.识别和解决项目的风险3.评估技术方案和替代解决方案4.开发本次迭代的交付物和验证迭代产出的正确性.5.计划下一次迭代6.提交下一次迭代的步骤和方案.螺旋模型实现了随着项目成本投入不断增加,风险逐渐减小.以帮我我们加强项目的管理和跟踪,在每次迭代结束后都需要对产出物进行评估和验证,当发现无法继续进行下去时可以及早的终止项目.螺旋模型复杂的地方在于尽责,专心和知识渊博的管理.因为对于每一次迭代我们要制定出清晰的目标,分析出相关的关键风险和计划中可以验证和测试的交付物并不是一件容易的事情.螺旋模型的每一次迭代只包含了瀑布模型的某一个或两个阶段.如第二次迭代重点是需求,第三次迭代是总体设计和后续设计开发计划等.因此这是和RUP提倡的迭代模型是有区别的,RUP的每一次迭代都会包含需求,设计,开发和测试等各个阶段的活动.RUP迭代的目的在于逐步求精而不是仅仅完成瀑布模型某一阶段的工作.增量和迭代模型增量迭代是RUP统一过程常采用的软件开发生命周期模型.增量和迭代有区别但两者又经常一起使用.所以这里要先解释下增量和迭代的概念.假设现在要开发A,B,C,D四个大的业务功能,每个功能都需要开发两周的时间.则对于增量方法而言可以将四个功能分为两次增量来完成,第一个增量完成A,B功能,第二次增量完成C,D功能;而对于迭代开发来将则是分两次迭代来开发,第一次迭代完成A,B,C,D四个基本业务功能但不含复杂的业务逻辑,而第二个功能再逐渐细化补充完整相关的业务逻辑.在第一个月过去后采用增量开始时候A,B全部开发完成而C,D还一点都没有动;而采用迭代开发的时候A,B,C,D四个的基础功能都已经完成.RUP强调的每次迭代都包含了需求,设计和开发,测试等各个过程,而且每次迭代完成后都是一个可以交付的原型.迭代不是并行,在每次迭代过程中仍然要遵循需求->设计->开发的瀑布过程.迭代周期的长度跟项目的周期和规模有很大的关系.小型项目可以一周一次迭代,而对于大型项目则可以2-4周一次迭代.如果项目没有一个很好的架构师,很难规划出每次迭代的内容和要到达的目标,验证相关的交付和产出.因此迭代模型虽然能够很好的满足与用户的交付,需求的变化,但确是一个很难真正用好的模型.就对风险的消除上,增量和迭代模型都能够很好的控制前期的风险并解决.但迭代模型在这方面更有优势.迭代模型更多的可以从总体方面去系统的思考问题,从最早就可以给出相对完善的框架或原型,后期的每次迭代都是针对上次迭代的逐步精化.业界比较标准的增量模型往往要求在软件需求规格说明书全部出来后后续的设计开发再进行增量.同时每个增量也可以是独立发布的小版本.由于系统的总体设计往往对一个系统的架构和可扩展性有重大的影响,因此我们推荐的增量最好是在架构设计完成后再开始进行增量,这样可以更好的保证系统的健壮性和可扩展性.原型法原型一般都不是单独采用的一种生命周期模型,往往会结合瀑布和增量迭代等方法一起使用.对于螺旋模型就可以理解为瀑布+迭代+原型+风险的一种生命周期模型.对于迭代开发来讲,每一个迭代周期的产出都可以看做是下个阶段要精化的原型.而对于瀑布模型开发来讲,我们在需求阶段也可以进行界面和操作建模,形成DEMO后和用户做进一部的需求沟通和确认.当你的用户没有信息系统的使用经验,你的系统分析员也没有过多的需求分析和挖掘经验的时候,需求分析和调研过程则更需要是一个启发式的过程.而原型则是这种很好的启发式方法,可以快速的挖掘用户需求并达成需求理解上的一致.否则即使双方都签字认可的需求往往仍然不是客户真正想要的东西.原型可以分为抛弃型的和不抛弃型的.如果原型仅仅是需求阶段方面和用户沟通画的DEMO,则这种原型一般都建议抛弃掉.而对于迭代开发来将,每次迭代的产出都是可以独立运行和包含基础功能的系统,是后续细化的基础,这类原型一般都不建议抛弃,后期的设计开发也要基于该原型逐渐的进行完善.快速和敏捷开发我们一般将快速和敏捷开发做为方法论,而很少将其做为一种软件开发生命周期模型.敏捷的目的是减少繁重和不必要的工件的输出,提高效率.而不是要我们去挑阶段或过程,不是分析设计都还没有做就去做开发.因此对于瀑布,增量迭代或原型我们都可以借鉴敏捷方法论中的一些好的实践,这些实践都是对传统的生命周期模型很好的补充.对于敏捷方法论在此不再做过多的叙述.关于选择生命周期模型的最后的总结1.在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型.2.在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型.3.在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型4.在需求不稳定情况下尽量采用增量迭代模型5.在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布6.对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型7.对于全新系统的开发必须在总体设计完成后再开始增量或并行.8.对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型.9.增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则.3、软件的黑盒、灰盒、白盒测试与需求分析对应的是系统测试。
软件工程生命周期模型
软件工程生命周期模型在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。
从手机上的各种应用程序,到企业使用的复杂管理系统,软件无处不在。
而要开发出高质量、满足用户需求的软件,了解和选择合适的软件工程生命周期模型是至关重要的。
软件工程生命周期模型,简单来说,就是描述软件开发全过程的一种框架或模式。
它为软件开发团队提供了一套有组织、有步骤的方法,以确保软件能够按时、按质量要求交付。
常见的软件工程生命周期模型主要包括瀑布模型、迭代模型、增量模型和敏捷模型等。
瀑布模型是一种线性的、顺序的模型。
就像瀑布一样,水流依次经过各个阶段,不能回溯。
它将软件开发过程分为需求分析、设计、编码、测试和维护等几个明确的阶段。
每个阶段都有严格的输入和输出标准,只有前一个阶段完成并通过评审,才能进入下一个阶段。
这种模型的优点是流程清晰,易于管理和控制。
但它的缺点也很明显,由于不能回溯,如果在后期发现前面阶段的错误,修改成本会很高,而且不太适应需求变化频繁的项目。
迭代模型则是一种逐步完善的模型。
它将整个项目分为多个迭代周期,每个迭代周期都包括需求分析、设计、编码、测试等阶段,但每个迭代周期的重点和目标可能不同。
通过不断的迭代,软件逐渐完善和成熟。
这种模型能够更好地应对需求的变化,因为在每个迭代周期结束后,都可以根据用户的反馈和新的需求对后续的迭代进行调整。
但它对项目的管理和规划要求较高,需要合理安排每个迭代周期的任务和资源。
增量模型则是把软件系统分成多个增量构件,逐个构件地开发和交付。
每个增量构件都包含了一部分功能,这些功能可以独立运行和使用。
通过逐步增加增量构件,软件系统逐渐具备完整的功能。
这种模型适合需求比较明确,且可以划分成多个相对独立部分的项目。
它能够尽快为用户提供部分功能,让用户看到软件的进展,同时也降低了开发的风险。
敏捷模型是近年来比较流行的一种模型。
它强调团队的协作、快速响应变化和持续交付价值。
敏捷开发通常采用短周期的迭代,称为“冲刺”,在每个冲刺中,团队完成一部分可交付的功能,并与用户进行沟通和反馈。
生命周期模型选用指南
生命周期模型选用指南版本1.0发布时间:烟台海颐软件股份有限公文件变更记录1.目的本文档统一规范描述了组织内软件开发过程中可以使用的各种生命周期模型,供项目策划时根据项目的具体情况选用,由此确定软件项目开发过程的各种不同的阶段以及各阶段的执行顺序,从而加强项目管理,提高过程能力成熟度级别,保证产品质量。
2.适用范围机构:产品部、开发部、工程部、质量部。
业务:本指南适用于组织内的全部软件项目。
3.名词术语软件生命周期:软件生命周期,是指从开始策划软件产品到软件不再使用为止这段时间。
典型的软件生命周期包括策划阶段、需求阶段、分析与设计阶段、实现阶段(构造阶段)、测试阶段、实施和维护阶段。
软件生命周期模型软件生命周期模型是对软件工程活动的组织方式。
软件生命周期模型通过确定软件开发活动的顺序和相互制约关系来保证软件工程活动的流程化。
4.软件生命周期模型4.1瀑布模型(Waterfall)4.1.1模型定义该模型首先由Royce[1970]提出,又称线性顺序模型,或典型生命周期模型,指软件生命周期的各项活动始终按照固定顺序执行:需求、设计、构造、集成、测试、维护,各活动之间有明确的界限,非连续的,对阶段结束的成果进行判断以确定是否可以开始下一阶段的工作,形如瀑布流水,最终得到软件产品。
瀑布模型是所有软件生命周期模型的基础。
4.1.2模型图4.1.3模型特点1)优点瀑布模型是一种文档驱动模型,主要的工作产品通过文档从一个阶段传递到下一阶段,瀑布模型的每个活动的完成都是以该活动的评审通过作为标志的。
当项目有着明确的产品定义以及易于理解的技术方案的情况下,瀑布模型有助于及早发现问题,降低阶段成本。
瀑布模型的主要特点:·简单、易于理解·要求严格的管理,包括周密的项目计划、明确的交付物、严格的质量控制手段(如阶段的评审)等·客户在项目的后期才可以见到的产品以及判断产品的质量·强调产品的测试2)缺点:·缺乏灵活性瀑布模型要求在项目的初期明确定义全部需求,然而客户在项目初期很难明确描述所有的需求,这种不确定性难以满足模型要求的“稳定的、明确定义的需求”的要求。
软件生命周期指南
《软件生命周期指南》一、目的一、描述组织范围内利用的生命周期模型。
二、指导项目组初步选择适用本项目的软件开发生命周期模型。
二、范围一、本文档要紧描述软件项目生命周期模型。
二、本文当描述了开发项目类生命周期模型,适用于公司内部研发项目和为客户开发系统的项目。
3、依照软件项目自身特点裁剪公司标准软件生命周期进程,用于概念软件项目进程PDSP。
3、概述软件开发生命周期模型是将产品生命周期分解成由不同活动组成的假设干时期,以此实现产品从启动到实施以至完成的进程。
由于组织可能会面对不同的客户,有不同类型的产品,因此组织能够有多种生命周期模型。
4、开发项目类生命周期模型本节描述的软件项目生命周期模型适用于公司内部研发项目、为客户开发系统的项目。
每种模型都用图形的方式来描述,显示了它们应用的时期和检查点。
描述了在何种条件下利用该模型,需要注意风险和应用裁剪的指导。
每一幅图都指出了运用于该模型的时期和检查点。
用粗体和斜体表示的检查点推荐要有高层领导参加。
所有的检查点都要由项目领导签字。
☆开发项目的要紧时期:1.项目概念(PD)2.项目初始化(PI)3.需求分析和打算(RA&P)4.高层设计(HLD)5.详细设计(DD)6.编码和单元测试(CUT)7.集成测试(IT)8.系统测试 (ST)9.发布 (REL)10.关闭 (CLS)☆检查点:1.顾客签字 (CUSTSO)2.开始(KO)3.需求签字 (RSO)4.架构签字 (ASO)5.设计签字 (DSO)6.编码签字 (CSO)7.功能完成 (FC)8.系统完成 (SC)9.发布完成 (RC)利用这节提供的细节来最终选择生命周期。
对大多数的项目,之前面的部份表格来看可能有不止一种适合的模型。
利用本节所详细描述的模型,有适应或裁剪地最终选出最适合的模型。
4.一、标准V-瀑布生命周期(SVW)PIModule Module Unit STAcceptance TestRSO ASO DSO CSOFC SCSystem TestPlanIntegration TestPlanModuleTest PlanControl Flow Data FlowXXXCheckpoint that can be signed off by the Project ManagerSystem CompleteFunction CompleteCode Sign OffDesign SignOffArchitecture Sign OffRequirements Sign OffKO Project Kickoff Acceptance Test PlanSystemModule Module Module Unit Unit Unit Unit Unit Unit Module UnitUnitUnit Unit UnitSuggested for system shape:LEGENDSubsystem Unit UnitSubsystemSubsystem RELStandard V-Waterfall LifecycleRA&PHLDDDCUTITXXXCheckpoint that isrecommended to be signed off by Senior Management RCRelease CompleteCLSProduct Investigation Report/User Requirements/Phases which are part of the Project Management Lifecycle[PMLC]PD CUSTSO Customer Signoff当系统的规模和复杂度达到能够用多层设计时,推荐利用标准的生命周期。
(完整版)WBS分解指南
WBS分解指南上海恒志软件科技有限公司修改记录目录1概述 (1)1。
1目的 (1)1.2角色职责 (1)1.3术语 (1)2WBS分解指南 (2)2。
1WBS分解原则 (2)2.2WBS分解方法 (3)2.3分解阶段 (3)2。
4WBS分解层次 (4)3附录:WBS分解示例 (5)1概述1.1目的WBS(工作任务分解结构)的目的是将整个项目分解成可管理的、相互关联的、模块化的构件或活动,即工作任务或工作包.1.2角色职责项目经理负责软件项目的WBS活动。
根据采用的方法和项目具体情况,由项目经理和项目经理指派的有经验的程序员、软件工程师、软件估计人员等负责实施项目的WBS活动。
最终的确认必须由项目经理进行。
1.3术语WBS: Work Breakdown Structure。
作为有效地计划和控制项目的工具。
它是由一组可交付使用的项目产品/设施组成的,表现为一种层次化的树状结构,定义了整个工程项目的工作范围。
2WBS分解指南2.1W BS分解原则●一个单位工作任务只能在WBS中出现一次.●一个WBS项的工作内容是其对应下级各项工作之和.●WBS中的每一项都只有一个人负责,即使这项工作要多人来做,也是如此。
●WBS必须与工作任务的实际执行过程一致。
●WBS应服务于项目团队,项目成员必须参与WBS的制定过程,以确保一致性和全员参与.●每项WBS都必须归档,以确保准确理解项目包括和不包括的工作范围。
●在根据范围说明书对项目的工作内容进行适当控制的同时,WBS必须具有一定的灵活性,以适应无法避免的变更需要。
●粒度适当,即每个任务最好分解到能在1周内由1个人完成.●大小可比,即任务大小可比,不超过一个数量级,最多不超过10倍。
●在进行WBS分解时,下列活动容易遗漏,需要引起注意,务必使WBS分解包含以下内容:⏹制定计划的活动⏹计划变更的活动⏹技术方案选择与评审的活动⏹所有的评审的活动(项目计划、需求、设计、测试用例、PPQA、MA、CM、等等)⏹需求跟踪矩阵建立的活动⏹需求跟踪矩阵的维护活动⏹周例会/阶段总结会(周期性的活动)⏹里程碑评审⏹实施PPQA的活动⏹度量计划的制作⏹度量数据的收集与分析⏹集成的活动⏹交付的活动或者分期交付的活动⏹回归测试的活动⏹过程裁剪的活动2.2W BS分解方法●类比法:类比法就是以一个类似项目的WBS为基础,制定本项目的工作分解结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件生命周期模型选择及WBS分解指南一、概述同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为“软件生命周期”。
软件生命周期模型,通俗说就是,软件开发过程中所遵循的模式,即把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。
软件生命周期模型和项目开发过程有非常紧密关系,它是经过多次实践总结出来适合于不同项目使用的经典、有效的软件开发方法,它按照软件生命周期的各个阶段划分任务,依照一定的规则和步骤,有效地进行软件开发。
选用恰当的软件生命周期模型进行软件开发,可以提高产品质量;降低项目管理难度;缩短开发进度;便于项目状态跟踪;为过程改进和度量提供基线;改善组织级的过程弱势,提高过程能力成熟度级别。
为了便于分类汇总和统计各种生命周期模型的指标和数据,结合公司软件开发过程的实际,我们选择了常用的几种基本模型进行了描述,项目开发小组在进行项目策划时,可以根据模型的适用前提、优缺点和项目的实际需要进行选择,并在《项目实施计划》中,参加评审。
二、软件生命周期模型常用的软件生命周期模型有:瀑布模型、迭代模型、增量模型、原型模型等。
以上所提到的件生命周期模型病不存在孰优孰劣的问题,每一种模型在实际工作中都有所应用。
只要选择了最适合的,并按照此模型的流程来开发软件,都会取得成功。
需要强调的是,不管采用什么模型,项目实施中有四项活动是必不可少的——需求、设计、编码和测试。
不管是有意识还是无意识,这些活动都会出现在项目过程中。
这也是最重要的四项活动,其他的活动其实都是为这些活动服务的,不管是配置管理、风险管理,还是评审等等。
以下对各种常用的软件生命周期模型的设计思想、WBS划分(Work Breakdown Structure,即工作分解结构)、优缺点、使用范围进行分析。
1、瀑布模型(1)基本思想瀑布模型(Waterfall Model)是最基本也最常用的一种生命周期模型,又称线性模型。
瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
瀑布模型可以应用于软件工程开发、企业项目开发、产品生产以及市场销售等领域。
瀑布模型的突出特征是文档驱动。
从需求分析到系统维护,每一项活动的工作成果就是此项活动所产生的工作文档,以及在此基础上形成的产品。
采用瀑布模型的项目依照该模型选定的阶段顺序进行,每一个阶段的工作产品都是下一个阶段工作的输入,每一个阶段只有在上一个阶段通过检查,确认完成后才开始新的阶段工作,所以项目必须有明确的阶段里程碑,在每个阶段结束时都要进行里程碑评审,以判定是否可以开始下一阶段的工作。
例如:在项目策划没有完成时,需求分析和设计工作就不能进行,同样,在需求分析和设计没有完成时就不开始编码。
瀑布模型中,每个阶段完成后,可以在下一个阶段修改上一个阶段的工作产品,但是必须按照基线变更进行管理,如果发生变更,需要回溯前面所有阶段的工作产品,以便使工作产品保持一致。
(2)WBS划分图1 瀑布模型的思想示意图说明:图中标记为的阶段为选定的里程碑,该阶段完成时需进行里程碑评审活动,并对其输出进行严格的变更控制。
(2)WBS划分此表仅作为参考,需根据项目所选定的标准过程的活动和任务进一步细化。
(3)优缺点该模型的优点:①阶段分明、活动明确,为软件开发工作提供一种结构化、有序的方法;②过程控制可见性较强:按照顺序开展每一个阶段的工作,每一阶段是在上一阶段彻底完成的情况下才启动,可以保证每一个阶段的开发质量都有保证,减少了返工;③开发过程中的各项文档降低了沟通的成本,有利于及早发现问题,降低项目的阶段成本;④文档多,过程记录比较全,有利于后期维护。
该模型的缺点:①不能回溯:项目从开始到发布可见的版本需要较长的周期,用户直到项目开发晚期才能了解产品的真实面貌和质量,不易变更;如果必须回溯,则回溯成本很大。
②缺乏灵活性,不能跨阶段操作;③文档多,花费较多成本。
(4)适用范围①产品定义(或项目需求)和技术方案非常明确、用户的需求有很好的了解;②对质量的要求高于对成本和进度的要求;③工期相对较宽裕;④开发队伍技术力量较弱或缺乏经验;⑤维护项目。
2、迭代模型(1)基本思想迭代模型是RUP(Rational Unified Process,统一软件开发过程)推荐的周期模型。
在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。
在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求、分析设计、实施和测试工作流程。
实质上,它类似小型的瀑布式项目。
RUP认为,所有的阶段都可以细分为迭代。
每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
图2 迭代模型的思想示意图说明:迭代模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:①制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;②风险分析:分析评估所选方案,考虑如何识别和消除风险;③实施工程:实施软件开发和验证;④客户评估:评价开发工作,提出修正建议,制定下一步计划。
迭代模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。
使用迭代模型进行软件开发,项目活动包含以下几个阶段:①初始阶段初始阶段有时也称先启阶段。
初始阶段的目标是为系统建立商业案例并确定项目的边界。
为了达到该目的必须识别所有与系统交互的外部实体,在较高层次上定义交互的特性。
本阶段具有非常重要的意义,在这个阶段中所关注的是整个项目进行中的业务和需求方面的主要风险。
对于建立在原有系统基础上的开发项目来讲,初始阶段可能很短。
②细化阶段细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。
为了达到该目的,必须在理解整个系统的基础上,对体系结构做出决策,包括其范围、主要功能和诸如性能等非功能需求。
同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。
③构造阶段在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。
从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。
④交付阶段交付阶段的重点是确保软件对最终用户是可用的。
交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。
在生命周期的这一点上,用户反馈应主要集中在产品调整,设置、安装和可用性问题,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。
图3 迭代模型的几个阶段(2)WBS划分实际采用迭代模型中,项目阶段仍可参考瀑布执行。
迭代模型实施重要的关键点是架构设计(概要设计)、制定迭代开发计划。
(3)优缺点与传统的瀑布模型相比较,迭代模型具有以下优点:①降低了在一个增量上的开支风险。
如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费;②降低了产品无法按照既定进度进入市场的风险。
通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙;③加快了整个开发工作的进度。
因为开发人员清楚问题的焦点所在,他们的工作会更有效率;④由于用户的需求并不能在一开始就做出完全的界定,它们通常是在后续阶段中不断细化的。
因此,迭代过程这种模式使适应需求的变化会更容易些。
迭代模型的缺点:①风险管理成本较高:迭代模型本身强调风险,但风险管理本身也存在成本问题;如果风险管理成本过大,将会严重影响项目的利润;②对项目组成员的要求非常高:在风险分析、进度管理等方面,需要有较高层次的人员配置及丰富的项目管理和项目实施的经验。
这对于开发队伍技术力量较弱或缺乏经验的团队很难实施。
(4)适用范围①在项目开发早期需求可能有所变化;②分析设计人员对应用领域很熟悉;③高风险项目;④用户可不同程度地参与整个项目的开发过程;⑤使用面向对象的语言或统一建模语言(Unified Modeling Language,UML);⑥使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具,如Rose(Rose 是非常受欢迎的物件软体开发工具);⑦具有高素质的项目管理者和软件研发团队。
3、增量模型(1)基本思想增量模型是通过对用户需求的判断,在定义了用户要求和系统需求,进行总体构架设计后,采用序列化地创建产品的方法进行开发的过程。
每一个线性序列产生软件的一个可发布的“增量”,第一个建立的增量完成预计功能/性能的一部分(往往包含了核心功能,即实现了基本的需求),下一个增量实现另外的部分,增加更多的功能/性能,然后与前面实现的增加进行集成,如此循环,直到系统完全实现。
增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。
虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。
其实现过程简图如下所示:图4 增量模型的思想示意图说明:在策划阶段,项目经理需要与客户协商确定增量的数目、规模、每一增量发布的时间表,在概要设计阶段需要考虑各增量集成的顺序、接口等问题,制定集成策略。
增量循环的循环体可以根据项目的实际情况进行控制。
增量模型本质上是迭代的,但其强调每一个增量均发布一个可操作产品。
早期的增量是最终产品的“可拆卸”版本,但提供了为用户服务的功能,并且为用户提供了评估的平台。
(2)WBS划分(3)优缺点该模型的优点:①在达到初始需求之前可降低成本:采用增量模型可以灵活分配人员,刚开始不用投入大量人力资源。
如果核心产品很受欢迎,则可增加人力实现下一个增量;②可快速生产出可使用的系统:它提供了一种先推出核心产品的途径,这样即可先发布部分功能给客户,对客户起到镇静剂的作用;③能够有计划地管理技术风险。
该模型的缺点:①系统集成难度大:由于各个构件是逐渐并入已有的软件体系结构中的,各增量的集成难度增大,所以在概要设计阶段需要制定详细的集成策略;②项目管理风险加大:在开发过程中,需求的变化是不可避免的,增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
(4)适用范围①用户核心需求非常清楚;②项目人员不足;③产品可以分割成不同的阶段分别完成。