写点什么

用户故事图谱与领域驱动设计的结合应用

  • 2015-12-28
  • 本文字数:976 字

    阅读完需:约 3 分钟

Eriksen Costa 在一篇博客文章中讨论了在项目设计中结合使用用户故事图谱(User Story Mapping)与领域驱动设计(DDD)所带来的优势。在他看来,开发者们往往会由于某个需求特性开发的压力而忽略一些必要的对话,而这种对话能够帮助参与者建立起对业务的共识。这些开发者们更愿意参与技术性的讨论,并直接进入特性的实现阶段。这样一来,他们就丧失了深入学习相关领域,并通过领域的概念对软件进行建模的机会。

Costa 是 Wikidu 公司的 CTO,他表示:虽然我们会通过各种不同的实践保证软件系统的质量,例如测试驱动开发(TDD)和持续集成,但并不意味着这样设计出的系统能够自然地反映出对应的领域概念。为此,他引用了 Eric Evans 所编写的 DDD 著作中的内容:

如果程序员对于领域本身不感兴趣,那么他们所了解的仅限于应用程序所应有的行为,却丢失了这些行为背后的原则。虽说通过这种方式也能够创建出实用的软件,但这样的项目永远无法达到一种理想的状态:即强大的新特性将随着旧特性的演变而自然地浮现出来。

Costa 特别强调,DDD 方法为软件的开发提出了一种新的途径,它不再关注于技术本身,而是专注于通过开发者与领域专家的交流达成一种共识,在此基础上打造出一个模型以及通用的语言(即通用语言 Ubiquitous Language)以描述这一领域。

Costa 相信,创建用户故事图谱是实现共识的第一步,它有助于促使开发者们采用 DDD 方法。用户故事图谱能够更清晰地以可视化的方式显示整个项目的全局信息,帮助开发者确定用户故事开发的优先级。通过一种协作式的方式进行用户故事图谱的创建,能够模拟出相关的全部信息,并通过这些结果展开有效的对话。而开发者们也能够通过这一过程更好地理解他们的工作在全局中所扮演的角色。他同时相信,通过采取这种方式,能够在团队成员之间建立起更密切的联系,让他们更好地理解业务的目标。

Costa 在文中通过一个简短的速成教程解释了用户故事图谱的基本概念。除此之外, Jeff Patton Gojko Adzic 也撰写了大量有关用户故事和影响地图(Impact Mapping)的内容,其中一个示例叫做“通过汉堡方法切分用户故事”。

Costa 最后的结论是:在处理复杂领域的项目采用 DDD 方法时,使用用户故事图谱是一种简单而有价值的模式。它将帮助开发者与领域专家创建共享的领域知识,以及项目起始的通用语言词汇表。

查看英文原文: Combining User Story Mapping with Domain-Driven Design

2015-12-28 18:003492
用户头像

发布了 428 篇内容, 共 176.8 次阅读, 收获喜欢 38 次。

关注

评论

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

Sealem Finance-基于Web3的全新去中心化金融平台

小哈区块

细数十大信息安全原则

阿泽🧸

信息安全 6月月更

数的奥秘之幂数与完全平方数

未见花闻

6月月更

Sealem Finance打造Web3去中心化金融平台基础设施

BlockChain先知

线程池的创建

急需上岸的小谢

6月月更

【Spring 学习笔记(九)】Spring IoC/DI注解开发之纯注解开发

倔强的牛角

Java spring Java EE 6月月更

react管理渲染问题详解【王道react】

恒山其若陋兮

React 6月月更

InfoQ 极客传媒 15 周年庆征文|容器运行时技术深度剖析

liuzhen007

容器 运维 热门活动 InfoQ极客传媒15周年庆

学习笔记:插件化Activity之Hook点位

北洋

插件化 Andriod 6月月更

自动化测试系列

IT蜗壳-Tango

6月日更 6月月更

循环结构语句

Jason199

js 循环语句 6月月更

锁机制

卢卡多多

锁机制 6月月更

【sql语句基础】——增(insert)

写代码两年半

数据库 sql MySQL 数据库 6月月更

Android原生TabLayout使用全解析,看这篇就够了

yechaoa

android TabLayout 6月月更 material design

盲盒商城APP系统开发的软件特点和盲盒功能介绍

WDL22119

盲盒商城 盲盒开发 盲盒源码 盲盒H5开发 盲盒APP系统开发

Sealem Finance打造Web3去中心化金融平台基础设施

股市老人

远程办公经验 | 社区征文

弑着去忘记う

初夏征文

Redis stream Java API实践

FunTester

存储引擎分析

工程师日月

6月月更

Web3生态去中心化金融平台——Sealem Finance

西柚子

云数据中心中的SDN/NFV应用

穿过生命散发芬芳

SDN网络 6月月更

数据库每日一题---第8天:超过5名学生的课

知心宝贝

数据库 程序员 前端 后端 6月月更

vue指令-6

小恺

6月月更

ConcurrentHashMap 源码分析-ConcurrentHashMap与HashMap的异同

zarmnosaj

6月月更

curl导入postman报错小记

红毛丹

Postman 6月月更

Tornado简介&&本专栏搭建tornado项目简介

孤寒者

Python tornado 6月月更

为什么使用 Golang 进行 Web 开发

宇宙之一粟

golang 6月月更

leetcode 130. Surrounded Regions 被围绕的区域(中等)

okokabcd

LeetCode 搜索 数据结构与算法

快手处置超过5.4万个违规账号:如何打击平台上的违规账号

石头IT视角

了解 Vue 生命周期钩子

devpoint

Vue Vue3 钩子函数 vue2 InfoQ极客传媒15周年庆

用户故事图谱与领域驱动设计的结合应用_语言 & 开发_Jan Stenberg_InfoQ精选文章