<!----><!----><!---->
<!----><!---->
<!---->极限编程(
XP
)的创始人和
“
敏捷软件开发宣言
”
的执笔者之一,
Ken Beck
,一直是敏捷编程的倡导者,他认为敏捷编程可以缩短软件开发项目的开发周期。近日他参加了旧金山举行的
Qcon
大会,并接受了媒体的采访,谈论了敏捷开发的相关问题。
记者:你能谈论一下敏捷宣言和极限编程(
XP
)吗?
Ken Beck
:在极限编程(
XP
)后面的基本设想是,肯定有一些对软件开发有帮助的敏捷行为。我曾经问过这个问题,
“
假若我们尽最大的热情来进行软件开发,会
发生什么?
”
这就是
“
极限(
Extreme
)一词的由来。结果证明,如果你采取其中的一些做法,例如技术上的协作、测试,并比以前更加努力的推行这些做
法,至少在一般的软件开发项目中你会获得比较好的结果。例如你的错误率会比较低,这意味着你可以更频繁的发布新版本软件。你能够以非常低的成本让项目启动
进入最佳的可部署状态,与其他风格的开发模式相比,你获得了更低的开发成本和更短的开发周期。而且如果你将这种理念融入到后续的设计中,持续的对设计进行
认真的投入,你可以在很长一段时间内以一种非常稳定的速率来继续部署新的功能。
这就是敏捷编程如何启动的方式,事实证明为了实现所有上述目标,无论是作为一个团队还是一个个体,你还必须学习许多新的社会技能:诚实、无私、有责任心。
在获得一定的开发速度后,接下来的目标是,如果你想更快的进入下一步,你所要做的是能够更清晰和透明的交流正在进行的开发工作。
记者:你提到了推动敏捷编程发展的风格:可靠性、变化的低成本、增加的投资回报率。为什么软件开发市场正在从瀑布风格转向敏捷开发风格呢?或者现在是否只有一小部分开发者正在使用这个方法?
Ken Beck
:是的,现在是只有一小部分开发者正在使用敏捷方法,但是我认为这一数字正在非常迅速的增长。我虽然没有明确的数字来证实我的观点,但是如果你关
注一下敏捷开发者大会的增长,你会清晰的感觉到这一点。我认为现在推动敏捷开发的因素是这种开发风格更加贴近真实环境、更透明和更有责任感,如果你的开发
周期比较短你会决定它就是你希望实现的开发方式。对于那些尊崇真实至上的软件开发,存在着巨大的潜在市场。
记者:为什么使用者还比较少?
Ken Beck
:因为它存在的时间还不是很长。
记者:你今天早晨提到这个问题:用户不得不自己来确认你的软件是否可以正常使用。这本来是一件理所当然的事情,但是事实并非如此。为什么会出现这种情况?
Ken Beck
:嗯,我认为造成这种现象的原因比较复杂,是技术和社会因素的综合原因导致了在已部署的软件中存在所有的缺陷。一部分原因是人们抱有软件天生就是
不可靠的态度,客户习惯了这种状况。开发者习惯了接受这种观点。测试者也对此习惯了。我们只是觉得它像天气一样,对它无能为力,但这不是一个负责任的态
度,因为实际上开发者有很多关于它的措施可以采取。从技术上来说,可以通过测试驱动开发、自动化集成测试、持续集成等手段;从社会学的角度来讲,端正自己
的态度,不想推出具有缺陷的软件。以及加强开发团队成员之间的交流和关系等。
记者:你所熟悉的这些研究也说明了现在有如此众多失败的软件项目的原因。敏捷方法能拯救它们吗?还是只是一个临时的解决办法?
Ken Beck
:敏捷方法是失败软件项目的救星吗?我认为许多软件项目依然会失败,问题是除非你非常深入的了解这些软件项目,你不知道会失败的是哪一个。那么敏
捷方法是它的救星吗?不。我认为它依然会失败,因为好的想法并不一定在实践中产生好的结果。敏捷开发可以带给你的一件事情是:让这些项目失败的更快、损失
的更少,因为你可以将时间和精力用于开始做下一件事情。
记者:对于极限编程,你提到隔几个星期进行一次迭代(
iterations
),而不是六个月到一年,你如何定义这个迭代周期,以及软件发布的周期?
Ken Beck
:在极限编程中的基本周期,基本的计划周期是一个星期,这是非常合理的,因为它是根据人们工作的时间来定的。在每个星期结束的时候,这个软件应该比这一星期开始的时候具有更多的功能。
极限编程(
XP
)与其他敏捷方法相比如何?比如
Scrum
。
关于极限编程我比较喜欢的一件事情是其全面性。它从关于与好的软件开发一致的观点的全面讨论开始。介绍了一些基本原则,介绍了获得我们讨论的某种目标的具体的实践。因此我认为极限编程区别于其他方法的特点是它具有这种全面性。
记者:你能指出一个使用极限编程完成的比较突出的软件项目吗?
Ken Beck
:例如
Carfax
。
记者:我们曾经听过
“
牛仔编程(
cowboy coding
)
”
的叫法,敏捷方法和牛仔编程有什么区别?
Ken Beck
:我偶尔会体验一下牛仔编程方式,尽管它在我的工作中不占有重要地位。在牛仔编程中,你可以像一个勇士一样去编程,你会对自己的工作感到很满意,因为你认为这个世界上再没有别人可能作出和你的一样的东西。
极限编程风格的开发也是需要勇气的;这一点它与牛仔编程类似。但是牛仔编程是完全不透明的,而极限编程则是透明的。牛仔编程是一种个体行为,而极限编程是一种团队行为。不仅仅是程序员一起工作,还包括用户、管理者和测试者。因此我认为它们还是有差异的。
在极限编程风格中,早早结束编码是因为可以更快的看到真正的用户反馈,从而继续改进。一个牛仔式的程序员也会做同样的事情。或许你刚刚介绍了一半问题的定
义,它们会说,
“
好的,我明白了
”
,然后就去开始编程。是的,这一点看上去和极限编程团队有些类似,但是两者实际上是不同的,因为牛仔式程序员已经结束了
这次交谈,而
XP
团队则是才刚刚开始这次交谈。
记者:牛仔编程有成功的时候吗?
Ken Beck
:当然,在短期内它具有巨大的风险和巨大的成本、巨大的隐形成本。我有过使用它的经历,但是它有时候会效果不错。
记者:有的软件项目是由分散在不同地区的团队成员在不同的时间来进行开发的,在这种情况下的开发情形如何?敏捷方法可以解决这个问题吗?
Ken Beck
:是的,这就是我大多数时间的工作方式,因为我住在南俄勒冈州,出于生计,我的大部分时间仍在编程。因此我一直在进行着跨地区的开发工作。时区是
一个挑战,但是最大的挑战是保持团队成员之间的关系。这是一件非常困难的事情。如果你能做到这一点,如果你的团队之间有良好的关系,那么你就能制定出技术
的详细信息,例如谁什么时候进行了重构,谁加入了什么代码和已经作出的程序。
记者:对于
Java
和
.Net
,敏捷方法和极限编程适合吗?
Ken Beck
:一个技术平台如果可以让你以较低的成本进行修改,它就更适合敏捷开发。你当然可以在
Java
和
.Net
中使用敏捷方法。
记者:在敏捷编程中有什么比较重要的事情吗?
Ken Beck
:是的,那就是你在一个技术中需要的东西。在一个技术平台中它真的很有帮助。我的父亲一直在从事敏捷开发的技术方面工作,以汇编语言为微处理器编程。他使用自动化测试、增量设计,他频繁发布小版本,他写绝对可靠的代码。
记者:那么像
AJAX
、
Ruby
和
PHP
等脚本语言呢?它们适合敏捷编程吗?
Ken Beck
:当然。举个例子说,
Ruby
来自于以人为中心的语言。你可以通过一种非常具有可维护性的风格编写
Ruby
代码,在很长时间内可以非常轻松的修改。我担心的是当你使用数据库的时候,这种修改可能会突然变得非常困难。
记者:和
Ruby
语言有关吗?
Ken Beck
:一般来说是和关系数据库有关。但是敏捷社区正在推出解决这个问题的技术。厂商也正在让数据库接受增量修改。
记者:
Web
开发如何?它是否与敏捷开发特别适合?还是它只是另一个应用程序领域?
关于
Web
开发的最伟大的地方之一是其开发非常省钱。而且如果你一直在做部署的话,简单的把它放到一些服务器上就可以了。传统应用软件的刻录成光盘然后进行分发,部署的成本要大很多。
分享到:
相关推荐
开放式工业控制系统的软件开发技术—— CODESYS V3 基础编程指南, CoDeSys 是德国3S 公司的PLC 编程软件,全球有近350 家知名的自动化产品和方案供应商是3S 公司的合作伙伴,这其中较著名 的有ABB 的Control ...
这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。 ·讲述在预算和实践要求下,软件开发人员和项目经理如何使用敏捷开发完成项目。 ·使用真实案例讲解如何用极限编程来...
金融数量分析——基于MATLAB编程
游戏之旅——我的编程感悟.pdf
极限编程(eXtreme Programming, XP)是敏捷开发方法论中的一种,由Kent Beck于1998年提出,旨在提高软件开发团队的效率和应对变化的能力。敏捷开发强调个体和交互、可工作的软件、客户合作以及响应变化,这些都是比...
根据给定的文件信息,我们可以深入探讨极限编程(Extreme Programming,简称XP)这一敏捷软件开发方法的核心理念、历史背景、关键实践以及其对未来软件工程的影响。 ### 历史背景 极限编程的历史可追溯至1996年,...
敏捷建模极限编程和统一过程的有效实践 这本书的完整PDF版
敏捷建模_极限编程和统一过程的有效实践.pdf 敏捷开发的艺术.pdf 敏捷开发知识体系.pdf 敏捷开发项目管理软件——禅道官方部署及使用帮助文档 .pdf 敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理...
本资源“夏敏捷Python课程设计——代码(全部).zip”提供了丰富的Python编程实践项目,涵盖了多个主题,旨在帮助学习者深入理解和掌握Python的核心概念及高级特性。 1. **Tkinter图形界面应用**: - Tkinter是...
敏捷建模-极限编程和统一过程的有效实践
敏捷建模_极限编程和统一过程的有效实践.pdf 敏捷开发的艺术.pdf 敏捷开发知识体系.pdf 敏捷开发项目管理软件——禅道官方部署及使用帮助文档 .pdf 敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理...
敏捷建模_极限编程和统一过程的有效实践.pdf 敏捷开发的艺术.pdf 敏捷开发知识体系.pdf 敏捷开发项目管理软件——禅道官方部署及使用帮助文档 .pdf 敏捷开发-落地实践-持续改进.pdf 敏捷数据.pdf 敏捷管理...
Martin,被亲切地称为“鲍勃叔叔”,是敏捷开发的创始人之一,他在软件工程领域拥有丰富的经验和深厚的专业知识。他是多家国际软件咨询公司的高级顾问,并且是多本畅销书的作者。他的书籍和论文涉及面向对象设计...
, 本书为敏捷的计划、开发、交付和管理提供了严谨的建议,这些建议来自于作者多年的极限编程(Extreme Programming,XP)经验。你将看到敏捷开发过程的全景图,包括为非技术类读者准备的全面指导,以及为开发者和测试...
台达PLC编程工具
Martin(也被称为“鲍勃叔叔”),作为软件开发和工程领域的大师,阐述了敏捷开发中的核心原则、设计模式和实践,尤其是在极限编程(Extreme Programming, 简称XP)方面的应用。XP是一种敏捷软件开发方法,它在预算...
《开放式工业控制系统的软件开发技术——CODESYS V3基础编程指南.pdf》是一份专注于CODESYS V3平台的编程指南,详细介绍了工业控制系统软件开发的基础知识。这份资料围绕着CODESYS V3的使用、编程方法和开发技巧,为...
GPU 精粹——实时图形编程的技术、技巧和技艺 《GPU 精粹——实时图形编程的技术、技巧和技艺》是一本由nVidia公司编撰的图形编程方面的专业书籍。这本书汇集了国际上图形学前沿开发者们多年研究和实践得出的实时...