惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
量子位
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Google DeepMind News
Google DeepMind News
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - "齐柏林飞艇"迷上了"哥特金属"

我的编程回顾 —— 浅谈怎么快速学习一门新的编程语言 FreeMarker在网页游戏服务器开发中的应用 [reference] reflection in c++ [reference] user story [reference]collada for xna [reference] gpgpu how to load XNA contents at runtime gaussian distribution 最近常去逛的站点 [reference] unmanaged c++ and c# xna tutorials bsp faq LUA+DOTNET(XNA) Using XNA with WinForm Game Development Enters the Scrum (转) linux下代码浏览器cscope GnuNet学习资料汇集 Big companies using Subversion 一个免费的windows 程序installer
读〖User Stories Applied: For Agile Software Development〗
"齐柏林飞艇"迷上了"哥特金属" · 2007-08-11 · via 博客园 - "齐柏林飞艇"迷上了"哥特金属"

我们实践User Storyprocess(结合scrum)也有两三个月了。但是,每当写User Story时,总感觉不知所措,不知道写些什么,写到什么程度。
带着这些问题,开始阅读了
Mike Cohn的〖User Stories Applied: For Agile Software Development〗。
读完后,我顿时豁然开朗,弄明白了如何写
User Story,如何做estimation,如何好好得利用story point

下面的一些文字,是我从书中摘录的,它们给我带来了一些启发。

As a starting point it's good to have stories that can be coded and tested between half a day and perhaps two weeks by one or a pair of programmers.

The customer team, rather than the developers, writes the user stories for two primary reasons.

First, each story must be written in the language of the business, not in technical jargon, so that the customer team can prioritize the stories for inclusion into iterations and releases.

Second, as the primary product visionaries, the customer team is in the best position to describe the behavior of the product.

Writing tests early is extremely helpful because more of the customer team's assumptions and expectations are communicated earlier to the developers.

Independent
Negotiable
Valuable to users or customers
Estimatable
Small
Testable

As much as possible, care should be taken to avoid introducing dependencies between stories.

#Combine the dependent stories into one larger but independent story
#Find a different way of splitting the stories

Stories are negotiable.

#a phrase or two that act as reminders to hold the conversation
#notes about issues to be resolved during the conversation

->All connections to the database are through a connection pool.
->ll error handling and logging is done through a set of common classes.

<-Up to fifty users should be able to use the application with a five-user database license.
<-All errors are presented to the user and logged in a consistent manner
.

Stories must be written so as to be testable.
->A user must never have to wait long for any screen to appear.
<-New screens appear within two seconds in 95% of all cases.

We will use the following steps to identify and select a useful set of user roles:

#brainstorm an initial set of user roles
#organize the initial set
#consolidate roles
#refine the roles

Acceptance tests provide a great deal of information that the programmers can use in advance of coding the story.

you may want to consider any or all of the following:

#User interface testing, which ensures that all of the components of the user interface behave as expected
#Usability testing, which is done to ensure an application that can be easily used
#Performance testing, which is done to gauge how well the application will perform under various workloads
#Stress testing, in which the application is subjected to extreme values of users, transactions, or anything else that may put the application under stress

My preference is to treat a story point as an ideal day of work. We rarely have these ideal days, but thinking about stories in ideal time offers two advantages. First, it is easier than estimating in elapsed time. Estimating in elapsed time forces us to consider all other possible impacts on our time, such as the all-company meeting on Tuesday, my dentist appointment on Wednesday, a few hours a day for answering email, and so on. Second, estimating story points in ideal time gives our estimates a slightly better foundation than when they are estimated in entirely nebulous units. Since one of the main purposes of estimating is to be able to answer questions about the overall expected effort in a project, we will eventually need to convert estimates into time. Starting with ideal time makes that conversion a little simpler than starting with an entirely nebulous unit.

Story estimates, however, are owned by the team for two reasons:

First, since the team doesn't yet know who will work on the story, ownership of the story cannot be more precisely assigned than to the team collectively.
Second, estimates derived by the team, rather than a single individual, are probably more useful.

Triangulating an estimate refers to estimating a story based on its relationship to one or more other stories.

#the risk that the story cannot be completed as desired (for example, with desired performance characteristics or with a novel algorithm)
#the impact the story will have on other stories if deferred (we don't want to wait until the last iteration to learn that the application is to be three-tiered and multi-threaded)
#the desirability of the story to a broad base of users or customers
#the desirability of the story to a small number of important users or customers
#the cohesiveness of the story in relation to other stories

The general sequence of activities for an iteration planning meeting is as follows:

1. Discuss a story.
2. Disaggregate the story into its constituent tasks.
3. One developer accepts responsibility for each task.

After all stories have been discussed and all tasks have been accepted, developers individually estimate the tasks they've accepted to make sure they are not over-committed.

Use these guidelines when disaggregating stories into tasks:

#If one task of a story is particularly difficult to estimate, separate that task from the rest of the story.
#If tasks could easily be done by separate developers, then split those tasks.
#If there is benefit in knowing that a part of the story is done, break that part out as a task.