敏捷发展到今天已经在软件行业得到了广泛认可,但大多数敏捷方法都是为了解决某一特定问题而总结出来的特定方法或实践,一直缺乏一个可以将整个开发过程串接起来的成体系的方法。用户故事驱动的敏捷开发(User Story Driving Agile Development – UDAD)就是这样一套方法和实践,希望能够在软件开发的各个过程都提供最有效的方法让希望采用敏捷的团队能够有一个整体的方法论作为指导。

如何你对敏捷还缺乏了解,可以阅读以下文档:

关于敏捷开发

UDAD中采用了以下几个已经被广泛认可的方法和工具:

  • 影响地图
  • 用户故事地图
  • 视觉引导
  • Scrum
  • Kanban
  • 持续集成
  • 探索性测试
  • 自动化部署

另外,配合以上方法也提供了可以为团队和方法提供支撑的工具支持,在当前的版本中所使用的是微软的Team Foundation Server作为软件全生命周期管理平台。

完整版PPT下载

1 – 重新认识软件开发过程

相对于传统工业化生产中已经标准化的生产制造过程,大多数人所理解的软件“生产制造”过程其实相当于制造原型车的“设计”过程。这也是为什么使用管理标准化的汽车装配生产线的方法(瀑布模式)来管理一直处于设计阶段的软件开发过程是从根本上错误的。

要让软件开发这个“创造”过程变得靠谱(可管理),我们要解决就是内容-实践-质量这3个维度上的平衡问题,而这种平衡必须是在目标不明确,多快好省的交付的前提之下。

敏捷开发的过程管理方法论都是建立在利用变化来适应变化的方法,让我们在面对“复杂”项目的时候可以提高项目成功的可能性。

2 – 什么是用户故事

用户故事是随着敏捷被提出的一种需求管理方法,它既是一种对需求的描述方法,也是协助团队理解需求和管理后续开发过程的基点。

我们必须牢记的是用户故事不用用来写的,而是用来进行讨论,记忆和跟踪的。人类的大脑从来都不擅长记忆大量繁杂的信息,但是我们却可以对很多的场景记忆犹新。采用可视化的方法来讨论需求,并通过结构化的方法帮助团队成员建立对需求的统一理解才是用户故事的核心。

除了协助我们进行需求的设计和规划,在开发过程中我们也要使用用户故事作为我们跟踪整个过程的线索,来组织后续的所有过程,以及团队成员的写作方式,工具的使用,以及最终用户的反馈。

3 – 设计与规划过程

设计过程中我们主要解决的是如何产生需求的过程,这部分内容可以参考以下文章:

用户故事驱动的敏捷开发 – 1. 规划篇

这里主要使用了2个工具:

影响地图:请参考以下这几篇文章

用户故事地图:请参考以下这几篇文章

4 – 计划过程

进入到项目的运作过程中,敏捷中成熟的Scrum和Kanban方法就是团队最好的选择,同时由于之前的规划过程建立的良好基础,后续运行Scrum和Kanban的时候就都有了很好的起点。解决了初次接触这些过程方法的团队不知如何入手的难题。

对这一过程的详细描述可以参考:

用户故事驱动的敏捷开发 – 2. 创建backlog

关于Scrum和Kanban方法请参考:

5 – 迭代开发过程

开发过程中,各种角色的交互会变得越来越复杂,我们需要有一个可视化的方法来让各种不同的角色清楚知道自己所做的事情与其他人的关系,这里Kanban就成了最好的方法。以上列出了TFS中的电子看板的一些主要特性,但是电子化工具与物理工具之间永远各有优势,建议团队要根据情况酌情使用。

开发过程中的coding flow是影响开发人员效率的关键过程,以上列出了一个使用feature branch结合pull request和CI的coding flow。

关于这个过程可以参考以下这篇文档:

持续交付 – 持续集成,自动化发布和自动化测试

6 – 持续交付及反馈过程

有个持续集成作为基础,我们就可继续建立发布管道。能够将应用快速稳定的进行部署是衡量一个团队DevOps实践的重要能力指标,也是大幅缩短MTTR的重要手段。同时,借助探索测试工具,我们可以让用户/业务人员和开发团队紧密结合,形成快速反馈机制。

关于这一过程可以参考以下文档:

快速修复生产问题

总结

至此,UDAD就完成了一个软件开发的闭环。


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

​

