`
hondaufo
  • 浏览: 5830 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

敏捷的软件开发流程

阅读更多
速度是企业竞争致胜的关键因素,软件项目的最大挑战在于一方面要应付变动中的需求,一方面要在紧缩的时程内完成项目,所以软件团队除了在技术上必须日益精进,更需要运用有效的开发流程,以确保团队能够发挥综效。这正是 Agile Process (敏捷的软件开发流程) 于近年来兴起的主要原因,本文将介绍数种广为接受的软件开发流程,及其在运用上的建议。

Agile Process - 敏捷的开发流程

几乎所有的软件项目都会在起始阶段面临选择开发流程的困难,一种是完备的开发流程,另一种是简易轻便的流程。虽然我们了解采用完备的开发流程可以提高软件的质量,但是因为欠缺人力、工具与时间,我们常会被迫采用简化的流程,但事与愿违,大部分的情况我们仍然难以在预算内及时完成项目。

Agile Process (敏捷的开发流程) 是一种软件开发流程的泛称,Agile Process 具有下列几项共通的特性:

客户与开发人员形成密切合作的团队,因为客户无法于初期定义完整的规格,而开发人员于开发过程中也常常无法知悉外在环境或业务的变动,所以需要两者密切合作方能开发适用的软件。
项目最终的目标是可执行的程序,因此所有的中间产品必须经过审慎评估,确认有助于最终目标,才需要制作中间产品。
采用 Iterative 与 Incremental 方式分阶段进行,密集 review 是否符合需求。
流程可以简单,但规划与执行必须严谨。
强调团队合作,赋予高度的责任,团队有自主权得以因应变化做调整。
RUP 开发流程 - Rational Unify Process

RUP 为 IBM Rational 公司经过多年的研发与经验所提出的软件开发流程,其内容含盖 Business modeling, Requirement Modeling, Logical Design, Implementation, Testing, Deployment 等软件开发生命周期的直接工作,与 Project Management, Change & Configuration Management,Environment support 等支持性工作。RUP 的内容非常丰富,不同的项目需要不同调整,IBM Rational 提供 RUP workbench 工具,方便调整 RUP,并公布于 Web,方便项目成员遵循统一的流程规范进行工作。

RUP 的主要精神为:

1. 项目进行采用 Iterative 程序分阶段渐进地完成项目功能;

2. 广泛使用 Visual Modeling 于商业需求分析、系统分析与系统设计;

3. 强调架构设计;

4. 对每项工作所需要的技术、工具、做法、模板、检查项目均有详细的定义,架构完备且具有可调整的弹性。

因为 RUP 的流程规范与相关技术较复杂,所以导入时必须注意几个因素:

1. 主管的支持以确保足够的资源投入;

2. 分阶段导入;3. 适当的训练与密切的顾问咨询;

4. 使用 Modeling 技术时需要考虑 Coding 的实作环境;

5. 良好团队的管理,以沟通、耐心与坚持解决变革的人性阻力。

XP 开发流程 - eXtreme Programming

XP 亦称为终极流程,是最轻量级的开发流程,其最主要的精神是『在客户有系统需求时,给予及时满意的可执行程序』,所以最适合需求快速变动的项目。XP 经过 6 年的实作与修改,已演化为精致的开发流程,但仍不失其精简的特性,它强调客户所要的是 workable 的执行码,所以把与撰写程序无关的工作降至最低,并要求客户与开发人员最好以 side-by-side 的方式一起工作。

XP 开发流程的基本步骤为:

1. 开发人员随时可以和客户进行有效沟通,撰写 user stories 以确认需求。

2. 简易快速的系统设计,撰写独立的验证程序以解决特殊困难的问题,找出算法即可丢弃验证程序。

3. 规划多次小型阶段的项目计划,以最快速度完成每一阶段的程序交付客户,客户负责 Acceptance tests;

4. Coding 前必须完成 Unit Test 与 Acceptance tests 程序,所有模块整合前都须经过 Unit Tests;

5. 开发人员必须快速响应 Bug 与需求变更;

6. 要求二人一组使用一台计算机设计程序,当一人 coding 时,另一人负责思考与设计;

7. 程序必须符合程序规范,并常做程序的重整 (Refactoring)。

XP 属于较精简的流程,于导入应注意几件事情:

1. 最好有顾问给予协助;

2. 持续的 Review;

3. 可适当调整流程,但不可失去其基本精神。

SCRUM 开发流程

SCRUM 开发流程是 Agile Process 的一种,以英式橄榄球争球队形 (Scrum) 为名,基本假设是『开发软件就像开发新产品,无法一开始就能定义 Final Product 的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证项目成功』。Scrum 将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,碓保每天、每个阶段都朝向目标有明确的推进,因此 SCRUM 非常适用于产品开发项目。

SCRUM 开发流程通常以 30 天为一个迭代周期,每个迭代周期叫做一个Sprint,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部份,开发团队必须尽力于 30 天后交付成果,团队每天用 15 分钟开会检视每个成员的进度与计划,了解所遭遇的困难并设法排除,决定第二天的任务安排,这样的短会就叫做scrum。

  SCRUM较为有特色的,是它特别强调开发队伍和管理层的交流协作。每天,开发队伍都会向管理层汇报进度,如果有问题,也会向管理层要求帮助解决。

SCRUM 与传统开发流程及项目管理差异较大,于导入时最好有顾问协助。

总结

Agile Process 的精神已经成为共识,但是没有一种固定的流程可以重复使用在不同的项目上。而且不管是 RUP、XP、SCRUM、或其它的开发流程都允许相当大的弹性,我们必须按项目性质的不同,调整或混合出适合的开发流程,并允许团队于进行中做必要的弹性修改,方能达成目标。

【作者】林耀珍为 Microsoft.NET 技术代言人,目前任职第三波信息技术总监,历任第三波信息教育训练处处长及育碁数字科技总经理。专长于信息系统规划及软件开发技术,拥有 Microsoft MCSD / MCSE / MCDBA,Rational OOAD,Lotus Notes / Domino 等认证资格,并为 Microsoft.NET / Java J2EE / 对象导向系统分析设计的资深讲师及多家公民营机构的 e 化顾问。

————————————————————————————————

评论:开发团队使用什么样的开发流程、方法没有固定的模式,只有思想理论的指导。就像一个虚拟的类,建立了一个没有具体实现的方法,只是指明了前进的道路。当我们要应用这种思想时,只有把这个虚拟类实例化,重写这个方法,具体怎么实现是要根据这个实体类的运行环境、功能来决定,这也就是所谓的弹性。一定要选择适合自己团队的,适合系统特性的,适合项目目标的开发方法,才可以降低项目的风险,顺利完成项目的交付。
分享到:
评论

相关推荐

    最完整的Scrum敏捷软件开发过程

    最完整的Scrum敏捷软件开发过程最完整的Scrum敏捷软件开发过程最完整的Scrum敏捷软件开发过程最完整的Scrum敏捷软件开发过程

    Scrum敏捷软件开发过程.pdf

    Scrum是一种敏捷软件开发框架,它强调灵活性、协作和快速响应变化的能力。Scrum的核心理念是通过短期迭代(称为Sprints)和跨职能团队的工作来不断交付可用的软件,并在整个过程中密切与利益相关者合作。 **敏捷...

    华为敏捷软件开发流程解读

    华为敏捷软件开发流程解读,大厂的成功实践总结,站在巨人肩膀

    敏捷软件开发过程最新电子书

    《敏捷软件开发过程最新电子书》是一本深入探讨敏捷开发理念和实践的书籍,旨在帮助开发者和项目管理者更好地理解和应用敏捷方法,实现高效且灵活的软件开发。这本书以Artech House Publishers出版的《Agile ...

    Scrum敏捷软件开发过程

    Scrum敏捷软件开发过程 敏捷软件开发是软件项目的一个概念框架. 有许多建立在敏捷概念上的方法,如 Scrum 和 Extreme Programming (XP). 与僵化的、重量级的、官僚式的方法形成对照,比如瀑布模型(指纯粹形式的) ...

    Scrum敏捷软件开发过程.docx

    Scrum敏捷软件开发过程是一种以迭代和增量方式处理复杂项目的管理框架,起源于软件开发领域,但其理念和实践已广泛应用于其他行业。Scrum强调灵活性、协作和快速响应变化,以提高生产效率和客户满意度。 敏捷软件...

    最完整的Scrum敏捷软件开发过程.ppt

    Scrum敏捷软件开发过程是一种高效且灵活的项目管理框架,特别适用于复杂和不确定性的软件开发项目。这个框架强调团队合作、迭代开发和持续适应变化,以提高生产力和客户满意度。 1. **敏捷软件开发概念** 敏捷软件...

    敏捷软件开发.pdf

    敏捷软件开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调快速和灵活地响应变化,以适应不断变化的需求。敏捷方法反对繁重的文档和过度的预设计,提倡可适应性、可持续性和持续的客户合作。 书中,...

    Scrum敏捷软件开发过程 (2).docx

    Scrum敏捷软件开发过程是一种以迭代和增量方式进行的高效项目管理框架,尤其适用于软件开发领域。这个框架强调灵活适应变化,重视团队合作和快速反馈,从而提高开发效率和客户满意度。 **敏捷宣言**: 2001年,一群...

    Scrum敏捷软件开发过程PPT课件.ppt

    Scrum敏捷软件开发过程PPT课件.ppt

    异地分布式敏捷软件开发的时间成本估算研究.pdf

    然而,在异地分布式敏捷软件开发过程中,有效的时间成本估算对于项目的成功至关重要。本文将介绍在异地分布式敏捷软件开发中进行时间成本估算的研究方法,并对COCOMOII模型进行分析和改进。 ### 异地分布式敏捷开发...

    敏捷软件开发Agile介绍PPT课件.pptx

    敏捷软件开发是二十世纪六十年代软件危机的应对措施,以前的软件开发过程是瀑布式的,强调过程控制和严格的阶段性,但是这种方法不能满足快速变化的市场需求。为了解决软件危机,引入了敏捷软件开发方法,旨在快速...

Global site tag (gtag.js) - Google Analytics