写点什么

行为驱动开发:通过协作传递价值

  • 2014-01-02
  • 本文字数:1086 字

    阅读完需:约 4 分钟

软件项目的目的是向利益干系人交付价值,而行为驱动开发(BDD)正是为此而生。在阐述对于BDD 的看法时, Viktor Farcic 表示:BDD 能够确保在整个项目过程中,项目聚焦于为利益干系人提供的价值。

作为一位从事从瀑布模型向敏捷过程转型方面工作的软件开发者,Viktor 继续补充道:BDD 的一条准则是必须用每个人都能理解的方式来撰写需求。作为对比,在传统的瀑布式项目中,许多情况下人们都不知道或是忘记了要向利益干系人交付价值。参与此类项目的大部分人关心的是“完成各自部分的工作”,然后将工作“抛给墙那边”负责下一阶段任务的人。

在 BDD 中描述需求的关键是故事,Viktor 将故事的形式概括为两部分组成元素:介绍描述(Narrative)以及随后出现的一个或多个情形(Scenario)。介绍描述是从提出新功能要求的某个人或某个角色的角度,对功能所做的一段简短的叙述。它恰到好处地为所有涉及到的人(业务分析师、开发者、测试者等待)提供了沟通的基础,并且是以对话而不是编写描述为中心。其目的在于回答这样三个问题:价值是什么?对谁来说它是有价值的?实际特性是什么?回答这些问题后,团队就可以开始与利益干系人协作,定义最佳解决方案。

介绍描述将通过情形来进一步定义——这些情形提供了对完成的定义以及接收的标准,用来确认针对介绍描述进行的开发,其输出的成果能够满足预期。

对 Viktor 来说,尽管介绍描述拥有某些传统需求的特性,但他相信依旧存在一些非常重要的不同。其中之一在于以下二者之间的区别:重视口语化和持续沟通,与使用可能非常不精确的语言。另外一点不同则是重视使用特性来描述功能,而不是使用大量如下形式的文字陈述:“该系统应该……”——后者往往会妨碍读者理解项目的整体视图和真正的目标。

最后,Viktor 介绍了让 BDD 向着自动化方向前进的内容——可以通过许多不同框架来执行 BDD 中的情形,例如 JBehave Cucumber SpecFlow Jasmine 。他的建议是分三步走来实现 BDD 自动化:

  • 创建标准化步骤的库,以帮助将情形从实际代码中分离,从而简化非开发人员编写故事的工作。
  • 在更高的业务层面将这些步骤整合,以便分析师和其他类似角色更好地理解。
  • 使用实例表(example table),以便同一个情形可以被执行若干次,并在每次执行中配备不同的参数集。

Victor 的建议是,从第一阶段入手,直到采取足够的措施以支持创建第一个情形后,再继续落实后面两阶段的内容。

Dan North 在 2006 年开发了 BDD,并撰写了一份入门简介,以及在BDD 中如何编写故事

实例化需求(specification by example)是一种与BDD 密切相关的需求定义方法。

查看英文原文: Behaviour-Driven Development: Value through Collaboration

2014-01-02 07:361578
用户头像

发布了 256 篇内容, 共 74.5 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

Java批量导入去除重复数据并返回结果,我差点就被放倒了

小Q

Java 学习 程序员 架构

腾讯WeMap,一颗“孢子”的数智化之旅

脑极体

【涂鸦物联网足迹】涂鸦云平台接口列表—万能红外遥控器

IoT云工坊

人工智能 云计算 物联网 API 红外遥控器

《我想进大厂》之Java基础夺命连环16问

艾小仙

Java 面试 编程语言

iptables 端口转发

田振宇

实时音视频面视必备:快速掌握11个视频技术相关的基础概念

JackJiang

音视频 即时通讯 视频

CloudQuery v1.2.1 版本发布

BinTools图尔兹

数据库 开发者 运维 工具 开发工具

搞微服务用阿里开源的 Nacos 真香啊!

阿里巴巴 开源 编程

LeetCode题解:剑指 Offer 22. 链表中倒数第k个节点,使用栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

第八周作业

Geek_4c1353

极客大学架构师训练营

年末十家手机银行数字化升级大盘点:谁家开发更全面?谁家建设更到位?

CECBC

疫情 银行 手机银行

「架构师训练营」第 4 周作业

小黄鱼

极客大学架构师训练营

当Tomcat遇上Netty,我这一系列神操作,同事看了拍手叫绝

小Q

Java 学习 程序员 架构 面试

从应用开发角度认识K8S

LorraineLiu

容器 云原生 k8s入门

浅谈程序员的“内卷化”

数据社

SpringBoot启动原理

编程门槛 框架设计 spring Boot Starter】

对比一下,你的简历是不是也写成了这样,能拿高薪才怪了

小Q

Java 学习 架构 面试 简历

重拳出击!平台经济反垄断,互联网巨头市值蒸发千亿

CECBC

小额贷款 反垄断

阿里首发MySQL“完美日记”,基础+优化+事务+集群+锁+主从复制+安全备份

Java架构追梦

Java MySQL 数据库 架构 面试

与第三方系统打通的N种进阶方式

棒锤🐮

架构

科技助力餐饮,普渡送餐机器人在餐博会上被众人围观!

DT极客

腾讯云直播全解析,双11怎么买才不亏?

腾讯云音视频

腾讯云 阿里云 云直播 直播 视频

11.11 程序员的 1111 种死法

京东科技开发者

程序员 程序人生

面试官问我redis数据类型,我回答了8种

数据库 学习 面试

奈学教育荣获“中关村高新技术企业”认证

奈学教育

奈学教育

奈学教育荣获“中关村高新技术企业”认证

古月木易

教育 IT

架构训练营-week8-数据结构与算法,网络,IO

于成龙

极客大学架构师训练营 架构训练营

第七周作业

Geek_4c1353

极客大学架构师训练营

我终于拥有自己的独立博客了。

彭宏豪95

GitHub 写作 博客 IT

当Nginx遇上Tomcat集群,又是一场负载均衡的爱恨情仇

小Q

nginx tomcat 学习 架构 面试

践行新基建,共建城市智能体,为数字经济发展提供新动能

CECBC

云计算 大数据

行为驱动开发:通过协作传递价值_语言 & 开发_Jan Stenberg_InfoQ精选文章