敏捷软件开发
上了这么久的软件课,编了这么多的程序,其实了解以前也接触过类似的编程模式,但并没有系统的了解过。那么到底什么是敏捷开发呢?
我们都见过因为开发过程测冗余、笨重、繁杂而失败的项目。世上应该有一种更好的软件开发方法——只关注真正的事情,少关注那些占用大量时间而无甚裨益的事情。
于是在2001年2月,17位志愿者聚集在美国犹他州雪鸟度假胜地,讨论一个新的软件开发趋势,这个趋势被不严格的称谓"轻型软件开发过程---敏捷".
敏捷软件开发宣言
对于敏捷软件开发方法来说,这段话给我留下了深刻的印象
即:
敏捷的原则:
最高目标是能持续地、及早地向客户交付软件;
拥抱变化;
频繁地发布可运行的软件;
客户和开发人员在一起工作;
以人为本;
最重要的衡量开发过程的手段,是可工作的软件;
稳定的开发速度;
敏捷高效的设计;
简单有效;
重视Teamwork;
积极的调整。
敏捷的开发方法:
XP -eXtreme Programing极限编程: 思想源自Kent Beck和Ward Cunningham在软件项目中的合作经历。
SCRUM: 是一种迭代的增量化过程,用于产品开发或工作管理 。
水晶方法Crystal: 由Alistair Cockburn在1990年代末提出。把不同类型的项目采用不同的方法。
FDD-特性驱动 Feature Driven Development, 由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发,是一套针对中小型软件开发项目的开发模式。它强调的是简化、实用、 易于被开发团队接受,适用于需求经常变动的项目。
DSDM-Dynamic System Development Methodology, 它倡导以业务为核心,快速而有效地进行系统开发, 在英国等欧洲国家比较流行。
ASD-Adaptive Software Development, 由Jim Highsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive)
Scrum编程方法:
SCRUM来源于橄榄球运动,指:“在橄榄球比赛中,双方前锋站在一起紧密相连,当球在他们之间投掷时他们奋力争球。”
Scrum提供了一种经验方法,它使得团队成员能够独立地,集中地在创造性的环境下工作。它发现了软件工程的社会意义。这一过程是迅速,有适应性,自组织的,它代表了从 顺序开发过程以来的重大变化。
(Ken Schwaber) Scrum是一种灵活的软件管理过程,它可以帮助驾驭迭代、递增的软件开发过程。
Scrum于1995年提出,并在2001年同其他方法论一起组成“敏捷联盟(Agile Alliance)” 。 Scrum这个轻量的过程可以作为包装器,也就是说你可以把Scrum与其它灵活的过程框架组合起来。
极限编程方法:
极限的含义:软件开发中的优点发挥到极致(Kent Beck).
XP:给程序员提供了明确的方法,使得程序员尽管面对需求的改变,却能够从容应对,即使着重变化发生在项目的后期,仍然能够编出代码。
XP核心:沟通、简明、反馈和勇气 XP重视沟通,客户、开发人员、管理者共同组成团队。
XP是一个实践系统 13个实践 XP方法的贡献 以拥抱变化的思想,协作的团队,简单的规则等为原则的13个具体实践 是知名度最高的敏捷开发方法
XP的关键实践:、