﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-『一只小蚂蚁』的专栏-随笔分类-Agile</title><link>http://www.blogjava.net/qixiangnj/category/22112.html</link><description>&lt;strong&gt;生命不息，拼搏不止。&lt;/strong&gt;</description><language>zh-cn</language><lastBuildDate>Mon, 17 Sep 2007 09:28:55 GMT</lastBuildDate><pubDate>Mon, 17 Sep 2007 09:28:55 GMT</pubDate><ttl>60</ttl><item><title>极限编程</title><link>http://www.blogjava.net/qixiangnj/archive/2007/09/17/145737.html</link><dc:creator>Thomas</dc:creator><author>Thomas</author><pubDate>Mon, 17 Sep 2007 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/qixiangnj/archive/2007/09/17/145737.html</guid><wfw:comment>http://www.blogjava.net/qixiangnj/comments/145737.html</wfw:comment><comments>http://www.blogjava.net/qixiangnj/archive/2007/09/17/145737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qixiangnj/comments/commentRss/145737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qixiangnj/services/trackbacks/145737.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文地址：http://zh.wikipedia.org/w/index.php?title=%E6%9E%81%E9%99%90%E7%BC%96%E7%A8%8B&amp;variant=zh-cn极限编程（XP，eXtreme Programming）是一种软件工程方法学，是敏捷软件开发中最富有成效的几种方法学之一。如同其他敏捷方法学，极限编程和传统方法学的本质不同在于它更强调可...&nbsp;&nbsp;<a href='http://www.blogjava.net/qixiangnj/archive/2007/09/17/145737.html'>阅读全文</a><img src ="http://www.blogjava.net/qixiangnj/aggbug/145737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qixiangnj/" target="_blank">Thomas</a> 2007-09-17 10:10 <a href="http://www.blogjava.net/qixiangnj/archive/2007/09/17/145737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷软件开发</title><link>http://www.blogjava.net/qixiangnj/archive/2007/09/17/145735.html</link><dc:creator>Thomas</dc:creator><author>Thomas</author><pubDate>Mon, 17 Sep 2007 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/qixiangnj/archive/2007/09/17/145735.html</guid><wfw:comment>http://www.blogjava.net/qixiangnj/comments/145735.html</wfw:comment><comments>http://www.blogjava.net/qixiangnj/archive/2007/09/17/145735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qixiangnj/comments/commentRss/145735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qixiangnj/services/trackbacks/145735.html</trackback:ping><description><![CDATA[原文地址：http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn<br />
<br />
<p><strong>敏捷软件开发</strong>又称<strong>敏捷开发</strong>，是一种从<a href="http://zh.wikipedia.org/w/index.php?title=1990%E5%B9%B4%E4%BB%A3&amp;variant=zh-cn" title="1990年代">1990年代</a>开
始逐渐引起广泛关注的一些新型软件开发方法，是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同，相对于&#8220;非敏
捷&#8221;，更强调程序员团队与业务专家之间的紧密协作、面对面的沟通（认为比书面的文档更有效）、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地
适应需求变化的代码编写和团队组织方法，也更注重做为软件开发中人的作用。</p>
<table id="toc" class="toc" summary="目录">
    <tbody>
        <tr>
            <td>
            <div id="toctitle">
            <h2>目录</h2>
            <span class="toctoggle">[<a href="javascript:toggleToc()" class="internal" id="togglelink">隐藏</a>]</span></div>
            <ul>
                <li class="toclevel-1"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E8.AF.8D.E6.BA.90"><span class="tocnumber">1</span> <span class="toctext">词源</span></a></li>
                <li class="toclevel-1"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E4.BB.B7.E5.80.BC.E8.A7.82"><span class="tocnumber">2</span> <span class="toctext">价值观</span></a></li>
                <li class="toclevel-1"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E5.8E.9F.E5.88.99"><span class="tocnumber">3</span> <span class="toctext">原则</span></a></li>
                <li class="toclevel-1"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E5.AF.B9.E6.AF.94.E5.85.B6.E4.BB.96.E7.9A.84.E6.96.B9.E6.B3.95"><span class="tocnumber">4</span> <span class="toctext">对比其他的方法</span></a>
                <ul>
                    <li class="toclevel-2"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E5.AF.B9.E6.AF.94.E8.BF.AD.E4.BB.A3.E6.96.B9.E6.B3.95"><span class="tocnumber">4.1</span> <span class="toctext">对比迭代方法</span></a></li>
                    <li class="toclevel-2"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E5.AF.B9.E6.AF.94.E7.80.91.E5.B8.83.E5.BC.8F.E5.BC.80.E5.8F.91"><span class="tocnumber">4.2</span> <span class="toctext">对比瀑布式开发</span></a></li>
                </ul>
                </li>
                <li class="toclevel-1"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E6.95.8F.E6.8D.B7.E6.96.B9.E6.B3.95.E7.9A.84.E9.80.82.E7.94.A8.E6.80.A7"><span class="tocnumber">5</span> <span class="toctext">敏捷方法的适用性</span></a></li>
                <li class="toclevel-1"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E6.96.B9.E6.B3.95.E5.88.97.E8.A1.A8"><span class="tocnumber">6</span> <span class="toctext">方法列表</span></a></li>
                <li class="toclevel-1"><a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;variant=zh-cn#.E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"><span class="tocnumber">7</span> <span class="toctext">外部链接</span></a></li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<script type="text/javascript">
