敏捷发展到今天已经在软件行业得到了广泛认可,但大多数敏捷方法都是为了解决某一特定问题而总结出来的特定方法或实践,一直缺乏一个可以将整个开发过程串接起来的成体系的方法。用户故事驱动的敏捷开发(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. Markdown是怎样接管我的各种的写作工作的

    对于一个程序猿来说,没有什么比单纯的写代码更能让人兴奋了.如果能让你像写代码一样写文档,不用再面对那些繁琐的样式,你会怎么看?它就是Markdown!即使博客园已经有不少介绍的文章了,但是我依然还是不 ...

  2. 正确地编写Objective-C中的便捷方法

    在Objective-C中,如果某个类方法的返回类型就是这个类的实例(例如NSString类中的stringWithFormat:),就可以将这种类方法称为便捷方法(Convenience Metho ...

  3. ABP(现代ASP.NET样板开发框架)系列之14、ABP领域层——领域事件(Domain events)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之14.ABP领域层——领域事件(Domain events) ABP是“ASP.NET Boilerplate P ...

  4. JS 对象封装的常用方式

    JS是一门面向对象语言,其对象是用prototype属性来模拟的,下面,来看看如何封装JS对象. 常规封装 function Person (name,age,sex){ this.name = na ...

  5. CSS3与页面布局学习总结(五)——Web Font与Sprite

    一.web font web font是应用在web中的一种字体技术,在CSS中使用font-face定义新的字体.先了解操作系统中的字体: a).安装好操作系统后,会默认安装一些字体,这些字体文件描 ...

  6. js判断本机是否已安装app

    需求:在浏览器或者app webview中打开的页面,js判断本机是否已安装搜狐新闻客户端. 一.微信 1.分享——好友/朋友圈,feed会有搜狐新闻标记,打开url后缀参数isappinstalle ...

  7. Kafka如何创建topic?

    Kafka创建topic命令很简单,一条命令足矣:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-facto ...

  8. Entity Framework实现多列排序

    aList.OrderBy(a => a.WIndex).ThenBy(a=>a.KIndex) 类似sql:order by WIndex,KIndex

  9. iis6.0与asp.net的运行原理

    这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...

  10. C#开发微信门户及应用(20)-微信企业号的菜单管理

    前面几篇陆续介绍了很多微信企业号的相关操作,企业号和公众号一样都可以自定义菜单,因此他们也可以通过API进行菜单的创建.获取列表.删除的操作,因此本篇继续探讨这个主体,介绍企业号的菜单管理操作. 菜单 ...