极限编程(eXtreme Programming,XP):
希望将软件开发过程中的一些好的方法发挥到极致,注重的核心在于沟通、简明、反馈和勇气,用一句话来概括XP的4个核心价值观就是:通过充分的交流和沟通,使产品的设计尽可能简单明了,同时通过客户经常性的反馈,生产出符合客户要求的软件产品,并且有勇气迎接需求的改变。XP的12个主要实践方法对极限编程具有指导性意义:客户计划的制定、小版本发布、隐喻、结对编程、测试驱动开发、重构、稳定的进度、代码共享、编码规范、简单的设计、持续集成、现场客户。
RUP(Rational Unify Process, Rational统一过程):
试图总结现代软件开发过程中所有好的实践经验,形成一种有很强适应性的软件开发过程。
包括六大开发经验:迭代式开发、管理需求、可视化建模、使用基于组件的软件体系结构、验证软件质量、控制软件变更。
RUP把软件开发生命周期划分为4个连续的阶段,每个阶段可以包含一次或多次迭代。每个迭代结束时都会生成一个可执行的版本,并更加接近最终产品。这4个连续的阶段分别是:初始阶段,了解项目的大致需求,建立业务模型,确定系统范围;细化阶段,设计、确定系统的体系结构,制定工作计划;构造阶段,构造产品并继续演进需求、体系结构、计划直至产品提交;移交阶段,完成产品的最终版本并交付给用户使用。
9个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境。
基本原理是:以满足客户需求、为客户创造价值为最终目标;尽可能早且不断地化解重大风险;把注意力放在可工作的软件上;在项目执行过程中尽可能早适应变化;在项目早期设计、实现并测试一个可执行的架构;使用组件来构造系统;建立高效、协作的团队;要始终重视产品质量,否则追悔莫及。
Lean(精益软件开发方法):
借鉴来的思路被称为精益编程。
Lean方法的主要思路:消除浪费,将所有的时间花在能够增加客户价值的事情上;延迟决策,在一个复杂多变的环境中进行软件开发,根据实际情况保持可选方案的开放性,但时间不能过长;尽早交付;加强学习;授权给团队,正确的决策取决于准确的信息,让开发团队参与决策,让团队成员充分发挥自己的潜力。
从上述文字可以看出,XP偏重工程实践,缺少框架,好像不是很系统,没有有效指导人们应该先做什么,再做什么;RUP框架太过繁琐,无法快速上手,但有很多好的实践可以学习和借鉴。
Scrum
灵活的敏捷开发管理过程,名词来源于英式橄榄球,拥有明确的最高目标——发布产品的重要性高于一切,团队高度自治,成员们熟悉开发过程中涉及的各种技术,紧密合作,确保每个迭代都朝着最高目标推进,而且每隔2~4周,每个团队成员都能看到实际工作的软件,并据此决定是发布该版本还是继续开发以加强它的功能。
在一个采用Scrum的项目中,首先要将所有需要完成的工作列在一个Product Backlog中,项目开发过程中的需求的改变也要写进去。在每个Sprint开始之前,要召开Sprint计划会议。在这个会上,产品责任人(Product Owner)为Product Backlog中的各项功能需求确定优先级。随后,Scrum开发团队按照优先级,从Product Backlog中挑选出他们认为能在这个Sprint中完成的人物,并把这些人物从Product Backlog中挪到Sprint Backlog中去。Scrum团队每天都要举行一个简短的每日Scrum会议,以便团队成员了解开发进度。一个Sprint结束后,需要召开Sprint评审会议和Sprint回顾会议。开发团队在Sprint评审会议上把这个Sprint的开发成果展示给大家。而在Sprint回顾会议上,团队成员们会回顾刚刚过去的这个Sprint,从中总结经验和教训。