前面我们介绍了Scrum、精益和看板,这三种都偏向于过程管理,代表敏捷方法论的一大派系。在敏捷领域,还存在另一大派系面向工程实践,代表性的有极限编程(eXtreme Programing,XP)。这两个派系分别从开发方法和管理方法给出了各自关于敏捷方法论的阐释,但两种之间也存在一定的共性。

针对如何实施敏捷方法,目前主流的做法就是把极限编程与其它过程管理框架合起来一起应用,通过Scrum、看板等先确定软件开发的基本流程和步骤,再通过极限编程中的各项工程实践来具体实现这些流程和步骤。本文对极限编程同样做一个简要介绍。

1. 极限编程方法

极限编程方法试图解决的问题包括软件不能适应需求变化、软件缺陷多、代码质量低、设计不良、项目中浪费大、开发效率低等各个方面。对于如何解决这些问题,极限编程认为可以提炼出一批工程实践用于指导软件开发工作。

回到迭代模型,极限编程是迭代思想的一种表现形式,包括多种迭代形式,分别为分钟级迭代、小时级迭代、每日迭代、数日迭代、一周迭代和季度迭代,每一种迭代形式都有对应的工程实践(见下图)。除此之外的一系列工程实践也确保每种迭代形式能够正确有效的执行。

在引入极限编程过程中,我们也发现不能完全套用流程,可以从工程实践出发,先引入面向技术的简单的工程实践,再扩展到交互和流程性工程实践。很多时候也推荐与Scrum等管理框架进行整合。

2. 极限编程工程实践

极限编程包含了大量可以直接使用的工程实践,下图列举了其中的一部分,更多的工程实践课参考《敏捷开发的艺术》一书。工程实践的分类可能有不同的标准,通常在敏捷开发中,团队级别的思考和协作意识是一个重要话题,可以构成一个分类;基于迭代模型的计划和发布方法在开发过程中的应用是敏捷区分其他方法论的关键,可以构成一个分类;极限编程从派系上是一种开发方法,开发也可以构成一个分类。

协作与工程实践包括结对编程(Pair Programming)、信息化工作场地、真实用户参与、统一协作语言(Ubiquitous Language)、站立会议、编码规范、迭代演示、上级汇报等。计划发布与工程实践包括用户故事(User Story)、发布计划、迭代计划、计划游戏和持续集成(Continuous Integration,CI)等。而测试驱动开发(Test Driven Development,TDD)、客户测试、重构、简单设计、试验方案(Spike Solution)等工程实践属于开发范畴。

在诸多极限编程工程实践中,一般认为结对编程和测试驱动开发属于比较难以做到的实践,而信息化工作场地、站立会议、重构、试验方案实施起来相对就容易很多。而有些工程实践我们认为推行起来有难度但还是需要我们努力去实施,包括统一协作语言、编码规范、持续集成、发布计划和迭代计划、故事和估算、客户测试等。

当你的团队规模逐步变大,就需要考虑团队成员之间的有效沟通和协作问题,这种有效的沟通和协作通常已经很难通过面对面交流来实现,而必须要有相对完备的文档和过程资产,这时候敏捷尤其是极限编程中的部分工程实践是可以也是应该作为一种过程集成化的手段嵌入到团队运作中去,例如把大团队分组成小团队,大团队有自己完整的工作流程,而在小团队内部可以实行坐在一起、站立会议等实践,这种敏捷实践的嵌入式推行方式相对比较容易,效果也不错。

如果对文章感兴趣,可以关注我的微信公众号:程序员向架构师转型,或扫描下面的二维码。

我出版了《系统架构设计:程序员向架构师转型之路》、《向技术管理者转型:软件开发人员跨越行业、技术、管理的转型思维与实践》、《微服务设计原理与架构》、《微服务架构实战》等书籍,并翻译有《深入RabbitMQ》和《Spring5响应式编程实战》,欢迎交流。

