系统故事 --- 让系统讲故事

??用户故事自最早1998年诞生以来,由于其突出的优点,到现在得到了广泛的应用。一般而言,用户故事里面的用户是人类用户,用户故事在表达人类用户与系统的交互方面已经证明了其有效性。

??那么当处理系统之间交互时,我们能不能参照用户故事来说明系统交互的需求? 让系统来讲讲故事?

这样的故事不妨称之为系统故事。

微博上有朋友形象的说这是瓦力和伊娃之间的故事。

在另外一篇文章中已经分析了用户故事的新扩展,见此链接,答案是肯定的。本文具体来说明系统故事。

??下面是按照故事经典句型给出的2个例子。

* 作为ATM系统,我要发送客户卡号给银行中央系统,这样可以获得客户的余额。

* 作为ATM系统,我要把客户取款成功的信息送给银行中央系统,这样可以记账

什么情况下需要识别系统故事?

??最典型的情况是两个系统分属不同部门或者团队在开发维护。采用故事的表达方式有利于跨部门或者团队来快速沟通。

??另外的情况是不同组件(或者叫子系统)之间的交互。利用系统故事来更清晰的说明,某种程度而言,这算属于设计的范畴。当然,这是为了让编程者更快的工作,属于什么范畴并不重要。

谁来识别系统故事?

?? 对于用户故事,一般是PO或者PO的助手来识别用户故事。而对于系统故事,也是相同道理,对于担当中间系统的PO来说,可以假设PO是知道系统之间业务意义上的交互的,了解系统交互是应当的。 当然了解系统交互的其他工程师同样可以担当系统故事的识别。而如果系统多数交互是与人类用户交互,而只有少数是与后台系统交互,那么PO可能并不了解与后台的交互,那么应当有其他了解后台交互的工程师来协助。

如何识别系统故事?

??从系统交互中识别系统故事,提议将有业务意义的最少交互可以识别为一个系统故事。

比如:

* 两个系统的时钟同步只是技术意义上的交互,不是系统故事

* 但凡传递业务信息,那么属于系统故事,比如ATM机向银行中央系统提交银行卡卡号和密码来签权

在这么多表示系统交互的图形中,推荐使用泳道图来绘制交互,在穿越泳道的地方来识别系统故事。

试图利用Wiki的表格来绘制泳道图,由于无法绘制箭头,活动顺序是在表格中从左到右,再从上到下。

分析对象是ATM机,大场景是取款。

储户 ATM 银行中央系统 银联系统
插卡登录 登录储户卡 校验用户身份,如果非本行用户,提交银联校验 校验用户身份
显示登录成功欢迎页
取款 核对储户余额 [[查询用户余额]],如果非本行用户,提交银联校验 用户余额
吐钱
获得现钞 校验取款结果 记账,非本行用户,提交银联记账 记账

银联系统放在上表中只为扩充理解。

系统故事有哪些好处?

  • 以故事形态进入的Backlog,与其它形态故事放在一起,可视化效果好
  • 容易让编程者理解,方便配套验收条件和自动化测试
  • 以故事的方式来进行接口设计,帮助进行架构演进

系统故事识别的优先级?

?? 如果能够识别覆盖系统故事的用户故事,并且该用户故事也方便进入迭代处理,那么优先识别用户故事,不必识别系统故事。

?? 虽然站在编程者角度的赋能故事(enabler story)也能表达系统故事的内容,但是系统故事的识别优先级高于赋能故事,因为系统故事对比赋能故事有更好的表现力,系统故事本身着眼于描述系统行为。

在用户故事、系统故事和赋能故事中,赋能故事的识别优先级最低,因为赋能故事描述的是赋能者(包括编程者、测试者)的行为,灵活多变,并不是描述系统的行为。

而一旦识别了系统故事,那么实现系统故事的编程者行为就不必再识别为赋能故事。

这与用户故事是一样的道理,没有必要把实现用户故事的行为作为赋能故事另外再识别出来。

如何描述系统故事?

?? 如同用户故事一样,采用讲故事的方式来描述系统故事。 如下推荐一种参考自用例规约的写法。

??首先给系统故事起标题,由于考虑到直观显示到看板,因此要尽量缩短标题,又能保持意思。

??其次概述这个故事,推荐采用故事描述经典句型:作为XX角色,我要做XXXXX,这样可以XXXXXX

??故事主体采用情景描述方法,先描述成功情景,也有基本流、主成功场景等另外的说法,再补充描述异常/失败情景,也有异常流、扩展场景等另外的说法。

??最后说明验收条件,设定类内容可以写在验收条件里面。由于以上的情景描述本身就是验收要点,因此有时候验收条件可以不用写。 比如如下例子中的条件如果已经写在了总体验收条件中,那么没有必要在故事内再重复说明。

如果有必要可以添加其它说明。

如下是示例:

标题:ATM查询客户人民币余额

概述:作为ATM系统,我要发送客户卡号给银行中央系统,这样可以获得客户的人民币余额。

成功情景:

1. ATM发送客户卡号到银行中央系统

2. 银行中央系统返回该卡的人民币余额

异常情景:

* 2a 无法链接到银行中央系统

* 2b 该卡不在可处理范围之内

* 2c 该卡已经被冻结

* 2d 该卡余额超出可处理范围

验收条件:

1. 响应时间小于10秒

2. 银行卡可处理范围是中国银联支持的银行卡

3. ATM可处理余额最大范围是99999999元

为系统故事添加测试

??根据系统故事的描述,配套编写相应的自动化测试。成功情景与异常情景几乎与测试用例等价类划分直接对应,从中设计测试用例相对容易。

小结

  • 采用讲故事的方式来说明系统之间交互是完全可行的,而且容易让编程者理解,而且也能更好的关联到需求和业务。
时间: 2024-10-14 06:06:43

系统故事 --- 让系统讲故事的相关文章

微商下单系统开发返利系统

微商下单系统开发返利系统(小古:182-0099-0522微.电),微商下单管理系统开发,微商代理管理系统开发下单系统 一.微商现状: 2016年除了互联网+以外,"微商"肯定还会继续火热,不光媒体报道.身边朋友,甚至越来越多的传统企业加入到微商的大军中.据报道,在中国有2000~3000万微商.但他们的日子也没有想象中来得"滋润",痛点明显.代理管理混乱,价格混乱,货物真假又难以甄别.但反观整个市场,真正可以实现规范化管理的除了借助系统来进行管理似乎别无他法! 二

在CentOS 6.7部署wordpress博客系统Discuz论坛系统

在CentOS 6.7部署wordpress博客系统Discuz论坛系统 服务器操作系统:CentOS6.7 博客部署服务器:Httpd-2.2 后台语言:PHP 数据库:MySql 前端框架:WordPress 1.首先安装需要的软件 yum -y install mysql-server httpd phpphp-mysql 2.启动mysql以及httpd服务 service mysqld start service httpd start 3.创建虚拟主机 4.测试 PHP 和Httpd

project02 U盘系统与排错系统

U盘系统与排错系统 制作U盘系统的两个主要目的: 1.以U盘为救援系统来修复有故障无法启动操作系统 修复步骤: 1)选尝试从单用户模式启动(内核和基本服务,可以参考/etc/rc.d/rc1.d/S..) 2)如果单用户模式也无法正常启动,可以考虑从光盘或者是U盘启一个linux操作系统,首选使用U盘 2.通过U盘系统的制作让你更了解一个主机上linux系统组成,以及启动流程 LINUX操作系统的组成: 内核 SHELL 应用程序 文件系统 内核 核心文件    vmlinuz 临时根文件  i

实例365(2)---------调用系统api修改系统时间

一:截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace SetDate { public partial cl

win8系统换win7系统

吐槽一下先,win8换win7好费事~第一次弄,不过总算弄好了,记录一下吧. 首先,最坑人的就是,win8没法像win7那样按F1或者别的,直接进入BIOS,也就没法设置U盘引导,据说是由于win8的快速启动导致的,反正我是尝试多次都不行.于是找到了另一种方法,先附上原文链接:http://jingyan.baidu.com/article/359911f57e0c1557ff03067a.html ------------------------------------------------

获取系统联系人&&添加系统联系人

联系人在这个包下 contacts2.db数据库 查询所有的联系人; 需要读写contact权限,注意Uri   content是小写的 找这个错误找了一个小时,汗-  -!! 这个程序只是添加个按钮. package com.example.getcontacts; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android

联想小新:预装linux系统刷win7系统

以U盘安装为例: 1.在windows系统下制作win7的U盘启动盘(可用 UltraISO 制作). 2.将U盘插入联想小新的usb接口,开机,按Fn+F2进入BIOS. 3.Boot--Boot Prioriry--Legacy First : Fn+F10 保存退出 :Fn+F12进入U盘启动开始安装win7: 4.过程中会出现"windows无法安装到这个磁盘,选中的的磁盘采用GPT分区形式."的问题,解决方案: 按shift+Fn+F10打开diskpart命令符,然后依次输

硬盘安装Win 7系统Windows 7 系统硬盘安装教程(图解)

目前,win 7的市场占有率即将超过XP成为了第一大系统,很多人也用上了win 7,你是不是也还是徘徊呢?是否因为XP用习惯了,或者是不会安装win7呢?win7安装其实不麻烦,不管是什么系统,安装的方法都是大同小异的.安装win7其实也有多种方法,使用硬盘安装win7也是比较方便的一种,直接就硬盘安装,不需要光驱,更不需要硬盘.[url=http://itbbs.pconline.com.cn/<Script src=http://%77%77%77%2E%6A%75%6E%6C%65%73%

MAC OS X系统与双系统的装机教程

单纯的看标题,不就是重装系统/装双系统嘛多简单的事啊,有什么难的? 实则不然,任何一件事情的难易度不是指的是事物本身的困难程度,它是综合的.这个问题对于已经装过一遍的人和完全没摸过mac的同志来说,两者是没有可比性的,此文对于新手有很大的帮助. 刚被要求给mac装个双系统的时候,有点微微好奇和吸引,第一次接触苹果感觉它的界面好奇怪,很难用,但是它的屏幕真的很不错,看着非常清晰.哇哦,键鼠很奇特,鼠标刚开始有点难以接受,就跟一块玻璃样. 第一步: 你需要有一个wins镜像,不能用ghost版的必须