UDAD 用户故事驱动的敏捷开发 – 演讲实录的更多相关文章

  1. 用户故事驱动的敏捷开发 – 2. 创建backlog

    本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backl ...

  2. 敏捷开发(Scrum)与敏捷测试

    1.敏捷测试流程和传统测试流程 软件测试是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,也是对软件产品质量持续的评估过程,其目的是尽快尽早地发现在软件产品(包括阶段性 ...

  3. 菜鸟Scrum敏捷实践系列(一)用户故事概念

    菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 敏捷开发 ...

  4. 敏捷开发 Scrum 综述

    敏捷开发 Scrum 综述 这一星期学习了敏捷开发,然后阅读了相关的书籍,从网上查找了很多相关的资料,对敏捷开发scrum有了更加深刻了理解,对敏捷开发做了如下总结: 一.什么是敏捷开发? 敏捷开发提 ...

  5. 用户故事地图(User Story Mapping)之初体验

    北京这几日的天儿真是好的出奇,白天风和日丽,晚上繁星漫天:在这样一个周六的下午,小编参加了一次北京敏捷社区(微信号:Agile1001)组织的活动:<用户故事地图User Story Mappi ...

  6. 划分用户故事(user-story)的原则

    在敏捷开发过程中是通过用户故事来将需求具体化成可以进行迭代开发的一个个现实的可见的开发任务.因此在敏捷软件的开发过程中,用户故事的划分对于迭代和开发起着举足轻重的作用. 用户故事从其名字来看是站在用户 ...

  7. 打造Worktile敏捷开发管理工具的思与惑

    从2019年初,我们团队准备开发一款适合研发团队使用的敏捷开发管理工具,那时候我们也在思考,到底什么样的工具才算是优秀的研发管理工具,研发管理的场景.方法和流派有很多,市面上关于研发管理工具的产品也是 ...

  8. 武林高手?敏捷开发,唯velocity取胜

    去年学习软件工程教材,初识敏捷开发.目前所在的团队,也是使用敏捷开发方式.今天读了这篇文章,对于这段时间的效率有所警醒.其次,个人认同文章中的用户故事,结对编程思想. 文章援引:http://gitb ...

  9. 敏捷开发学习笔记-Agile development(AM)

    以人为核心,迭代,循序渐进 项目被切分为多个子项目,每个子项目都经过测试,具备集成和可运行的特征 5个价值观:沟通.简单.反馈.勇气.谦逊   敏捷模型与瀑布模型的区别 相对于瀑布模型,提高开发效率和 ...

随机推荐

  1. linux下select/poll/epoll机制的比较

    select.poll.epoll简介 epoll跟select都能提供多路I/O复用的解决方案.在现在的Linux内核里有都能够支持,其中epoll是Linux所特有,而select则应该是POSI ...

  2. TextView使用大全

    最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,写一个系列的话,大家学习起来也有头有尾. 今天就从我们每 ...

  3. ubuntu14.04安装及web环境的搭建

    在进行接下来的工作之前首先得准备一个Ubuntu的启动U盘以及腾出一个至少50G的系统盘(在网上看到有人用20G的,不知道效果怎么样).关于Ubuntu启动U盘大家可以参考这个帖子 http://ti ...

  4. AFNetworking 3.0 源码解读(二)之 AFSecurityPolicy

    在我们平时的开发中,对网络连接安全方面所做的努力,应该占据很重要的位置. 在解释AFSecurityPolicy之前,我们先把基础的http/https 知识简单的普及一下.获取这方面的信息可通过这本 ...

  5. 【Python五篇慢慢弹(3)】函数修行知python

    函数修行知python 作者:白宁超 2016年10月9日21:51:52 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...

  6. 【读fastclick源码有感】彻底解决tap“点透”,提升移动端点击响应速度

    申明!!!最后发现判断有误,各位读读就好,正在研究中.....尼玛水太深了 前言 近期使用tap事件为老夫带来了这样那样的问题,其中一个问题是解决了点透还需要将原来一个个click变为tap,这样的话 ...

  7. 编写高质量代码:改善Java程序的151个建议(第3章:类、对象及方法___建议47~51)

    建议47:在equals中使用getClass进行类型判断 本节我们继续讨论覆写equals的问题,这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JavaBe ...

  8. JavaScript 垃圾回收

    在公司经常会听到大牛们讨论时说道内存泄露神马的,每每都惊羡不已,最近精力主要用在了Web 开发上,读了一下<JavaScript高级程序设计>(书名很唬人,实际作者写的特别好,由浅入深)了 ...

  9. ThreadLocal<T>的是否有设计问题

    一.吐槽 ThreadLocal<T>明显是.NET从JAVA中来的一个概念,但是这种设计是否出现了问题. 很明显,在JAVA中threadLocal直接是Thread的成员,当然随着th ...

  10. C++智能指针

    引用计数技术及智能指针的简单实现 基础对象类 class Point { public: Point(int xVal = 0, int yVal = 0) : x(xVal), y(yVal) { ...