没有合适的资源?快使用搜索试试~ 我知道了~
软件开发流程与原则详解
需积分: 3 10 下载量 41 浏览量
2009-07-07
21:02:06
上传
评论
收藏 306KB DOCX 举报
温馨提示
试读
35页
本文主要介绍软件开发的基本流程,及开发过程中用到的一些模型,测试的方法等内容。
资源推荐
资源详情
资源评论
软件开发流程
迭代化软件开发技术
1. 传统开发流程的问题
传统的软件开发流程是一个文档驱动的流程,它将整个软件开发过程划分为顺序相接的几个阶段,每个
阶段都必需完成全部规定的任务(文档)后才能够进入下一个阶段。如必须完成全部的系统需求规格说
明书之后才能够进入概要设计阶段,编码必需在系统设计完成之后才能够进行。这就意味着只有当所有
的系统模块全部开发完成之后,我们才进行系统集成,对于一个由上百个模块组的复杂系统来说,这是
一个非常艰巨而漫长的工作。
随着我们所开发的软件项目越来越复杂,传统的瀑布型开发流程不断地暴露出以下问题:
需求或设计中的错误往往只有到了项目后期才能够被发现例如:系统交付客户之后才发现原先对于需求
的理解是错误的,系统设计中的问题要到测试阶段才能被发现。
对于项目风险的控制能力较弱项目风险在项目开发较晚的时候才能够真正降低,往往是经过系统测试之
后,才能确定该设计是否能够真正满足系统需求。
软件项目常常延期完成或开发费用超出预算项目开发进度往往会被意外发生的问题所打乱,需要进行返
工或其他一些额外的开发周期,造成项目延期或费用超支。
项目管理人员专注于文档的完成和审核来估计项目的进展情况所以项目经理对于项目状态的估计往往是
不准确的,当他回答系统已完成了 80%的开发任务时,剩下 20%的开发任务实际上消耗的是整个项目
80%的开发资源。
在传统的瀑布模型中,需求和设计中的问题是无法在项目开发的前期被检测出来的,只有当第一次系统
集成时,这些设计缺陷才会在测试中暴露出来,从而导致一系列的返工:重新设计、编码、测试,进而
导致项目的延期和开发成本的上升。
2. 采用迭代化开发控制项目风险
为了解决传统软件开发流程中的问题,我们建议采用迭代化的开发方法来取代瀑布模型。在瀑布模型
中,我们要完成的是整个软件系统开发这个大目标。在迭代化的方法中,我们将整个项目的开发目标划
分成为一些更易于完成和达到的阶段性小目标,这些小目标都有一个定义明确的阶段性评估标准。迭代
就是为了完成一定的阶段性目标而所从事的一系列开发活动,在每个迭代开始前都要根据项目当前的状
态和所要达到的阶段性目标制定迭代计划,整个迭代过程包含了需求、设计、实施(编码)、部署、测
试等各种类型的开发活动,迭代完成之后需要对迭代完成的结果进行评估,并以此为依据来制定下一次
迭代的目标。
与传统的瀑布式开发模型相比较,迭代化开发具有以下特点:
允许变更需求
需求总是会变化,这是事实。给项目带来麻烦的常常主要是需求变化和需求"蠕变",它们会导致延期交
付、工期延误、客户不满意、开发人员受挫。通过向用户演示迭代所产生的部分系统功能,我们可以尽
早地收集用户对于系统的反馈,及时改正对于用户需求的理解偏差,从而保证开发出来的系统真正地解
决客户的问题。
逐步集成元素
在传统的项目开发中,由于要求一下子集成系统中所有的模块,集成阶段往往要占到整个项目很大比例
的工作量(最高可达 40%),这一阶段的工作经常是不确定并且非常棘手。在迭代式方法中,集成可以
说是连续不断的,每一次迭代都会增量式集成一些新的系统功能,要集成的元素都比过去少得多,所以
工作量和难度都是比较低的。
尽早降低风险
迭代化开发的主要指导原则就是以架构为中心,在早期的迭代中所要解决的主要问题就是尽快确定系统
架构,通过几次迭代来尽快地设计出能够满足核心需求的系统架构,这样可以迅速降低整个项目的风
险。等到系统架构稳定之后,项目的风险就比较低了,这个时候再去实现系统中尚未完成的功能,进而
完成整个项目。
有助于提高团队的士气
开发人员通过每次迭代都可以在短期内看到自己的工作成果,从而有助于他们增强信心,更好地完成开
发任务。而在非迭代式开发中,开发人员只有在项目接近尾声时才能看到开发的结果,在此之前的相当
长时间,大家还是在不确定性中摸索前近。
生成更高质量的产品
每次迭代都会产生一个可运行的系统,通过对这个可运行系统进行测试,我们在早期的迭代中就可以及
时发现缺陷并改正,性能上的瓶颈也可以尽早发现并处理。因为在每次迭代中总是不断地纠正错误,我
们可以得到更高质量的产品。
保证项目开发进度
每次迭代结束时都会进行评估,来判断该次迭代有没有达到预定的目标。项目经理可以很清楚地知道有
哪些需求已经实现了,并且比较准确地估计项目的状态,对项目的开发进度进行必要的调整,保证项目
按时完成。
容许产品进行战术改变
迭代化的开发具有更大的灵活性,在迭代过程中可以随时根据业务情况或市场环境来对产品的开发进行
调整。例如为了同现有的同类产品竞争,可以决定采用抢先竞争对手一步的方法,提前发布一个功能简
化的产品。
迭代流程自身可在进行过程中得到改进和精炼
一次迭代结束时的评估不仅要从产品和进度的角度来考察项目的情况,而且还要分析组织和流程本身有
什么待改进之处,以便在下次迭代中更好地完成任务。
迭代化方法解决的主要是对于风险的控制问题,从下图可以看出,传统的开发流程中系统的风险要到项
目开发的后期(主要是测试阶段)才能够被真正降低。而迭代化开发中的风险,可以在项目开发的早期
通过几次迭代来尽快地解决掉。在早期的迭代中一旦遇到问题,如某一个迭代没有完成预定的目标,我
们还可以及时调整开发进度以保证项目按时完成。一般到了项目开发的后期(风险受控阶段),由于大
部分高风险的因素(如需求、架构、性能等)都已经解决,这时候只需要投入更多的资源去实现剩余的
需求即可。这个阶段的项目开发具有很强的可控性,从而保证我们按时交付一个高质量的软件系统。
迭代化开发不是一种高深的软件工程理论,它提供了一种控制项目风险的非常有效的机制。在日常的工
作我们也经常地应用到这一基本思想,如对于一个非常大型的工程项目,我们经常会把它分为几期来分
步实施,从而把复杂的问题分解为相对容易解决的小问题,并且能够在较短周期内看到部分系统实现的
效果,通过尽早暴露问题来帮助我们及早调整我们的开发资源,加强项目进度的可控程度,保证项目的
按时完成。
3. 管理迭代化的软件项目
当我们在实际工作中实践迭代化思想时,Rational 统一开发流程 RUP(Rational Unified Process)可以给
予我们实践的指导。RUP 是一个通用的软件流程框架,它是一个以架构为中心、用例驱动的迭代化软件
开发流程。RUP 是从几千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,
是软件开发行业事实上的行业标准。
3.1 软件开发的四个阶段
在 RUP 中,我们把软件开发生命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑(如
下图所示)。
剩余34页未读,继续阅读
资源评论
Cristina_01
- 粉丝: 5
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功