敏捷软件开发 连载(二)
敏捷软件开发(Agile Software Development)简介
2 - 敏捷宣言遵循的原则
3、《敏捷宣言》遵循的原则(Principles)
Principles behind the Agile Manifesto
We follow these principles:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
10. Simplicity--the art of maximizing the amount of work not done--is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
补充的12条原则是:
1. 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
2. 即使到了开发的后期,也欢迎改变需求,敏捷过程利用变化来为客户创造竞争优势。
3. 经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
5. 围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
6. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交流。
7. 工作的软件是首要的进度度量标准。
8. 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
9. 不断地关注优秀的技能和好的设计会增强敏捷能力。
10. 简单--使未完成的工作最大化的艺术---是根本的。
11. 最好的构架、需求和设计出自于自组织的团队。
12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。
中文摘自:《敏捷软件开发:原则、模式与实践》 Robert C.Martin【著】,邓辉【译】
英文摘自:http://www.agilemanifesto.org/
注解 - 以下的注释来自Process Management Group
《敏捷宣言》及其补充的12项原则定义了什么是敏捷软件开发,就像Java API定义了实现这些API的应用服务器的行为一样。基于这个定义的各种开发方法只是基于现实的不同实践和解释,随着时间的推移,也会不断发展演化。
敏捷的理念非常诱人。对于业务人员或者软件系统的最终用户来说,敏捷方法带来的好处是显而易见的:敏捷方法能使项目团队在更快地获取投资回报的同时,构建出更高客户满意度的系统。团队一旦进行构建,客户就可以了解其情况。固有的短反馈周期能够迅速提供满足客户真正需求的特性。同时敏捷方法也比传统项目管理方法提供了更多的管理变更和风险的可选方案。此外,它们还允许项目团队以组织、客户、用户和其他部门能够真正看见、评估和使用的方式,展现他们的创造力和解决问题的能力。
对于要实施敏捷软件开发方法的团队,我们建议:除了考虑项目本身的特性外,考虑敏捷实践(用XP、Scrum、还是FDD等等)时,一定要参考敏捷价值和其遵循的原则 (注意原则中的加粗字体),从而把开发过程真正变成属于自己的东西,进而不断完善。接下来,我们会介绍一些比较流行的敏捷软件开发方法。