敏捷软件开发 连载(一)
敏捷软件开发(Agile Software Development)简介
1 - 敏捷起源与敏捷宣言
现在,在软件行业我们会经常听到软件开发过程、敏捷软件开发(Agile Software Development)和CMMI(集成软件能力成熟度模型),客户也时常会问到这些。比如,请介绍一下你们的软件开发流程?贵公司有相关质量体系CMMI或ISO的认证吗?你们能否提供敏捷开发?……
那么,公司内部的软件开发过程、敏捷软件开发及CMMI,它们是一回事儿或是有什么不同?我们公司已经实施了基于CMMI的过程改进方法,建立了自己的研发过程体系—ADP。ADP是否也适用敏捷开发方法哪?是不是引入了敏捷开发就可以使软件开发更成功、更有效哪?
为了澄清这些问题,我们会在这里陆续为大家介绍:
1、 敏捷运动起源
2、《敏捷宣言》
3、《敏捷宣言》遵循的本原则(Principles)
4、几个典型敏捷开发过程的介绍
5、关于敏捷的问与答(Q&A)
1、敏捷运动起源
随着信息化的不断提高、internet的普及,人们越来越需要对软件功能的增加、软件产品的交付等需求得到尽快地满足;另一方面,业务的快速发展和变化也加速了软件需求的变更。国际软件过程领域的敏捷运动源于 2001 年敏捷联盟(Agile Alliance)在美国成立和《敏捷宣言》(Manifesto for Agile Software Development)的正式发表。敏捷软件运动代表了 21 世纪互联网时代软件开发模式的一种先进理念和价值观,相比传统过程,敏捷更强调快速灵活反应,主动迎接和适应变化,主张更紧密的客户与开发商协作和以人为本的企业可持续发展。
敏捷软件开发不是一个具体的过程,而是一个涵盖性术语(umbrella term),用于概括具有类似基础的方式和方法。典型的敏捷过程模型有:
1、XP(极限编程,eXtreme Programming)、
2、FDD(特性驱动开发, Feature-Driven Development)、
3、Scrum
4、ASP(自适应软件开发Adaptive Software Development)
5、DSDM(动态系统开发方法,Dynamic System Development Method)以及
6、AUP(敏捷统一过程,Agile Unified Process)
7、Crystal等。
尽管每种敏捷过程都具有类似的目标,但是它们实现这个目标的做法(practice)却不尽相同。在后续中,我们会着重介绍FDD和Scrum。
2、敏捷宣言Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
我们正在通过实践和帮助其他人实践,
揭示(uncovering)更好的开发软件的方法。
我们的价值观是
Individuals and interactionsover processes and tools
人和交互重于过程和工具
Working software over comprehensive documentation
可以工作的软件重于面面俱到的文档
Customer collaboration over contract negotiation
客户合作重于合同谈判
Responding to change over following a plan
随时应对变化重于循规蹈矩
(拥抱变化胜于遵循计划)
That is, while there is value in the items on
the right, we value the items on the left more.
虽然右项也具有价值,但我们认为左项具有更大的价值。
中文摘自:《敏捷软件开发:原则、模式与实践》 Robert C.Martin【著】,邓辉【译】
英文摘自:http://www.agilemanifesto.org/
关注敏捷软件开发是因为我们认为它是一种很好的软件开发理念,能够应对现实中的软件需求经常不完善和快速变更的问题,用好它能够提高客户满意度,降低项目失败的风险。但什么时候使用它、如何很好地实施这些理念,是我们需要考虑和解决的问题。