//<![cdata[ if (window.showTocToggle) { var tocshowtext="显示" ; var tochidetext="隐藏" ; showTocToggle(); }
//]]&gt;
</script>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E8.AF.8D.E6.BA.90"></a></p>
<h2><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=1" title="编辑本节">编辑</a>]</span> <span class="mw-headline">词源</span></h2>
<p>敏捷一词来源于2001年初<a href="http://zh.wikipedia.org/w/index.php?title=%E7%BE%8E%E5%9B%BD&amp;variant=zh-cn" title="美国">美国</a><a href="http://zh.wikipedia.org/w/index.php?title=%E7%8A%B9%E4%BB%96%E5%B7%9E&amp;variant=zh-cn" title="犹他州">犹他州</a>雪鸟滑雪胜地的一次敏捷方法发起者和实践者（他们发起组成了<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%81%94%E7%9B%9F&amp;action=edit" class="new" title="敏捷联盟">敏捷联盟</a>）的聚会。</p>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E4.BB.B7.E5.80.BC.E8.A7.82"></a></p>
<h2><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=2" title="编辑本节">编辑</a>]</span> <span class="mw-headline">价值观</span></h2>
<p>雪鸟会议共同起草了敏捷软件开发宣言。其中最重要的部分就是对一些与会者一致同意的软件开发价值观的表述：</p>
<ul>
    <li>人和交互重于过程和工具。</li>
    <li>可以工作的软件重于求全责备的文档。</li>
    <li>客户协作重于合同谈判。</li>
    <li>随时应对变化重于循规蹈矩。</li>
</ul>
<p>其中位于右边的内容虽然也有其价值，但是左边的内容最为重要。</p>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E5.8E.9F.E5.88.99"></a></p>
<h2><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=3" title="编辑本节">编辑</a>]</span> <span class="mw-headline">原则</span></h2>
<p>宣言中还包括以下原则：</p>
<ul>
    <li>对我们而言，最重要的是通过尽早和不断交付有价值的软件满足客户需要。</li>
    <li>我们欢迎需求的变化，即使在开发后期。敏捷过程能够驾驭变化，保持客户的竞争优势。</li>
    <li>经常交付可以工作的软件，从几星期到几个月，时间尺度越短越好。</li>
    <li>业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。</li>
    <li>围绕斗志高昂的人进行软件开发，给开发者提供适宜的环境，满足他们的需要，并相信他们能够完成任务。</li>
    <li>在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。</li>
    <li>可以工作的软件是进度的主要度量标准。</li>
    <li>敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。</li>
    <li>对卓越技术与良好设计的不断追求将有助于提高敏捷性。</li>
    <li>简单——尽可能减少工作量的艺术至关重要。</li>
    <li>最好的架构、需求和设计都源自自我组织的团队。</li>
    <li>每隔一定时间，团队都要总结如何更有效率，然后相应地调整自己的行为。</li>
