首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XP极限编程-水晶方法论

极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的,是一种软件工程方法学,是敏捷软件开发中可能是最富有成效的几种方法学之一。如同其他敏捷方法学,极限编程和传统方法学的本质不同在于它更强调可适应性而不是可预测性。

极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是沟通(Communication)、简单(Simplicity)、反馈(Feedback)、勇气(Courage)、此外还扩展了第五个价值观:尊重(Respect)。;

XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

极限编程的特征:

增量和反复式的开发----一次小的改进跟着一个小的改进。

反复性,通常是自动重复的单元测试,回归测试。

结对程序设计

在程序设计团队中的用户交互(在场的客户)

软件重构

共享的代码所有权

用隐喻来组织系统

可以忍受的速度

软件开发的过程是:需求分析、设计、编码和测试。

需求分析:不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据……为了清楚地知道这些需求,你经常要和客户、项目经理等交流。

设计:编码前,肯定有个计划告诉你要做什么,结构是怎样等等。你一定要按照这个来做,否则可能会一团糟。

编码:如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。

测试:目的是让你知道,什么时候算是完成了。如果你聪明,你就应该先写测试,这样可以及时知道你是否真地完成了。否则,你经常会不知道,到底有哪些功能是真正完成了,离预期目标还差多远。

基于敏捷的核心思想和价值目标,XP要求项目团队遵循13个核心实践

团队协作(Whole Team)

规划策略(The Planning Game);

结对编程(Pair programming)

测试驱动开发(Testing-Driven Development)

重构(Refactoring)

简单设计(Simple Design)

代码集体所有权(Collective Code Ownership)

持续集成(Continuous Integration)

客户测试(Customer Tests)

小型发布(Small Release)

每周40小时工作制(40-hour Week)

编码规范(Code Standards)

系统隐喻(System Metaphor)

极限编程的4个商业实践:

测试驱动开发—TDD是你的商业安全网。因为测试是在编码之前完成的,所以写完的测试一定会运行失败,接下来再写代码使测试可以通过。TDD保证你的产品功能,不管公司和技术团队实现的是大规模的变更还是小规模的变更。

结对编程—让2名开发人员写同一段代码,使用同一个键盘和同一台显示器。因为结对大大降低了浪费的时间和缺陷,所以能带来更高质量的代码,并带来高水平的协作。

集体代码所有制和持续集成—如果每段代码不只有一个人熟悉,那么就不会有什么交流瓶颈了。把代码持续集成到一个主干可以避免重复和不匹配的代码。

重构—在当时的情况下,写的代码是解决已知问题的。通常,团队巧妙地解决了他们的问题,然后持续重构和修改代码,确保代码库能以最为高效的方式不断满足业务最新的需要。

水晶方法,Crystal,是由 Alistair Cockburn 和 Jim Highsmith 建立的敏捷方法系列,其目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。Crystal 家族实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,它的发明使得敏捷团队可以根据其项目和环境选择最合适的 Crystal 家族成员。

Crystal系列开发方法,分为Crystal Clear,Crystal Yellow,Crystal Orange和Crystal Red分别适用于不同的项目。项目可以按照参加的人员和重要性划分。

重要性根据项目中的错误引发的后果分为:

C :Loss of comfort (某些不舒适)

D :Loss of discretionary money (经济损失)

E :Loss of Essential Money (严重经济损失)

L :Life Critical (生命危险)

一个项目称为C6说明参加人员在6人以下,重要性是C级,D20说明人员在6-20人,重要性是D级。

Crystal系列开发方法中,所适用的开发人员数量以及重要等级如下:

Crystal Clear适用于 C6,D6项目

Crystal Yellow适用于 C20,D20,E20项目

Crystal Orange 适用于 C40,D40,E40项目

Crystal Red 适用于 C80,D80,E80项目

在这里,主要是介绍一下Crystal Clear——透明水晶方法。透明水晶方法,适合于一个小团队来进行敏捷开发,人数在6人以下为宜。

七大体系特征

经常交付

任何项目,无论大小、敏捷程度,其最重要的一项体系特征是每过几个月就向用户交付已测试的运行代码。如果你使用了此体系特征,你就会发现,“经常交付”的作用还是很让人吃惊的。

项目主办者根据团队的工作进展获得重要反馈。用户有机会发现他们原来的需求是否是他们真正想要的,也有机会将观察结果反馈到开发当中。开发人员打破未决问题的死结,从而实现对重点的持续关注。团队得以调整开发和配置的过程,并通过完成这些工作鼓舞团队的士气。

反思改进

在我们的开发中,时常会出现这样那样的问题,技术难题、各种烦心事等等,这会在很大的程度上影响项目的进展。而且,如果其他任务对这项任务有依赖的话,那么其他的任务也会被推迟,这就很可能会导致项目的失败。

换句话说,如果,我们能够经常在迭代会中及时的反思和改进,那么,这种事情应该是不会发生的,或者说发生了,也能够很快的找到解决方案去应对它。事实上,从慌乱的日常开发中,抽出一点时间来思考更为行之有效的工作方法就已经足够了。

渗透式交流

渗透交流就是信息流向团队成员的背景听觉,使得成员就像通过渗透一样获取相关信息。这种交流通常都是通过团队成员在同一间工作室内工作而实现的。若其中一名成员提出问题,工作室内的其他成员可以选择关注或不关注的态度,可以加入到这个问题的讨论当中来,也可以继续忙自己的工作。

个人安全

个人安全指的是当您指出困扰您的问题时,您不用担心受到报复。个人安全非常重要,有了它,团队可以发现和改正自身的缺点。没有它,团队成员们知而不言,缺点则愈发严重以致于损害整个团队。个人安全是迈向信任的第一步。有了信任,团队协作才能真正的实施,开发效率也就会直线上升的。

焦点

所谓“焦点”,就是确定首先要做什么,然后安排时间,以平和的心态开展工作。确保团队成员清楚的了解他们自己最重要的任务是什么,确保他们能够有充分的时间去完成这些任务。

与专家用户建立方便的联系

与专家用户持续建立方便的联系能够给团队提供:对经常交付进行配置以及测试的地方,关于成品质量的快速反馈,关于设计理念的快速反馈,最新的(用户)需求。

配有自动测试、配置管理和经常集成功能的技术环境

自动测试可以为开发人员在代码修改后就可以进行自动测试,并且能够发现存在的一些bug,以至开发人员能够及时的进行修改,对于他们来说,节省了时间,提高了效率,而且还不用为烦人的测试而苦恼。

配置管理系统允许人们不同步地对工作进行检查,可撤消更改,并且可以将某一系统设置保存后进行新系统的发布,当新系统出现问题,即可还原原系统的设置。

经常集成可以使得团队在一天之内对系统进行多次集成。其实,团队越频繁地对系统进行集成,他们就能够越快地发现错误,堆积到一起的错误也会越少,并使他们产生更新的灵感。

最好的团队是将将这三大技术结合成“持续测试集成技术”。这样做他们可以在几分钟内发现因集成所产生的错误。

推荐策略

尽管透明水晶方法并不要求掌握或者运用某些特定的策略或方法,但倘若在启动阶段能熟识一套有效的方法体系则是件有利的事情。透明水晶推荐的

水晶架构的迭代胡基本三个过程:

章程

交付迭代

项目总结

水晶纲领:

建设团队

做探索性的360

为团队定义实践标准

建立初始项目的计划。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190206G0B58Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券