敏捷开发方法一览,极限编程概览

敏捷方法一览:尽早交付有价值的软件,频繁发布新版本,软件比文档更重要,倾听,并快速学习,紧密协作;极限编程概览;定义产品;开发产品;部署产品

敏捷开发方法一览,极限编程概览

marty Cagan 发表于2009年6月1日

译者:蒋彬 / 审校:周舜莉 徐定翔

许多产品开发机构都尝试过所谓的“敏捷软件开发”方法,其中最为流行的是“极限编程”(xp),此外还有其它一些敏捷方法,比如crystal、adaptive、scrum和pragmatic Programming等。

在使用这些敏捷方法时,产品经理常常弄不清自己的角色定位。有些产品经理甚至担心采用敏捷方法会影响产品质量。

我打算首先总结敏捷开发的核心原则,然后以极限编程(XP)?为例,指出极限编程的难点,以及如何更好地发挥它的作用。

敏捷方法一览

各种敏捷方法的要求千差万别,但是它们都遵循以下12条原则。?

1、最重要的是通过尽早地、频繁地交付有价值的软件来满足客户——尽早交付有价值的软件。

2、频繁地交付可运行的软件,数周或者数月交付一次——频繁发布新版本。

3、可运行的软件是衡量进展的主要标准——软件比文档更重要

4、接受?需求变更,即便是在开发最后阶段——倾听,并快速学习

5、项目期间业务人员与开发者共同工作——紧密协作

6、找积极主动的人来开发项目——为他们提供所需的环境和支持,相信他们能做好自己的工作

7、开发团队里最节省时间最有效的信息传递方式是面对面的交流

8、自发组织的团队才能做出最好的架构、和设计——架构要敏捷,好主意无处不在

9、持续关注先进的技术和优秀的设计能促进敏捷性——频繁地重构

10、敏捷过程促进可持续的开发——此举应能维持相对稳健的节奏——而不是?导致失败

11、简洁是一切的基础——少即是多

12、团队定期反思如何提高效率,并调整?工作流程——事后反思?

极限编程概览

要阐述?遵循敏捷方法到底意味着什么,?不妨看看敏捷方法中最为流行的极限编程的详细规范。该方法的发明者强调,极限编程并非万能,应该有选择性地加以使用。其主要原则如下。

-结对编程——两位程序员使用同一台电脑开发同一款软件

-简单设计——只设计和开发你现在就需要的东西,不考虑将来的潜在需求

-现场客户——客户代表入驻开发团队,他代表了所有产品的需求,在开发过程中不断的说明需求并帮助决策

-增量开发——频敏小规模发布产品?,快速推动产品?进入理想状态

-做好规划——工程师只做评估,客户决定?每次发布的功能和时间

-持续评审代码——基于结对编程的模式,两位开发者相互评审对方的工作

-持续测试——开发者在编码时就撰写单元测试,客户则撰写用例中规定的功能测试,?这些测试均是自动、持续地进行

-持续构建——持续开发和整合软件,这样能及早发现问题,系统也一直处于可构建的状态

-持续重构——软件开发人员不懈努力,通过重构代码来简化和改进工作,同时保证所有测试正常运行?

-代码共有——与每个开发人员“独享”?自己的代码这一模式不同的是,极限编辑模式中每个开发人员只要认为有机会有必要,就可以优化系统中任意处的任意代码?

-开放的工作场所——指整个团队都在一个在房间里共同工作,其中开发人员坐在中间

-每周工作40小时——限制加班以提高工作质量?

-代码即文档——最有用的文档就是软件本身,整个团队应该遵循编码规范

当然了,这种方法是从软件开发人员的角度提出来的。在他们看来,除了程序员和用户(客户),就不需要其他工作人员了。这正是让产品经理感受担忧的地方。?

产品经理的工作至少包含以下三个方面。?

定义产品

首先弄清楚要开发什么产品。极限编程方法是针对定制化软件项目提出来的,目的是满足特定客户的特定需求(比如内部员工薪资系统),它并不适用于通用产品。事实上,在描述极限编程方法的图书和文章里,几乎很少提及产品管理或是界面设计。

最让人担忧的通常产品经理能否代替现场客户的作用。只有在深入研究目标用户、理解用户需求、使用环境以及竞争格局,产品经理才能发挥最大的作用。

更让人担心的是产品设计(界面设计)角色的缺失。对于产品来说(不同于那些签署合同后开发的定制软件),用户界面和用户体验至关重要,需要专业设计师运用其专业技能进行设计,因此在工作流程中引入这一重要职位非常重要。

只要把最初的迭代作为持续演进的原型并不断检验,以确保开发团队能开发出正确的产品,然后再在接下来的迭代中实施产品执行,就能更好地利用极限编程方法。关键是确保你开发的产品是客户想要购买的,而且客户能搞清楚该如何使用。只有一个客户或是产品经理理解这个产品并不足够,它应该为目标市场的广大群体所检验。

开发产品

其次要考虑的是, 这些用来开发可扩展、?高性能、可靠、易维护产品的技术会带来什么样的后果。这些担忧使人马上陷入一种近乎宗教狂热的争论,争论的重点是,什么才是开发和测试软件的最佳方法,而这完全在产品管理职责之外。?产品经理?只需要清晰地确定需求,然后让技术团队按自己认为最合适的方式来控制风险。?

极限编程过程依靠客户来定义用例(又被称为用户故事)?,以此作为功能测试的基础。这用在小型项目上或许还不错?,但如果是大型、通用产品的话,有必要请专人来负责设计必要的测试用例,以确保可扩展性、功能、性能、容错性和本地化特性等。这些通常都是QA的职责,极限编程的方法完全也可以借鉴。关键是让开发人员负责单元测试,QA人员负责其它测试(比如系统、集成和功能测试等)?。?

