“敏捷软件开发宣言:我们正在通过亲身实践和帮助其他人实践,揭示更好的软件开发方法,通过这项工作,我们认为:
人和交流胜过过程和工具
可工作的软件胜过面面俱到的文档
客户协作胜过合同谈判
响应变化胜过遵循计划
虽然右项也有价值,但是我们认为左项更重要。”
—— Kent Beck,Mike Beedle,Arie van Bennekum,Alistair Cockburn,Ward Cunningham,Martin Fowler,James Grenning,Jim Highsmith,Andrew Hunt,Ron Jeffries,Jon Kern,Brian Marick, Robert C. Martin,Steve Mellor,Ken Schwaber,Jeff Sutherland,Dave Thomas
敏捷软件开发这个词在2006年的中国软件界听起来仍然显得有些陌生。自2001年敏捷联盟被发起以来,敏捷方法的实践经验和理论研究都在不断的更新。而我国的大多数程序员还是只能在书本上读到敏捷的好处,很难在项目中进行实践。这其中的原因,主要是缺乏拥有实际敏捷项目经验的人来带领实施敏捷。虽然敏捷开发是种实践行为,很难从书本上直接学习,不过多数程序员了解敏捷,却都是先从书本开始的。无论结果怎样,从认识到实践的过程是免不了的。
敏捷软件开发之方法论篇
大家都知道敏捷软件开发方法包括了多种方法论,主要有:SCRUM,Crystal,特征驱动软件开发(FDD),自适应软件开发(ASD),以及最著名的极限编程(XP)。这些方法论分别在不同的著作上专门论述过:
SCRUM:《Agile Software Development with Scrum》 by Ken Schwaber, Mike Beedle,《Agile Project Management With Scrum》by Ken Schwaber
FDD: 《Java Modeling in Color with UML》by Peter Coad, 《A Practical Guide to Feature-Driven Development》(特征驱动开发) by Stephen R Palmer, John M. Felsing,
Crystal: 《Crystal Clear》by Alistair Cockburn
ASD: 《Adaptive Software Development》(自适应软件开发)by James A. Highsmith
其中尤以XP系列的书籍居多。人民邮电出版社的一系列极限编程系列丛书,在国内引进较早。在还没有统一敏捷词汇的情况下,引发了一批敏捷先锋人士的热情,是我国程序员的敏捷启蒙教材。这些书包括《Extreme Programming Explained》(解析极限编程),《Extreme Programming Examined》(极限编程研究),《Extreme Programming Installed》(极限编程实施),《Extreme Programming Explored》(探索极限编程),《Extreme Programming Applied》(应用极限编程)《Extreme Programming in Practice》(极限编程实践),《Planning Extreme Programming》(规划极限编程)等,这些书有的是作者的XP实践论文,有些是对XP项目的介绍,其中,值得推荐的是下面两部著作。
《Extreme Programming Explained: Embrace Change》by Kent Beck
第一版中译版:《解析极限编程:拥抱变化》,唐东铭,人民邮电出版社
第二版中译版:雷剑文,电子工业出版社
作为XP的开山之作,目前已经出版了第二版。在第一版中,Kent Beck对XP作了详细的描述。从当前软件开发的现状和问题谈起,从需求的变化到如何拥抱变化,给出了XP的四项价值观和十二项实践。对于想了解敏捷的来龙去脉的人,此书属于必读之类。在第二版,Kent根据几年来的实践,为XP增加了一项价值观:尊重,并增加了原则的概念,同时增加和删改了一些实践。
该书第一版是程序员的宣言,这和Kent的背景很有关系。随后XP经历了五六年的发展和实践,Kent自己也逐渐意识到,这样的观点太狭隘了。因此就有了第二版,与其说这是技术书籍,到更像是纯粹意义的软工书籍。期间也可以看出XP的体系更加完备。这其中尤为突出的是把人放到了更为重要的地位。
《Extreme Programming in Practice》by James Newkirk, Robert C. Martin
中译版:《极限编程实践》,王钧,人民邮电出版社
读过了一些列的XP书籍,程序员们都会觉得XP非常好,但到底如何才能开始实施XP呢?还不是太清楚。本系列中的这本书用一个完整的小项目作例子,从头到尾教给人如何敏捷开发,是一本不可多得的实践教材。如果想直接实施XP开发,这本书可以给你很大启示。
敏捷软件开发之实践篇
一、极限编程最佳实践
由于极限编程是如此的流行,多数敏捷团队都会或多或少的借鉴一些XP中的敏捷实践,而XP的每一个敏捷实践也确实值得大书特书,而其中最著名的是测试驱动开发和重构实践:
《Test-Driven Development》 by Kent Beck
中译版:《测试驱动开发》,崔凯,中国电力出版社
测试驱动开发是Kent Beck另一部力作。“Clean Code That Works”是敏捷开发的目标之一,那么如何达到这个目标?TDD给出了一种方式。测试实质上是需求。由需求产生出的代码肯定是能够工作的功能代码,而要实现Class本身的可测试性,就不得不写出高度解耦合的Clean的代码。本书从一个Money的例子入手,从最初的一点需求开始,逐步增加需求,完成整个货币系统的代码。后面又给出了Unit Test中的一些最佳实践和模式供参考。
然而,本书的教导意义比其实践意义更突出。作为一本TDD的教程或入门教材,这本书无疑是最佳的,其中提出的一些最佳实践更是值得经常阅读来温习。本书面向的是单元测试,而实际开发中面对的数据库测试,Web测试等问题并不属于单元测试的范畴。因此读者并不能从中直接进入到实战。
另一本同名书《Test Driven Development: A Practical Guide》由Davis Astels撰写,他将该书看作是Kent著作的补充,重点阐述利用TDD开发所必要的技术和工具上,因此对实际开发更具实用性。
《Refactoring: Improving the Design of Existing Code》by Martin Fowler
中译版:《重构:改善既有代码的设计》,侯捷,熊节,中国电力出版社
重构这本书的意义在于,他提供了一种让你写出更加优美代码的能力。在测试的保证下,重构能够发挥强大的威力。敏捷团队中,不断的重构出简单且高效的代码才能够保持拥抱不断变化的需求。后来的一本书《Refactoring to Patterns》(从重构到模式)by Joshua Kerievsky,更是将重构的威力发挥到极限。
重构曾被称为软件开发图书的双璧,另一本书是《Design Patterns》(设计模式) by GoF。当然,对现在的软件开发这二者已经不是最重要的。ThoughtWorks的首席科学家Martin Fowler总结了朋友们的各种实践心得,写出了这本书。从几年后的目光来看,这本书中的多数实践都被各种IDE做到了操作菜单中。虽然IDE提供了大量重构功能,但仅靠IDE是无法写出简洁美妙代码的,多数的敏捷团队重构工作做得还是不够。
另外有一本专门介绍结对编程的书,《Pair Programming Illuminated》(结对编程技术)by by Laurie Williams and Robert Kessler,指出了为什么要结对?并从各种不同水平不同性格的程序员结对情况来讨论该实践的优劣。对此有兴趣的程序员不妨一读。
二、敏捷软件开发实践
自从2001年敏捷联盟成立以来,单独推广极限编程的书变少了,而统一口径推广敏捷的书变得越来越多。两本同名的敏捷软件开发都是不可多得的好书,
《Agile Software Development:Principles, Patterns, and Practices》by Robert C. Martin
中译版:《敏捷软件开发:原则,模式与实践》,邓辉,清华大学出版社
被业内人士称为Uncle Bob的Robert C Martin在沉寂几年后写出了这部书。该书可以算是从软件开发角度对敏捷方法阐述的最详细和全面的一本。之前的敏捷书籍多是关注于过程改进,而对如何从技术角度实施讲的比较少。本书一开始先介绍了敏捷联盟和敏捷开发过程。之后详细论述了面向对象设计的原则,这些原则是本书的精华之一。后面通过几个项目介绍了如何将设计模式应用于项目中。
Uncle Bob不愧是实践的大师,写出来的书也是拥有很强的实践意义。在敏捷团队的办公桌上,应当常备此书,一来可作为参考查询,二来可以作为新成员的必读书目。
《Agile Software Development》by Alistair Cockburn
中译版:《敏捷软件开发》,俞涓,人民邮电出版社
这本书更加适合管理者来阅读。Alistair从项目人数和交流难易程度,将敏捷的各种方法划分了其适用范围。人数多的或分布式项目就需要靠其他手段来加强交流,人数少的就可以靠pair programming等进行面对面的交流。交流和反馈是敏捷的核心。同时Alistair也介绍了一下他提出的Crystal方法族。
三.敏捷项目管理和敏捷需求分析
在推广敏捷一段时间后,敏捷社群也意识到,多数书籍更像是面向开发人员,过于技术化,难以吸引项目经理或主管。因此,一批面向管理者视角的书也开始浮出水面,这些书包括:
《Agile and Iterative Development》(敏捷迭代开发)by Craig Larman
《Lean Software Development》(敏捷软件开发工具—精益开发方法)by Mary Poppendieck
《Agile Software Development Ecosystems》(敏捷软件开发生态系统)by Jim Highsmith
书中从各种角度比较和分析各种敏捷方法的优劣,异同,起源,适用范围等。这些书对于一个项目主管决策使用何种过程来在自己的团队中实践敏捷有很好的参考作用。
近两年,人们开始逐渐意识到敏捷开发的侧重点不仅仅是开发过程和开发实践,还包括对需求和项目管理等其他相关方面的实践。一些相关的书籍也悄然出现在人们的视野:
《Agile Project Management》(敏捷项目管理)by Jim Highsmith
《User Stories Applied》by Mike Cohn
《Agile Estimating and Planning》by Mike Cohn
《Agile Requirements & User Stories》 by Louis Molnar
这些书不同于以往强调新方法,新过程的书目。敏捷项目管理类的书主要介绍如何管理敏捷团队,如何计划要开发的需求,如何为客户提供最大的价值。介绍敏捷需求分析的书主要帮助商务分析师或项目经理挖掘和分析用户需求,写出用户故事,评估和计划用户故事等。人们已经意识到,各种方法论的实质是相同的,都是提供商业价值,减少浪费,增加交流,快速反馈。因此不需要着重于区分是使用了那种方法。对项目经理来说,不同的项目或团队应当采用适应其特殊情况的方法,而这些方法的基本原则是相同的。
四.敏捷软件开发新方向
对架构师或程序员来说,近年来的技术进展,也使得敏捷开发有了新的研究方向:
《Agile Web Development with Rails》by Dave Thomas, David Hansson, Leon Breedt, and Mike Clark
该书是获得2006JOLT奖的书,讲得是采用Ruby on Rails这个Web开发工具新贵来快速开发Web项目,从而达到快速反馈拥抱变化的目的。
《Refactoring Databases》by Scott W Ambler
此书是Scott的新作,延续和继承了《Agile Modeling》(敏捷建模)和《Agile Database Techniques》(敏捷数据)的思想。在敏捷开发过程中,作为持久化最常见技术的数据库如果不能够敏捷,怎么能够适应一次次迭代和一次次发布的修改呢?书中介绍了如何进行数据库演化,如何保证升级后数据库数据的正确性,以及最佳实践。
我们可以看到,随着敏捷方法和市场的不断成熟,敏捷的书籍也从理论性转向了实用和最佳实践类型。然而,不可否认的是,一个团队的敏捷化很难仅靠阅读书本来完成,由成功实践过敏捷的开发者手把手的带领,才是最好的方法。
分享到:
相关推荐
问题:ssh-copy-id 命令无法使用,在linux服务器的ssh服务中没有有这个命令,可以在/usr/bin/的这文件夹中查看没有这个ssh-copy-id 命令。 问题分析:是由于ssh服务的问题,可以直接将ssh-copy-id 命令拷贝/usr/...
免密登录必备ssh-copy-id脚本
ssh-copy-id for windows,支持windows下的ssh-copy-id命令,加入exe所在路径到PATH环境变量即可
`ssh-copy-id`是SSH工具包的一部分,它简化了将公钥添加到远程服务器的授权钥匙链的过程,从而允许无密码登录。然而,有时在Mac上可能会遇到没有`ssh-copy-id`命令的问题。本文将深入探讨这个问题及其解决方案。 ...
【标题】"CountBread---Copy---Copy---Copy.rar_copy" 暗示这是一个压缩文件,可能是一个软件或教程资源,其原始名称可能是"CountBread",经过多次复制后产生了这个带有“Copy”后缀的版本。由于“rar”是常见的压缩...
适用于centos 7 redhat 7 x86架构操作系统使用的openssh 9.5 p1 二进制rpm包 带有ssh-copy-id命令,2023年10月4日发布,当前最新版本,修复安全漏洞,更新升级openssh版本
。copy-to-1.。user 和copy-from-user 函数分析.pdf
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。 语法格式:ssh-copy-id ...
。copy-to-1.。user 和copy-from-user 函数分析 (2).pdf
**前端开源库 Swint-Copy-Dir 深度解析** 在前端开发中,文件和目录的处理是一项常见的任务,特别是在构建流程或者自动化工具中。`Swint-Copy-Dir` 是一个专为 `Swint` 任务设计的用于目录复制的开源库,它简化了在...
php-myclabs-deep-copy-1.10.1-1.el7.remi.noarch.rpm
untitled-1-copy-copy-1.svg
ssh-copy-id for Windows版
npm install --save react-copy-to-clipboard 如果您使用 npm@3,请不要忘记手动安装对等依赖项 ( react )。 1998 脚本标签: < script src =" ...
2024年3月12日制作 适用于centos 7 redhat 7 x86架构操作系统升级更新openssh 9.7 版本,修复...此包为二进制rpm包,包含ssh-copy-id命令 2024年3月11日 官方发布9.7版本,此包基于官方源码制作,无ssl信息显示。
2024年3月12日制作 适用于centos 7 redhat 7 x86架构的二进制...2024年3月11日官方发布9.7版本,内含ssh-copy-id命令,安装后显示openssl版本,此包基于openssl 1.1.1w制作,因此安装后会显示1.1.1w版本的openssl信息
ssh-copy-id-for-OSX, 快速macosx端口有用的unix实用程序ssh副本 id 用于OSX的 ssh-copy-id实用的unix实用工具 ssh-copy-id的快速端口注意:现在,macOS Sierra在 /usr/bin 中包括一个板载的ssh-copy-id安装git ...
插件介绍:Easy-Copy-Paste插件支持将wordpress文章中的远程图片进行本地化保存,防止远程图片突然失效造成文章图片不能正常显示。 使用方法:在wordpress插件处上传安装即可。安装Easy-Copy-Paste插件后,启用插件...
simple-allow-copy-0.8.2.crx
react-copy-to-clipboard, 复制到剪贴板响应组件 react-copy-to-clipboard 复制到剪贴板响应组件基于 copy-to-clipboard将尝试使用execCommand回退到 IE 特定的clipboardData接口,最后回退到简单的