《敏捷软件开发》— 敏捷开发 — 敏捷实践
- 一、敏捷联盟
- 二、原则
-
- 1、我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意
- 2、即使到了开发的后期,也欢迎改变需求。敏捷过程里用变化来为客户创造竞争优势
- 3、经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好
- 4、在整个项目开发期间,业务人员和开发人员必须天天都在一起工作
- 5、围绕被激励起来的个人来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作
- 6、在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈
- 7、工作的软件是首要的进度度量标准
- 8、敏捷过程提倡可持续的开发速度。责任人、开发者和用户能够保持一个长期的、恒定的开发速度。
- 9、不断地关注游戏的技能和好的设计会增强敏捷能力
- 10、简单 — 是未完成的工作最大化的艺术 — 是根本的
- 11、最好的构架、需求和设计出自于自组织的团队
- 12、每隔一定时间,团队会在如何才能够更有效地工作方面进行反省,然后相应地对自己的行为进行调整
在敏捷开发之前,我们常用的开发模式是瀑布模式。然而,这种模式有很多问题,包括不能很好的响应变化,容易开发出庞杂而难以理解的系统,导致维护和二次开发变得很困难等。此外,这种模式还会降低团队的开发效率,使得团队经常创建错误的产品。其原因在于这样的过程缺乏实践指导和外部过程管控。即使在现在,国内还有很多公司采取的是瀑布式开发模式。
一、敏捷联盟
01年初,由于看到许多公司的软件团队陷入了不断增长的过程的泥潭,一批业界专家聚集在一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则。他们称自己为敏捷联盟。之后他们创建出了一份价值观声明,也就是敏捷联盟宣言:
敏捷软件开发宣言
我们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,我们认为:
- 个体和交互 胜过 过程和工具
- 可以工作的软件 胜过 面面俱到的文档
- 客户合作 胜过 合同谈判
- 响应变化 胜过 遵循计划
虽然右项也有价值,但是我们认为左项具有更大的价值。
1、个体和交互胜过过程和工具
人是获得成功的最为重要的因素。如果团队中没有优秀的成员,那么就是使用好的过程也不能从失败中挽救项目,但是,不好的过程却可以使最优秀的团队成员失去效用。如果不能作为一个团队进行工作,那么即使拥有一批优秀的成员也一样会惨败。
一个优秀的团队成员未必就是一个一流的程序员。一个优秀的团队成员可能是一个平均水平的程序员,但是却能够很好地和其他人合作。合作、沟通以及交互能力要比单纯的编程能力更为重要。一个由平均水平程序员组成的团队,如果具有良好的沟通能力,将要比那些虽然拥有一批高水平程序员,但是成员之间却不能进行交流的团队更有可能获得成功。
合适的工具对于成功来说是非常重要的。然而,工具的作用可能会被过分地夸大。食用过多的庞大、笨重的工具就像缺少工具一样,都是不好的。我们的建议是从使用小公举开始,尝试一个工具,直到发现它无法适用时才去更换它。 这也是敏捷编程中所倡导的,直到真正需要时采取实现某种架构或模式。
我们需要记住,团队的构建要比环境的构建重要的多,许多团队和管理者就犯了先构建环境,然后期望团队自动凝聚在一起的错误。相反,应该首先致力于构建团队,然后再让团队基于需要来配置环境。
2、可以工作的软件胜过面面俱到的文档
没有文档的软件是一种灾