部署产品

最后一个为人们所关注的,是产品的发布。人们长期以来一直认为随着时间的推移,做出改变的成本也越来越高,但极限编程挑战了这一看法。换言之,只要遵循极限编程实践,你可以降低开发中系统需要变更带来的影响。这对于定制化软件来说这没错,但对于许多商业软件产品来说,变更带来的影响仍然很大,尤其是对于拥有大量活跃用户群体的互联网服务来说。

我曾经探讨过“平滑部署”的?策略,这些方法有助于降低极限编程项目所提倡的频繁发布和更新策略所带来的负面影响。

总结

大到敏捷开发,小到极限编程方法,都是为了解决传统软件开发方法中的实际问题而创造的,尤其是致力于增强开发人员与客户的沟通,节省时间及早弄清楚你所开发的产品是否正是客户需要的,并减少增量开发过程中的风险,同时优先开发高优化级的功能。此外还有另外一些颇有价值的技术,尤其是结对编程、增量开发、持续集成与自动化测试等。?

然而,对于提供商用产品及服务的公司来说,更重要的是将这些方法与产品管理、产品设计、质量保证结合起来,确保你开发的产品能为广大用户和消费者使用。这样的话才能覆盖较广的消费者群体。

本文编译自七印部落,原文地址。转载请注明出处链接。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年5月3日 17:00:13
下一篇 2024年5月3日 17:02:21

相关推荐

  • c语言输入数组,C语言输入数组的方法

    如何用c语言从键盘输入10个数存入数组并求和? 1、用C语言编写一段程序,用来输入10个整数保存到数组中,求出这10个整数的和并输出。 2、,数组是相同数据类型的元素的集合。 2,数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。 3,数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。 3、void main(){ fl…

    2024年5月23日
    5100
  • java的split方法的源码,如何理解java中的split方法

    请问java中split()方法怎么用? 1、split 的实现直接调用的 matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。 2、split() 方法用于把一个字符串分割成字符串数组。 语法 stringObject.split(separator,howmany) 参数与描述 separato…

    2024年5月23日
    4500
  • linux增加目录空间,linux目录空间不足时的扩容方法

    Linux下调整根目录和home目录的空间大小 1、由此可见,home减少了100G空间,根目录增加了100G空间。 2、备份 home 查看未调整前的根目录容量,可以看到默认是分配 50G,但大都数的软件安装都默认在根目录 所以这里将home的容量分给根目录。 3、首先,你得有空余的空间,比如,你发现你的/home所在分区还有好多G的剩余空间,那你就可以把…

    2024年5月23日
    5300
  • java怎么实现多个接口,java多个接口有相同的方法

    java中接口可以实现多个接口吗? 1、但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。 2、首先,java中的接口别说实现多个接口了,一个接口也不能实现。因为接口中的方法是没有方法体的,所以不能实现任何接口。其次,一个接口可以继承多个接口。 3、java中没有多继承(就是不能继承多个父类),只有多重继承。 java怎么定…

    2024年5月23日
    3500
  • java截取字符串的方法,JAVA截取字符串中的一段字符

    java怎么获取字符串中指定的值? 在一个String字符串中 查找某个汉字的索引 可以使用str.indexOf(字) 获取在字符串中的索引位置,同样索引从0开始,若字符串中没有该汉字, 返回-1就行了。 用substring.具体用法:字符串截取,substring(int beginindex)返回一个新的字符串,它是此字符串的一个子字符串。subst…

    2024年5月23日
    4000
  • java字符串反向遍历,java 字符串反转方法

    java请问如何用reverse().toString();进行倒序输入字符串? 其实不需要用for循环,StringBuffer中已经提供了倒置的方法,貌似方法名也是叫reverse。 方法一:利用String类的toCharArray(),再倒序输出数组。 用两个StringBuilder,一个作全部的、一个作每一行的。 String类型对象的内容是不可…

    2024年5月23日
    4600
  • java调用函数的方法,java中调用函数的方法

    如何实现Java调用C或C++函数 1、(1)创建DLL文件使用某一种C/C++开发工具创建DLL文件,实现某一功能,供Java调用,例如本文在此使用Visual studio 2005创建一个名为testdll的动态库文件。(2)使用JNIJNI是Java Na***tive Interface的缩写,中文为Java本地调用。 2、首先创建Java文件 H…

    2024年5月23日
    4200
  • java字符串转码,java字符串转码方法

    java怎么把utf-8的字符串转换为gb2312格式 1、java不同编码之间进行转换,都需要使用unicode作为中转。 2、如果你想把utf-8转为GB2312 用记事本打开源码,把换成;如果是JS不需要加这句,如果是网页最好加上这句和你页面对应的编码。用记事本打开源码,另存为,编码 哪里选择 ANSI 即可。 3、如果只有一两个文件,用记事本打开 U…

    2024年5月23日
    3600
  • java快速排序法,java快速排序的两种方法

    如何用java实现快速排序,简答讲解下原理 1、【答案】:排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。 2、最主要的是冒泡排序、选择排序、插入排序以及快速排序冒泡排序 冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下…

    2024年5月22日
    4800
  • 网络安全知识和维护方法,网络安全知识和维护方法有哪些

    怎样维护网络安全 1、第一,保持计算机系统和软件更新。为了防范网络攻击,我们必须定期更新安全补丁和操作系统。这些补丁都是为解决已知的漏洞和安全问题而发布的。下载升级补丁可以让你的电脑系统更加安全。第二,安装杀毒软件并定期扫描。 2、维护网络安全的应对之策有物理措施、访问控制、数据加密等。物理措施 例如,保护网络关键设备(如交换机、大型计算机等),制定严格的网…

    2024年5月22日
    3100

发表回复

登录后才能评论



关注微信