﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-☆蓝色梦想☆-随笔分类-敏捷开发</title><link>http://www.blogjava.net/zlsunnan/category/20226.html</link><description>世界总是反反覆覆错错落落地飘去 来不及叹息 生活不是平平淡淡从从容容的东西 不能放弃</description><language>zh-cn</language><lastBuildDate>Thu, 07 Jun 2007 10:31:52 GMT</lastBuildDate><pubDate>Thu, 07 Jun 2007 10:31:52 GMT</pubDate><ttl>60</ttl><item><title>经典台词</title><link>http://www.blogjava.net/zlsunnan/archive/2007/06/07/122566.html</link><dc:creator>☆蓝色梦想☆</dc:creator><author>☆蓝色梦想☆</author><pubDate>Thu, 07 Jun 2007 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/zlsunnan/archive/2007/06/07/122566.html</guid><wfw:comment>http://www.blogjava.net/zlsunnan/comments/122566.html</wfw:comment><comments>http://www.blogjava.net/zlsunnan/archive/2007/06/07/122566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlsunnan/comments/commentRss/122566.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlsunnan/services/trackbacks/122566.html</trackback:ping><description><![CDATA[<p class=paragraph style="FONT-SIZE: 10.5pt">&nbsp;&nbsp; 　1． Life was like a box of chocolates, you never know what you&#8217;re gonna get. (生命就像一盒巧克力，结果往往出人意料)<br><br>　　2． Stupid is as stupid does. (蠢人做蠢事，也可理解为傻人有傻福)<br><br>　　3． Miracles happen every day. (奇迹每天都在发生)<br><br>　　4． Jenny and I was like peas and carrots.(我和珍妮形影不离)<br><br>　　5． Have you given any thought to your future?(你有没有为将来打算过呢)<br><br>　　6． You just stay away from me please.(求你离开我)<br><br>　　7． If you are ever in trouble, don&#8217;t try to be brave, just run, just run away.(你若遇上麻烦，不要逞强，你就跑，远远跑开)<br><br>　　8． It made me look like a duck in water.(它让我如鱼得水)<br><br>　　9． Death is just a part of life, something we&#8217;re all destined to do.(死亡是生命的一部分，是我们注定要做的一件事)<br><br>　　10． I was messed up for a long time.(这些年我一塌糊涂)<br><br>　　11． I don&#8217;t know if we each have a destiny, or if we&#8217;re all just floating around accidental—like on a breeze.(我不懂我们是否有着各自的命运，还是只是到处随风飘荡)<br></p>
<p class=paragraph style="FONT-SIZE: 10.5pt">&nbsp;</p>
<img src ="http://www.blogjava.net/zlsunnan/aggbug/122566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlsunnan/" target="_blank">☆蓝色梦想☆</a> 2007-06-07 13:33 <a href="http://www.blogjava.net/zlsunnan/archive/2007/06/07/122566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以用户故事管理项目</title><link>http://www.blogjava.net/zlsunnan/archive/2007/02/26/100820.html</link><dc:creator>☆蓝色梦想☆</dc:creator><author>☆蓝色梦想☆</author><pubDate>Mon, 26 Feb 2007 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/zlsunnan/archive/2007/02/26/100820.html</guid><wfw:comment>http://www.blogjava.net/zlsunnan/comments/100820.html</wfw:comment><comments>http://www.blogjava.net/zlsunnan/archive/2007/02/26/100820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zlsunnan/comments/commentRss/100820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zlsunnan/services/trackbacks/100820.html</trackback:ping><description><![CDATA[
		<div class="left">
		</div>
		<div class="center">
				<h4>摘要:</h4>一件用户通过系统完成他一个有价值的目标（买一罐饮料）的事。这样的过程就叫“用户案例(user case)”或者“用户故事(user story)”。本文描述了敏捷开发的技巧：如何以用户故事管理项目. <br /><br /><strong>什么是用户故事(user story)<br /><br /></strong>假定这个项目的客户是个饮料自动售货机的制造商。他们要求我们为他们的售货机开发一款软件。我们可以找他们的市场经理了解这个软件的需求。<br /><br />因此，我们的客户就是他们的市场经理。谈需求的时候，有一回他这样说：“用户往售货机每塞一个硬币，售货机都要显示当前该客户已经投了多少钱。当用户投的钱够买某一款饮料时，代表这款饮料的按钮的灯就会亮。如果那个用户按了这个按钮，售货机就放一罐饮料到出口，然后找零钱给他。”<br /><br />上面的话描述的是一件事情，一件用户通过系统完成他一个有价值的目标（买一罐饮料）的事。这样的过程就叫“用户案例(user case)”或者“用户故事(user story)”。也就是说，上面我们的客户所说的话，就是在描述一个用户故事（user story）。<br />(我解释一下为什么用故事这个词，没兴趣也可以忽略。在一个系统面前，每个用户要完成同样的目标，都要做这个系统设定的例行的事，这件事情不是一个例子，所以不叫事例，这也不是故事，也不能算一段历程，而是一个例行的事。)<br /><br />    如果我们想要记下这段用户故事，我们可能会用这样的格式：<br /><br />    名称：卖饮料<br /><br />    事件：<br /><br />    1. 用户投入一些钱。<br /><br />    2. 售货机显示用户已经投了多少钱。<br /><br />    3. 如果投入的钱足够买某种饮料，这种饮料对应的按钮的灯就会亮。<br /><br />    4. 用户按了某个亮了的按钮。<br /><br />    5. 售货机卖出一罐饮料给他。<br /><br />    6. 售货机找零钱给他。<br /><br />    注意到，一个用户故事里面的事件可以这样描述：<br /><br />    1. 用户做XX。<br /><br />    2. 系统做YY。 <br /><br />    3. 用户做ZZ。<br /><br />    4. 系统做TT。<br /><br />    5.  ... <br /><br /><b>用户故事只是描述系统的外在行为</b><br /><br />    一个用户故事只是以客户能够明白的方式，描述了一个系统的外在行为，它完全忽略了系统的内部动作。比如，下面有下划线的那些文字，就属于不应该出现在用户故事中的系统内部动作：<br /><br />    1. 用户投入一些钱。<br /><br />    2. 售货机将塞进来的钱存在钱箱里，然后发送一条命令给屏幕，屏幕显示目前已经投入的金额。<br /><br />    3. 售货机查询数据库里面所有饮料的价格，判定钱足够买哪些饮料，对于钱足够买的那些饮料，对应的按钮的灯就会亮起来。<br /><br />    4. 用户按下一个亮起来的按钮。<br /><br />    5. 售货机卖出一罐饮料给用户，然后将数据库里面该饮料的存货数量减1。<br /><br />    6. 售货机找零钱给用户。<br /><br />    不管是口头描述的，还是书面形式，这样的内容是描述用户故事时一个很常见的错误。特别的，千万不要提及任何有关数据库，记录，字段之类的对客户一点意义都没有的东西。<br /><br /><b>评估发布时间</b><br /><br />    用户故事是用来干嘛的？假定客户希望在50天内递交这个系统。我们做得了吗？为了解答这个问题，我们就要在项目开始的阶段，试着找出所有的用户故事，然后评估一下，每一项历程需要多长的开发时间。可是，怎么评估呢？<br />    比如，我们现在收集了下面这些用户故事：<br /><br />    卖饮料：如上面所说的。<br />    取消购买：在投入了一些钱后，用户可以取消购买。<br />    输入管理密码：授权的人可以输入管理密码，然后增加存货，设定价格，拿走里面的钱等等。<br />    补充饮料：授权的人可以在输入管理密码后增加存货。<br />    取出钱箱里的钱：授权的人在输入管理密码后，可以取出钱箱里的钱箱里面的钱。<br />    安全警报：有些事情经常发生的话，系统会自动打开安全警报。<br />    打印月销售报表：授权的人可以打印出月销售报表。<br /><br />    然后找出里面最简单的用户故事（这里的“简单”，意思是说实现周期最短）。我们不一定非常精准的判断哪个最简单。只要挑出你觉得最简单的就行了。比如，我们觉得“输入管理密码”是最简单的用户故事。然后我们判断说，这个用户故事算1个“故事点（story point）”。<br />                        <br />用户故事          故事点<br />卖饮料        <br />取消购买        <br />输入管理密码   1<br />补充饮料        <br />取出钱箱里的钱        <br />安全警报        <br />打印月销售报表        <br /><br />不过一般我们不会列出清单，而是做出一堆卡片贴在墙上，每张卡片记录一个用户故事，然后将故事点写在卡片上面：<br /><img height="222" alt="2007_02_12_080153_UjvyxmkyOn.jpg" src="http://www.blogjava.net/images/blogjava_net/zlsunnan/2007_02_12_080153_UjvyxmkyOn.jpg" width="328" border="0" /><br /><strong>什么是用户故事(user story)<br /><br /></strong>假定这个项目的客户是个饮料自动售货机的制造商。他们要求我们为他们的售货机开发一款软件。我们可以找他们的市场经理了解这个软件的需求。<br /><br />因此，我们的客户就是他们的市场经理。谈需求的时候，有一回他这样说：“用户往售货机每塞一个硬币，售货机都要显示当前该客户已经投了多少钱。当用户投的钱够买某一款饮料时，代表这款饮料的按钮的灯就会亮。如果那个用户按了这个按钮，售货机就放一罐饮料到出口，然后找零钱给他。”<br /><br />上面的话描述的是一件事情，一件用户通过系统完成他一个有价值的目标（买一罐饮料）的事。这样的过程就叫“用户案例(user case)”或者“用户故事(user story)”。也就是说，上面我们的客户所说的话，就是在描述一个用户故事（user story）。<br />(我解释一下为什么用故事这个词，没兴趣也可以忽略。在一个系统面前，每个用户要完成同样的目标，都要做这个系统设定的例行的事，这件事情不是一个例子，所以不叫事例，这也不是故事，也不能算一段历程，而是一个例行的事。)<br /><br />    如果我们想要记下这段用户故事，我们可能会用这样的格式：<br /><br />    名称：卖饮料<br /><br />    事件：<br /><br />    1. 用户投入一些钱。<br /><br />    2. 售货机显示用户已经投了多少钱。<br /><br />    3. 如果投入的钱足够买某种饮料，这种饮料对应的按钮的灯就会亮。<br /><br />    4. 用户按了某个亮了的按钮。<br /><br />    5. 售货机卖出一罐饮料给他。<br /><br />    6. 售货机找零钱给他。<br /><br />    注意到，一个用户故事里面的事件可以这样描述：<br /><br />    1. 用户做XX。<br /><br />    2. 系统做YY。 <br /><br />    3. 用户做ZZ。<br /><br />    4. 系统做TT。<br /><br />    5.  ... <br /><br /><b>用户故事只是描述系统的外在行为</b><br /><br />    一个用户故事只是以客户能够明白的方式，描述了一个系统的外在行为，它完全忽略了系统的内部动作。比如，下面有下划线的那些文字，就属于不应该出现在用户故事中的系统内部动作：<br /><br />    1. 用户投入一些钱。<br /><br />    2. 售货机将塞进来的钱存在钱箱里，然后发送一条命令给屏幕，屏幕显示目前已经投入的金额。<br /><br />    3. 售货机查询数据库里面所有饮料的价格，判定钱足够买哪些饮料，对于钱足够买的那些饮料，对应的按钮的灯就会亮起来。<br /><br />    4. 用户按下一个亮起来的按钮。<br /><br />    5. 售货机卖出一罐饮料给用户，然后将数据库里面该饮料的存货数量减1。<br /><br />    6. 售货机找零钱给用户。<br /><br />    不管是口头描述的，还是书面形式，这样的内容是描述用户故事时一个很常见的错误。特别的，千万不要提及任何有关数据库，记录，字段之类的对客户一点意义都没有的东西。<br /><br /><b>评估发布时间</b><br /><br />    用户故事是用来干嘛的？假定客户希望在50天内递交这个系统。我们做得了吗？为了解答这个问题，我们就要在项目开始的阶段，试着找出所有的用户故事，然后评估一下，每一项历程需要多长的开发时间。可是，怎么评估呢？<br />    比如，我们现在收集了下面这些用户故事：<br /><br />    卖饮料：如上面所说的。<br />    取消购买：在投入了一些钱后，用户可以取消购买。<br />    输入管理密码：授权的人可以输入管理密码，然后增加存货，设定价格，拿走里面的钱等等。<br />    补充饮料：授权的人可以在输入管理密码后增加存货。<br />    取出钱箱里的钱：授权的人在输入管理密码后，可以取出钱箱里的钱箱里面的钱。<br />    安全警报：有些事情经常发生的话，系统会自动打开安全警报。<br />    打印月销售报表：授权的人可以打印出月销售报表。<br /><br />    然后找出里面最简单的用户故事（这里的“简单”，意思是说实现周期最短）。我们不一定非常精准的判断哪个最简单。只要挑出你觉得最简单的就行了。比如，我们觉得“输入管理密码”是最简单的用户故事。然后我们判断说，这个用户故事算1个“故事点（story point）”。<br />                        <br />用户故事          故事点<br />卖饮料        <br />取消购买        <br />输入管理密码   1<br />补充饮料        <br />取出钱箱里的钱        <br />安全警报        <br />打印月销售报表        <br /><br />不过一般我们不会列出清单，而是做出一堆卡片贴在墙上，每张卡片记录一个用户故事，然后将故事点写在卡片上面：<br /><br /><a href="/Files/zlsunnan/敏捷开发的必要技巧完整版.rar"><font color="#002c99">敏捷开发的必要技巧完整版</font></a></div>
<img src ="http://www.blogjava.net/zlsunnan/aggbug/100820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zlsunnan/" target="_blank">☆蓝色梦想☆</a> 2007-02-26 22:47 <a href="http://www.blogjava.net/zlsunnan/archive/2007/02/26/100820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>