</ul>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E5.AF.B9.E6.AF.94.E5.85.B6.E4.BB.96.E7.9A.84.E6.96.B9.E6.B3.95"></a></p>
<h2><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=4" title="编辑本节">编辑</a>]</span> <span class="mw-headline">对比其他的方法</span></h2>
<p>敏捷方法有时候被误认为是无计划性和纪律性的方法，实际上更确切的说法是敏捷方法强调适应性而非预见性。</p>
<p>适应性的方法集中在快速适应现实的变化。当项目的需求起了变化，团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化.</p>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E5.AF.B9.E6.AF.94.E8.BF.AD.E4.BB.A3.E6.96.B9.E6.B3.95"></a></p>
<h3><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=5" title="编辑本节">编辑</a>]</span> <span class="mw-headline">对比迭代方法</span></h3>
<p>相比<a href="http://zh.wikipedia.org/w/index.php?title=%E8%BF%AD%E4%BB%A3%E5%BC%8F%E5%BC%80%E5%8F%91&amp;variant=zh-cn" title="迭代式开发">迭代式开发</a>两者都强调在较短的开发周期提交软件，敏捷方法的周期可能更短，并且更加强调队伍中的高度协作。</p>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E5.AF.B9.E6.AF.94.E7.80.91.E5.B8.83.E5.BC.8F.E5.BC.80.E5.8F.91"></a></p>
<h3><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=6" title="编辑本节">编辑</a>]</span> <span class="mw-headline">对比瀑布式开发</span></h3>
<p>两者没有很多的共同点，<a href="http://zh.wikipedia.org/w/index.php?title=%E7%80%91%E5%B8%83%E6%A8%A1%E5%9E%8B&amp;variant=zh-cn" title="瀑布模型">瀑布模型</a>式是最典型的预见性的方法，严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法，例如需求规格，设计文档，测试计划和代码审阅等等。</p>
<p>瀑布式的主要的问题是它的严格分级导致的自由度降低，项目早期即作出承诺导致对后期需求的变化难以调整，代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。</p>
<p>相对来讲，敏捷方法则在几周或者几个月的时间内完成相对较小的功能，强调的是能将尽早将尽量小的可用的功能交付使用，并在整个项目周期中持续改善和增强。</p>
<p>有人可能在这样小规模的范围内的每次迭代中使用瀑布式方法，另外的人可能将选择各种工作并行进行，例如<a href="http://zh.wikipedia.org/w/index.php?title=%E6%9E%81%E9%99%90%E7%BC%96%E7%A8%8B&amp;variant=zh-cn" title="极限编程">极限编程</a>。</p>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E6.95.8F.E6.8D.B7.E6.96.B9.E6.B3.95.E7.9A.84.E9.80.82.E7.94.A8.E6.80.A7"></a></p>
<h2><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=7" title="编辑本节">编辑</a>]</span> <span class="mw-headline">敏捷方法的适用性</span></h2>
<p>在敏捷方法其独特之处以外，他和其他的方法也有很多共同之处，比如迭代开发，关注互动沟通，减少中介过程的无谓资源消耗。通常可以在以下方面衡量敏
捷方法的适用性：从产品角度看，敏捷方法适用于需求萌动并且快速改变的情况，如系统有比较高的关键性、可靠性、安全性方面的要求，则可能不完全适合；从组
织结构的角度看，组织结构的文化、人员、沟通泽决定了敏捷方法是否适用。跟这些相关联的关键成功因素有：</p>
<ul>
    <li>组织文化必须支持谈判</li>
    <li>人员彼此信任</li>
    <li>人少但是精干</li>
    <li>开发人员所作决定得到认可</li>
    <li>环境设施满足成员间快速沟通之需要</li>
