tag:blogger.com,1999:blog-52303971415864985452024-03-06T02:28:34.906+08:00Scrum+xp敏捷软件开发随笔-----敏捷精灵二三事关注敏捷软件开发和项目管理,专注Scrum+XP,共享应用实践,推荐新闻、深度文章以及酷书.敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.comBlogger53125tag:blogger.com,1999:blog-5230397141586498545.post-85909035900958698352009-07-07T08:48:00.003+08:002009-07-07T08:59:19.406+08:00《敏捷无敌》上市居然引来一些好玩的事情不知道怎么就得罪了几个人,开始网上说些不入流的话。。。<br />估计原本想恶搞一下这本书的,没想到事与愿违,反而起到了意想不到的宣传效果。<br /><br />很快让此书就冲到了china-pub某个栏目的第二位。。。<br /><br /><br /><a href="http://incredibleagile.com/">网上最大的敏捷软件开发资料站 http://incredibleagile.com/ </a><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-74743789788294009482009-07-07T08:45:00.001+08:002009-07-07T08:47:51.854+08:00关于http://incredibleagile.com/ 的实验结果很有意思关于<a href="http://incredibleagile.com/">http://incredibleagile.com/ </a>的实验<br /><br />虽然只作了一个页面,稍稍做了点SEO, 很快就被google收录了。。。<br /><br />并且从最初的 第六页,不断上升。。。。现在已经到了第二页的正数第五的位置。。。<br /><br />不过,baidu还是没有收录,看来竞价排名跟google还是不一样啊!<br /><br /><br /><a href="http://incredibleagile.com/">网上最大的敏捷软件开发资料站 http://incredibleagile.com/ </a><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-76798505364299017822009-06-24T11:17:00.000+08:002009-06-24T11:21:06.460+08:00做个敏捷软件开发资料站的SEO实验最近blogspot在国内普通用户又不能直接访问了,还得翻墙。。。真是不爽!<br /><br />做个实验,看看能有多少流量<a href="http://incredibleagile.com/">敏捷软件开发资料站</a><br /><br /><a href="http://incredibleagile.com/">http://incredibleagile.com/</a> <br /><br />看看多长时间能收录,然后才是流量了 :)<div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-75919057928652597372009-05-19T12:56:00.005+08:002009-05-19T15:17:51.722+08:00《敏捷无敌》终稿<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlZpF9jRhkLeTvnzkvpMPRxqzLD2g4ZtyZG6D3LMBvcVUcwot9ZFHxPjG-_hRvkj5tbZbvYHfEb9yKfrOkJOd86JWJ6QG3F8XVvO__Oi6fnc4ZaIyn-Al6saWOvhKxoAit-k4OaAeNA_8/s1600-h/Crystal+Clear%E5%B0%81%E9%9D%A2_only.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 219px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlZpF9jRhkLeTvnzkvpMPRxqzLD2g4ZtyZG6D3LMBvcVUcwot9ZFHxPjG-_hRvkj5tbZbvYHfEb9yKfrOkJOd86JWJ6QG3F8XVvO__Oi6fnc4ZaIyn-Al6saWOvhKxoAit-k4OaAeNA_8/s320/Crystal+Clear%E5%B0%81%E9%9D%A2_only.png" alt="" id="BLOGGER_PHOTO_ID_5337430629540691522" border="0" /></a><br />真可谓好事多磨,经过两个多月的调整、排版、纠错,《敏捷无敌》终于终稿。明日即将送至印刷厂进行批量印刷。这次首印5000册,价格39.00.<br /><br />这里提前晒晒书皮吧。<br /><br /><br /><br />欢迎大家拿到真书的时候多提宝贵意见,到《敏捷无敌》论坛 <a href="http://bbs.richaide.com/">http://bbs.richaide.com</a> 进行在线沟通交流。<br /><br />谢谢。<div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-44741957339239831012009-02-23T12:40:00.003+08:002009-03-07T23:01:34.192+08:00欢迎大家共同建设一个《敏捷社区》好久没有更新这个Blog了,主要是因为最近正在忙于 一本敏捷软件开发的小说。<br /><br />现在终于完工了,跟出版社签订了合同,即将出版。<br /><br />同时准备建设一个 关于敏捷软件开发的社区: <a href="http://bbs.richaide.com/index.php">http://bbs.richaide.com/index.php</a><br /><br />欢迎大家到那里去捧场!<div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com2tag:blogger.com,1999:blog-5230397141586498545.post-87751839103363248292008-11-05T16:05:00.001+08:002008-11-05T16:07:29.496+08:00Hire Attitude - Train SkillsFrankly speaking I didn’t understand what these words meant until I had a Google just now.<br /><br /><span style="font-weight: bold; color: rgb(255, 102, 0);">It should be Hire for attitude - train for skill</span><br /><br />Some snip from internet about the explanation of this sentence:<br /><br />The most important factor in hiring is attitude. Hire for it. Through the resume process you're going to find people who have the basic skill levels you're looking for. That's the first hoop. Then with a telephone screen you can find out if people have the foundational knowledge and the intellect for what you want.<br /><br />But when you bring them in for an interview, the most important question you need to answer is "Can we work with this applicant?" The second most-important question is "Is this applicant teachable?"<br /><br />If you cannot answer "yes" to BOTH of those questions, a "do not hire" sign needs start flashing above your candidate's head. Move them along, wish them well, and bring in your next applicant.<div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-14381556926521725512008-10-20T09:00:00.005+08:002008-10-20T09:23:50.488+08:00ScrumWorks,让Scrum更敏捷<blockquote><div style="text-align: left;"><span style=";font-family:宋体;font-size:14;" lang="EN-US"><span style="font-size:100%;">这个Scrum工具用了很久了,但一直没有<a href="http://scrumxp.blogspot.com/">总结ScrumWorks</a>,这次小珂同学要求写一个介绍,这才真的写下来,希望对大家的Scrum实践有所帮助。</span></span><br /><span style=";font-family:宋体;font-size:14;" lang="EN-US"></span></div><p class="MsoTitle"><span style=";font-family:宋体;font-size:14;" ></span><span style="font-family:宋体;"> <span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: right;" align="right"><span lang="EN-US" style="font-family:宋体;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: right;" align="right"><span style="font-family:宋体;">---敏捷精灵</span></p></blockquote><p class="MsoNormal" style="text-align: right;" align="right"><span style="font-family:宋体;"><br /></span><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: right;" align="right"><span lang="EN-US" style="font-family:宋体;"><br /></span><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><a name="6860270998223020365"><b><span style=";font-family:宋体;font-size:12;" ><span style="font-size:100%;">曲折的选择之路</span><span lang="EN-US"><o:p></o:p></span></span></b></a></p> <span style=""></span> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">在开始实施<span lang="EN-US">Scrum</span>之前,除了需要对所有涉及到的人进行培训之外,另外一项重要工作就是选择一个适合自己的<span lang="EN-US">Scrum</span>工具。很多关于敏捷的论文或教科书都提到了白板和<span lang="EN-US">Excel</span>电子表格。但</span><span style="font-family:宋体;">白板与</span><span lang="EN-US" style="font-family:宋体;">Excel</span><span style="font-family:宋体;">电子表格明显不能满足一个注重过程资产的软件项目的要求。白板虽然适合</span><span style="font-family:宋体;">每天的跟踪汇报,但是对<span lang="EN-US">Product Backlog</span>支持明显不够,也没办法保留历史纪录。<span style="" lang="EN-US">Excel</span>虽然有很多现成的模板可以用,但当是团队成员比较多时,同时修改一个共享<span lang="EN-US">Excel</span>文件,会相互冲突,不好同步。</span></p><p class="MsoNormal"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">我们最初使用的是一个叫<b><u><span lang="EN-US" style="color:blue;">ScrumWiki</span></u></b></span><span style="font-family:宋体;">的</span><span style="font-family:宋体;">免费<span lang="EN-US">/</span>开源工具。因为</span><span style="font-family:宋体;">之前大家一直把<span lang="EN-US">Wiki</span>当作知识共享工具,每个人都很熟悉<span lang="EN-US">Wiki</span>的机制与语法,采用采用<span lang="EN-US">wiki</span>这种共享创作模式的<span lang="EN-US">Scrum</span>小工具,可以让大家随意编辑,更新任务状态,非常适合我们当时的分布式开发。但随着<span lang="EN-US">Product Backlog</span>变得越来越大,变化越来越频繁的时候,<b><u><span lang="EN-US" style="color:blue;">ScrumWiki</span></u></b></span><span style="font-family:宋体;">明显不能满足我们的需求。特别需要指出的是,</span><span style="font-family:宋体;">作为免费开源的软件,因为已经没有人支持和维护,系统存在一些<span lang="EN-US">Bug</span>只能靠自己修正,花在维护和添加新功能到这个免费工具上的时间越来越多,已经是“买椟还珠”,大家决定放弃这个工具。</span></p><p class="MsoNormal"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">几经周折,最终选定了<a href="http://danube.com/scrumworks/basic/features"><span lang="EN-US">ScrumWorks Basic</span></a>作为我们实施<span lang="EN-US">Scrum</span>的工具。为什么选择<span lang="EN-US">ScrumWorks Basic</span>, 而不是其它如</span><span lang="EN-US" style="font-family:宋体;">XPlanner</span><span style="font-family:宋体;">、</span><span lang="EN-US" style="font-family:宋体;">Version One</span><span style="font-family:宋体;">、<span lang="EN-US">Mingle</span>、<span lang="EN-US">Rally</span>等工具呢?首先,这是一个商业化产品,一直有人持续开发与维护,大家不想重蹈<span lang="EN-US">ScrumWiki</span>无人维护的覆辙;其次,有免费使用版,且无时间限制,如果需要,我们可以随时无缝切换到商业版</span><span lang="EN-US" style="font-family:宋体;">ScrumWorks Pro</span><span style="font-family:宋体;">;第三,根据当时的一个调查,业界使用率排名第三位,说明有足够的用户基础。第四,这个工具是专门为<span lang="EN-US">Scrum</span>量身定做的,简洁直接,不像<span lang="EN-US">Version One</span>、<span lang="EN-US">Mingle</span>等工具因为需要考虑其它敏捷软件开发模式,而搞得过于庞大复杂。第五,从功能上讲,个人认为这个是对<span lang="EN-US">Scrum</span>各个方面支持最好的商业产品。</span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">一年下来,事实证明我们当初对<a href="http://scrumxp.blogspot.com/"><span lang="EN-US">ScrumWorks Basic</span></a>的选择是非常正确的,它不仅容易安装、使用方便,还让我们的<span lang="EN-US">Scrum</span>实践更加敏捷。<br /><span class="fullpost"><br /><span lang="EN-US"><o:p></o:p></span></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><b><span lang="EN-US" style="font-family:宋体;">CS/BS</span></b></span><b><span style=";font-family:宋体;font-size:12;" ><span style="font-size:100%;">两种访问模式,轻松满足</span><span lang="EN-US" style="font-size:100%;">Scrum</span><span style="font-size:100%;">项目管理需要</span></span></b></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><b><span style=";font-family:宋体;font-size:12;" ><span lang="EN-US"><o:p></o:p></span></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span>ScrumWorks Basic</span><span style="font-family:宋体;">既提供了简单的<span lang="EN-US">web</span>客户端,还提供了强大的<span lang="EN-US">java</span>客户端,可以满足不同的使用需要。</span></p><p class="MsoNormal" style="text-align: left;" align="left"><img src="file:///C:/DOCUME%7E1/lijiwang/LOCALS%7E1/Temp/moz-screenshot-3.jpg" alt="" /><img src="file:///C:/DOCUME%7E1/lijiwang/LOCALS%7E1/Temp/moz-screenshot-4.jpg" alt="" /><img style="width: 375px; height: 452px;" src="http://danube.com/docs/scrumworks/latest/images/quickstart_diagram1.png" alt="ScrumWorks Basic clients and server" /></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"> <v:f eqn="sum @0 1 0"> <v:f eqn="sum 0 0 @1"> <v:f eqn="prod @2 1 2"> <v:f eqn="prod @3 21600 pixelWidth"> <v:f eqn="prod @3 21600 pixelHeight"> <v:f eqn="sum @0 0 1"> <v:f eqn="prod @6 1 2"> <v:f eqn="prod @7 21600 pixelWidth"> <v:f eqn="sum @8 21600 0"> <v:f eqn="prod @7 21600 pixelHeight"> <v:f eqn="sum @10 21600 0"> </v:f> <v:path extrusionok="f" gradientshapeok="t" connecttype="rect"> <o:lock ext="edit" aspectratio="t"> </o:lock><v:shape id="_x0000_i1034" type="#_x0000_t75" alt="scrumworks.bmp" style="width: 201.75pt; height: 243pt; visibility: visible;"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image001.png" title="scrumworks"> </v:imagedata></v:shape></v:path></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:formulas></v:stroke></v:shapetype></span><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">桌面客户端需要在访问的机器上安装<span lang="EN-US">Java</span>运行环境,允许用户操作所有的<span lang="EN-US">Scrum</span>数据,譬如添加、修改、删除、移动<span lang="EN-US">Backlog</span>条目,从<span lang="EN-US">Excel</span>中导入或导出数据到<span lang="EN-US">Execl</span>,后台数据备份,阻碍<span lang="EN-US">(Impediment)</span>管理等。</span><span lang="EN-US" style="font-family:宋体;"><br /></span></p><p class="MsoNormal" style="text-align: left;" align="left"> <img style="width: 414px; height: 386px;" src="http://danube.com/docs/scrumworks/latest/images/backlogWindow.png" alt="Product Backlog Window" /><br /><span lang="EN-US" style="font-family:宋体;"><v:shape id="_x0000_i1033" type="#_x0000_t75" style="width: 247.5pt; height: 231.75pt; visibility: visible;"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image002.png" title=""> </v:imagedata></v:shape></span><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">通过</span><span lang="EN-US" style="font-family:宋体;">ScrumWorks Basic</span><span style="font-family:宋体;">创建或者打开一个产品后,通过桌面客户端登陆,即可以看到如上所示窗口。右侧是<span lang="EN-US">Product Backlog</span>,可以通过“<span lang="EN-US">Releases</span>”方式为<span lang="EN-US">Product Item</span>组织分类,这点对于我们做了<span lang="EN-US">10</span>多年的产品非常重要,因为产品<span lang="EN-US">Backlog</span>需要分成多个发布版本来管理。左侧是以时间排序的<span lang="EN-US">Sprint</span>列表以及对应的<span lang="EN-US">Sprint Backlog</span>,可以根据需要,随时隐藏其中一侧。由于采用了“相对优先级”的概念,通过拖曳的方式就可以非常简单的设定优先级先后顺序(优先级高的在上面,低的在下面)。从“<span lang="EN-US">Product Backlog</span>”到“<span lang="EN-US">Sprint Backlog</span>”的过渡非常简单,只需要选定一组最高优先级的<span lang="EN-US">Backlog </span>条目,直接拖过去或拖回来即可,大大提高了我们开<span lang="EN-US">Sprint</span>计划会议的效率。</span><span lang="EN-US" style="font-family:宋体;"><br /><br /><span style=""> </span></span><span style="font-family:宋体;">左上角的分栏可以告诉我们正在工作在哪个产品上,因为我们一个团队就要负责三个产品,这点对多个产品的支持对我们也非常重要。</span></p><p class="MsoNormal" style="text-indent: 21pt;"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US" style="font-family:宋体;"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US" style="font-family:宋体;">Web</span><span style="font-family:宋体;">客户端(如下图所示)提供了一个轻量级的基于浏览器的访问方式,可以从任何一台装有<span lang="EN-US">Web</span>浏览器的设备上访问。它提供了一个非常个性化的总结性的<span lang="EN-US">Web</span>页面,不仅有<span lang="EN-US">Sprint </span>的<span lang="EN-US">Burndown Chart</span>,还单独区分“用户自己的任务”、“全部任务”及“所有阻塞<span lang="EN-US">(Impediments)</span>”<span lang="EN-US">, </span>方便单个用户更新任务状态、剩余工作量,添加备注,查看阻碍<span lang="EN-US">(Impediment)</span>等。</span></p><p class="MsoNormal" style="text-indent: 21pt;"><br /></p><p class="MsoNormal" style="text-indent: 21pt;"><a href="javascript:void(0);" onclick="window.open('/sh_team.htm', '', 'width=950, height=600, scrollbars=yes'); return false"> <img style="width: 354px; height: 639px;" alt="Team Member View" src="http://danube.com/sw_images/sh_team.png" /> </a><a href="javascript:void(0);" onclick="window.open('/sh_team.htm', '', 'width=950, height=600, scrollbars=yes'); return false"> </a></p><p class="MsoNormal" style="text-indent: 21pt;"><br /><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US" style="font-family:宋体;"><v:shape id="图片_x0020_4" spid="_x0000_i1032" type="#_x0000_t75" style="width: 252.75pt; height: 471pt; visibility: visible;"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image003.png" title=""> </v:imagedata></v:shape></span><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><b><span style=";font-family:宋体;font-size:12;" ><span style="font-size:100%;">简单高效的</span><span lang="EN-US" style="font-size:100%;">Sprint</span><span style="font-size:100%;">管理</span> <span lang="EN-US"><o:p></o:p></span></span></b></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span lang="EN-US" style="font-family:宋体;">ScrumWorks Basic</span><span style="font-family:宋体;">提供了一个单独的<span lang="EN-US">Sprint</span>管理接口,让我们的每个<span lang="EN-US">Sprint</span>都变得有条不紊。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">每次新开一个<span lang="EN-US">Sprint</span>时,会有一个单独的对话框,只需要输入起止时间、<span lang="EN-US">Sprint</span>名称、<span lang="EN-US">Sprint</span>目标,以及选择对应的<span lang="EN-US">Scrum </span>团队即可。在<span lang="EN-US">Scrum</span>开发模式下,为每个<span lang="EN-US">Sprint</span>起一个名字,不但可以增加团队软件开发的乐趣,提高大家的参与程度,还可以记录下<span lang="EN-US">Scrum Team</span>当时的心情,这点非常重要,而<span lang="EN-US">ScrumWorks Basic</span>正好提供了这个接口。列举我们的几个<span lang="EN-US">Sprint</span>名称,创意来自于《加里森敢死队》:</span><span style=";font-family:宋体;font-size:9;" lang="EN-US"><o:p></o:p></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Sprint1---"</span><span style="font-family:宋体;">兵不厌诈(<span lang="EN-US">the Big Con</span>)<span lang="EN-US">"<br /> </span>因为大家第一次采用<span lang="EN-US">Scrum, </span>对这个<span lang="EN-US">Agile</span>流程都很期待,同时呢,对于怎么做,如何用,还很模糊<span lang="EN-US"><o:p></o:p></span></span></li></ul> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Sprint2---"</span><span style="font-family:宋体;">越狱记(<span lang="EN-US">Breakout</span>) <span lang="EN-US"><br /> </span>经过了第一个<span lang="EN-US">Sprint</span>后,大家干劲十足,士气高涨,认为我们可以在第二个<span lang="EN-US">Sprint</span>取得重大突破(<span lang="EN-US">breakout</span>)<span lang="EN-US"><o:p></o:p></span></span></li></ul> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Sprint3---"</span><span style="font-family:宋体;">虎口余生(<span lang="EN-US">Hours to doom day</span>)<span lang="EN-US">"<br /> </span>这个<span lang="EN-US">Sprint</span>里面有很多技术难点需要破解,如果解决不了,那么后面的工作就无法进行,将是非常关键的一次攻坚战。<span lang="EN-US"><o:p></o:p></span></span></li></ul> <ul type="disc"><li class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-family:宋体;">Sprint4---"</span><span style="font-family:宋体;">大结局<span lang="EN-US">(The Big End)"<br /> </span>这次计划会议,作为<span lang="EN-US">Scrum Master</span>,自己因为有事没有参加,汗!但大家认为工作基本差不多可以做完了,起了个结局的名字。<span lang="EN-US"><o:p></o:p></span></span></li></ul> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">每天开站立例会时,可以把如下图所示的<span lang="EN-US">Sprint</span>明细窗口用投影仪直接投放到墙上。让大家可以看到<span lang="EN-US">Sprint</span>目标、<span lang="EN-US">Burndown Chart</span>、<span lang="EN-US">Sprint Backlog </span>条目的状态及剩余时间等,提高沟通的效率和紧迫感。</span></p><p class="MsoNormal"><img style="width: 472px; height: 381px;" src="http://danube.com/docs/scrumworks/latest/images/sprintDetailWindow.png" alt="Sprint Detail Window" /><br /> <br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><v:shape id="图片_x0020_7" spid="_x0000_i1031" type="#_x0000_t75" style="width: 289.5pt; height: 242.25pt; visibility: visible;"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image004.png" title=""> </v:imagedata></v:shape></span><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">如果遇到阻碍(<span lang="EN-US">Impediments</span>),可以通过如下接口及时添加并更新进展。</span></p><p class="MsoNormal"><img style="width: 472px; height: 167px;" src="http://danube.com/docs/scrumworks/latest/images/impedimentsWindow.png" alt="Impediments Window" /> </p><p class="MsoNormal"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><v:shape id="图片_x0020_1" spid="_x0000_i1030" type="#_x0000_t75" alt="Impediments Window" style="width: 287.25pt; height: 120.75pt; visibility: visible;"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image005.png" title="Impediments Window"> </v:imagedata></v:shape></span><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><b><span style="font-family:宋体;">通过“主题”分类管理<span lang="EN-US">Backlog</span></span></b></span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span lang="EN-US" style="font-family:宋体;">ScrumWorks Basic</span><span style="font-family:宋体;">提供的“主题”功能可以更方便的组织和管理<span lang="EN-US">product backlog</span>条目。“主题”就象关键字或者标签,可以分别应用到每个<span lang="EN-US">Product Backlog</span>条目,从而实现<span lang="EN-US">Product Backlog</span>条目的分组管理,这种方式比“文件夹”更有效,因为同一个条目按照自己的需要,可以施加一个或多个主题。 这样就可以轻松的按照指定的“主题”对<span lang="EN-US">backlog</span>进行过滤,迅速找到你关心的条目。这种管理方式,对一个庞大的<span lang="EN-US">Product Backlog</span>是非常有效率的。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">对主题的分类,没有任何限制。可以按照需求列表划分,也可以按照功能列表花粉,或者你想到的任何其它分类模式。<span lang="EN-US"><br /><span style=""><v:shape id="图片_x0020_13" spid="_x0000_i1029" type="#_x0000_t75" alt="Apply themes" style="width: 378pt; height: 264.75pt; visibility: visible;"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image006.png" title="Apply themes"> </v:imagedata></v:shape></span></span></span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /></p><p class="MsoNormal" style="text-align: left;" align="left"><img style="width: 387px; height: 271px;" src="http://danube.com/img/sw_apply_themes.png" alt="Apply themes" /><br /></p><p class="MsoNormal" style="text-align: left;" align="left"><br /></p><p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">我们把主题用到需求变更管理上后,获得了非常好的效果。把每一个需求,定义成一个主题。当某项需求变更的时候,我们通过该主题进行过滤,可以迅速找到可能受到影响的<span lang="EN-US">Backlog</span>条目,分析影响的大小,再对回归测试计划进行相应调整,可以保证产品功能的完整性不受干扰。</span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><b><span style="font-family:宋体;">多种报表</span></b></span><span style=";font-family:宋体;font-size:12;" lang="EN-US"><br /></span><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span lang="EN-US" style="font-family:宋体;">Scrum</span><span style="font-family:宋体;">象其它敏捷软件开发方法一样,依靠的是经验管理,<span lang="EN-US">ScrumWorks Basic</span>提供的多种报表与衡量机制,为经验管理提供了超强的支持。</span><span lang="EN-US" style="font-family:宋体;"><o:p></o:p></span></p> <table class="MsoNormalTable" style="width: 100%;" width="100%" border="0" cellpadding="0"> <tbody><tr style=""> <td style="padding: 0.75pt; width: 49.46%;" width="49%"> <p class="MsoNormal"><span lang="EN-US"><a href="javascript:void(0);"><span style="text-decoration: none;font-family:宋体;" ><v:shape id="图片_x0020_17" spid="_x0000_i1028" type="#_x0000_t75" alt="http://www.danube.com/sw_images/ACME_Basic_Product_Burndown_thumbnail.png" href="javascript:void(0);" style="width: 157.5pt; height: 135pt; visibility: visible;" button="t"> <v:fill detectmouseclick="t"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image007.png" title="ACME_Basic_Product_Burndown_thumbnail"> </v:imagedata></v:fill></v:shape></span></a></span><span style=";font-family:宋体;font-size:12;" lang="EN-US"><o:p></o:p></span></p> <a href="javascript:void(0);" onclick="window.open('http://danube.com/sh_product_burndown.htm', '', 'width=1100, height=600, scrollbars=yes'); return false"><img src="http://www.danube.com/sw_images/ACME_Basic_Product_Burndown_thumbnail.png" border="0" /></a></td> <td style="padding: 0.75pt;"> <p class="MsoNormal"><span lang="EN-US"><a href="javascript:void(0);"><span style="text-decoration: none;font-family:宋体;" ><v:shape id="图片_x0020_18" spid="_x0000_i1027" type="#_x0000_t75" alt="http://www.danube.com/sw_images/ACME_Enhanced_Product_Burndown_thumbnail.png" href="javascript:void(0);" style="width: 157.5pt; height: 135pt; visibility: visible;" button="t"> <v:fill detectmouseclick="t"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image008.png" title="ACME_Enhanced_Product_Burndown_thumbnail"> </v:imagedata></v:fill></v:shape></span></a></span><span style=";font-family:宋体;font-size:12;" lang="EN-US"><o:p></o:p></span></p> <a href="javascript:void(0);" onclick="window.open('http://danube.com/sh_enhanced_product_burndown.htm', '', 'width=1100, height=600, scrollbars=yes'); return false"><img src="http://www.danube.com/sw_images/ACME_Enhanced_Product_Burndown_thumbnail.png" border="0" /></a></td> </tr> <tr style=""> <td style="padding: 0.75pt;" valign="top"> <p class="MsoNormal"><span lang="EN-US"><a href="javascript:void(0);"><span style="font-family:宋体;">Product Burndown Chart</span></a></span><span lang="EN-US" style="font-family:宋体;"> – </span><span style="font-family:宋体;">从更高的<span lang="EN-US"><span style=""> </span><o:p></o:p></span></span></p> <p class="MsoNormal"><span style="font-family:宋体;">角度展示当前<span lang="EN-US">Product</span>的完成状况<span lang="EN-US">. </span></span><span style=";font-family:宋体;font-size:12;" lang="EN-US"><o:p></o:p></span></p> </td> <td style="padding: 0.75pt;" valign="top"> <p class="MsoNormal"><span lang="EN-US"><a href="javascript:void(0);"><span style="font-family:宋体;">Enhanced Product Burndown Chart</span></a></span><span lang="EN-US" style="font-family:宋体;">* </span><span style="font-family:宋体;">通过区分由于添加或者删除<span lang="EN-US">Backlog</span>条目引起的变化,可以更准确地预测出产品可能的完成日期。</span><span style=";font-family:宋体;font-size:12;" lang="EN-US"><o:p></o:p></span></p> </td> </tr> <tr style=""> <td style="padding: 0.75pt; width: 49.46%;" width="49%"> <p class="MsoNormal"><a href="javascript:void(0);" onclick="window.open('http://danube.com/sh_dashboard.htm', '', 'width=1100, height=600, scrollbars=yes'); return false"><img src="http://www.danube.com/img/sw_dashboard_report_thumb.png" border="0" /></a><br /><span lang="EN-US"><a href="javascript:void(0);"><span style="text-decoration: none;font-family:宋体;" ><v:shape id="图片_x0020_19" spid="_x0000_i1026" type="#_x0000_t75" alt="http://www.danube.com/img/sw_dashboard_report_thumb.png" href="javascript:void(0);" style="width: 150pt; height: 111.75pt; visibility: visible;" button="t"> <v:fill detectmouseclick="t"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image009.png" title="sw_dashboard_report_thumb"> </v:imagedata></v:fill></v:shape></span></a></span><span style=";font-family:宋体;font-size:12;" lang="EN-US"><o:p></o:p></span></p> </td> <td style="padding: 0.75pt;"> <p class="MsoNormal"><span lang="EN-US"><a href="javascript:void(0);"><span style="text-decoration: none;font-family:宋体;" ><v:shape id="图片_x0020_20" spid="_x0000_i1025" type="#_x0000_t75" alt="http://www.danube.com/img/sw_sprint_change_report_thumb.png" href="javascript:void(0);" style="width: 150pt; height: 115.5pt; visibility: visible;" button="t"> <v:fill detectmouseclick="t"> <v:imagedata src="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C04%5Cclip_image010.png" title="sw_sprint_change_report_thumb"> </v:imagedata></v:fill></v:shape></span></a></span><span style=";font-family:宋体;font-size:12;" lang="EN-US"><o:p></o:p></span></p> <a href="javascript:void(0);" onclick="window.open('http://danube.com/sh_change.htm', '', 'width=1100, height=600, scrollbars=yes'); return false"><img src="http://www.danube.com/img/sw_sprint_change_report_thumb.png" border="0" /></a></td> </tr> <tr style=""> <td style="padding: 0.75pt;" valign="top"> <p class="MsoNormal"><span lang="EN-US"><a href="javascript:void(0);"><span style="font-family:宋体;">Dashboard Report</span></a></span><span lang="EN-US" style="font-family:宋体;"> – </span><span style="font-family:宋体;">通过一种简洁的<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span style="font-family:宋体;">方式,将一个或多个产品的状态集成<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span style="font-family:宋体;">在一起,并以颜色分别标示是否延迟、<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span style="font-family:宋体;">是否正常,让高层管理团队对所有实<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span style="font-family:宋体;">施<span lang="EN-US">Scrum</span>的项目进展状况一目了然。<span lang="EN-US"><o:p></o:p></span></span></p> </td> <td style="padding: 0.75pt;" valign="top"> <p class="MsoNormal"><span lang="EN-US"><a href="javascript:void(0);"><span style="font-family:宋体;">Sprint Change Report</span></a></span><span lang="EN-US" style="font-family:宋体;"> – </span><span style="font-family:宋体;">详细勾勒出<span lang="EN-US">Sprint</span>中任务添加<span lang="EN-US">/</span>删除<span lang="EN-US">/</span>重新估算对整个产品<span lang="EN-US">backlog</span>的影响。<span lang="EN-US"><o:p></o:p></span></span></p> </td> </tr> </tbody></table> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><b><span style="font-family:宋体;"><br /></span></b></span></p><p class="MsoNormal" style="text-align: left;" align="left"><b><span style=";font-family:宋体;font-size:12;" ><span style="font-size:100%;">其它亮点</span><span lang="EN-US"><o:p></o:p></span></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style=";font-family:宋体;color:black;" lang="EN-US">ScrumWorks Basic</span><span style=";font-family:宋体;color:black;" >除了提供多用户机制外,还提供了</span><span style="font-family:宋体;">虚拟团队管理模式,一个用户可以加入不同的团队,这样</span><span style=";font-family:宋体;color:black;" >可以让我们成功实现以下项目管理模式:<span lang="EN-US"><o:p></o:p></span></span></p> <ul type="disc"><li class="MsoNormal" style="text-align: left;color:black;"><span style="font-family:宋体;">单个团队工作于单个项目<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;color:black;"><span style="font-family:宋体;">单个团队同时工作于单个产品的多个版本 <span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;color:black;"><span style="font-family:宋体;">单个团队工作与多个项目 <span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;color:black;"><span style="font-family:宋体;">多个团队工作于单个项目 <span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;color:black;"><span style="font-family:宋体;">多个团队工作与多个项目<span lang="EN-US"><o:p></o:p></span></span></li></ul> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">此外,<span lang="EN-US">ScrumWorks Basic</span>还提供了支持<span lang="EN-US">SOAP</span>协议的<span lang="EN-US">API</span>接口, 可以订制<span lang="EN-US">add-ons</span>、报表,或跟其它应用程序集成。</span></p><p class="MsoNormal" style="text-align: left;" align="left"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><b><span style=";font-family:宋体;font-size:12;" ><span style="font-size:100%;">缺失与遗憾</span><span lang="EN-US"><o:p></o:p></span></span></b></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">以上介绍都是基于<span lang="EN-US">ScrumWorks Basic</span>这个免费版本的,同</span><span lang="EN-US" style="font-family:宋体;">ScrumWorks Pro</span><span style="font-family:宋体;">这个收费的商业版本相比,缺乏如下重要特性:<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoListParagraph" style="margin-left: 31.5pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US" style="font-family:Wingdings;"><span style="">l<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]--><span style="font-family:宋体;">缺乏</span><span style="font-family:宋体;">对<span lang="EN-US">Bugzilla</span>和<span lang="EN-US">Jira</span>的集成<span lang="EN-US"><br />ScrumWorks Pro</span>与<span lang="EN-US">Bugzilla</span>和<span lang="EN-US">Jira</span>的集成,体现在它可以导入两者中的条目作为<span lang="EN-US">backlog</span>条目,并且可以像对其他<span lang="EN-US">backlog</span>条目一样,对这些条目进行操作。可以使用搜索来选择感兴趣的条目,并进行单独或多项导入操作。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoListParagraph" style="margin-left: 31.5pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US" style="font-family:Wingdings;"><span style="">l<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]--><span style="font-family:宋体;">没有带有主题过滤功能的<span lang="EN-US">burndown</span>图表,及其他辅助了解项目状况和走势的功能<span lang="EN-US"><br />ScrumWorks Pro</span>中,将<span lang="EN-US">backlog</span>按照主题进行组织后(类似于<span lang="EN-US">web 2.0</span>中使用标签),可以高亮或是过滤这些<span lang="EN-US">backlog</span>,并且能够使用同样的主题针对<span lang="EN-US">burndown</span>图进行过滤,这点对定量分析还是非常有用的。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoListParagraph" style="margin-left: 31.5pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US" style="font-family:Wingdings;"><span style="">l<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]--><span style="font-family:宋体;">不能添加附件<span lang="EN-US"><br /></span>对于<span lang="EN-US">Backlog</span>条目而言,如果能添加需求、设计等文档或其它文件,将是很有用的。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoListParagraph" style="margin-left: 31.5pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US" style="font-family:Wingdings;"><span style="">l<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]--><span style="font-family:宋体;">邮件自动通知<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoListParagraph" style="margin-left: 31.5pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US" style="font-family:Wingdings;"><span style="">l<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]--><span style="font-family:宋体;">跨团队、跨产品、跨项目的“我的任务”视图<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoListParagraph" style="margin-left: 31.5pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US" style="font-family:Wingdings;"><span style="">l<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]--><span lang="EN-US" style="font-family:宋体;">Sprint</span><span style="font-family:宋体;">日历订制,主动剔出周末或者其它假期的干扰,生成真正的<span lang="EN-US">Burndown Chart</span></span></p><p class="MsoListParagraph" style="margin-left: 31.5pt; text-align: left; text-indent: -21pt;" align="left"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">如果不想忍受这些缺失与遗憾,而且资金充裕的情况下,可以选择</span><span lang="EN-US" style="font-family:宋体;">ScrumWorks</span><span lang="EN-US" style="font-family:宋体;"> Pro</span><span style="font-family:宋体;">。</span></p><p class="MsoNormal"><br /><span style="font-family:宋体;"><span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US" style="font-family:宋体;"><span style=""> </span></span><span style="font-family:宋体;">更多敏捷实践总结,可以参考笔者的敏捷软件开发随笔<span lang="EN-US">(</span></span><a href="http://scrumxp.blogspot.com/"><span lang="EN-US"><span style="font-family:宋体;">http://scrumxp.blogspot.com</span></span></a><span lang="EN-US" style="font-family:宋体;">)</span><span style="font-family:宋体;">。<span lang="EN-US"><o:p></o:p></span></span></p><br /></Span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com5tag:blogger.com,1999:blog-5230397141586498545.post-90730319267107776212008-09-19T14:00:00.012+08:002008-10-06T11:22:21.918+08:00Scrum工具大比拼---流行Scrum工具一网打尽<blockquote style="color: rgb(255, 102, 0);">早就想写这个总结了,<span style="font-weight: bold;">因为SCRUM很好, 工具却难找</span>,但一直没有出台,是想等自己都试用过后,这样才更有发言权。可有些工具真的是很难搭起一个环境,这样只好摘录一些网友们的评论了!<br /><br /><div style="text-align: right;">---<a href="http://scrumxp.blogspot.com/">敏捷精灵</a></div></blockquote><div style="text-align: left;"><span style="font-weight: bold;">白板</span><br />最直接的方式,用于每天的tracking,还是非常不错的,但是对Product Backlog支持明显不够<br /><br /><span style="font-weight: bold;">Excel</span><br />我们最初也用过,主要是成员多的情况下,修改时会相互冲突,不好同步。。可以参考我写的这个文章<a href="http://scrumxp.blogspot.com/2008/09/excelscrum.html">[scrum工具]用excel表格工具实现Scrum</a><br /><br /><a href="http://scrumwiki.org/"><span style="font-weight: bold;">ScrumWiki</span></a><br />这个也用过,一开始感觉还不错。但当你的需求变多变复杂的情况下,就不容易用了。后台脚本使用Perl写的,我们的一个外国同事还对他专门进行了修改,增加了好多feature,这样才好用起来。作为免费的软件,目前已经没有人支持和维护。<br /><br /><p><a href="http://scarab.tigris.org/">Scarab</a><br /></p><p>Java server 平台, 支持灵活定制,免费</p> <p><a href="http://dcl.sourceforge.net/">Double Chocco Latte</a><br />基于PHP , 支持Apache 或IIS, MySQL or SQL Server , web 客户端,免费</p> <p><a href="http://versionone.net/index.asp">VersionOne</a><br />商业化产品!没什么好说的,业界老大!</p><p>从 功能上看,的确非常新颖,贯彻了敏捷中的User Story为先的原则,和VSTS类似,将Issues、Defect、Task合并概念成为Task(在VSTS中更加优雅,叫做WorkItem), 并且必须挂在UserStory下,这个工具值得看看,有试用版可以下载,或者可以使用他们在线提供的试验平台</p><p>基于ASP.NET and IIS和 SQL。</p><p>团队可以使用“V1:敏捷团队”来管理产品和sprint backlog,通过交互式的“任务板(taskboards)“和"测试板(testboards)" 进行每日开发活动,藉由报表和燃烧图查看进度,以及其他活动。<br />通过这些功能,“V1:敏捷团队”的用户可以做到: </p><ul><li>从电子表格中快速导入故事与缺陷,管理合并后的产品backlog。 </li><li>利用简单的多条目拖放操作,方便地完成计划制定、对故事划分优先级。 </li><li>使用电子白板界面同时制定多个版本的发布计划,提高效率。 </li><li>通过交互式的任务板(Taskboard)、测试板(Testboard)、每日Scrum dashboard来对版本和sprint进行可视化追踪。 </li><li>针对版本和sprints的关键敏捷度量数据生成图表,如Burndown、Velocity、Estimate trends、Cumulative Flow Reports。 </li></ul><p>唯一的问题就是提供的选择过多,对于寻求简单明了工具的人,并不是一个好产品!.</p> <p><a href="http://www.gnu.org/software/gnats/">GNATS</a><br />GNATS 传统来讲,属于缺陷跟踪工具, 但根据Jeff Sutherland, 已经支持 Scrum. 免费<br /></p>欢迎访问 "<a href="http://scrumxp.blogspot.com/">敏捷软件开发随笔---敏捷精灵二三事</a>"<br /><br /><span class="fullpost"><br /><br /><p><a href="http://www.selectscopemanager.com/">Select Scope Manager</a><br />商业化产品,有试用版可下载。定制性比较差.<br /></p> <p><a href="http://www.itwks.com/products/xp-planit.html">XP Plan-it</a><br />仅仅支持把你的数据放在他的server上,你通过下载的客户端更新和查看数据。。 好像对大多数人来讲意义不大<br /></p> <p><a href="http://xpweb.sourceforge.net/">XPWeb</a><br />另一个基于web的分布式方案。免费!</p> <p>使用PHP+MySql可运行于Linux, Windows, or Mac.但其演示在IE7下工作不怎么样,没法详细测试. </p> <p><a href="http://www.xplanner.org/">XPlanner</a><br />最牛的祖父级的开源工具,完全免费,业界使用率排名第四,真的是穷人的项目管理工具!</p><p>作为一个基于Web的XP团队计划和跟踪工具,要求 <a href="http://tomcat.apache.org/">Apace Tomcat</a>。</p><p>XP 独特的开发概念如iteration、user stories等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。 XPlanner特点包括:简单的模型规划,虚拟笔记卡(Virtual note cards),iterations、user stories与工作记录的追踪,未完成stories将自动迭代,工作时间追踪,生成团队效率,个人工时报表,SOAP界面支持。.</p> <p><a href="http://danube.com/scrumworks">ScrumWorks</a><br />个人认为对Scrum个方面支持最好的商业产品,市场排名第三位,我们一直在用。可支持不同的Team工作于不同的项目上,非常灵活。既有简单的web客户端,也有强大的java客户端。</p><p>有免费使用版,且无时间限制,我用的就是。<br /></p><p>支持对Bugzilla和Jira的集成,带有主题过滤功能的burndown图表,以及其他辅助了解项目状况和走势的功能,还有众多别的特性。 </p><p>ScrumWorks Pro与Bugzilla和Jira的集成,体现在它可以导入两者中的条目作为backlog条目,并且可以像对其他backlog条目一样,对这些条目 进行操作。可以使用搜索来选择感兴趣的条目,并进行单独或多项导入操作。Infoq与Danube科技的JD Aspinall进行了交流,讨论了这个特性的本质,以及如何与ScrumWorks Pro一起使用Bugzilla和Jira。<br /></p><p>我想提出这个特性请求的用户们都希望同时使用这两个工具。 </p><p>产品的许多用户将他们全部的bug作为Product Backlog条目录入到ScrumWorks Pro中并进行跟踪。不过也有很多其他用户,由于其他种种原因,使用不同的工具来跟踪问题,并且只选择导入某些特定的缺陷到ScrumWorks Pro中。 </p> <p> Burndown图表现在可以按照主题 进行分组。将backlog按照主题进行组织后(类似于web 2.0中使用标签),你可以高亮或是过滤这些backlog,并且能够使用同样的主题针对burndown图进行过滤。 </p> <p><a href="http://www.projectcards.com/">ProjectCards</a><br />ProjectCards 维持项目管理的索引卡片,精确的具体内容,一个项目控制盘,搜寻和过滤能力和拖放反复计划。六十日免费的试用。</p><p>基于 Client/Server结构,支持plug-in for Eclipse.</p> <p><a href="http://www.targetprocess.com/">TargetProcess</a><br />是一个敏捷项目管理与Bug跟踪系统。企业版提供很多定制的功能,包括Pre-paid 20 hours of development by TargetProcess stuff和提供开发指南与API参考的全部源代码。</p><p><span id="quote_5647">这个工具挺适合小项目团队的。<br /></span></p><p>这儿有个 <a href="http://targetprocess.com/video/quick_start/quick_start.htm">Demo</a> 帮助读者理解这个产品,内容是通过创建一个新的项目,在迭代计划时给开发人员指派故事(Story)。<br /><br />他们的<a href="http://targetprocess.com/buy.asp">价格模式</a>包括“按站点 / On Site”(需要安装)和“按需 / On Demand”(Web版),并提供折扣。 </p> <p><a href="http://www.extremeplanner.com/">ExtremePlanner</a><br />一个基于web的工具,它的功能几乎与ProjectCards完全一样,但是它添加了在任务级别进行评估的功能,这一改进非常棒。由于是基于web的, 所以它的界面可能不够漂亮,但是由于基于浏览器,它获得了一些灵活性(例如,当项目成员想在线查看状态报告时,如果是使用<b style="color: black; background-color: rgb(255, 255, 102);">ExtremePlanner</b>,就无需安装任何东西。)</p><p>我还在进一步考察这个工具,但是它看起来相当不错。</p><p>要求Windows, Linux, or MacOSX平台 (with Java 1.4.2 or higher and Apache Tomcat 4.1 or higher)<br /></p> <p><a href="http://www.rallydev.com/">Rally</a><br />商业软件用户使用率排名第二位!支持用户需求的筛选、扩展的筛选标准、改进版本剩余时间表、新的通知规则(notification rules),以及用于Eclipse和CruiseControl.NET的连接器。</p><p>有免费在线试用体验版本.</p> <p><a href="http://www.thoughtworks.com/"><span style="text-decoration: underline;">Mingle</span></a></p><p><span style="text-decoration: underline;"></span>Mingle在ThoughtWorks官方站点可以免费<u><a href="http://studios.thoughtworks.com/mingle/download-mingle/download-mingle.html" target="_blank">下载</a></u>,且5个用户以下的可以永久免费使用。Mingle是用纯<u><a href="http://bigwhite.blogbus.com/logs/2716344.html" target="_blank">Ruby</a></u>打造的且运行在<a href="http://jruby.codehaus.org/" target="_blank">JRuby</a>上 的一个产品,由于ruby是一门脚本语言,所以其移植性就很好,用其编写的程序安装起来也甚是容易,在Windows、Mac和Unix多种主流平台上跑 都是没有问题的;但也正是由于采用ruby编写,Mingle对硬件的要求也甚高,在我这台512M内存的机器上跑是超慢的、让人闹心的,建议还是放到性 能好的、单独的服务器上,内存容量官方建议是2G。还遇到了好几次ie错误,只好放弃了。</p><p>Mingle后台存储采用数据库方式,目前仅支持mysql和Postgres两种数据库版本,这个比 较遗憾,我无法使用现成的Oracle数据库了。</p><p>简单用了一下,发现如下很好的Features:<br />- 支持建立"个性化"项目模板,便于复用;<br />- 附带项目wiki,便于"项目知识积累和管理";<br />- 丰富的card properties,使需求驱动的管理流程更加清晰;<br />- 支持card和源代码之间的link;.</p></span></div><span class="fullpost"><a href="http://trichord.change-vision.com/en/index.html"><span style="font-weight: bold;">TRICHORD</span></a><br />这个名为“TRICHORD”的敏捷项目管理工具,是基于精益思想的,对Scrum也适用。TRI指的是三种视角(时间、任务和团队),CHORD则是和谐的意思。<br /><br />它作为全团队分享项目状态的一个工作空间来运作,里面提供三种层次的看板图——特性看板(发布—特性)、故事看板(故事—迭代)和任务看板(工作日—任务)。特性看板用停车场图来归纳,故事和任务看板用延烧图来归纳。<br /><br />具体可以参考这篇文章</span> <a href="http://scrumxp.blogspot.com/2008/07/blog-post.html">用“看板图”实现敏捷软件开发项目的可视化</a><img src="file:///C:/DOCUME%7E1/lijiwang/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com2tag:blogger.com,1999:blog-5230397141586498545.post-4242405215018613862008-09-18T08:59:00.004+08:002008-09-21T10:20:46.088+08:00Scrum介绍---Scrum in 90 minutes<blockquote style="color: rgb(255, 153, 0);">刚刚发现一个《<a href="http://scrumxp.blogspot.com/2008/09/scrum-in-5-min.html" target="_blank">Scrum in 5 min</a>》,而这个<a href="http://mountaingoatsoftware.com/presentation/access/30" target="_blank">43页的ppt</a>介绍地更加具体和详细, 可以真正让你懂得<span style="font-weight: bold;">什么是Scrum</span>。<br /><br /><div style="text-align: right;"><span style="font-weight: bold;">---敏捷精灵</span></div></blockquote><div style="text-align: left;"><span style="font-weight: bold;"></span><small class="comment"><span class="akpc_help"></span> </small> <div class="entry"> <blockquote>This is a 90 minute introduction to Scrum that is fully redistributable and reusable. Use it to introduce Scrum to your user group or organization. <a href="http://mountaingoatsoftware.com/presentation/access/30">Provided as a PowerPoint file</a> so you can customize it. For Mac users, the presentation is also <a href="http://mountaingoatsoftware.com/system/hidden_asset/file/49/RedistributableIntroToScrumKeynote.zip">available in Keynote</a>, which is what it was created in. Please acknowledge the source but please use it widely. …… <p>Thank you to these translators to their generous contributions.</p> <p>This is a <em>completely updated</em>, much fancier version of this popular file that has been available for download since 2002.</p> <p>…</p></blockquote><p><a href="http://www.kompakar.com.cn/kukoo/wp-content/uploads/2008/06/image23.png" rel="lightbox"><img src="http://www.kompakar.com.cn/kukoo/wp-content/uploads/2008/06/image-thumb21.png" title="Scrum in 90 min" style="border-width: 0px;" alt="Scrum in 90 min" width="484" border="0" height="354" /></a></p></div></div><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com3tag:blogger.com,1999:blog-5230397141586498545.post-9924811556246378842008-09-18T08:55:00.003+08:002008-09-21T10:19:46.934+08:00Scrum是什么---Scrum in 5 min<blockquote style="color: rgb(102, 51, 255); font-weight: bold;"><span style="font-size:130%;"><span style="font-weight: bold;">Scrum是什么</span></span>?什么是Scrum? 想简单了解一下吗?这是一个关于Scrum的快速介绍,只有16页,有一些很有趣的图,非常容易理解,是不错的扫盲书。<br /><div style="text-align: right;"><br />---敏捷精灵</div></blockquote><div style="text-align: right;"><br /></div><br /><br /><p align="center"><a href="http://www.kompakar.com.cn/kukoo/wp-content/uploads/2008/06/image15.png" rel="lightbox"><img title="scrum in 5 min" style="border-width: 0px;" alt="scrum in 5 min" src="http://www.kompakar.com.cn/kukoo/wp-content/uploads/2008/06/image-thumb13.png" width="229" border="0" height="480" /></a></p> <p><a href="http://www.softhouse.se/">Softhouse</a> - <a href="http://www.softhouse.se/Uploades/Scrum_eng_webb.pdf">Scrum in Five Minutes</a></p><p><a href="http://www.softhouse.se/Uploades/Scrum_eng_webb.pdf"><br /></a></p><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-8458780124459301912008-09-15T13:36:00.010+08:002008-09-16T09:19:40.589+08:00[最佳实践]在Scrum敏捷软件开发模式中,我们是如何开Sprint 计划会议的<blockquote style="color: rgb(255, 102, 0);">在Scrum敏捷开发框架下,最重要的一环就是 Sprint计划会议,这个会议开不好,整个Sprint会让Scrum Team痛苦不堪,也很难完成最初的Sprint目标。经过多次尝试后,我们终于找到了我们自己的模式。这些方法和原则对我们来讲是最好的,这基于我们自 己的知识,我们自己的项目情景,对于其他团队不一定试用。<br /><br /><div style="text-align: right;">---敏捷精灵</div></blockquote><div style="text-align: left;"><ul style="color: rgb(51, 51, 255); font-weight: bold;"><li><span style="font-size:130%;">跟任何其他会议一样,确定好会议日程</span></li></ul><br />sprint计划会议一定是要基于Time-Boxed, 在规定的时间内,一定要结束,就像一个Sprint一样。<br /><br />我们的日程一般是这样的<br /><br /><blockquote>Agenda:<br /><br /><span style="color: rgb(255, 204, 102);">Part I : Product Backlog Review [Product Owner, Scrum Team]</span><br /><br />Time: 2 Hours<br /><br />1) Enrich Product Backlog (60 Minutes)<br /><br />2) Re-Prioritize Product Backlog Items (10 Minutes)<br /><br />Break(10 Minutes)<br /><br />3) Set Sprint Goal (20 Minutes)<br /><br />4) Select Product Backlogs to Sprint (20 Minutes)<br /><br /><span style="color: rgb(255, 153, 102);">Part II: Sprint Planning [Scrum Team]</span><br /><br />Time : 3-4 Hours<br /><br />1) Work Breakdown by Two groups. (60 Minutes)<br /><br />Break(10 Minutes)<br /><br />2) Agree with the definition of "DONE" for each task with estimation (20 Minutes)<br /><br />3) Critical Path Analysis (20 Minutes)<br /><br />4) Resource Plan (20 Minutes)<br /><br />Break(10 Minutes)<br /><br />5) Find owner for each task. (40 Minutes)<br /><br />6) Risk/Dependecy Analysis (20 Minutes)<br /><br />7) AOB</blockquote><ul style="color: rgb(102, 102, 204); font-weight: bold;"><li><span style="font-size:130%;">Sprint计划会议必须在<span>一个完整天内</span>开完</span></li></ul><br />Sprint计划会议开始的那一天,也就是Sprint开始的一天。如果Sprint计划会议要跨越两天,可不是什么好玩的事情,你的Burndown Char就会象我们的这样很难看。因为我们是在前一天的下午开了4小时,第二天上午又开了3小时,对任务进行细化。。。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-viD3hRPWKt6upTK2naRVk4qESeFmnrSbUr3u0IV_g98DVUaHGc4l_NZPFqPCq783L7YFtTyMgNmhCh1DC_ZIKcqAZgpOkV7CD8AtHvlHaVW6AI0Om2nc_rlL3Zlg5fL1AO3DHSY1ByI/s1600-h/A_Interface_Sprint1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-viD3hRPWKt6upTK2naRVk4qESeFmnrSbUr3u0IV_g98DVUaHGc4l_NZPFqPCq783L7YFtTyMgNmhCh1DC_ZIKcqAZgpOkV7CD8AtHvlHaVW6AI0Om2nc_rlL3Zlg5fL1AO3DHSY1ByI/s400/A_Interface_Sprint1.png" alt="" id="BLOGGER_PHOTO_ID_5246422087142644578" border="0" /></a><br /><br /><span style="font-size:130%;"><br /></span></span></div> <ul style="font-weight: bold; color: rgb(102, 102, 204);"><li><span style="font-size:130%;">采用Delphi方法进行任务工作量的估算</span></li></ul><br /><br /><span class="fullpost"><br /><br />当进行任务细化的时候,每个人的估算是不一样的,当出现分歧的时候,采用Dephi估算方法,如果最高估算值跟最低估算值相差一半以上,而者就要进行沟通一下,看看为什么二者的理解相差这么多。沟通明白后,再重新估算<br /><ul style="font-weight: bold; color: rgb(102, 102, 204);"><li><span style="font-size:130%;">PM必须在<a href="http://scrumxp.blogspot.com/">Sprint计划会议</a>前给出Sprint参与人员的预期工作时间</span></li></ul><br />根据我们的历史统计,我们的投入率基本在75%左右,譬如按一个人上班8小时计算的话,他用在项目上时间大概在6小时左右。如果这个Sprint周期需要 15个工作日,这个员工可能要休假2天,参加培训1天,那他可以投入的预期工作时间 就是 6*(15-2-1)= 78小时。这样,在这个Sprint中,会有多少“人小时”就会事先计算出来。在Sprint计划会议中,当选择和细化Sprint任务的时候,有这个总 预期工作时间总作参考,就可以避免任务不足,或者承诺过多的问题。同时,也提醒每个人在领取任务的时候,不要过度承诺。<br /><ul><li><span style="color: rgb(102, 102, 204);font-size:130%;" ><span style="font-weight: bold;">为了提高任务细化的效率,将团队分成两个小组分别进行</span></span><br /></li></ul><br />最初,我都是打开投影仪,把ScrumWorks中的东西投到屏幕上去,大家一边说,我一边敲,我是挺忙活的,但是大家却不一定都能集中注意力。。。现在 回头看看,这种方法真是有点蠢!当team成员少的时候,在最初的几个Sprint,大家在兴趣还比较高的时候,这种方法还行。<br /><br />当Team成员超过6个的时候,问题出现了,首先是当讨论某一个问题的时候,总会有人问,刚才你们说什么来着?很显然,他走神了。。。另外,人多地时候,对同一个任务的细化,即使采用Delphi方法,沟通成本也很高,很费时间。<br /><br />把team分成两个小组,分别对任务进行细化。细化时,不再用投影仪,而是把Sprint Backlog中的内容按大块张贴在墙上,大家站在墙前,拿着纪事帖直接进行细化和估算。 当两个小组都进行完后,互相检查对方对任务的细化,解决争议,澄清模糊的地方。这样一来,就把大家的积极性调动起来,参与程度非常高,效率也高。<br /><ul><li><span style="color: rgb(102, 102, 204);font-size:130%;" ><span style="font-weight: bold;">对任务"DONE"的定义一定要做好,做细!</span></span><br /></li></ul><br />这个问题不言而喻,就不多说了。<br /><br /><ul style="color: rgb(102, 102, 204); font-weight: bold;"><li><span style="font-size:130%;">虽然我们采用了Scrum,但是传统的Risk/Dependency分析还是不要丢弃。</span></li></ul><br />即使不再采用Gatt图,但在Sprint计划会议结束前,进行Risk/Dependency的分析,还是帮助我们发现了一些问题,通过重新调整任务的优先级,顺利保证了Sprint的成功。<br /><br /><ul style="font-weight: bold; color: rgb(102, 102, 204);"><li><span style="font-size:130%;">产品负责人(Product Owner)一定要参加。</span></li></ul><br />实在不能参加的话,也要指定一个人授权代理。否则,就不要开Sprint 计划会议。<br /><span style="font-size:130%;"><br /></span><ul style="font-weight: bold; color: rgb(102, 102, 204);"><li><span style="font-size:130%;">Sprint Goal一定要定义的简洁、突出,选择的Sprint Backlog Item一定要强内聚,松耦合</span></li></ul><br />这样大家才能不受或者少受外界的干扰,目标明确。<br /><ul><li><span style="color: rgb(102, 102, 204);font-size:130%;" ><span style="font-weight: bold;">要给Sprint起一个好的名字</span></span><br /></li></ul><br />关于这个问题,就不多说了,详见 前文 “<a href="http://scrumxp.blogspot.com/2008/09/scrumsprint.html">在Scrum开发模式下,为Sprint起名字的艺术</a>”<br /><br /></Span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-48357878070434957442008-09-11T21:48:00.002+08:002008-09-11T22:48:26.233+08:00国外敏捷软件开发相关网站资源大全<span id="rref"><br /><img src="http://www.zhangxun.com/img/1star.gif" /> <a href="http://www.agilealliance.com/" target="_blank">Agile Alliance</a><br />敏捷联盟<br />敏捷方法发源地,有许多最新的研究文章和发展动态。<br /><br /><a href="http://www.cetus-links.org/" target="_blank">Cetus-Links</a><br />历史悠久的对象技术资源网站。在“OO Project Management - OOA/D Methods”条目下提供了大量迭代与敏捷方法资源链接。<br /><br /><a href="http://www.bradapp.net/" target="_blank">Brad Appleton</a><br />大量软件工程、迭代方法资源链接<br /><br /><a href="http://c2.com/cgi/wiki?FindPage" target="_blank">C2 Wiki</a><br />XP、敏捷方法、设计模式等重要思想的发源地<br />Ward Cunningham<br /><br /><img src="http://www.zhangxun.com/img/1star.gif" /> <a href="http://www.extremeprogramming.org/" target="_blank">极限编程</a><br />Don Wells<br />不错的 XP 介绍<br /><br /><img src="http://www.zhangxun.com/img/1star.gif" /> <a href="http://xprogramming.com/" target="_blank">极限编程</a><br />Ron Jeffries<br />XP 大师介绍 XP<br /><br /><a href="http://www.agilemodeling.com/" target="_blank">Agile Modeling</a><br />敏捷建模<br />Scott Ambler<br /><br /><span class="fullpost"><br /><br /><a href="http://sunset.usc.edu/" target="_blank">美国南加州大学(USC)软件工程中心(CSE)</a><br />软件工程大师 Barry Boehm 多年来有关迭代方法(如螺旋模型)的研究成果。<br /><br /><a href="http://www.cutter.com/" target="_blank">Cutter Consortium</a><br />著名的软件工程咨询机构,有一个“敏捷项目管理”专题。<br /><br /><img src="http://www.zhangxun.com/img/1star.gif" /> <a href="http://martinfowler.com/" target="_blank">XP 敏捷大师 Martin Fowler</a><br /><br /><a href="http://www.jimhighsmith.com/" target="_blank">ASD(Adaptive Software Development)方法创始人 Jim Highsmith</a><br /><br /><a href="http://alistair.cockburn.us/" target="_blank">Crystal 方法创始人 Alistair Cockburn</a><br /><br /><a href="http://www.controlchaos.com/" target="_blank">Scrum 方法创始人 Ken Schwaber</a><br /><br /><a href="http://jeffsutherland.com/" target="_blank">Scrum 方法创始人 Jeff Sutherland</a><br /><br /><a href="http://www.gilb.com/" target="_blank">Evo 创始人 Tom Gilb 大师</a><br />历史最悠久的迭代演进式方法之一<br /><br /><a href="http://www.craiglarman.com/" target="_blank">敏捷方法大师 Craig Larman</a><br />我向全国每一位软件项目经理推荐 Larman 的著作 Agile & Iterative Development: A Manager's Guide。<br /><br /><a href="http://www.objectmentor.com/" target="_blank">Object Mentor</a><br />敏捷大师 Robert C. Martin 的咨询公司<br /><br /><a href="http://www.nebulon.com/" target="_blank">Nebulon</a><br />FDD 方法发明人 Jeff De Luca 的公司网站<br /><br /><a href="http://www.dsdm.org/" target="_blank">DSDM 方法官方网站</a><br /><br /><img src="http://www.zhangxun.com/img/1star.gif" /> <a href="http://www-128.ibm.com/developerworks/rational/products/rup/" target="_blank">Rational Unified Process</a><br />IBM RUP 产品,如今叫 RMC(Rational Method Composer)<br /><br /><a href="http://name.case.unibz.it/" target="_blank">Network for Agile Methodologies Experience (NAME)</a><br />一个介绍敏捷方法研究及相关资源的欧洲网站<br /><br /><a href="http://www.agilemetrics.com/" target="_blank">Agile Metrics</a><br />Robin Gibson<br />ThoughtWorks 的咨询顾问 Robin Gibson 创建的个人网站,其中 Agile Tool 栏目下的 Estimates/Risk Spreadsheet 很不错。<br /><br /><a href="http://www.xpsd.org/cgi-bin/wiki" target="_blank">XP San Diego Wiki</a><br />美国圣地亚哥地区的一个 XP 社团 Wiki,其中的 Agile Tools、Book Reviews 以及当地采用敏捷方法的企业名单值得一看。</span><br /><br /><br /></span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-63014783103383997592008-09-10T21:57:00.005+08:002008-09-19T12:26:20.461+08:00[scrum工具]用excel表格工具实现Scrum<blockquote style="color: rgb(255, 153, 102);">这是最初用<a href="http://scrumxp.blogspot.com/">Scrum的时候,搜集到的一个工具</a>,感觉还是挺不错的。虽然现在我们改用ScrumWorks, 但我还是喜欢用这个工具生成一个初始的Burndown Chart,再把他打印出来,贴到看板上,每日开Standup meeting的时候,手工更新一下,生成实际的Burndown chart.。<br /><br /><div style="text-align: right;">----敏捷精灵<br /></div></blockquote><br />需要的朋友<a href="http://sites.google.com/site/scrumxpclub/Home/SprintBurndown.xlt?attredirects=0">点这里下载</a>。<br /><br />这里还有一个<a href="http://sites.google.com/site/scrumxpclub/Home/Sample.xls?attredirects=0">实际模拟使用示例</a>,不妨也看看。<br /><br /><span class="fullpost"><br />以后再添加其它的工具<br /></span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com2tag:blogger.com,1999:blog-5230397141586498545.post-69516799778190421192008-09-10T10:09:00.007+08:002008-09-24T15:32:10.480+08:00Scrum敏捷项目管理的 ppt<span style="color: rgb(102, 0, 204);"></span><blockquote><span style="color: rgb(102, 0, 204);">很久以前总结的<span style="font-weight: bold;">Scrum敏捷项目管理</span>资料,给Team内部做<a href="http://scrumxp.blogspot.com/">Scrum</a> Training用的,拿到这里,希望对大家又帮助,不过是E文的啊!</span><br /><br /><div style="text-align: right;"><span style="color: rgb(102, 0, 204);">----敏捷精灵</span></div></blockquote><div style="text-align: right;"><span style="color: rgb(102, 0, 204);"></span><br /></div><br />想下载这个 <span style="font-weight: bold;">Scrum敏捷项目管理</span>.ppt 的可以<a href="http://sites.google.com/site/scrumxpclub/Home/ScrumIntroduction.pdf?attredirects=0">直接点击这里</a><br /><br /><span class="fullpost">对于<span style="font-weight: bold;">Scrum敏捷项目管理</span>,每个人都会有自己不同的理解, 欢迎大家提出意见。<br /></span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-44137256170737084852008-09-08T09:16:00.015+08:002008-09-08T13:09:02.406+08:00在Scrum开发模式下,为Sprint起名字的艺术<blockquote><span style="font-weight: bold; color: rgb(255, 0, 0);">在过去的几个月中,我们在每个</span><a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://scrumxp.blogspot.com/">Sprint 计划会议</a><span style="font-weight: bold; color: rgb(255, 0, 0);">上,都会花上几分钟的时间,一起为当前的Sprint起名字,现在回顾一下,还是非常有意思的。</span><br /><br /><div style="text-align: right;"><span style="font-weight: bold; color: rgb(255, 0, 0);">---敏捷精灵</span><br /></div></blockquote>看一下我们为项目A起的Sprint名字:<br /><ul><li>Sprint1---"The Big Con" </li><li>Sprint2---"Breakout" </li><li>Sprint3---"Hours to doom day" </li><li>Sprint4---"The Big End"</li><li>Sprint5---"The Dragon Warrior"</li></ul>熟悉加里森敢死队的同学一定会很兴奋的,因为我们这里面用了《加里森敢死队》好几集的名字,之所以选择《加里森敢死队》,是因为我觉得这个团队里面有一个很好的team leader-----<br />上尉加里森,以及各有所长的成员:小偷、酋长、戏子、强盗。。。他们各自发挥自己所长,完成了很多难以想象的任务,这样的团队,对于软件开发团队来讲,太需要了!<br /><ul><li>“队长”(绰号:“头儿”)加里森中尉(<i><span lang="en">Lt. Craig Garrison</span></i>)由罗·哈珀(<i><span lang="en">Ron Harper</span></i>)饰演,<a href="http://zh.wikipedia.org/wiki/%E8%A5%BF%E7%82%B9%E5%86%9B%E6%A0%A1" title="西点军校">西点军校</a>毕业生,<a href="http://zh.wikipedia.org/wiki/%E7%BE%8E%E5%9B%BD%E9%99%86%E5%86%9B" title="美国陆军">美国陆军</a>情报部中尉,敢死队队长。<a href="http://zh.wikipedia.org/wiki/%E7%AB%A5%E8%87%AA%E8%8D%A3" title="童自荣">童自荣</a>配音。</li><li>“戏子”(<i><span lang="en">Actor</span></i>)由塞萨·多诺万(<i><span lang="en">Cesare Danova</span></i>)饰演,一名诈骗犯,精通多种语言。他的特长是化妆与扮演。<a href="http://zh.wikipedia.org/wiki/%E4%B9%94%E6%A6%9B" title="乔榛">乔榛</a>配音。</li><li>“卡西诺”(<i><span lang="en">Casino</span></i>)由鲁迪·索拉里(<i><span lang="en">Rudy Solari</span></i>)饰演,一名惯盗,精通保险柜锁,对爆炸物也有一些了解。<a href="http://zh.wikipedia.org/w/index.php?title=%E6%9D%A8%E6%88%90%E7%BA%AF&action=edit&redlink=1" class="new" title="杨成纯">杨成纯</a>配音。</li><li>“酋长”(<i><span lang="en">Chief</span></i>)由布兰登·波恩(<i><span lang="en">Brendon Boone</span></i>)饰演,一名杀人犯,他的特长是飞刀、机械修理和驾驶。<a href="http://zh.wikipedia.org/w/index.php?title=%E6%96%BD%E8%9E%8D&action=edit&redlink=1" class="new" title="施融">施融</a>配音。</li><li>“高尼夫”(一译“高涅夫”、“哥里弗”)(<i><span lang="en">Goniff</span></i>)由克里斯托弗·卡里(<i><span lang="en">Christopher Cary</span></i>)饰演,一名<a href="http://zh.wikipedia.org/wiki/%E6%89%92%E6%89%8B" title="扒手" class="mw-redirect">扒手</a>神偷。<a href="http://zh.wikipedia.org/w/index.php?title=%E5%B0%9A%E5%8D%8E&action=edit&redlink=1" class="new" title="尚华">尚华</a>配音。</li><li>“准成员”,一名杀人犯,因贪财在第一集中就丧命了。</li></ul>下面具体讲解一下每个名字对于我们自己的含义:<br /><br /><br /><ul><li>Sprint1---"兵不厌诈(<i><span lang="en">the Big Con</span></i>)"</li></ul><span style="color: rgb(102, 102, 204);"><blockquote>因为大家第一次采用Scrum, 对这个Agile流程都很期待,同时呢,对于怎么做,如何用,还很模糊</blockquote></span><br /><br /><ul><li>Sprint2---"越狱记(<i><span lang="en">Breakout</span></i>)</li></ul></span><blockquote style="color: rgb(102, 102, 204);">经过了第一个Sprint后,大家干劲十足,士气高涨,认为我们可以在第二个Sprint取得重大突破(breakout)</blockquote><br /><br /><ul><li>Sprint3---"虎口余生(Hours to doom day)"</li></ul><blockquote style="color: rgb(102, 102, 204);">这个Sprint里面有很多技术难点需要破解,如果解决不了,那么后面的工作就无法进行,将是非常关键的一次攻坚战。</blockquote><br /><br /><ul><li>Sprint4---"The Big End(大结局)"</li></ul><blockquote style="color: rgb(102, 102, 204);">这次计划会议,作为Scrum Master,因为有事没有参加,汗!大家认为我们的工作基本差不多可以做完了,起了个结局的名字。</blockquote><br /><br /><ul><li>Sprint5---"The Dragon Warrior(神龙大侠)"</li></ul><blockquote style="color: rgb(102, 102, 204);">事实证明,我们上一个Sprint4过于乐观了,我们还需要一个Sprint才能完成所有的工作,包括Bug Fixing,文档等等。。。。正好那期间播放《功夫熊猫》,在sprint4结束后,大家提议这次的Team Building就去看电影吧(嘿嘿,我们一直坚持每个Sprint结束,就搞一次Team Building,羡慕吧! )。。。。。电影归来,就把 "The Dragon Warrior(神龙大侠)"颁给了Sprint5</blockquote><br /><br />经过半年多的时间,项目A终于顺利结束了!<br /><br /><br />其实,在项目A开展的同时,我们随后又Kick Off了另外一个项目B,我还是Scrum Master,但成员有所变化。基于项目A中对Sprint起名字得良好实践,我们为项目B中的Sprint也起了名字,看到名字,大家自然就会联想到007、奥运等等。。。:)<br /><br /><ul><li>Sprint1---"Golden Eye" 《黄金眼》</li></ul><blockquote style="color: rgb(102, 102, 204);">没啥特别意义,大家觉得项目A用了《加里森敢死队》,这个就用007系列好了</blockquote><ul><li>Sprint2---"Live and let Die" 《生死关头》</li></ul><blockquote style="color: rgb(102, 102, 204);">因为需求太不明确了,大家也不知道能不能做下去,表达了一种不甚乐观的情绪。。。。事实证明大家的感觉是对的,我在Sprint进行一般的时候,终结了这个Sprint,因为真的做不下去了:)</blockquote><br /><ul><li>Sprint3---"You only live twice" 《择日而亡》</li></ul><span style="color: rgb(102, 102, 204);"><blockquote>继续的不乐观,但我们最终还是Live下来,大家想表达的是:我们不能再Fail掉这个Sprint了!</blockquote></span><br /><ul><li>Sprint4---"The Matrix Revolution" 〈矩阵革命〉</li></ul><blockquote style="color: rgb(102, 102, 204);">情形不错起来,大家心气又高了!决心做一次大的改变!</blockquote><br /><ul><li>Sprint5---"One World One Dream" </li></ul><blockquote style="color: rgb(102, 102, 204);">奥运月,没什么可说的,与时俱进!</blockquote><br />这个项目B还会持续到明年才能结束,我们会一直坚持下去这个实践的!<br /><br /><span style="font-weight: bold;">总结一下,在Scrum开发模式下,为Sprint起名字还是挺有艺术的,也是很有好处的</span>:<br /><ol><li>增加软件开发的乐趣(不是一直说,软件开发就是协作游戏嘛!)</li><li>提高大家的参与程度</li><li>记录Scrum Team当时的心情</li></ol><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com2tag:blogger.com,1999:blog-5230397141586498545.post-31550496338934007612008-07-27T14:59:00.000+08:002008-08-27T15:10:41.142+08:00[修改于Pipin版]从美式Scrum说起 (一家美国公司的Scrum敏捷项目记要与思考) <meta name="Originator" content="Microsoft Word 12"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C06%5Cclip_filelist.xml"><link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C06%5Cclip_editdata.mso"><!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C06%5Cclip_themedata.thmx"><link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C06%5Cclip_colorschememapping.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:drawinggridverticalspacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:displayhorizontaldrawinggridevery>0</w:DisplayHorizontalDrawingGridEvery> <w:displayverticaldrawinggridevery>2</w:DisplayVerticalDrawingGridEvery> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>EN-US</w:LidThemeOther> <w:lidthemeasian>ZH-CN</w:LidThemeAsian> <w:lidthemecomplexscript>X-NONE</w:LidThemeComplexScript> <w:compatibility> <w:spaceforul/> <w:balancesinglebytedoublebytewidth/> <w:donotleavebackslashalone/> <w:ultrailspace/> <w:donotexpandshiftreturn/> <w:adjustlineheightintable/> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> <w:usefelayout/> </w:Compatibility> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Cambria; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} p.MsoTitle, li.MsoTitle, div.MsoTitle {mso-style-priority:10; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"标题 Char"; mso-style-next:正文; margin-top:12.0pt; margin-right:0cm; margin-bottom:3.0pt; margin-left:0cm; text-align:center; mso-pagination:none; mso-outline-level:1; font-size:16.0pt; font-family:"Cambria","serif"; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt; font-weight:bold;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; text-indent:21.0pt; mso-char-indent-count:2.0; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} span.Char {mso-style-name:"标题 Char"; mso-style-priority:10; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:标题; mso-ansi-font-size:16.0pt; mso-bidi-font-size:16.0pt; font-family:"Cambria","serif"; mso-ascii-font-family:Cambria; mso-hansi-font-family:Cambria; mso-font-kerning:1.0pt; font-weight:bold;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:Calibri; mso-fareast-font-family:宋体; mso-hansi-font-family:Calibri; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} </style> <![endif]--> <p style="text-align: left;" class="MsoTitle"><span style="font-weight: bold; color: rgb(0, 0, 153);font-family:宋体;font-size:180%;" >朋友Pipin发表于《程序员》08年8月刊杂志上的文章,写的非常好,这里做了些许的修改,共享给大家!</span>
<br /><span style=";font-family:宋体;font-size:14;" ></span></p><p style="text-align: left;" class="MsoTitle"><span style=";font-family:宋体;font-size:14;" >---------------------------------------------------------
<br /></span></p><p class="MsoTitle"><span style=";font-family:宋体;font-size:14;" >从美式</span><span lang="EN-US" style="font-size:14;">Scrum</span><span style=";font-family:宋体;font-size:14;" >说起</span><span lang="EN-US" style="font-size:14;"><o:p></o:p></span></p> <p class="MsoNormal" style="text-align: right;" align="right"><span style="font-family:宋体;">一家美国公司的</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">敏捷项目记要与思考</span></p> <p class="MsoNormal" style="text-align: right;" align="right"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-align: right;" align="right"><span style="font-family:宋体;">许舟平</span></p> <p class="MsoNormal" style="text-align: right;" align="right"><span lang="EN-US">2008</span><span style="font-family:宋体;">年</span><span lang="EN-US">7</span><span style="font-family:宋体;">月</span><span lang="EN-US">16</span><span style="font-family:宋体;">日</span></p> <p class="MsoListParagraph" style="text-indent: 0cm;"><b style=""><span style="font-family:宋体;">引子</span> </b><b style=""><span style="font-family:宋体;">敏捷是一个过程</span><span lang="EN-US"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">从计算机诞生的那一天起,如何编写最符合用户要求的代码就一直是每一个软件开发者所追求的目标。随着计算机应用领域的不断扩大,人们对软件的需求量和功能性要求不断增加,并且迫切需要缩短软件开发的周期。软件危机的到来孕育了软件工程学在</span><span lang="EN-US">1968</span><span style="font-family:宋体;">年的诞生,计算机软件从原来面向的科学计算走到了人民大众的日常生活中。当软件产业已经向服务业靠拢的时候,软件工程也在向着需求工程倾斜着。当客户需求的变化和软件开发模式的固有矛盾相遇时,敏捷开发就从软件工程学中诞生了。</span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">敏捷是一个过程,敏捷开发实际上是根据软件特性和用户需要的敏捷价值观,通过遵循敏捷的原则来进行软件开发的一系列过程的集合。笔者前些日子接触了一个国外运用敏捷开发的项目实例,现在拿来和读者分享,希望能对中国的敏捷开发者有所帮助。</span></p><p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">
<br /></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><b style=""><span style="font-family:宋体;">项目背景</span><span lang="EN-US"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">美国公司</span><span lang="EN-US">A</span><span style="font-family:宋体;">是一个典型的在硅谷诞生的软件公司,以技术为导向,产品很新,更新速度很快,销售渠道稳健、高效,在销售产品的同时可以有效的把握好客户需求,并能将客户需求趋势反馈给开发团队。项目背景是在通过公司前几个产品将市场打开之后,公司急需推出一个全新版本</span><span lang="EN-US">V</span><span style="font-family:宋体;">,能够将早期的几个产品</span><span lang="EN-US">integration</span><span style="font-family:宋体;">到一个平台之上,并通过客户的需求反馈做产品功能的增删和</span><span lang="EN-US">Bug Fix</span><span style="font-family:宋体;">。开发团队分为二个</span><span lang="EN-US">Team</span><span style="font-family:宋体;">,</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">负责构建一个全新平台,用来</span><span lang="EN-US">integration</span><span style="font-family:宋体;">原有产品;</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">负责进行原有产品的</span><span lang="EN-US">bug</span><span style="font-family:宋体;">修复和根据客户需求变更所做的程序模块改动;</span><span lang="EN-US">Team</span><span style="font-family:宋体;">人数分别在</span><span lang="EN-US">8</span><span style="font-family:宋体;">至</span><span lang="EN-US">10</span><span style="font-family:宋体;">人,项目周期以月而记,分为</span><span lang="EN-US">3</span><span style="font-family:宋体;">个周期,采用</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">模式来做敏捷开发(</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">是一种寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进)。项目的风险在于:</span><span lang="EN-US">1.</span><span style="font-family:宋体;">项目开发时间紧,要求在</span><span lang="EN-US">3</span><span style="font-family:宋体;">个月内完成开发阶段工作;</span><span lang="EN-US">2.team1</span><span style="font-family:宋体;">和</span><span lang="EN-US">team2</span><span style="font-family:宋体;">在各自的</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">开发周期内要完成功能联调和集成,需要并行工作;</span><span lang="EN-US">3.</span><span style="font-family:宋体;">产品测试部门采用外包方式,测试人员在国外,而产品质量必须得到保障。</span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">之所以采用</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">,是因为</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">方法将传统开发中的分析、设计、实施视为一个黑箱,认为应加强黑箱内部的混沌性,使项目组工作在混沌的边沿,从而充分发挥每一个程序员的创造力。下面就让我们通过</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">的方法论来深入解析</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">和</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">的开发过程。</span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoListParagraph" style="text-indent: 0cm;"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoListParagraph" style="text-indent: 0cm;"><b style=""><span style="font-family:宋体;">项目组织</span><span lang="EN-US"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">在公司</span><span lang="EN-US">A</span><span style="font-family:宋体;">中,分别由二个资深的项目经理来担当每个小组的</span><span lang="EN-US">Scrum Master</span><span style="font-family:宋体;">角色,每个</span><span lang="EN-US">Scrum Master</span><span style="font-family:宋体;">来负责本小组中的人员协调和项目组织工作,他们的真正工作职责并不仅仅是传统意义上的</span><span lang="EN-US">Project Manager</span><span style="font-family:宋体;">或</span><span lang="EN-US">Team Leader</span><span style="font-family:宋体;">,其最主要的工作是使各自所在小组内的工程师有充分的交流。每个小组都是由不同专业的人员组成,其中包括了程序开发人员,</span><span lang="EN-US">UI</span><span style="font-family:宋体;">设计人员,文档人员等。</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">小组人员的划分是按系统层次导向(按体系结构中的分层),</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">的划分则是按功能导向(即按所分配的问题包或</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">)。</span></p><p class="MsoNormal" style="text-indent: 21pt;">
<br /><span style="font-family:宋体;"></span></p><p class="MsoNormal" style="text-indent: 21pt;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ7B632OFy5q7PFgKFQr1hig51f5IujocHBfXofveqdPOvzB0RNk3B_zavAZ4vglxi0SXwsiMJRP_AXDQeh4QJ7jYk75jr7VtKYaFdsStyYrnVCAmMAJGeHHZN83EVkC5wCWYnGgoVidM/s1600-h/scrum1.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 592px; height: 563px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ7B632OFy5q7PFgKFQr1hig51f5IujocHBfXofveqdPOvzB0RNk3B_zavAZ4vglxi0SXwsiMJRP_AXDQeh4QJ7jYk75jr7VtKYaFdsStyYrnVCAmMAJGeHHZN83EVkC5wCWYnGgoVidM/s320/scrum1.JPG" alt="" id="BLOGGER_PHOTO_ID_5239090668857969170" border="0" /></a></p><p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">
<br /></span></p> <p class="MsoNormal"><meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 12"><meta name="Originator" content="Microsoft Word 12"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C07%5Cclip_filelist.xml"><link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C07%5Cclip_editdata.mso"><!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C07%5Cclip_themedata.thmx"><link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Clijiwang%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C07%5Cclip_colorschememapping.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:drawinggridverticalspacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:displayhorizontaldrawinggridevery>0</w:DisplayHorizontalDrawingGridEvery> <w:displayverticaldrawinggridevery>2</w:DisplayVerticalDrawingGridEvery> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:donotpromoteqf/> <w:lidthemeother>EN-US</w:LidThemeOther> <w:lidthemeasian>ZH-CN</w:LidThemeAsian> <w:lidthemecomplexscript>X-NONE</w:LidThemeComplexScript> <w:compatibility> <w:spaceforul/> <w:balancesinglebytedoublebytewidth/> <w:donotleavebackslashalone/> <w:ultrailspace/> <w:donotexpandshiftreturn/> <w:adjustlineheightintable/> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> <w:usefelayout/> </w:Compatibility> <m:mathpr> <m:mathfont val="Cambria Math"> <m:brkbin val="before"> <m:brkbinsub val="--"> <m:smallfrac val="off"> <m:dispdef/> <m:lmargin val="0"> <m:rmargin val="0"> <m:defjc val="centerGroup"> <m:wrapindent val="1440"> <m:intlim val="subSup"> <m:narylim val="undOvr"> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"> <w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"> <w:lsdexception locked="false" priority="39" name="toc 1"> <w:lsdexception locked="false" priority="39" name="toc 2"> <w:lsdexception locked="false" priority="39" name="toc 3"> <w:lsdexception locked="false" priority="39" name="toc 4"> <w:lsdexception locked="false" priority="39" name="toc 5"> <w:lsdexception locked="false" priority="39" name="toc 6"> <w:lsdexception locked="false" priority="39" name="toc 7"> <w:lsdexception locked="false" priority="39" name="toc 8"> <w:lsdexception locked="false" priority="39" name="toc 9"> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"> <w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"> <w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"> <w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"> <w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"> <w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"> <w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"> <w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"> <w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"> <w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"> <w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"> <w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"> <w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"> <w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"> <w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"> <w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"> <w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"> <w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"> <w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"> <w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"> <w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"> <w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"> <w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"> <w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"> <w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"> <w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"> <w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"> <w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"> <w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"> <w:lsdexception locked="false" priority="37" name="Bibliography"> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:Calibri; mso-fareast-font-family:宋体; mso-hansi-font-family:Calibri; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} </style> <![endif]--><span style=";font-family:";font-size:10;" lang="EN-US"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"> <v:f eqn="sum @0 1 0"> <v:f eqn="sum 0 0 @1"> <v:f eqn="prod @2 1 2"> <v:f eqn="prod @3 21600 pixelWidth"> <v:f eqn="prod @3 21600 pixelHeight"> <v:f eqn="sum @0 0 1"> <v:f eqn="prod @6 1 2"> <v:f eqn="prod @7 21600 pixelWidth"> <v:f eqn="sum @8 21600 0"> <v:f eqn="prod @7 21600 pixelHeight"> <v:f eqn="sum @10 21600 0"> </v:formulas> <v:path extrusionok="f" gradientshapeok="t" connecttype="rect"> <o:lock ext="edit" aspectratio="t"> </v:shapetype><v:shape id="图片_x0020_1" spid="_x0000_i1025" type="#_x0000_t75" alt="sprintIT_ScrumFlow" style="'width:419.25pt;height:399.75pt;visibility:visible'"> <v:imagedata src="file:///C:\DOCUME~1\lijiwang\LOCALS~1\Temp\msohtmlclip1\07\clip_image001.png" title="sprintIT_ScrumFlow"> </v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span></p> <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-family:宋体;">图一:</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">流程示意图</span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">在项目的初始阶段,</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">和</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">的</span><span lang="EN-US">Scrum Master</span><span style="font-family:宋体;">分别将各自负责的产品功能要求(注意:那时的产品功能并没有得到细化)、用户改进建议、技术升级等任务安装优先级排序形成一个</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">列表,而后将</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">列表中的各项按照其耦合性的高低分解称为不同的问题包</span><span lang="EN-US">Packets</span><span style="font-family:宋体;">,并根据不同的问题包</span><span lang="EN-US">Packets</span><span style="font-family:宋体;">来划分相应负责的开发人员,并由他们建立开发运行环境。在这个阶段笔者注意到了一个有趣的地方,那就是在项目设计阶段并没有一个传统意义上的架构师</span><span lang="EN-US">Architect</span><span style="font-family:宋体;">角色。这省却了在传统的开发模型中概要设计和详细设计的时间,但并不意味着没有系统设计和文档,稍后会做介绍。而没有</span><span lang="EN-US">Architect</span><span style="font-family:宋体;">的另一个好处是</span><span lang="EN-US">team</span><span style="font-family:宋体;">中的每一个程序员都分担的</span><span lang="EN-US">Architect</span><span style="font-family:宋体;">的作用,对于中国做敏捷开发的团队,由于传统的</span><span lang="EN-US">Architect</span><span style="font-family:宋体;">存在着固有的领导思维意识,并且经常是由</span><span lang="EN-US">Team Leader</span><span style="font-family:宋体;">或者</span><span lang="EN-US">PM</span><span style="font-family:宋体;">来兼任,所以尽管运用了敏捷开发的方法,但却不能起到真正调动每一个程序员创造力的作用。而在美国,这种情况基本不会发生。</span></p><p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">
<br /></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><b style=""><span style="font-family:宋体;">项目进程</span><span lang="EN-US"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">经过了项目初始阶段的确定性过程后,项目进入了经验性过程的</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">阶段。顾名思义,</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">即为冲刺,运用在</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">敏捷开发中的</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">阶段就是在项目初始阶段确定了系统体系结构之后,在一段的限定时间内所完成的一系列开发活动,其中包括在前一个阶段可能没有做完的产品功能细化、设计、编码、单元测试等工作。在项目</span><span lang="EN-US">V</span><span style="font-family:宋体;">中,</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">和</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">分别分解了</span><span lang="EN-US">3</span><span style="font-family:宋体;">个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">周期,每个周期为</span><span lang="EN-US">4</span><span style="font-family:宋体;">周,在第</span><span lang="EN-US">3</span><span style="font-family:宋体;">个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">周期开始时要保证</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">和</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">完全可以并行工作和可以进行联调。一个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">周期结束之后即要完成在该</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">周期中所规定需完成的</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">项,并产生可执行的版本。对于开发人员来说,在每个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">周期中,他们都需要完成对所分配的</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">工作进行分析、设计、开发、实施、测试和文档化等工作(在项目</span><span lang="EN-US">V</span><span style="font-family:宋体;">中</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">和</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">的开发人员采用</span><span lang="EN-US">Wiki</span><span style="font-family:宋体;">代替传统软件工程的文档管理);在完成这些后,通过打包来封装</span><span lang="EN-US">Packets</span><span style="font-family:宋体;">,从而产生满足各自</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">需求的可执行版本,然后通过评审(</span><span lang="EN-US">Review</span><span style="font-family:宋体;">)和回顾</span><span lang="EN-US">(Retrospective)</span><span style="font-family:宋体;">,提出和解决开发中遇到的问题,并增加新的</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">项,进行项目风险评估和相应对策,从而确定下一个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">的</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">内容和完成时间。在每个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">进行过程中,每个</span><span lang="EN-US">Scrum Team</span><span style="font-family:宋体;">都会通过</span><span lang="EN-US">Daily standup meeting</span><span style="font-family:宋体;">进行沟通,交流遇到的问题,互相帮助。</span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">当项目</span><span lang="EN-US">V</span><span style="font-family:宋体;">进入到最后一个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">周期时,</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">和</span><span lang="EN-US">Team2</span><span style="font-family:宋体;">中负责</span><span lang="EN-US">Integration</span><span style="font-family:宋体;">接口模块设计的开发工程师将与</span><span lang="EN-US">QA</span><span style="font-family:宋体;">人员一起进行系统联调,并由二个小组的</span><span lang="EN-US">Scrum Master</span><span style="font-family:宋体;">在每个礼拜一下午召开</span><span lang="EN-US">Scrum Meeting</span><span style="font-family:宋体;">(如图</span><span lang="EN-US">2</span><span style="font-family:宋体;">中所示),来讨论系统需求变化和</span><span lang="EN-US">Bug</span><span style="font-family:宋体;">修复情况。由此根据这个跨</span><span lang="EN-US">Scrum Team</span><span style="font-family:宋体;">的</span><span lang="EN-US">Meeting</span><span style="font-family:宋体;">的情况实时做出</span><span lang="EN-US">Backlog</span><span style="font-family:宋体;">项的调整和从新分配。然后再进行打包封装交给</span><span lang="EN-US">QA</span><span style="font-family:宋体;">人员进行测试。这个周期非常短,可能二、三天甚至一天就会有一个新的版本出现。</span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">在这个过程中,公司</span><span lang="EN-US">A</span><span style="font-family:宋体;">开发工程师的单兵作战能力给笔者留下了很深刻的印象。比如</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">中</span><span lang="EN-US">UI</span><span style="font-family:宋体;">设计师具有</span><span lang="EN-US">10</span><span style="font-family:宋体;">多年的专业设计经验,仅凭一己之力就完成了</span><span lang="EN-US">Team1</span><span style="font-family:宋体;">中所有的界面模块设计和调用接口工作。项目中的每一个工程师都在系统建模、设计、开发环境部署、程序打包上拥有丰富经验,实际上他们已经分别完成了在传统软件工程中系统架构师、</span><span lang="EN-US">Coder</span><span style="font-family:宋体;">、</span><span lang="EN-US">Tester</span><span style="font-family:宋体;">和</span><span lang="EN-US">Build Manager</span><span style="font-family:宋体;">等工作。与他们相比,国内软件公司处于的一线软件工程师大多属于拥有</span><span lang="EN-US">2-5</span><span style="font-family:宋体;">年工作经验这一经验积累阶段,在个人技术的确存在差距,这种差距在某一方面导致我们国内的软件厂商在相似的开发项目上,同样运用敏捷开发方法,却不能充分达到一个良好的效果。这也与我们的国情有关,想想</span><span lang="EN-US">10</span><span style="font-family:宋体;">年前老一辈的程序员,有多少现在还战斗在开发的第一线呢?不过没有关系,中国的软件产业正在慢慢成熟,一个充分良好的开发环境会让越来越多的程序员迅速成长起来,毕竟我们从事软件开发人员的基数是不可小视的。</span> </p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal">
<br /><span lang="EN-US"><!--[if gte vml 1]><v:shape id="图片_x0020_2" spid="_x0000_i1026" type="#_x0000_t75" style="'width:6in;height:273pt;"> <v:imagedata src="file:///C:\DOCUME~1\lijiwang\LOCALS~1\Temp\msohtmlclip1\06\clip_image003.png" title=""> </v:shape><![endif]--><!--[if !vml]--></span></p><p class="MsoNormal"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLABADx5j5K6uSdGgBGtqudz08apXIO7cdFezhyphenhyphenvzYZT5wtZA0W841JJj6HKEcxEYlOECGXTC9ri94HGJI_9-Iopqpara_gfBAOkggpncyp8iqPEvFUqV6MDogDLT-sfZMbOUZiUJaUkI/s1600-h/scrum2.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 444px; height: 280px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLABADx5j5K6uSdGgBGtqudz08apXIO7cdFezhyphenhyphenvzYZT5wtZA0W841JJj6HKEcxEYlOECGXTC9ri94HGJI_9-Iopqpara_gfBAOkggpncyp8iqPEvFUqV6MDogDLT-sfZMbOUZiUJaUkI/s320/scrum2.JPG" alt="" id="BLOGGER_PHOTO_ID_5239090425157063522" border="0" /></a></p> <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-family:宋体;">图二:处在</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">冲刺阶段的项目示意图</span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><b style=""><span style="font-family:宋体;">项目成果</span><span lang="EN-US"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">在</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">过程中会认为软件产品的开发是一个持续性过程,除非该软件产品经风险评估后认为可以停止。通过一系列的</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">阶段,项目</span><span lang="EN-US">V</span><span style="font-family:宋体;">会产生一个稳定可靠的版本交给公司的</span><span lang="EN-US">Release Manager</span><span style="font-family:宋体;">。而处于</span><span lang="EN-US">Scrum</span><span style="font-family:宋体;">过程中的最后阶段――软件产品交付后的巩固活动则近似于传统软件工程中的系统维护和改善工作,其目的在于整理</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">阶段中由于压力而忽略的工作,为下一个</span><span lang="EN-US">Sprint</span><span style="font-family:宋体;">阶段的开发做准备,以便轻装上阵。</span></p><p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">
<br /></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><b style=""><span style="font-family:宋体;">思考:敏捷,不仅仅是敏捷</span><span lang="EN-US"><o:p></o:p></span></b></p> <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family:宋体;">在中国软件公司的敏捷开发项目里,对比于国外,有着许多影响敏捷开发但又在敏捷开发理论以外的东西。比如开发者经验的不同,开发环境的不同,软件开发公司的管理状态等等。笔者接触过国内的很多软件企业的开发团队和项目管理者,不可否认的是,中国的软件开发在很大程度上一直处于长期借鉴国外软件开发的模式。而在借鉴的过程中,形似而神不似的情况屡屡出现,很多时候,我们只是将国外的开发模式照搬过来,并没有根据中国软件业特有的国情和我们的开发者实际情况作出合理的调整。比如当年</span><span lang="EN-US">CMM</span><span style="font-family:宋体;">火热之时,国内的很多公司都投入巨大的人力物力来做评估,来搞文档管理和过程控制,可是到头来除了取得一纸证书以外并没有给软件产品带来本质性的提高,软件开发效率和质量依旧一塌糊涂,</span><span lang="EN-US">Maintenance team</span><span style="font-family:宋体;">每天还是要不断的应付客户反馈回来的</span><span lang="EN-US">bug</span><span style="font-family:宋体;">和投诉。而对于敏捷开发来说,希望国内的项目管理者能够抓住敏捷开发的精髓,让我们的软件能够真正的敏捷起来。</span></p> <div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-91665540468118813062008-07-17T14:26:00.003+08:002008-10-22T14:25:49.088+08:00[Scrum工具]推荐一本好书---《硝烟中的Scrum和XP》这是小刀同学的力作,翻译的真好!希望能很快正式出版!<br /><br /><p class="info"> 作者 <strong>Henrik Kniberg</strong>译者 <strong>李剑</strong> 发布于 2008年7月7日 上午4时45分 </p> <p class="image"> <img src="http://www.infoq.com/resource/minibooks/scrum-xp-from-the-trenches/zh/cover/scrum-and-xp-cover.jpg" alt="" /><br /> </p> <p>在本书中,作者<a href="http://blog.crisp.se/henrikkniberg/">Henrik Kniberg</a>讲 述了他在一年的时间里,带领40人的团队实施Scrum的过程。他们试过了多种团队尺寸(3~12人)、sprint长度(2~6星期),定义“完成”的 不同方式,不同的backlog格式,各种测试策略,在多个Scrum团队之间进行同步的多种方式。他们还尝试过XP实践——持续集成、结对编程、测试驱 动开发等等,还试过了把XP跟Scrum组合。</p> <p>本书描述的是一个成功敏捷团队的工作过程,没有理论、没有引用、没有脚注、没有废话。读者可以把它当作一些基础实践的入门指南,帮助团队进行正确实施——但不能模仿,你需要了解自己所处的环境,进而对具体实践做出取舍,创造出属于自己的过程。</p> <h2>本书目录</h2> <ol><li>简介</li><li>我们怎样编写产品backlog</li><li>我们怎样准备sprint计划</li><li>我们怎样制定sprint计划</li><li>我们怎样让别人了解我们的sprint</li><li>我们怎样编写sprint backlog</li><li>我们怎样进行每日例会</li><li>我们怎样进行sprint演示</li><li>我们怎样做sprint回顾</li><li>Sprint之间的休整时刻</li><li>怎样制定发布计划,处理固定价格的合同</li><li>我们怎样组合使用Scrum和XP</li><li>我们怎样做测试</li><li>我们怎样管理多个Scrum团队</li><li>我们怎样管理地理位置上分布的团队</li><li>Scrum master检查列表</li><li>额外的话</li><li>有关作者</li></ol> <h2>有关作者</h2> <p>Henrik Kniberg(henrik.kniberg@crisp.se)是一名咨询师,在斯德哥尔摩的Crisp公司(<a target="_blank" href="http://www.infoq.com/cn/minibooks/www.crisp.se">www.crisp.se</a>)工作。他的专长是Java和敏捷软 件开发。</p> <p>自从第一本有关XP的书籍和敏捷宣言问世以来,Henrik就开始拥抱敏捷原则,并尝试在不同的组织中进行有效应用。在1998年至2003年间, 他作为Goyada的合作创始人和CTO,构建并管理一个技术平台和30人的开发团队,充分试验了测试驱动开发及其它敏捷实践。这个网站上有他的更多信 息:<a target="_blank" href="http://www.crisp.se/henrik.kniberg">http://www.crisp.se/henrik.kniberg</a></p> <h2>免费下载此书</h2> <p>硝烟中的Scrum和XP<a href="http://www.infoq.com/cn/minibooks/scrum-xp-from-the-trenches">( <span id="beforeLogin" style="display: inline;"> </span></a><span id="beforeLogin" style="display: inline;"><a onclick="showLoginWindow(this,ALIGN_RIGHT,new Function('document.getElementById(\'beforeLogin\').style.display=\'none\';document.getElementById(\'afterLogin\').style.display=\'inline\''))"> 免费下载这本书(PDF)</a> </span> ) <span id="afterLogin" style="display: none;"> <a href="http://www.infoq.com/resource/minibooks/scrum-xp-from-the-trenches/zh/pdf/scrum-and-xp-chinese-version.pdf">免费下载这本书(PDF)</a> </span> <cite><br /></cite></p><p><cite>原文 www.infoq.com/cn/news/2008/07/<b>scrum</b>-<b>xp</b>-book</cite></p><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-19981995234118116592008-04-28T10:31:00.000+08:002009-01-19T10:31:51.098+08:00敏捷精灵日记21<span style="font-size:100%;"></span><span style="font-size:100%;"><span style="font-size:100%;"><span style="font-family: 宋体;">[</span><b><span style="font-family: 宋体;">敏捷精灵日记</span></b><span style="font-family: 宋体;">]<br /></span></span></span> <ul><span style="font-size:100%;"><li><span style="font-size:100%;"><span style="font-family: 宋体;">人才的流动是非常正常的事情,否则,社会也无法前进.但对于一个企业或者一个团队而言,人才的流失会是一种损失.流失人才并不可怕,最可怕的是领导人没有从中学到什么,没有搞清楚人才为什么会流失,没有采取亡羊补牢的措施.长此以往,招到的人才,还会不断的流失。</span></span></li></span></ul><span class="fullpost"></span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-34337982755631293132008-04-08T18:29:00.000+08:002009-01-19T10:30:27.716+08:00敏捷精灵日记20<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family: 宋体;">[</span><b><span style="font-family: 宋体;">敏捷精灵日记</span></b><span style="font-family: 宋体;">] </span></span></p> <ul type="square"><li>尽管一个组织必须重视管理人员成长可能性并通过提供更大的发展空间等手段来激发他们的潜能,但彼得原理可以作为一种告诫:不要轻易地进行选拔和提 拔。解决这个问题最主要的措施有三个:第一,提升的标准更需要重视潜力而不仅仅是绩效。应当以能否胜任未来的岗位为标准,而非仅仅在现在岗位上是否出色。 第二, 能上能下决不能只是一句空话,要在企业中真正形成这样的良性机制。一个不胜任经理的人,也许是一个很好的主管,只有通过这种机制找到每个人最胜任的角色, 挖掘出每个人的最大潜力,企业才能“人尽其才”。第三,为了慎重地考察一个人能否胜任更高的职位,最好采用临时性和非正式性“提拔”的方法来观察他的能力 和表现,以尽量避免降职所带来的负面影响。如设立经理助理的职位,在委员会或项目小组这类组织中赋予更大的职责,特殊情况下先让他担任代理职位等等。 </li></ul> <ul><li>成功企业的用人之道包括: <ul><li>适当引进外来人才,好处就是用现成的人才,避开“彼得原理”所涉及的后果; </li><li>在企业内部逐步提升,重视潜力,重要的职位大多数由所能胜任的人。 </li></ul></li></ul><span class="fullpost"></span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-71970943746765609912008-04-02T02:28:00.000+08:002009-01-19T10:29:23.006+08:00敏捷精灵日记19<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family: 宋体;">[</span><b><span style="font-family: 宋体;">敏捷精灵日记</span></b><span style="font-family: 宋体;">] </span></span></p> <ul><li>招聘员工准则: ‘hiring for attitude,training for skills’,即‘聘之以态度,授之以技能’ </li><li>培养员工准则:<span style="font-size:100%;"><span style="font-family: 宋体;">品德好、能力强的是精品;品德好、能力差的是次品;品德差、能力强的是毒品;品德差、能力差的是废品。精品要破格培养,次品要加紧培训,毒品要利用,废品要丢弃。而这些都以品德好为基本前提。</span></span> </li><li>团队建设的生命周期准则: <ol><li>选择合适的人才 </li><li>设立清晰的愿景、明确的目标 </li><li>合理用人。人尽其才,才尽其用,充分发挥每个人的优势。 </li><li>建立良性竞争机制 </li><li>建立奖惩与监督制度 </li><li>建立完善的培训系统,关注员工的个人发展 </li><li>评估并不断改进团队<br /></li></ol> </li><li><span style="font-size:100%;"><span style="font-family: 宋体;">领导力应该体现在他的影响力上,而不是依靠组织赋予的Position Power</span></span> </li><li>用心去领导。<span style="font-size:100%;"><span style="font-family: 宋体;">要去了解团队每一个成员的需求与渴望,去跟他们进行心与心的沟通!按照马斯洛的需求层次理论进行针对性的激励。</span></span> </li><li><span style="font-size:100%;"><span style="font-family: 宋体;">根据情境去领导(Situational Leadership)。</span></span>没有最好的领导力,只有最适合的领导风格,管理者要根据员工不同情境灵活调整自己的领导风格和领导型态。</li></ul><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-54070124199762585502008-03-30T21:22:00.003+08:002008-09-23T14:01:07.083+08:00Scrum 术语表<div class="blog_content"> <p><strong>Burndown Charts</strong> 显示随时时间推移,还剩下多少工作未完成.通常以时间为横轴,未完成的工作为纵轴. <wbr></p> <p><strong>Daily Scrum Meeting</strong> 每天15分钟的每日例会,每个人回答下面三个问题:<br /><wbr> 1. 上次例会到现在我完成了哪些工作<br /><wbr> 2. 在下次例会前我将完成哪些工作<br /><wbr> 3. 有没有什么事情阻止我尽可能的高效地工作<br />如果会议的讨论超出了上面的内容, ScrumMaster要确保任何与会者可以发起其它会议再来讨论.每日例会最好做为每天早上每一件事来做,在所有与会者到达之后立刻召开.<br /><br /><strong>Impediments</strong> 阻碍任何人高效工作的任何人或事.在每日会议上,每个队员都有权宣布任何的impediments,由<strong>ScrumMaster</strong>负责解决这些impediments.</p><p><br /><strong>Product Backlog</strong> 产品特性列表,主要由产品Owner负责维护并定义优先级.</p><p><br /><strong>Product Backlog Item</strong> 产品特性列表中的条目,每个条目就是一个工作单元,大小必须限制在团队可以在一个Sprint迭代内完成,同时一个工作单元可以被分解成许多任务.<br /><strong></strong></p><p><strong>Product Backlog Item Effort</strong> 每个条目的工作量,可以用人天来衡量.推荐的方式是用Story点,功能点或T-Shirt尺寸(大,中,小).<br /><strong></strong></p><p><strong>Product Burndown Chart</strong> 基本上是项目进度的'Big Picture',显示每个sprint开始时还剩多少工作未做.<br /><strong></strong></p><p><strong>Product Owner Role</strong> 相当于业务代表,负责确定backlog中各条目的优先级及业务决策,同时解决任何的需求问题.<br /><strong></strong></p><p><strong>Release</strong> 这个概念不用解释,大家都懂.基于预定的时间,每个release会平衡功能,成本,质量三个方面的需求.<br /><strong></strong></p><p><strong>Release Burndown Chart</strong> 与Product Burndown Chart比较相像,不同点在于前者展示单个release的内容,而后者会跨多个release.<br /><strong></strong></p><p><strong>Scrum Roles</strong> 在Scrum中有一些角色的划要,其中三个主要角色:Product Owner, ScrumMaster, Team.<br /><strong></strong></p><p><strong>ScrumMaster Role</strong> 是Product Owner和Team之间的桥梁,同时推动双方的合作.主要的作用在<agile>有详细描述:<br />· 消除业务代表和开发团队之间的障碍,帮助业务代表直接推动开发.<br /><br />· 帮助业务代表最大化ROI,并通过Scrum达到目标.<br /><br />· 通过促进创造力和能力提高开发效率.<br /><br />· 想尽一切办法提高生产力.<br /><br />· 改善工程实践和工具,提高产品的可用性.<br /><br />· 确保最新的项目进度可以让所有人看到.<br /><br /><strong>Sprint</strong> 一次迭代过程,通常是30天.这个过程是不可被打断的,不能增加额外的需求,确保迭代结束时能够获得预期的结果.现实中会有一些变化,一些项目每次会留出 20%左右的时间用于紧急事务及级别最高的产品bugs.这样做存在一定的风险,可能会导致Sprint原则被随意打破.<br /><strong></strong></agile></p><p><strong>Sprint Backlog</strong> 一次迭代的特性列表,或者说工作列表.展示本次迭代的工作单元,源自产品特性列表.<br /><strong></strong></p><p><strong>Sprint Burndown Chart</strong> 参考其它的Burndown Chart,粒度更细的图,用于单次迭代过程中.<br /><strong></strong></p><p><strong>Sprint Goals</strong> 单次迭代的目标,可以被详细说明,可以被衡量,而不是很模糊的一句"改善伸缩性".<br /><strong></strong></p><p><strong>Sprint Planning Meeting</strong> 单次迭代的计划会议,由Team与Product Owner之间商讨sprint目标集,决定哪些工作会被放进来.这个会议被限制在四个小时之内.<br /><strong></strong></p><p><strong>Sprint Retrospective Meeting</strong> 在sprint末期,评审会议之后召开.Team与ScrumMaster共同讨论这次sprint中哪些地方做得比较好,哪些地方需要在下次sprint中进一步提高.会议时间被限制在三个小时之内.<br /><strong></strong></p><p><strong>Sprint Task</strong> 四到六小时内完成的工作单元,由队员主动认领.<br /><strong></strong></p><p><strong>Team</strong> 跨功能团队,人数限制在5-9人,可能包括的角色有工程师,架构师,分析师,QA,测试,UI设计师等.这是一个自发组织的团队,以满足sprint目标.他们自己决定如何最好地满足用户目标,并承担责任.ScrumMaster充当保护层,确保Product Owner不会干涉团队工作.<br /><strong></strong></p><p><strong>Team Member</strong> 为了达到sprint目标而完成sprint task的任何人.<br /><strong></strong></p><p><strong>Velocity</strong> 一个团队在单次sprint中完成多少特性的数值.可以从上一次sprint中估算出,通过一次次的sprint,这个数值会为下次的sprint提供相对准确的进度计划.</p><p>转自http://samuelray.javaeye.com/blog/231373<br /></p> </div><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-56695543213895657332008-03-28T21:38:00.002+08:002008-09-23T13:59:11.325+08:00[Scrum工具] Scrum Checklists中文版<p class="info"> 作者 <strong>Sprint-IT</strong>译者 <strong>SpringSide团队</strong> 发布于 2007年12月20日 下午8时0分http://www.infoq.com/cn/minibooks/scrum-checklists </p> <p class="image"> <img src="http://www.infoq.com/resource/minibooks/scrum-checklists/zh/cover/Scrum%20Checklists%20Cover.jpg" alt="" /><br /> </p> <p><a target="_blank" href="http://www.sprint-it.com/">SPRiNT-iT</a>的 敏捷教练,包括Scrum培训师Boris Gloger,从主流Scrum书籍中抽取了Scrum的基本要素,并融入他们集体的长期实践经验,从而为大家带来《Scrum Checklists》这本精简概炼的迷你书。这本小册子为大家带来一整套准则和行为,帮助项目团队的成员更有效地推动所有的Scrum会议并创造 Scrum成果。</p> <h2>本书在InfoQ中文站上提供独家免费下载。</h2> <p>本书的英文印刷版<a target="_blank" href="http://www.sprint-it.com/scrum-checklists">以封面纸印刷并用螺旋管装订</a>, 让这本书更具吸引力,而且也很容易翻阅。英文版成书“概述”页中的彩色索引与书右侧的彩色标签相对应,帮助您更快地定位和翻阅书中的页面。本书每一个清单 的背后都有一页空白纸,方便读者记录个人习惯和具体适应情况。如果您喜欢这本书,请支持我们的作者和InfoQ今后的迷你书,<a target="_blank" href="http://www.sprint-it.com/scrum-checklists">购买本书的印刷版</a>(本书的中文印刷版也在筹备中,请耐心等候我们的通知)。</p> <p>您也可以 <span id="beforeLogin" style="display: inline;"> <a href="javascript:void(0)" onclick="showLoginWindow(this,ALIGN_RIGHT,new Function('document.getElementById(\'beforeLogin\').style.display=\'none\';document.getElementById(\'afterLogin\').style.display=\'inline\''))"> 免费下载这本书(PDF)</a> </span> <span id="afterLogin" style="display: none;"> <a href="http://www.infoq.com/resource/minibooks/scrum-checklists/zh/pdf/Scrum-Checklists-Chinese.pdf">免费下载这本书(PDF)</a> </span> 。</p> <h2>关于此书</h2> <p>本书并不打算详细介绍Scrum,而且没有哪本书有能力取代开发团队巧妙的自组织能力。相反,这本书是为了给接受过培训的团队带来信心,让他们轻车 上路,成功启动最初的Sprints——这些成功将帮助他们的组织更亲密地拥抱Scrum。您可以在“概述”一页找到本书的完整主题列表。另外,本书印刷 版右侧的彩色主题标签能帮您快速翻阅到相应主题:</p> <ul><li>清单:障碍Backlog(让大洋两岸的团队都活跃起来的一项创新)</li><li>清单:全员会议(帮助团队从抱佛脚或者混乱的过程中走出来的基本规矩)</li><li>清单:评估会议(产品Backlog)</li><li>清单:Sprint计划会议1</li><li>清单:Sprint计划会议2</li><li>清单:Scrum每日例会</li><li>清单:Sprint评审会议</li><li>清单:Sprint回顾会议</li><li>Scrum团队角色</li><li>Scrum典型产物</li></ul> <p>作者指出,Scrum的新手应当严格遵循《Scrum Checklists》这本书。这样做将为他们带来信心,帮助他们成功完成最初的Sprints,而这些最初的Sprints将提升Scrum在他们组织 中的接受程度。有丰富经验的Scrum教练也可以使用这本小册子作为培训的辅助材料。</p> <p>本书中文译本是在<a target="_blank" href="http://www.springside.org.cn/">SpringSide开源项目</a>团队的肖桦、陈俊、林仪明、彭青、田淼和张礼六人的倾情努力下共同完成的,InfoQ中文站编辑赖翥翔(Jason Lai)、霍泰稳和熊节对本书译稿进行了审校,赖翥翔为本书的责任编辑,并负责排版工作。</p> <p><strong>阅读英文原书:</strong><a href="http://www.infoq.com/minibooks/scrum-checklists">Scrum Checklists</a></p><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-56232420640986483732008-03-22T20:24:00.000+08:002009-01-19T10:25:47.091+08:00敏捷精灵日记18<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family: 宋体;">[</span><b><span style="font-family: 宋体;">敏捷精灵日记</span></b><span style="font-family: 宋体;">]</span></span><span style="font-size:100%;"><span style="font-family: 宋体;"><br /></span></span></p> <ol><li><span style="font-size:100%;"><span style="font-family: 宋体;"></span><span style="font-family: 宋体;">Daily Scrum主要还是为了加强团队交流和信息共享。互相了解彼此都在做什么工作,完成了什么任务。这样,每日的信息传递,可以让每个人可以更多的了解整个项目的业务和技术状况。并 且如果在工作中遇到障碍或问题,也可以在这时候提出来,请求大家的帮助。</span></span><span style="font-size:100%;"><span style="font-family: 宋体;"></span></span><span style="font-size:100%;"><span style="font-family: 宋体;"></span><span style="font-family: 宋体;"></span></span> </li><li><span style="font-size:100%;"><span style="font-family: 宋体;">Daily Scrum晨会不是每天的工作报告,更不是项目经理进行工作检查,甚至考核。项目经理有责任营造一个安全(Safe)的会议氛围,让每个人都乐意说出真正发生的事情,就算是昨天遇到技术问题,没有任何的工作成果,也能得到谅解,而不是胆颤心惊。</span></span><span style="font-size:100%;"><span style="font-family: 宋体;"></span></span><span style="font-size:100%;"><span style="font-family: 宋体;"></span></span> </li><li><span style="font-size:100%;"><span style="font-family: 宋体;"></span><span style="font-family: 宋体;">敏捷方法,需要有一个英明的领导(也许就是Scrum Master),以身作则,带领着团队向前冲锋,大家齐心协力,以项目的成功作为最高奋斗目标。只有这样,才能发挥敏捷方法的威力,只有这样项目才可能获得成功。</span></span><span style="font-size:100%;"><span style="font-family: 宋体;"></span></span><span style="font-size:100%;"><span style="font-family: 宋体;"></span></span> </li><li><span style="font-size:100%;"><span style="font-family: 宋体;"></span><span style="font-family: 宋体;">明 确的短期目标。如果让一个团队做半年的详细工作计划,一定非常困难,但如果是2周,那就完全不一样。假设,客户有100个东西要做,但团队在一个迭代(一 般是2周左右)中,只能完成20个东西。那么就明确的告诉客户,一个迭代的时间,我们只可以完成20个东西,那么我们先开发其中20个最有价值的东西。不 要为100个东西做半年/一年的计划,因为那不是敏捷开发,还是瀑布模式开发。<br /></span></span></li></ol> <p class="MsoNormal" style="text-align: left;" align="left"> 后记</p><ul><li>羊群是一种很散乱的组织,平时在一起也是盲目地左冲右撞,但一旦有一只头羊动起来,其他的羊也会不假思索地一哄而上,全然不顾前面可能有狼或者不远处有更好的草。这就是“<b>羊群效应</b>”,也称“从众心理”。在一个组织中,特别对具有决策能力的管理者而言,“<b>共同承担责备效应</b>”(Blame Sharing Effect)的存在是导致了“羊群效应”的根本原因。如果某决策者逆流而动,一旦他失败了,这一行为通常被视为是其能力不够的表现, 并因此而受到责备;但是如果他的行为与大多数人一致,即使失败了,他会因看到其他许多人与他有相同的命运而不那么难堪,而他的上级也会考虑到其他的人也同 样失败了而不过分责备他。这样,决策者具有与别人趋同的愿望,以推卸自己承担决策错误的责任。 </li><li>作为组织的高层管理者,一定要对底层管理决策人员的这种“羊群效应”保持足够的警惕,减少这种非理性的行为的发生。 </li></ul><span class="fullpost"></span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-3966002730144777812008-03-09T01:23:00.000+08:002009-01-19T10:32:31.853+08:00敏捷精灵日记17<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:宋体;">[</span><b><span style="font-family:宋体;">敏捷精灵日记</span></b><span style="font-family:宋体;">] </span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:宋体;">1</span><span style="font-family:宋体;">。同步进行的sprint有如下优点:</span></span> </p> <p class="MsoNormal" style="margin-left: 40.5pt; text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:Symbol;">·<span style="font-weight: normal; font-style: normal; font-variant: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" > </span></span><span style="font-family:宋体;">可以利用</span></span><span style="font-size:100%;">sprint<span style="font-family:宋体;">之间的时间来重新组织团队!如果各个</span></span><span style="font-size:100%;">sprint<span style="font-family:宋体;">重叠的话,要想重新组织团队,就必须打断至少一个团队的</span></span><span style="font-size:100%;">sprint<span style="font-family:宋体;">进程。</span></span><span style="font-size:100%;"> </span></p> <p class="MsoNormal" style="margin-left: 40.5pt; text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:Symbol;">·<span style="font-weight: normal; font-style: normal; font-variant: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" > </span></span><span style="font-family:宋体;">所有团队都可以在一个</span></span><span style="font-size:100%;">sprint<span style="font-family:宋体;">中向同一个目标努力,他们可以有更好的协作。</span></span><span style="font-size:100%;"> </span></p> <p class="MsoNormal" style="margin-left: 40.5pt; text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:Symbol;">·<span style="font-weight: normal; font-style: normal; font-variant: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" > </span></span><span style="font-family:宋体;">更小的管理压力,即更少的</span></span><span style="font-size:100%;">sprint<span style="font-family:宋体;">计划会议、</span></span><span style="font-size:100%;">sprint<span style="font-family:宋体;">演示和发布。</span></span><span style="font-size:100%;"> </span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:宋体;">2</span><span style="font-family:宋体;">。最佳的团队尺寸</span></span> </p> <p class="MsoNormal" style="margin-left: 40.5pt; text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:Symbol;">·<span style="font-weight: normal; font-style: normal; font-variant: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" > </span></span></span><span style="font-size:100%;">5<span style="font-family:宋体;">到</span></span><span style="font-size:100%;">9<span style="font-family:宋体;">个人被公认为是</span></span><span style="font-size:100%;">“<span style="font-family:宋体;">最佳的</span></span><span style="font-size:100%;">”<span style="font-family:宋体;">团队构成人数。</span></span><span style="font-size:100%;"> </span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:宋体;">3</span><span style="font-family:宋体;">。在Scrum中,团队分割确实很困难。不要想的太多,也别费太大劲儿做优化。先做实验,观察虚拟团队,然后确保在回顾会议上有足够的时间来讨论这种问题。迟早就会发现针对你所在环境的解决方案。需要重视的是,必须要让团队对所处环境感到舒适,而且不会常常彼此干扰。 </span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:宋体;">4</span><span style="font-family:宋体;">。宁可团队数量少,人数多,也比弄上一大堆总在互相干扰的小团队强。要想拆分小团队,必须确保他们彼此之间不会产生互相干扰! </span></span></p> <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size:100%;"><span style="font-family:宋体;">5</span><span style="font-family:宋体;">。 在Scrum团队中含有兼职成员一般都不是什么好主意。如果有一个人需要把他的时间分配给多个团队,就像DBA一样,那最好让他有一个主要从属的团队。找 出最需要他的团队,把它当作他的“主队”。如果没有其他人把他拖走,那他就得参加这个团队的每日scrum会议、sprint计划会议、回顾等等。</span></span> </p><span class="fullpost"></span><div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0tag:blogger.com,1999:blog-5230397141586498545.post-28186581082271150162008-02-28T17:31:00.000+08:002008-08-29T09:23:22.585+08:00Scrum介绍系列9--- 产品发布计划(release plan)Sprint 持续直至产品所有者决定产品已经可以准备发布,此时会有“<a href="http://scrumxp.blogspot.com/">发布Sprint</a>“来进行最后的整合和发布产品前的检测。如果开发团队一直贯彻很好的开发方法,不断地重构和持续集成,在每一Sprint 中的有效测试,就不会存在许多遗留问题需要清除。<br /><br /> 有这样一个问题有时会被提到,是怎样在一个迭代的模式中产生长期的发布计划。在一个项目的起始阶段,开发团队会作出粗线条的发布计划;他们不可能预先得知工作的结果,其重点是创建一个大体的计划提供给项目发展一个大体的方向,并阐明交易决策如何形成(比如范围相对于进度表)。以此作为路标来指引你向目标迈进;在行程中你实际挑选的路程和所做的决策都是途中决定的。<br /><br /><br /> 有一些产品发布是以日期界定的;比如:“我们会在11 月10 日的产品展示会上发布我们项目的2.0 版。“在此种情况下,开发团队会在现有的可利用时间内完成尽可能多的Sprint(构建尽可能多的功能)。有些产品要求某部分构建完成才可以说明整个产品的完成,产品不会在这些要求满足前被发布,无论周期长短。Scrum 强调在每一Sprint 中都生产出可以随时交付的编码,开发团队可以进行中间的发布,使客户可以更快的收到产品的效益。<br /><br /><br /> 大多数产品所有者会选择一个发布方式,但是会通知其他的——比如,他们会决定发布日期,他们会与开发团队成员一起对Backlog 中项目的完成日期做一大体的估算。在“固定价格/固定日期/固定交货期”的情况下——比如,合同制开发——在这些变量中至少有一个内部存在缓冲区,可以容许不确定因素和变更;在此方面,Scrum 于其他的开发方法并无区别。<div class="blogger-post-footer"><a href='http://scrumxp.blogspot.com/'>敏捷软件开发随笔---敏捷精灵二三事
http://scrumxp.blogspot.com/</a>
<a href='http://incredibleagile.com/'>网上最大的敏捷软件开发资料站 http://incredibleagile.com/
</a></div>敏捷精灵http://www.blogger.com/profile/07728464150532090536noreply@blogger.com0