﻿<?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-明年今日-文章分类-Software Methodology</title><link>http://www.blogjava.net/czihong/category/50900.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 10 Mar 2012 09:41:57 GMT</lastBuildDate><pubDate>Sat, 10 Mar 2012 09:41:57 GMT</pubDate><ttl>60</ttl><item><title>Git: Your branch is ahead of the tracked remote branch</title><link>http://www.blogjava.net/czihong/articles/370699.html</link><dc:creator>明年今日</dc:creator><author>明年今日</author><pubDate>Fri, 24 Feb 2012 09:07:00 GMT</pubDate><guid>http://www.blogjava.net/czihong/articles/370699.html</guid><wfw:comment>http://www.blogjava.net/czihong/comments/370699.html</wfw:comment><comments>http://www.blogjava.net/czihong/articles/370699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czihong/comments/commentRss/370699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czihong/services/trackbacks/370699.html</trackback:ping><description><![CDATA[<h2><span id="Problem" style="color: red; ">Problem</span></h2>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 19px; font-family: sans-serif; font-size: 13px; background-color: #ffffff; ">When moving to a local branch, git says I'm "ahead of the tracked remote branch", but a&nbsp;<tt style="background-color: #f9f9f9; padding-top: 1px; padding-right: 3px; padding-bottom: 1px; padding-left: 3px; ">git push</tt>&nbsp;doesn't update the remote branch.</p>
<pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #2f6fab; border-right-color: #2f6fab; border-bottom-color: #2f6fab; border-left-color: #2f6fab; border-image: initial; background-color: #ffffff; line-height: 1.1em; overflow-x: auto; overflow-y: auto; ">$ git checkout mybranch <br /><br />Your branch is ahead of the tracked remote branch 'origin/remotebranch' by 1 commit. <br />
$ git push Everything up-to-date </pre>
<h2><span id="Solution_1._Pushing_mybranch_to_remotebranch">Solution 1. Pushing mybranch to remotebranch</span></h2>
<pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #2f6fab; border-right-color: #2f6fab; border-bottom-color: #2f6fab; border-left-color: #2f6fab; border-image: initial; background-color: #ffffff; line-height: 1.1em; overflow-x: auto; overflow-y: auto; ">$ git push origin mybranch:remotebranch </pre>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 19px; font-family: sans-serif; font-size: 13px; background-color: #ffffff; ">or for later pushes with just&nbsp;<tt style="background-color: #f9f9f9; padding-top: 1px; padding-right: 3px; padding-bottom: 1px; padding-left: 3px; ">git push origin</tt>&nbsp;you can put this in&nbsp;<tt style="background-color: #f9f9f9; padding-top: 1px; padding-right: 3px; padding-bottom: 1px; padding-left: 3px; ">.git/config</tt>&nbsp;with this command:</p>
<pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #2f6fab; border-right-color: #2f6fab; border-bottom-color: #2f6fab; border-left-color: #2f6fab; border-image: initial; background-color: #ffffff; line-height: 1.1em; overflow-x: auto; overflow-y: auto; ">$ git config remote.origin.push mybranch:remotebranch </pre>
<h2><span id="Solution_2._Reset_mybranch_to_state_of_remotebranch">Solution 2. Reset mybranch to state of remotebranch</span></h2>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 19px; font-family: sans-serif; font-size: 13px; background-color: #ffffff; ">NOTE: Careful! You will loose commits made to mybranch!</p>
<pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #2f6fab; border-right-color: #2f6fab; border-bottom-color: #2f6fab; border-left-color: #2f6fab; border-image: initial; background-color: #ffffff; line-height: 1.1em; overflow-x: auto; overflow-y: auto; ">$ git reset --hard origin/remotebranch </pre>
<h2><span id="See_also" style="color: red; ">Problem: You cann't push to git://github.com/username/repo.git</span></h2>
<dl style="margin-top: 0.2em; margin-bottom: 0.5em; font-family: sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><dd style="line-height: 1.5em; margin-left: 2em; margin-bottom: 0.1em; ">There should be something wrong with your remote configuration, set like the follow:<br />
</dd></dl>
<pre style="padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #2f6fab; border-right-color: #2f6fab; border-bottom-color: #2f6fab; border-left-color: #2f6fab; border-image: initial; line-height: 1.1em; overflow-x: auto; overflow-y: auto; background-color: #ffffff; "><div>
<pre style="color: #505050; font-size: 12px; line-height: 20px; text-align: left; background-color: #f8f8f8; "><span style="color: #000000; ">$ </span>git remote rm origin <br />
<span style="color: #000000; ">$ </span>git remote add origin <br />
<span style="color: #000000; ">$ </span>git remote add origin git@github.com:tualatrix/gentoo.git <br />
<span style="color: #000000; ">$ </span>git push origin
</pre>
</div>
</pre>
<div>
<h2><span id="See_also" style="color: red; "><div><h2><span id="See_also"><div><span style="font-size: 18pt; ">Problem:&nbsp;</span><span style="font-size: 18pt; ">Permission denied (publickey)</span></div></span></h2></div><div><ol style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #393939; font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; font-weight: normal; line-height: 18px; background-color: #ffffff; "><li><span style="font-weight: bold; display: inline-block; margin-top: 1em; ">Generate a new SSH key.</span><p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; ">To generate a new SSH key, enter the code below. We want the default settings so when asked to enter a file in which to save the key, just press enter.</p><pre bootcamp"="" style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #dedede; border-right-color: #dedede; border-bottom-color: #dedede; border-left-color: #dedede; border-image: initial; line-height: 1.2em; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; overflow-x: auto; overflow-y: auto; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -webkit-background-clip: padding-box; background-clip: padding-box; background-color: #444444; color: #ffffff; margin-top: 0px; margin-bottom: 0px; margin-left: -10px; position: relative; text-shadow: none; background-image: none; filter: none; white-space: normal; "><span style="display: block; position: relative; ">$ ssh-keygen -t rsa -C "<em style="color: #f9fe64; ">your_email@youremail.com</em>"<span style="display: inline-block; font-size: 10px; padding-top: 0px; padding-right: 0.3em; padding-bottom: 0.05em; padding-left: 0.3em; position: absolute; right: 0px; top: 0px; text-indent: -9999px; background-image: url(http://help.github.com/shared/images/qmark.png); max-width: 8px; min-width: 8px; -webkit-user-select: none; cursor: default; background-position: 1px 3px; background-repeat: no-repeat no-repeat; ">Creates a new ssh key using the provided email</span></span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">Generating public/private rsa key pair.</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">Enter file in which to save the key (/Users/<em style="color: #f9fe64; ">your_user_directory</em>/.ssh/id_rsa):<em style="color: #f9fe64; ">&lt;press enter&gt;</em></span></pre><p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; ">Now you need to enter a passphrase.</p><div style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; position: relative; border-image: initial; "><h4>Why do passphrases matter?</h4></div><pre bootcamp"="" style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #dedede; border-right-color: #dedede; border-bottom-color: #dedede; border-left-color: #dedede; border-image: initial; line-height: 1.2em; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; overflow-x: auto; overflow-y: auto; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -webkit-background-clip: padding-box; background-clip: padding-box; background-color: #444444; color: #ffffff; margin-top: 0px; margin-bottom: 0px; margin-left: -10px; position: relative; text-shadow: none; background-image: none; filter: none; white-space: normal; "><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">Enter passphrase (empty for no passphrase):<em style="color: #f9fe64; ">&lt;enter a passphrase&gt;</em></span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">Enter same passphrase again:<em style="color: #f9fe64; ">&lt;enter passphrase again&gt;</em></span></pre><p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; ">Which should give you something like this:</p><pre bootcamp"="" style="border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #dedede; border-right-color: #dedede; border-bottom-color: #dedede; border-left-color: #dedede; border-image: initial; line-height: 1.2em; font: normal normal normal 12px/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; overflow-x: auto; overflow-y: auto; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -webkit-background-clip: padding-box; background-clip: padding-box; background-color: #444444; color: #ffffff; margin-top: 0px; margin-bottom: 0px; margin-left: -10px; position: relative; text-shadow: none; background-image: none; filter: none; white-space: normal; "><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">Your identification has been saved in /Users/<em style="color: #f9fe64; ">your_user_directory</em>/.ssh/id_rsa.</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">Your public key has been saved in /Users/<em style="color: #f9fe64; ">your_user_directory</em>/.ssh/id_rsa.pub.</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">The key fingerprint is:</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db&nbsp;<em style="color: #f9fe64; ">user_name@username.com</em></span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">The key's randomart image is:</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">+--[ RSA 2048]----+</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.+&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;o&nbsp;O&nbsp;.&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;*&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;=&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;S&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;o&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;.&nbsp;E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|</span><span style="color: #63e463; display: block; position: relative; -webkit-user-select: none; ">+-----------------+</span></pre></li><li><span style="font-weight: bold; display: inline-block; margin-top: 1em; ">Add your SSH key to GitHub.</span><p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; ">On the GitHub site&nbsp;<em>Click &#8220;Account Settings&#8221;</em>&nbsp;&gt;&nbsp;<em>Click &#8220;SSH Public Keys&#8221;</em>&nbsp;&gt;&nbsp;<em>Click &#8220;Add another public key&#8221;</em></p><img src="http://help.github.com/images/account_settings.jpg" alt="Account Settings" style="max-width: 100%; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #dddddd; border-right-color: #dddddd; border-bottom-color: #dddddd; border-left-color: #dddddd; border-image: initial; -webkit-box-shadow: #dddddd 1px 1px 3px; box-shadow: #dddddd 1px 1px 3px; " /><p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; ">Open the id_rsa.pub file with a text editor (Notepad, TextEdit, or gedit will do just fine). This is your public SSH key. You may need to turn on &#8220;view hidden files&#8221; to find it because the<em>.ssh</em>&nbsp;directory is hidden.&nbsp;<span style="color: #e98400; font-style: italic; ">It&#8217;s important you copy your SSH key exactly as it is written without adding any newlines or whitespace.</span>&nbsp;Now paste it into the &#8220;Key&#8221; field.<br /></p></li></ol></div>Problem: Delete file on remote repo<br /><div><pre style="color: #000000; font-size: 14px; font-weight: normal; padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #2f6fab; border-right-color: #2f6fab; border-bottom-color: #2f6fab; border-left-color: #2f6fab; border-image: initial; background-color: #ffffff; line-height: 1.1em; overflow-x: auto; overflow-y: auto; ">$ git add . -A<br />$ git commit -m "remove some file" </pre><h2><span id="See_also"><div><h2><span id="See_also"><div><pre style="color: #000000; font-size: 14px; font-weight: normal; padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #2f6fab; border-right-color: #2f6fab; border-bottom-color: #2f6fab; border-left-color: #2f6fab; border-image: initial; background-color: #ffffff; line-height: 1.1em; overflow-x: auto; overflow-y: auto; ">$ git add . -A<br />$ git commit -m "remove some file" </pre></div></span></h2></div></span></h2></div>
</span></h2>
</div><img src ="http://www.blogjava.net/czihong/aggbug/370699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czihong/" target="_blank">明年今日</a> 2012-02-24 17:07 <a href="http://www.blogjava.net/czihong/articles/370699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>User Story in Scrum</title><link>http://www.blogjava.net/czihong/articles/370395.html</link><dc:creator>明年今日</dc:creator><author>明年今日</author><pubDate>Tue, 21 Feb 2012 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/czihong/articles/370395.html</guid><wfw:comment>http://www.blogjava.net/czihong/comments/370395.html</wfw:comment><comments>http://www.blogjava.net/czihong/articles/370395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/czihong/comments/commentRss/370395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czihong/services/trackbacks/370395.html</trackback:ping><description><![CDATA[<div>对于Scrum开发来说，User Story是开发的基础，它不同于传统的UDD开发方式，而是把原本需求拆成最小粒度的Story，以方便Scrum小组拆分Task，估计开发</div><div></div><div>时间，领取开发任务。<br /></div><div></div><div>User Story不需要太过于详细，只有在正式开发时，做详细设计时在进入Detail阶段，如果初期时间估算不准确，实际工作量增多时，Sprint Chart需要适当的</div><div></div><div>Burn-up。<br /></div><div></div><div>User Story可以遵循以下模板：</div><div>&nbsp;&nbsp;&nbsp;&nbsp;As a &lt;User Type&gt;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;I want to &lt;achieve goal&gt;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;So that &nbsp;I can &lt;get some value&gt;</div><div></div><div><br />例如：作为一个病人，我可以预约一个医生，让他给我看病。</div><div></div><div><br />User Story应遵循INVEST规则：</div><div><strong>Independent</strong> 独立性，避免与其他Story的依赖性。</div><div><strong>Negotiable</strong> 可谈判性，Scrum中的story不是瀑布开始某事中的Contract, Stories不必太过详细，开发人员可以给出适当的建议。</div><div><strong>Valueable</strong> 有价值性， Story需要体现出对于用户的价值</div><div><strong>Estimable</strong> 可估计性，Story应可以估计出Task的开发时间。</div><div><strong>Sized</strong> <strong>Right</strong> 合理的尺寸， Stories应该尽量小，并且使得团队尽量在1个sprint(2 weeks)中完成。</div><div><strong>Testable</strong> 可测试性， User Story应该是可以测试的，最好有界面可以测试和自动化测试。每个任务都应有Junit Test.<br /></div><div></div><div><strong>经验</strong>：</div><div>1. 永远不要在User Story中使用And和Or，因为这是些分支词就表示分支任务，把它们拆成两个Story.</div><div>2. 数据整理：通常情况下1个sprint(2周一次迭代)可以做4～5个Story，极端大的Story不可大于1个sprint。</div><div>3. 数据整理：通常情况下1个sprint(2周一次迭代)可以做50个左右的Task。</div><div>4. User Story用于描述用户故事，<span style="background-color: yellow; ">不要包括任何的技术，框架等内容。Task可以包括框架，技术等内容。<br /><br /></span></div><div></div><div><div>我们通常用User Story来描述Backlog里的各个Backlog项，User Story是从用户的角度对系统的某个功能模块所作的简短描述。一个User Story描述了项目中的一个小功能，以及&gt;这个功能完成之后将会产生什么效果，或者说能为客户创造什么价值。<br /></div><div>&nbsp; &nbsp; User Story要由Stakeholder（利益相关者）来编写。User Story的形式很简单，人们可以很容易地掌握编写User Story的方法。这样就可以保证是由与项目相关领域专家们来</div><div>&nbsp; &nbsp;&nbsp;<span style="background-color: yellow; ">编写User Story，而不是开发人员。</span></div><div>&nbsp; &nbsp; 我们通常把User Story写在一张小卡片上，同时在卡片上标明它的优先级和预计完成时间，以便开发人员根据任务的优先级来制定Sprint Backlog。而且，Stakeholder可以随时更改一个Story的优先级，那么此时开发人员就应该相应地调整Story的开发次序。</div><div>&nbsp; &nbsp; 一个User Story的大小和复杂度应该在一个Sprint中开发完毕为宜。如果User Story太大，可能会导致对它的开发横跨几个Sprint。这种情况是需要避免的。此时就应该将这个User Story分解。</div><div></div><div>&nbsp; &nbsp; 为了能及时、高效地完成每个Story，Scrum团队会把每个Story分解成若干个Task。每个Task都是可以在明确的时间内完成的，而且时间是以小时为计量单位的。特别提示：每个Task的时间最好不要超过8小时，就是要保证1个工作日内完成，如果做计划时发现有些Task的时间超过了8小时，就说明Task的划分有问题，需要特别注意。</div></div><div></div><img src ="http://www.blogjava.net/czihong/aggbug/370395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czihong/" target="_blank">明年今日</a> 2012-02-21 11:03 <a href="http://www.blogjava.net/czihong/articles/370395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>