论坛首页 综合技术论坛

关于用户故事这件事

浏览 43723 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-11-08  
重新开个新帖:
最进一直在研究用户故事,有些心得同大家交流下,欢迎排砖:
我认为用户故事同用例最大的区别在于:
使用的方式
用例被看作需求的主要成果,用来作为设计,实现,测试的前置条件。并且作为工件在项目中需要保留。
相反
用户故事作为获取需求的开始,起到提纲的作用,最初的用户故事,可看作将要满足的功能的站位符,提醒我们有这么回事。

在UP中你会看到:有特性和用例的区别。
在XP中只有用户故事。
这样用户故事势必会跨越更大的描述空间,也就是说它可以象特性那样粗,也可以象用例关注的那样细,这是通过epic做到的。

还有用户故事既然叫“用户故事”,那么它至少是用户能看得懂的故事。
也就是说对开发人员有用的故事,被排除在外。

用户故事可以描述非功能需求。
关于描述非功能需求的故事,我在user stories aplied书中找到一个示例:

系统必须支持峰值为50个用户的并发访问。
   发表时间:2005-11-08  
用户故事以前也是在书上看到过.自己没有用过.
前几天帮忙设计一个网站.想好久都找不到合适的方法来表达需求.
于是虚构了一个人物,把这个人物在网站上的全部行为一步步的列了出来.也没有使用任何图表,纯粹的文字描述而已.
但是操作流程和网站所需要提供的功能出奇的清楚.用这种方法很自然的把前面忽略掉的内容全部都补上去了.(写故事之前,我已经先列出了网页,网站结构和功能表)
同时这个故事也提供了一个清晰的测试过程. 这些都是在编写用户故事之前没有想到的意外所得.
市场人员和其他非技术人员同样用这种方法来编写他们的所想的.
0 请登录后投票
   发表时间:2005-11-08  
jack 写道
用户故事以前也是在书上看到过.自己没有用过.
前几天帮忙设计一个网站.想好久都找不到合适的方法来表达需求.
于是虚构了一个人物,把这个人物在网站上的全部行为一步步的列了出来.也没有使用任何图表,纯粹的文字描述而已.
但是操作流程和网站所需要提供的功能出奇的清楚.用这种方法很自然的把前面忽略掉的内容全部都补上去了.(写故事之前,我已经先列出了网页,网站结构和功能表)
同时这个故事也提供了一个清晰的测试过程. 这些都是在编写用户故事之前没有想到的意外所得.
市场人员和其他非技术人员同样用这种方法来编写他们的所想的.

这就是传说中的“用户角色扮演”
0 请登录后投票
   发表时间:2005-11-08  
引用

用户故事是提纲

用户故事体现用户和购买方的价值

用户故事不体现对开发人员有价值的功能

大用户故事epic可以包含小用户故事

用户故事三要素:故事描述、通过交谈丰富内容、验证测试确认故事已完成

对于需要特别注意的地方可以注明

客户团队包括测试员、产品经理、实际用户、交互设计员

客户团队使用业务语言来写用户故事,这样就能划分优先级规划迭代和发布了,另外客户团队是描绘产品前景的最佳视角

用户故事可以在项目的任何时间写,最初的故事可以从一次集体讨论中得到

通过协商,客户团队和开发人员确定迭代的长度,很可能是1到4周

在迭代结束,开发人员提交完全可用的部分产品

在迭代中,客户团队同开发人员交谈,确认开发人员确实理解了需求,同时客户团队还会指定测试,同开发人员协作运行测试,测试可以是自动运行的,另外客户团队需要确认开发是朝着待开发产品的方向前进的

迭代周期一旦确定开发人员就可以估计一个迭代能完成多少工作了

用户故事按照优先级,根据迭代分堆排列,在迭代开始时可以根据实际开发的速度调整这些分堆

一个发布由一到多个迭代构成

从下面几个方面考虑优先级
  大多数人涉及的特性
  少部分人涉及但很重要的特性
  故事之间的关联性

开发人员可以根据技术因素就用户故事优先级发表看法,客户团队聆听这些,但最终故事优先级还是以是否给目标组织带来最大化利益作为考量

故事在评估代价之前,不能划分优先级,所以对故事进行评估是划分优先级的要素之一,开发人员负责评估开发成本。每个故事使用故事点来量化,表明它的复杂性。故事点使用时间长度作为度量

开发人员声明自己的开发速度,一个迭代能完成多少个故事点,客户团队据此分配故事,累计的故事点,必须小于开发人员能够完成的故事点

尽可能早的找出验证测试,这样会对开发人员带来帮助

