转载:敏捷的软件开发流程

简介:

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

Agile Process - 敏捷的开发流程

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

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

  1. 客户与开发人员形成密切合作的团队,因为客户无法于初期定义完整的规格,而开发人员于开发过程中也常常无法知悉外在环境或业务的变动,所以需要两者密切合作方能开发适用的软件。

  2. 项目最终的目标是可执行的程序,因此所有的中间产品必须经过审慎评估,确认有助于最终目标,才需要制作中间产品。

  3. 采用 Iterative  Incremental 方式分阶段进行,密集 review 是否符合需求。

  4. 流程可以简单,但规划与执行必须严谨。

  5. 强调团队合作,赋予高度的责任,团队有自主权得以因应变化做调整。

RUP 开发流程 - Rational Unify Process

RUP  IBM Rational 公司经过多年的研发与经验所提出的软件开发流程,其内容含盖 Business modeling, Requirement Modeling, Logical Design, Implementation, Testing, Deployment 等软件开发生命周期的直接工作,与 Project Management, Change & Configuration ManagementEnvironment 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 的精神已经成为共识,但是没有一种固定的流程可以重复使用在不同的项目上。而且不管是 RUPXPSCRUM、或其它的开发流程都允许相当大的弹性,我们必须按项目性质的不同,调整或混合出适合的开发流程,并允许团队于进行中做必要的弹性修改,方能达成目标。

目录
相关文章
|
2月前
|
敏捷开发 监控 测试技术
敏捷软件质量保证的方法与实践
本文介绍了软件质量保证(SQA)的重要性及其在敏捷开发中的实践方法。文章首先指出了传统测试方法的问题,如成本高昂和项目风险加大。为解决这些问题,文中提出了需求审核、代码审核与演练、基于会议的测试及基于风险的测试等多种实践方法。此外,文章还探讨了衡量软件质量的常见指标,如源代码行数、代码段/模块/时间段内的Bug数和代码覆盖率等。文中还详细描述了敏捷开发过程中QA的角色与活动,强调了QA需与开发人员、业务人员及客户密切协作,以确保产品质量。最后,文章指出了在敏捷开发中QA的特殊性及其对团队构成、测试阶段、工作方式等方面的影响。
54 3
敏捷软件质量保证的方法与实践
|
4月前
|
敏捷开发 jenkins 测试技术
软件测试中的敏捷实践:持续集成与自动化测试的融合之道
在软件开发领域,敏捷实践已成为提升项目响应速度和质量保证的重要手段。本文深入探讨了持续集成(CI)与自动化测试如何相辅相成,共同构建起一套高效、可靠的软件测试体系。通过实例分析,揭示了将敏捷原则应用于软件测试过程中的关键策略,并提出了实现这一目标的可行路径。文章旨在为软件测试专业人员提供一套结合敏捷理念的实用方法论,以应对快速迭代的软件项目需求。
|
4月前
|
敏捷开发 jenkins 测试技术
软件测试中的敏捷实践:持续集成与自动化测试的融合
在软件开发领域,敏捷方法论的兴起带来了开发流程的重大变革。特别是持续集成(CI)和自动化测试的结合使用,为提升软件质量和开发效率提供了强有力的支持。本文将探讨持续集成环境下自动化测试的实施策略、优势以及面临的挑战,并借助实证数据和案例分析,揭示这一组合如何促进敏捷团队高效地应对快速变化的需求与代码库。
64 0
|
6月前
|
敏捷开发 数据可视化
深入探索软件开发中的敏捷方法论
【5月更文挑战第7天】敏捷方法论是应对软件开发中快速变化需求的解决方案,强调迭代、增量和响应变化。它注重团队协作、客户参与和适应变化,典型实践包括Scrum、Kanban和极限编程。优势在于快速响应需求、提高协作效率和降低项目风险,但挑战包括对团队素质要求高、持续资源投入及不稳定客户需求。实施时需根据项目特点调整。
|
6月前
|
监控
构建高效能团队的敏捷方法论
【5月更文挑战第10天】敏捷方法论助力构建高效能团队,强调个体协作、迭代开发、客户参与和灵活应变。通过选择合适的敏捷框架,建立协作文化,制定明确流程,持续改进,团队能迅速响应市场变化,保证产品竞争力和创新力,促进企业成功和持续发展。
|
敏捷开发 测试技术 BI
为什么要学习敏捷?敏捷有哪些好处以及敏捷工具
Leangoo领歌一款永久免费的专业敏捷研发管理工具,它覆盖了敏捷项目研发全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scrum of Scrums大规模敏捷。能够支持多种场景,如:敏捷研发管理、敏捷项目管理、工作流管理、轻量级项目群管理、任务管理等。2)管理产品路线图、产品backlog、迭代规划和执行、缺陷、测试、项目文件及企业组织架构等等。3)可查看多项目进度,项目视角的统计等,提供了不同视角的统计,例如:进度统计、燃尽图、团队速率、任务分布、缺陷分布、测试用例分布等等,实时掌握项目状态及进展。
|
敏捷开发 测试技术 持续交付
Scrum敏捷开发培训内训:提升团队能力和效率的重要途径
​ 在当今软件开发领域,Scrum敏捷开发方法越来越受到重视。Scrum是一种以团队协作为基础,注重灵活性和快速响应变化的方法。 为了帮助团队更好地掌握Scrum敏捷开发,培训变得越来越重要。Scrum敏捷开发方法注重高效协作、快速迭代和持续改进。通过培训,团队成员可以更好地了解Scrum敏捷开发的流程、实践和方法,提高团队协作和项目管理能力。这有助于在开发过程中快速响应需求变化,提高软件质量和客户满意度。
|
敏捷开发 安全 测试技术
敏捷不是银弹
敏捷不是银弹
99 0
|
敏捷开发
为什么选择敏捷软件开发-考虑敏捷开发的主要优势
为什么选择敏捷软件开发-考虑敏捷开发的主要优势
379 0