</ul>
<p>最重要的因素恐怕是项目的规模。规模增长，面对面的沟通就愈加困难，因此敏捷方法适更用于较小的队伍，20、40人或者更少。大规模的敏捷软件开发尚处于积极研究的领域。</p>
<p>另外的问题是项目初期的大量假定或者快速收集需求可能导致项目走入误区，特别是客户对其自身需要毫无概念的情况下。与之类似，人之天性很容易造成某
个人成为主导并将项目目标和设计引入错误方向的境况。开发者经常能把不恰当的方案授予客户，并且直到最后发现问题前都能获得客户认同。虽然理论上快速交互
的过程可以限制这些错误的发生，但前提是有效的负反馈，否则错误会迅速膨胀。</p>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E6.96.B9.E6.B3.95.E5.88.97.E8.A1.A8"></a></p>
<h2><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=8" title="编辑本节">编辑</a>]</span> <span class="mw-headline">方法列表</span></h2>
<p>目前列入敏捷方法的有：</p>
<ul>
    <li>软件开发节奏，Software Development Rhythms</li>
    <li>敏捷数据库技术，AD/Agile Database Techniques</li>
    <li>敏捷建模，AM/Agile Modeling</li>
    <li>自适应软件开发，ASD/Adaptive Software Development</li>
    <li>水晶方法，Crystal</li>
    <li>特性驱动开发，FDD/Feature Driven Development</li>
    <li>动态系统开发方法，DSDM/Dynamic Systems Development Method</li>
    <li>精益软件开发，Lean Software Development</li>
    <li>Scrum</li>
    <li>测试驱动开发，TDD/Test-Driven Development</li>
    <li>XBreed</li>
    <li><a href="http://zh.wikipedia.org/w/index.php?title=%E6%9E%81%E9%99%90%E7%BC%96%E7%A8%8B&amp;variant=zh-cn" title="极限编程">极限编程</a>，<a href="http://en.wikipedia.org/wiki/XP" class="extiw" title="en:XP">en:XP</a>/<a href="http://en.wikipedia.org/wiki/Extreme_Programming" class="extiw" title="en:Extreme_Programming">en:Extreme Programming</a></li>
</ul>
<p><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"></a></p>
<h2><span class="editsection">[<a href="http://zh.wikipedia.org/w/index.php?title=%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91&amp;action=edit&amp;section=9" title="编辑本节">编辑</a>]</span> <span class="mw-headline">外部链接</span></h2>
<ul>
    <li><a href="http://agilealliance.org/" class="external text" title="http://agilealliance.org" rel="nofollow">敏捷联盟 (英语，Agile Alliance)</a></li>