为什么要使用用户故事?
   用户故事强调口头上的交流,而不是文档化的
   客户团队和开发人员都能理解用户故事
   用户故事的大小适合于制定计划
   用户故事为迭代开发工作
   用户故事鼓励推迟细化,直到你完全理解你真实的需要(使用了 精益过程 推荐的工具)
   用户故事是在经常性的运行自动化验证测试后取得的,没有基于文档可能出现的二义性的问题

如果一个用户故事不能在一个迭代里完成,就需要把它分解
0 请登录后投票
   发表时间:2005-11-08  
partech 写道

还有用户故事既然叫“用户故事”,那么它至少是用户能看得懂的故事。
也就是说对开发人员有用的故事,被排除在外。

你可能是将传统的需求分析套在用户故事上了。
实质上我认为用户故事编写过程中恐怕现场客户也要学点新名词,换句话说传统中的设计部分在用户故事中也有体现。
0 请登录后投票
   发表时间:2005-11-08  
ddd 写道
partech 写道

还有用户故事既然叫“用户故事”,那么它至少是用户能看得懂的故事。
也就是说对开发人员有用的故事,被排除在外。

你可能是将传统的需求分析套在用户故事上了。
实质上我认为用户故事编写过程中恐怕现场客户也要学点新名词,换句话说传统中的设计部分在用户故事中也有体现。

是吗?愿闻其详
0 请登录后投票
   发表时间:2005-11-08  
补充一下:
用户故事虽然叫“用户故事”,但因为开发人员需要根据它估算工作量,所以要求用户故事不能过于专业,开发人员也要看得懂

收集故事的提问,应该是不带假设条件的开放式问题

领域专家不宜作为用户代理。因为领域专家不一定使用系统,即便他使用,也可能同较少行业经验的人有不同的使用方式。另一个问题是对于专家满意的系统并不一定适合于所有的用户

客户指定,并详述测试,开发人员和测试人员协助他完成测试

在编码前详述测试,是同客户沟通设想的新功能有用和有效的方法,并且有益于开发人员深入领会故事的意图

如果开发人员对某个故事的故事点有分歧,那么他们需要继续讨论直到达成共识

速率 -- 就是一个迭代里团队能够完成故事点的多少

通过对比不同故事初步估计出来的故事点数,可进一步调整点数

不同项目间,故事点没有可比性

通过考察历史评价,猜,进行一次初始迭代可以确定初始速率

项目完成需要的时间 = 故事点总数 / 速率 * 迭代周期
1 请登录后投票
   发表时间:2005-11-08  
我的实战告诉我:沟通的妙处就在于不事先规定内容,乱七八糟才好。
所以如果双方进入想做好这个软件的状态了,必然会混乱一团,没个什么确定的主题,这和内部开会不一样,内部开会只允许一定范围内的跑题。
在这种情况下必然要接触技术问题。并且从某种程度上说细节决定一切,设计决定需求,这样就无法先需求分析后设计了。
这种情况下必须让现场客户了解你的设计,才能达到沟通的目的。

btw:我的表达能力不算太好,因为我越来越不愿意拉条条了,更相信实战中的体会,感性的东西:),并且现在正在努力忘却掉以前认为优雅经典的一些条条框框,虽然这些条条框框都曾经是我的必经之路。
"双方进入想做好这个软件的状态"不太好获得,还是我以前说的话:在大陆大多数项目都是求来的,客户基本进入不了这种想做好的状态,越大的项目情况越糟糕,这种情况也许不适合xp,包括用户故事。
0 请登录后投票
   发表时间:2005-11-08  
嗯,俺还没碰到过这样“好学习”的客户,会打探设计的咚咚。最多也只是带
有敬意的打听一下,不会像你说的这样强势。基本来说开发过程还是我们控制。
对于这种“畸形”的开发方式,确实很难保证用户故事里面没有设计。
0 请登录后投票
   发表时间:2005-11-09  
partech 写道
嗯,俺还没碰到过这样“好学习”的客户,会打探设计的咚咚。最多也只是带
有敬意的打听一下,不会像你说的这样强势。基本来说开发过程还是我们控制。
对于这种“畸形”的开发方式,确实很难保证用户故事里面没有设计。

也许您的这个客户不是现场客户,或者即使在现场,也没发挥应有的反馈作用。有敬意的打听一下,这就是沟通不够。
或者就是你们的开发队伍没有向现场客户提供必要的信息。
很多设计方面的信息必须要给现场客户,否则单凭一句“满足你的需求”来打发现场客户是不负责任的。这样实质是切断了现场客户在第一时间反馈的渠道。
我推测你们和客户沟通的良好气氛根本就不存在,那么出现这种双方“相敬如宾”的情况也就正常了。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics