NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 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:361448
用户头像

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

关注

评论

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

将 Terraform 生态粘合到 Kubernetes 世界

阿里巴巴云原生

阿里云 容器 云原生 KubeVela terrafrom

干货分享 | 数据仓库如何应对资源不足?9招解除故障

雨果

数据仓库

国产EDA验证调试工具实现破局 助力芯片设计效率提升

科技热闻

TDesign 组件库技术方案指北

TDesign

开源 Vue React 组件库

查找——概念了解

乔乔

7月月更

AOP 注解详解

武师叔

7月月更

JS 逆向 SMZDM 的登录加密,你学过全文扣JS代码解密吗?

梦想橡皮擦

Python 爬虫 7月月更

互联网裁员潮来袭,这5类职场人最容易被淘汰

雨果

互联网裁员

ShardingSphere 云上实践:开箱即用的 ShardingSphere-Proxy 集群

SphereEx

数据库 云原生 ShardingSphere

软件架构-概述

架构

数据治理实施前必须准备的21条锦囊妙计

雨果

数据治理

DNS稳定性建设实战-从主机到k8s

boaker

k8s DNS 成本优化 DNS故障 稳定性保障

自己搭建git服务器:linux自己Gitlab服务

zhoulujun

gitlab git私有参考 git部署 git服务端

一文搞懂│工厂模式、单例模式、策略模式、适配器模式、观察者模式的原理和使用

设计模式 策略模式 观察者模式 适配器模式 7月月更

新思科技聚焦开源治理 助力提升中国开源产业安全及合规水平

InfoQ_434670063458

开源 软件 供应链 新思科技

大数据基础知识介绍

Lansonli

大数据 7月月更 大数据基础

一文读懂:本地数据湖丨数据仓库丨云数据湖的利与弊

雨果

数据仓库 数据湖

web前端培训4个常见的算法问题分享

@零度

算法 前端开发

百问百答第46期:极客有约——可观测四类问题的核心思想解析

博睿数据

APM 智能运维 博睿数据 可观测 性能监测

面对裁员?焦虑?不如好好投资自己

沃德

程序员 7月月更

新思科技助力提升开源治理水平

InfoQ_434670063458

开源 新思科技 软件供应链

Node.js异步编程之Promise

是乃德也是Ned

node.js 前端 7月月更

离线批处理的咽喉——Flume基础配置简析

怀瑾握瑜的嘉与嘉

flume 7月月更

想低成本保障软件安全?5大安全任务值得考虑

SEAL安全

安全左移

6月月更开奖!速来领取你的奖品!

InfoQ写作社区官方

热门活动 6月月更

数据架构师、数据分析师、数据工程师哪个工资更高?

雨果

数据分析师 数据工程师 数据架构师

得物App数据模拟平台的探索和实践

得物技术

大前端 方案设计 Mooncake 数据模拟平台

官宣|九章云极DataCanvas核心产品通过 “可信大数据”权威评测

九章云极DataCanvas

人工智能 大数据 数据处理 中国信通院 实时决策

java培训如何防止 jar 被反编译

@零度

JAVA开发 jar被反译

《看完就懂系列》聊聊CSS3的 calc() 函数

南极一块修炼千年的大冰块

7月月更

阿里云机器学习平台PAI论文高效大模型训练框架Whale入选USENIX ATC'22

阿里云大数据AI技术

深度学习 分布式训练 异构计算

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