</ul>
<br />
<br />
<img src ="http://www.blogjava.net/qixiangnj/aggbug/145735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qixiangnj/" target="_blank">Thomas</a> 2007-09-17 10:06 <a href="http://www.blogjava.net/qixiangnj/archive/2007/09/17/145735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【翻译】敏捷编程介绍</title><link>http://www.blogjava.net/qixiangnj/archive/2007/05/05/115431.html</link><dc:creator>Thomas</dc:creator><author>Thomas</author><pubDate>Sat, 05 May 2007 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/qixiangnj/archive/2007/05/05/115431.html</guid><wfw:comment>http://www.blogjava.net/qixiangnj/comments/115431.html</wfw:comment><comments>http://www.blogjava.net/qixiangnj/archive/2007/05/05/115431.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qixiangnj/comments/commentRss/115431.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qixiangnj/services/trackbacks/115431.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana; font-size: 18pt;">敏捷编程介绍</span><br style="font-family: Verdana;"><span style="font-family: Verdana;"><span style="font-style: italic;">John Paul Mueller, CIO</span> <br><span style="font-style: italic;">2007-03-28<br><br></span>&nbsp;&nbsp;&nbsp; 每个管理者都经历过梦魇般的编程项目。这类项目耗费了两倍于预期的时间，超出了大量的成本预算——可远远还不止这些。当你将偏爱的应用展示给用户，可他们并不喜欢，即便你的公司非常需要这个应用来达到某种目标，例如提高生产能力。<br>&nbsp;&nbsp;&nbsp; 幸运的是，你不再需要理会这类由旧的迭代软件开发过程所产生的问题；你可以使用敏捷编程来克服这些问题。<br><br><span style="text-decoration: underline; font-weight: bold;">什么是使用敏捷编程的商业原因？</span><br style="text-decoration: underline; font-weight: bold;"><span style="text-decoration: underline; font-weight: bold;">什么使敏捷编程与众不同？</span><br style="text-decoration: underline; font-weight: bold;"><span style="text-decoration: underline; font-weight: bold;">使用敏捷编程，我就不需要做大量额外的工作了？</span><span style="font-style: italic; text-decoration: underline; font-weight: bold;"><br></span></span><span style="font-size: 12pt; font-family: Verdana; text-decoration: underline; font-weight: bold;"></span><span style="text-decoration: underline; font-weight: bold;">除了在迭代中工作，敏捷编程还有什么不同？</span><br style="font-family: Verdana; font-style: italic;"><span style="font-family: Verdana;"><span style="font-style: italic;">Won't Working Like this Change Our Corporate Culture?</span><br style="font-style: italic;"><span style="font-style: italic;">When Should I Avoid Using Agile Programming Techniques?</span><br style="font-style: italic;"><span style="font-style: italic;">Is There Just One Kind of Agile Programming? </span><span style="font-weight: bold;"><br><br><br><span style="color: red;">什么是使用敏捷编程的商业原因？<br></span></span><span style="color: red;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 商业需要一种方式来降低开发成本、改进软件可靠性、减少开发时间、确保应用程序能够真正为用户服务，而不是违背用户。<br>&nbsp;&nbsp;&nbsp; 做到这四点，无论对谁，都是一个过高的要求，但是，在众多应用程序编程方案中，敏捷编程技术能够做到这些。<br>&nbsp;&nbsp;&nbsp; 敏捷在商业上行得通，是因为你能够通过减少开发者在设计和建造应用程序过程中的错误来降低开发成本。此外，敏捷编程技术还能够清除所有开发成本中最昂贵的一个——失败的应用程序。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 然而，甚至一个应用程序已经出厂并且安装在服务器上，可靠性开销仍然可能耗尽其所有的潜在收入。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 大多数公司努力达成的5/9的可靠性，也只是发生在良好设计的应用程序中——为用户提供服务的时间多于&#8220;当机&#8221;的时间。而敏捷则通过减少每个模块潜在的开发错误数量和提供用于快速定位错误的持续测试来完成这个任务。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 许多公司都指望能够从为开发项目所做的投资中得到快速回报。然而，大部分项目因为公司需要等待开发者完成整个应用程序而受苦多年。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 与等待整个应用程序不同的是，敏捷编程技术可以帮助你当天就使用至少部分应用程序，这意味着你在很大程度上更快地从这个应用程序中受益。总之，你可以免费得到部分应用程序，因为你所节约的开支可以用于剩余应用程序的开发。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 应用程序与用户一同工作或许看上去不像这样至关重要，但是它足以区别一个省钱（或赚钱）的应用程序和一个费钱（或赔钱）的应用程序。<br>&nbsp;&nbsp;&nbsp; 一个大型服装厂的项目说明了这点。开发者假定获得订单时用户会依靠鼠标在显示屏上选择产品。然而，在这个服装厂新应用程序被安装上生产服务器后，公司意识到一个相当大的工作效率损耗，而不是期望的增益。造成的结果是：员工们仅仅使用键盘。因为将手从键盘移到鼠标来操作这个应用程序，每单将耗费他们宝贵的几分钟。</span><br style="color: #000000;"><span style="color: #000000;">&nbsp;&nbsp;&nbsp; 敏捷编程通过让用户早期就介入到开发进程中来避免这种情况。如果这个服装厂采用的是这种方法，那么应用程序的第一次迭代就将帮助公司意识到这个期望增益的问题，而不是公司继续花费大量的时间和金钱在程序返工上。</span></span><span style="font-weight: bold;"><span style="color: red;"><br></span><br></span><span style="font-weight: bold; color: #ff0000;">什么使敏捷编程与众不同？</span><br>&nbsp;&nbsp;&nbsp; 敏捷编程把一个应用开发项目分解成多个小的组件化的片段。每个片段在很短的时间内，一步一个脚印地添加到应用程序中并表现出官能性的一个完整部分。你可以部署这部分应用程序并且期望人们依据它来完成某种程度的工作，即便从长远来看，这个应用程序不能做你打算让它做的所有事情。<br>&nbsp;&nbsp;&nbsp; 每个片段是一个持续1到4周的迭代过程。因此，当应用程序中一个特定的片段表现棘手的时候，你将立即获知。这会使你设法立刻解决这个问题，而不是在一大堆bug上编译完所有其他的官能性或者遭遇&#8220;这不是用户想要的&#8221;之后。<br>&nbsp;&nbsp;&nbsp; 每次迭代过程就像一个有它自己权利的小型项目。作为一个敏捷项目管理者，你还是需要像平常一样监管计划、需求、设计、编码、测试和各阶段文档，但这只是为了某个特定的应用特征（而不是全部应用程序）。<br>&nbsp;&nbsp;&nbsp; 打个比方，如果你正在创建一个特殊种类的字处理程序，其中一个迭代或许就是它的拼写检查程序。这个拼写检查程序要添加到字处理程序中，但它影响的只是整个程序的一个方面。在开发者创建这个用于处理拼写的迭代之前，在这个功能没有完成的情况下， 用户照样可以使用这个字处理程序，他们只是不能够对所写内容进行拼写检查。<br></span><br style="font-family: Verdana;"><span style="color: #ff0000; font-weight: bold; font-family: Verdana;">使用敏捷编程，我就不需要做大量额外的工作了？</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">&nbsp;&nbsp;&nbsp; 一些人猜想敏捷编程技术需要实现大量额外的工作。然而，事实上，由于在每个组件上周转时间的减短和软件投入使用的加快，它降低了工作量并且使收回投资在相当大的程度上加快。</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">&nbsp;&nbsp;&nbsp; 事实上，由于开发者能够对这种软件做出快速的反应，管理者经常使用敏捷编程技术来拯救那些有麻烦的项目。例如，敏捷编程的创始人Kent Beck在1986年使用敏捷编程技术拯救了Chrysler Comprehensive Compensation (C3)项目。</span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-size: 12pt; font-family: Verdana; color: red; font-weight: bold;"></span><span style="font-size: 12pt; font-family: Verdana;"></span><span style="font-weight: bold; color: red;">除了在迭代中工作，敏捷编程还有什么不同？</span><br>&nbsp;&nbsp;&nbsp; 敏捷编程方法的基础是交流。这种方法强调以书面形式的论点进行面对面地交流。换句话说，与其一大群人工作在他们各自不同的工程块上，还不如大家坐在一起，就这些工程块形成一个团结的整体。<br>&nbsp;&nbsp;&nbsp; 不像别的编程方法，敏捷编程信赖项目组里那些差异非常大的工作在被称作 &#8220;临时拘留所&#8221;里的成员。一个项目组包括项目经理、设计师、开发人员、测试人员、客户、文档撰写者和参与这次迭代的一些其他人。因为项目块小到每个人都能理解，并且所有这些项目块的负责人都同心协力，所以用尽量少的时间、很小或者不修改就完成项目，通常是可能的。<br>&nbsp;&nbsp;&nbsp; 然而，敏捷编程中最值得考虑的是开发过程涉及每个人。客户（用户）从一开始就和项目有密切关系，这意味着开发组在&#8220;用户将如何与应用程序相互影响以及完成一个特别的任务所需要的步骤&#8221;上会做较少的错误假设。这个过程与许多公司常见的&#8220;写个规范，然后把它扔到墙边，对它置之不理，直到你在程序演示中被嘲笑&#8221;方式有很大不同。<br style="font-family: Verdana;"><br><br style="font-family: Verdana;"><span style="font-family: Verdana;">（未完待续）</span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-weight: bold; font-family: Verdana;">英文原文</span><span style="font-family: Verdana;">：</span><a style="font-family: verdana;" target="_blank" title="ABC: an introduction to agile programming" href="http://www.cio.com/article/print/100501">ABC: An Introduction to Agile Programming</a><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-weight: bold; font-family: Verdana;">译者</span><span style="font-family: Verdana;">：第一次尝试翻译&#8220;长篇&#8221;，还未全部完成，先发出来，期待各位的指正！翻译是件苦差事，算是体会了。如果各位在翻译方面，有什么指导性的建议，也欢迎提出，多谢各位！</span><br style="font-family: Verdana;">       <img src ="http://www.blogjava.net/qixiangnj/aggbug/115431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qixiangnj/" target="_blank">Thomas</a> 2007-05-05 16:43 <a href="http://www.blogjava.net/qixiangnj/archive/2007/05/05/115431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>