敏捷方法 - 极限编程与工程实践相关推荐

  1. 敏捷软件开发——敏捷方法、极限编程、Scrum

    快速的软件开发过程就是为迅速制造可用软件而设计的.软件的开发和部署不是一次完成的,而是以一系列增量的形式完成的,每一个增量包括新的系统功能.尽管有很多快速软件开发的方法,它们都有一些基本的特性: 描述 ...

  2. 【中级软考】什么是“敏捷过程的开发方法(敏捷方法agile)“(极限编程XP、特征驱动开发FDD、并列争球法Scrum、水晶法Crystal、开放源码法、自适应软件开发 ASD方法)

    文章目录 敏捷方法 1 极限编程 XP 1.四大价值观 2.十二个最佳实践 2 特征驱动开发 FDD 1.FDD 角色定义 2.核心过程 3.最佳实践 3 并列争球法 Scrum 1.Scrum 的五 ...

  3. C++接口工程实践:有哪些实现方法?

    简介:程序开发的时候经常会使用到接口.众所周知,C++语言层面并没有接口的概念,但并不意味着C++不能实现接口的功能.相反,正是由于C++语言没有提供标准的接口,导致实际实现接口的方法多种多样.那么C ...

  4. XP框架开启debug模式_敏捷方法之极限编程(XP)和 Scrum

    敏捷软件开发(Agile software development),又叫敏捷开发,是一种应对开发过程中需求快速频繁变更的软件开发能力.敏捷开发强调开发团队与业务专家之间的紧密协作.面对面的沟通.频繁 ...

  5. 哈工大软件过程与工具复习2——第3-6讲 过程模型、敏捷方法、项目管理、软件演化和Git

    目录 一.软件过程模型 1. 软件过程 2. 典型软件过程模型 (1)瀑布模型 (2)增量过程模型 (3)演化过程模型 二.敏捷方法与过程 1. 敏捷过程模型 2. 极限编程 3. Scrum 4. ...

  6. 使用好的工程实践交付可交付产品

    Scrum和敏捷讲师Mohammad Nafees Sharif Butt指出,好的工程实践是一种工具,有助于敏捷团队交付可交付产品.虽然不少工程实践已被证明是有效的,但它们并没有得到应有地广泛使用. ...

  7. 工程实践规模化推进要点分析

    本文纲要 [引言] [技术教练团队] [持续集成] [哪些实践更加优先] [复杂的自动化测试] L0自动化测试 L1自动化测试 L2自动化测试 L3自动化测试 [组织级工程实践氛围建设] [小结] [ ...

  8. 浩鲸科技基于ChaosBlade的混沌工程实践

    简介:浩鲸科技在海量互联网服务以及当前爆炸式增长的流量场景实践过程中,沉淀出了包括,链路压测,流控管理,动态扩缩容,故障演练等高可用核心技术,并通过云上服务化.平台化和工具化的形式,帮助内部产品研发部 ...

  9. 用户故事与敏捷方法pdf

    下载地址:网盘下载 内容简介  · · · · · · <用户故事与敏捷方法>详细介绍了用户故事与敏捷开发方法的结合,诠释了用户故事的重要价值,用户故事的实践过程,良好用户故事编写准则,如 ...

最新文章

  1. Cisco路由器故障诊断技术
  2. 设计模式原则--单一职责原则
  3. RedHat系统的Yum安装
  4. stm32移植paho_paho.mqtt.c开源代码的ARM移植
  5. C语言图书管理信息系统
  6. 中介效应分析及R实现
  7. Java 14中对switch的增强,终于可以不写break了
  8. 双向可控硅晶片光耦(TLP160J TLP260J TLP525G)基本原理及应用实例
  9. Unity太空大战游戏-Socket网络通信教学示例
  10. win8、server 2012 清除winsxs文件夹
  11. 阿里云、百度云、腾讯云、AWS、微软Azure、华为云、金山云等云服务商产品的差异是啥?
  12. BH1750光照传感器超详细攻略(从原理到代码讲解,看完你就懂了)
  13. 巧妙地帮你的手机节省流量,担心流量超出的机友们看过(转)
  14. 【微信公众平台开发之一】微信公众平台开发环境搭建
  15. android 系统输入法显示与隐藏监听
  16. python快速实现简易俄罗斯方块小游戏
  17. tomcat宕机自动重启和每日定时启动tomcat【工具包系列】
  18. 烟雨江湖小米鸿蒙,烟雨江湖小米时装怎么拿? 小米衣服获取方法详解[多图]
  19. 机器人建模中移动关节如何建立坐标系_机器人建模
  20. STC12CA560S2 ADC/PWM相关例程

热门文章

  1. 【FreeRTOS】11 软件定时器
  2. Python几种开发工具介绍
  3. 【路径规划】基于matlab蚁群算法机器人栅格地图最短路径规划【含Matlab源码 119期】
  4. 【06月05日】A股滚动市净率PB历史新低排名
  5. Unity XLua 相关
  6. 液晶拼接屏仍然是安防监控的应用领域
  7. python:画python,即绘制蟒蛇图像
  8. NPN三极管放大原理
  9. 微信公众号推送多图文消息,直接跳转至外部链接(wxJava)
  10. 使用Quartus II9.0验证74161计数器