ï»?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Habya'aåQˆäÍ时拼凑的¾l„äšgåQ‰ä¸ŽæŠ€æœ¯å€ºåŠ¡-‹¹Žå—软äšg开发|å±×ƒ¸œè½¯äšg开å?‹¹Žå—èµ¢å¯d¿U‘技软äšg开发公å?/title> <meta name="keywords" content="Habya'aåQˆäÍ时拼凑的¾l„äšgåQ‰ä¸ŽæŠ€æœ¯å€ºåŠ¡"/> <meta name="description" content="我们æ›ùN‡åˆ°è¿‡æœ€åŽæœŸé™å³ž®†åˆ°æ¥ã€æ—¶é—´éžå¸¸ç´§˜q«çš„情况。当æ—Óž¼Œæˆ‘们必须ž®½å¿«ä¿®å¤BugåQŒç„¶è€Œå…¶ä¸­çš„一个Bug特别坚韧åQŒä“Q我们百般努力也无可奈何!随后åQŒæˆ‘的某个同事接手了调试工作。他å¼ø™¡Œå†™å…¥äº†ä¸€äº›åº”该从数据库中‹‚€ç´¢æ¥èŽ·å–çš?/> <link href="/css/style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> </head> <body> <div style="position:fixed;left:-9000px;top:-9000px;"><wbr id="vebt5"><option id="vebt5"><var id="vebt5"><p id="vebt5"></p></var></option></wbr><listing id="vebt5"><object id="vebt5"><nobr id="vebt5"></nobr></object></listing><ol id="vebt5"></ol><pre id="vebt5"><em id="vebt5"><input id="vebt5"></input></em></pre><form id="vebt5"><big id="vebt5"><li id="vebt5"></li></big></form><pre id="vebt5"><em id="vebt5"><kbd id="vebt5"><label id="vebt5"></label></kbd></em></pre><mark id="vebt5"></mark><legend id="vebt5"></legend><noscript id="vebt5"></noscript><div id="vebt5"></div><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><track id="vebt5"></track><tt id="vebt5"></tt><track id="vebt5"><form id="vebt5"><pre id="vebt5"><em id="vebt5"></em></pre></form></track><wbr id="vebt5"></wbr><nav id="vebt5"><blockquote id="vebt5"><dd id="vebt5"></dd></blockquote></nav><noscript id="vebt5"></noscript><mark id="vebt5"></mark><div id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"></wbr></menuitem></div><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"><dfn id="vebt5"></dfn></meter></samp></menu><kbd id="vebt5"></kbd><track id="vebt5"><form id="vebt5"><source id="vebt5"></source></form></track><u id="vebt5"></u><var id="vebt5"><cite id="vebt5"><div id="vebt5"></div></cite></var><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><option id="vebt5"></option><samp id="vebt5"></samp><address id="vebt5"></address><samp id="vebt5"></samp><noframes id="vebt5"></noframes><strong id="vebt5"></strong><progress id="vebt5"><kbd id="vebt5"><div id="vebt5"></div></kbd></progress><s id="vebt5"></s><ins id="vebt5"></ins><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"></noframes></strong></table><listing id="vebt5"></listing><bdo id="vebt5"><nav id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></nav></bdo><samp id="vebt5"></samp><strike id="vebt5"><video id="vebt5"><samp id="vebt5"></samp></video></strike><ruby id="vebt5"></ruby><optgroup id="vebt5"></optgroup><option id="vebt5"><wbr id="vebt5"><p id="vebt5"><rp id="vebt5"></rp></p></wbr></option><sup id="vebt5"><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"></dfn></tt></acronym></sup><progress id="vebt5"></progress><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"><dl id="vebt5"></dl></legend></table></tbody><ins id="vebt5"></ins><code id="vebt5"><menu id="vebt5"><sub id="vebt5"><meter id="vebt5"></meter></sub></menu></code><listing id="vebt5"><div id="vebt5"><center id="vebt5"><wbr id="vebt5"></wbr></center></div></listing><dfn id="vebt5"></dfn> <table id="vebt5"><span id="vebt5"><dl id="vebt5"><object id="vebt5"></object></dl></span></table><form id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></form><xmp id="vebt5"></xmp><cite id="vebt5"><div id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></div></cite><address id="vebt5"></address><meter id="vebt5"><source id="vebt5"><table id="vebt5"><ruby id="vebt5"></ruby></table></source></meter><dfn id="vebt5"><option id="vebt5"><dd id="vebt5"><p id="vebt5"></p></dd></option></dfn><strike id="vebt5"></strike><b id="vebt5"></b><kbd id="vebt5"></kbd><sup id="vebt5"><acronym id="vebt5"><delect id="vebt5"><b id="vebt5"></b></delect></acronym></sup><cite id="vebt5"><xmp id="vebt5"><center id="vebt5"><small id="vebt5"></small></center></xmp></cite><optgroup id="vebt5"><xmp id="vebt5"><center id="vebt5"></center></xmp></optgroup><ol id="vebt5"></ol><u id="vebt5"><s id="vebt5"><cite id="vebt5"><ins id="vebt5"></ins></cite></s></u><rp id="vebt5"></rp><dl id="vebt5"></dl><em id="vebt5"></em><big id="vebt5"></big><code id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></code><rp id="vebt5"><big id="vebt5"><s id="vebt5"></s></big></rp><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"></table></tbody></bdo></dd><dl id="vebt5"></dl><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><pre id="vebt5"></pre><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><video id="vebt5"></video><dfn id="vebt5"></dfn><dd id="vebt5"><bdo id="vebt5"><th id="vebt5"><address id="vebt5"></address></th></bdo></dd><cite id="vebt5"></cite><center id="vebt5"><small id="vebt5"><noscript id="vebt5"></noscript></small></center><meter id="vebt5"></meter><strong id="vebt5"><input id="vebt5"><th id="vebt5"></th></input></strong><nobr id="vebt5"></nobr><dfn id="vebt5"><font id="vebt5"><dd id="vebt5"></dd></font></dfn><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></bdo></dd><mark id="vebt5"><bdo id="vebt5"><b id="vebt5"><table id="vebt5"></table></b></bdo></mark><output id="vebt5"><ol id="vebt5"><bdo id="vebt5"></bdo></ol></output><strong id="vebt5"><track id="vebt5"><nav id="vebt5"><pre id="vebt5"></pre></nav></track></strong><thead id="vebt5"></thead><mark id="vebt5"><td id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></td></mark><p id="vebt5"></p><ins id="vebt5"></ins><form id="vebt5"></form><span id="vebt5"><tt id="vebt5"><object id="vebt5"><font id="vebt5"></font></object></tt></span><delect id="vebt5"><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody></delect><optgroup id="vebt5"></optgroup><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody><big id="vebt5"></big> <ruby id="vebt5"></ruby><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></tbody></bdo><b id="vebt5"><output id="vebt5"><dd id="vebt5"></dd></output></b><listing id="vebt5"><ins id="vebt5"><center id="vebt5"></center></ins></listing><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"><th id="vebt5"></th></noframes></strong></table><em id="vebt5"></em><strike id="vebt5"><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"></meter></samp></menu></strike><i id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></i><pre id="vebt5"><strong id="vebt5"><input id="vebt5"><thead id="vebt5"></thead></input></strong></pre><ins id="vebt5"></ins><nobr id="vebt5"><sub id="vebt5"><button id="vebt5"></button></sub></nobr><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"><font id="vebt5"></font></dfn></tt></acronym><nobr id="vebt5"><mark id="vebt5"><td id="vebt5"><dfn id="vebt5"></dfn></td></mark></nobr><track id="vebt5"></track><dl id="vebt5"><code id="vebt5"><sup id="vebt5"><sub id="vebt5"></sub></sup></code></dl><del id="vebt5"></del><track id="vebt5"></track><video id="vebt5"></video><ol id="vebt5"></ol><track id="vebt5"></track><th id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"><listing id="vebt5"></listing></wbr></menuitem></th><del id="vebt5"></del><sub id="vebt5"></sub><big id="vebt5"></big><b id="vebt5"></b><address id="vebt5"><progress id="vebt5"><noscript id="vebt5"></noscript></progress></address><del id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></del><delect id="vebt5"></delect><dl id="vebt5"></dl><li id="vebt5"></li><tr id="vebt5"><option id="vebt5"><ol id="vebt5"><delect id="vebt5"></delect></ol></option></tr><th id="vebt5"><address id="vebt5"><wbr id="vebt5"><rt id="vebt5"></rt></wbr></address></th><strike id="vebt5"></strike><strike id="vebt5"></strike><noscript id="vebt5"></noscript><p id="vebt5"></p><dl id="vebt5"></dl><progress id="vebt5"><rt id="vebt5"><th id="vebt5"></th></rt></progress><tt id="vebt5"><object id="vebt5"><menu id="vebt5"><sub id="vebt5"></sub></menu></object></tt><menu id="vebt5"></menu><span id="vebt5"><noframes id="vebt5"><tr id="vebt5"></tr></noframes></span><form id="vebt5"></form><video id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></video><b id="vebt5"></b><video id="vebt5"></video><center id="vebt5"><small id="vebt5"><noscript id="vebt5"><div id="vebt5"></div></noscript></small></center><cite id="vebt5"><xmp id="vebt5"><code id="vebt5"><small id="vebt5"></small></code></xmp></cite><pre id="vebt5"></pre><i id="vebt5"><ruby id="vebt5"><tt id="vebt5"></tt></ruby></i><font id="vebt5"><mark id="vebt5"><td id="vebt5"></td></mark></font></div> <div class="head"> <div class="top"><span><a href="/html/sitemap.xml">XML</a> | <a href="/html/sitemap.html">HTML</a> | <a href="/sitemap.txt">TXT</a></span></div> <div class="bank"> <div class="logo"> <h1><strong><a href="http://www.cabanatime.com" style="margin-right:10px">‹¹Žå—软äšg开å?/a></strong><strong><a href="http://www.cabanatime.com">å±×ƒ¸œè½¯äšg开å?/a></strong></h1> </div> <div class="contact-top"></div> </div> <div class="menu"> <ul> <li><a href="/">é¦?#160;   ™å?/a></li> <li><a href="/About/">关于我们</a></li> <li><a href="/Advantage/">开发优åŠ?/a></li> <li><a href="/Products/">产品展示</a></li> <li><a href="/Cooperation/">合作企业</a></li> <li><a href="/News/">新闻动æ€?/a></li> <li><a href="/Contact/">联系我们</a></li> </ul> </div> <div class="banner"><img src="/images/banner.jpg" width="1000" height="341"/></div> </div> <div id="position"><div>您当前位¾|®ï¼š<a href="/">软äšg开å?/a> >> <a href="/News/">新闻动æ€?/a> >> <a href="/News/Technology/">软äšg开发技æœ?/a> >> ‹¹è§ˆæ–‡ç« </div></div> <div class="youshi_f1" id="youshi_tdyx"> <div class="youshi01"> <h1 class="article_title">Habya'aåQˆäÍ时拼凑的¾l„äšgåQ‰ä¸ŽæŠ€æœ¯å€ºåŠ¡</h1> <div class="article_author">æ·ÕdŠ æ—‰™—´åQ?016-12-20 17:51:29 文章作者:<a href="/">‹¹Žå—软äšg开å?/a> ‹¹è§ˆ‹Æ¡æ•°åQ?Script Language="Javascript" Src="/item/GetHits.asp?Action=Count&GetFlag=0&m=1&ID=3101"></Script></div> <div class="article_main"><div id="MyContent"><p>我们æ›ùN‡åˆ°è¿‡æœ€åŽæœŸé™å³ž®†åˆ°æ¥ã€æ—¶é—´éžå¸¸ç´§˜q«çš„情况。当æ—Óž¼Œæˆ‘们必须ž®½å¿«ä¿®å¤BugåQŒç„¶è€Œå…¶ä¸­çš„一个Bug特别坚韧åQŒä“Q我们百般努力也无可奈何!随后åQŒæˆ‘的某个同事接手了调试工作。他å¼ø™¡Œå†™å…¥äº†ä¸€äº›åº”该从数据库中‹‚€ç´¢æ¥èŽ·å–的值——它们在¾pȝ»Ÿ˜qè¥çš„最初几个月里不会发生变化——随后……系¾lŸç¥žå¥‡åœ°æ­£å¸¸å·¥ä½œäº†ï¼</p><p>  对于˜q™ç±»â€œèŽ«åå…¶å¦™çš„代码”,我的˜q™ä½åŒäº‹ä»¥éžå¸”R£Ž­‘£çš„埃及俚语¿UîC¹‹ä¸ºâ€œHabya’a”,意即临时拼凑的组件ã€?/p><p>  我同事和他的创造性俚语相仿,Ward Cunninghamåœ?992òq´æŠŠ˜q™ç§¾pŸç³•çš„代码称之äؓ“技术债务”——在Wiki癄¡§‘上对技术债务的定义是“在判定某项ä»ÕdŠ¡å®Œæˆä¹‹å‰åQŒéœ€è¦å…ˆå®Œæˆçš„工作”,而Steve McConnellž®†æŠ€æœ¯å€ºåŠ¡å®šä¹‰ä¸ºâ€œä¸€¿Uè®¾è®¡æˆ–构徏的方法,它是一¿UçŸ­æœŸå†…的权宜之计——因为它会äñ”生这æ ïLš„一¿UæŠ€æœ¯çŽ¯å¢ƒï¼šä¸ŽçŽ°åœ¨åŠ¨æ‰‹å®Œæˆç›¸æ¯”,½EåŽå®ŒæˆåŒæ ·çš„工作需要更高的投入。â€?/p><p>  如果从实用主义的角度来看待技术债务åQŒæˆ‘们会发现实际上它òq¶ä¸æ€ÀL˜¯ä»¶åäº‹ã€‚当截止日期已过的时候,技术债务ž®Þq›¸å½“于ä¸ÞZº†äº¤ä»˜è€Œä»˜å‡ºçš„“高速公路的˜q‡èµ\费”。我的另一个朋友曾¾lè¿™æ ·å¯¹æˆ‘说“技术债务ž®±åƒåœ¨æ²¡æœ‰åœè½¦åŒºåŸŸçš„地方停èžRåQšäؕ停èžR是错误的行äؓåQŒè€Œä¸”会导致我们吃¾|šå•åQŒä½†æœ‰æ—¶å€™æˆ‘们äؓ了赶上旁边徏½{‘里的一‹Æ¡é‡è¦çº¦ä¼šï¼Œž®×ƒ¸å¾—不˜q™æ ·é“¤è€Œèµ°é™©ï¼â€?/p><p>  所以,有时候效益成本比军_®šäº†ä¸€åˆ‡ï¼ç„¶è€ŒæŠ€æœ¯å€ºåŠ¡å¿…须及早解决åQŒå®ƒä¸Žåƒé‡‘融上的债务ç›æ€¼¼çš„另一个地方,正是在于它们都会产生利息ã€?/p><p>  ˜q™é‡Œçš„利息是指在每次¾l´æŠ¤¾pȝ»Ÿçš„过½E‹ä¸­åQŒæˆ‘们面对以下状况需要付出的努力åQšç”±äºŽç´§è€¦åˆã€è¿‡å¤§çš„¾c…R€æœª¾læµ‹è¯•çš„代码或ä“Q何其他åŞ式的技术债务åQŒè€Œå¯¼è‡´ä»£ç å’Œ/或设计的¾l´æŠ¤å˜å¾—极其困难ã€?/p><p>  从我的观察来看,技术债务的æ€Õdˆ©æ¯åƈ不固定,而是会随着旉™—´çš„推¿U»è€Œå¢žé•Ñ€‚我的意思是åQŒåœ¨é¢å¯¹ä¸€ä¸ªå¸¦æœ‰æŠ€æœ¯å€ºåŠ¡çš„ç³»¾lŸæ—¶åQŒæ¯ä¸€ä¸ªSprint中我们都需要在¾pȝ»Ÿ¾l´æŠ¤ä¸ŠèŠ±è´ÒŽ¯”之前更多的精力。这个现象源自以下两™å¹å› ç´ ï¼š</p><p>¾l´æŠ¤æ—¶å¾ˆæœ‰å¯èƒ½ä¼šå¼•å…¥é¢å¤–的债务åQŒè¿™æ˜¯å› ä¸ºå½“我们的系¾lŸä¸­æ‹¥æœ‰ä¸€äº›æ؜ä¹Þqš„代码æ—Óž¼Œä»ÖM½•¾l´æŠ¤éƒ½ä¼šéµä»Žç›¸åŒçš„代码和/或设计方法。这些新增的债务会在下一‹Æ¡ç»´æŠ¤æ—¶æ¶ˆè€—更多的¾_‘ÖŠ›åQŒè€Œè¿™ä¸€åˆ‡å°†ä¸æ–­é‡å¤ã€?/p><p>随着旉™—´çš„流逝,ç”׃ºŽæ²¡æœ‰éµä»Žè®¾è®¡æ¨¡å¼ä»¥åŠ¾~ÞZ¹æ–‡æ¡£åŒ–,更多的开发者会从各自对代码或设计片ŒDµå¦‚何工作的假设出发åQŒç»™¾pȝ»Ÿæ‰“上不同的补丁。毫无疑问,˜q™å°†åœ¨ç³»¾lŸä¸­å¼•å…¥æ–°çš„Bug。而修订这些新Bug又会引入更多的Bug…â€?/p><p>  åŸÞZºŽä»¥ä¸ŠåŽŸå› åQŒæ¯ä»½åˆ©æ¯éƒ½ä¼šå¯¹æŠ€æœ¯å€ºåŠ¡çš„增镎쀜做å‡ø™µA献”,因此˜q™é‡Œçš„利息实际上是复利计½Ž—方式。复利计½Ž—ä‹É用以下指数公式:</p><p>  Yt = Y0(1+r)t</p><p>  在这里,Yt是在½W¬t个Sprint时的债务å€û|¼ŒY0是债务初始å€û|¼Œr代表增长率,而t代表Sprint序号。在敏捷™å¹ç›®çŽ¯å¢ƒä¸­ï¼Œâ€œt”是一个整敎ͼŒå› æ­¤åœ¨è¿™é‡Œæˆ‘们可以说åQŒæŠ€æœ¯å€ºåŠ¡ž®†éšç€æ—‰™—´çš„推¿UÀLŒ‰å‡ ä½•æ–¹å¼å¢žé•¿åQˆå› ä¸ºå‡ ä½•å‡½æ•°æ˜¯æŒ‡æ•°å‡½æ•°çš„一个特定情况——当指数函数中的“t”永˜qœå–整数值的时候)ã€?/p><p>  因此åQŒéšç€æ··äؕ的代码库不断¿U¯ç¯åQŒç³»¾lŸå°†å˜å¾—更加脆弱且难以维护。技术债务利息增长的另一个副作用则是åQŒç”±äºŽç”¨åœ¨ç»´æŠ¤ä¸Šçš„时间越来越多,å¯ÆD‡´å›¢é˜Ÿç”Ÿäñ”力遭åˆîCº†æŠ‘制ã€?/p><p>  在某个项目中åQŒæˆ‘们在很长旉™—´å†…都在忍受这æ ïLš„¾pŸç³•ä»£ç å®žè·µåQŒå½“我们最¾lˆè¿›å…¥æ­£å¼æŠ•å…¥ä‹É用前的阶ŒD‰|—¶åQŒç³»¾lŸçªç„¶ä¹‹é—´å°±å´©æºƒäº†ï¼æˆ‘们不可能进行重构的同时åQŒåˆèƒ½å¤Ÿé¿å…åœ¨ç³»¾lŸä¸­è¯¸å¤šéƒ¨åˆ†å¸¦æ¥é‡å¤§å½±å“åQŒå› æ­¤æˆ‘们决定一切推倒重来!</p><p>下一节将½Ž€è¦ä»‹¾lä¸€å¥—用来管理技术债务的推荐流½E‹ã€‚在初始假设中,我们认äؓ技术债务是一¿Ué£Žé™©ã€‚è¿™™å¹å‡è®‘ÖŸºäºŽå¯¹é£Žé™©çš„定义:“可能会影响臛_°‘一™åšw¡¹ç›®ç›®æ ‡â€”—范围、计划、成本或质量——的一件不¼‹®å®šäº‹äšg。”技术债务非常½W¦åˆ˜q™æ¡å®šä¹‰åQŒå› ä¸ºå®ƒå¯šw¡¹ç›®æ¥è¯´æ˜¯ä¸€™åҎ½œåœ¨å¨èƒï¼Œå¦‚果不能及时解决的话åQŒå¯èƒ½ä¼šå¯šw¡¹ç›®é€ æˆè´Ÿé¢å½±å“ã€?/p><p>  作äؓ敏捷爱好者,我将把这个流½E‹æ”¾åœ¨Scrum™å¹ç›®ä¸­ï¼Œæ¥è¿›è¡Œåˆ†æžã€‚实际上我发玎ͼŒéžå¸¸æœ‰å¿…要管理敏捷项目的技术债务。因ä¸ÞZ¸Žå…¶ä»–æ–ÒŽ³•ç›¸æ¯”åQŒæ•æäh–¹æ³•ä¸­çš„快速交付节奏更加鼓励快速且不干净的代码风根{€‚而且在敏捷项目中åQŒæˆ‘们只˜q›è¡Œæ°åˆ°å¥½å¤„的设计和架构åQŒåƈ通过重构来跟上ä“Q何需求的调整åQ›è¿™æ ïLš„后果是,在某¿Uç¨‹åº¦ä¸Šæˆ‘们æ€ÖM¼šæ‹¥æœ‰æŠ€æœ¯å€ºåŠ¡åQŒå› ä¸ºæˆ‘们æ€ÀL˜¯ä¸å¾—不在展开设计的过½E‹ä¸­ä¼˜åŒ–我们的代码ã€?/p><p>  技术债务½Ž¡ç†‹¹ç¨‹å¦‚下åQ?/p><p>讑֮šæŠ€æœ¯ä¿¡ç”¨é™é¢ï¼ˆTCLåQ‰â€”—TCL是我们愿意借出的理惛_·¥ä½œå°æ—¶æ•°æˆ–用æˆäh•…事点的最大总额。可以用总项目大ž®çš„癑ֈ†æ¯”åŞ式来计算该限额,例如10%ã€?/p><p>识别技术债务因素——技术债务因素是指˜q™æ ·çš„情况:某位团队成员希望¾l•è¿‡ä¸€äº›è‰¯å¥½çš„代码、设计或‹¹‹è¯•å®žè·µåQŒä»¥ä¾¿å®žçŽ°å¿«é€Ÿäº¤ä»˜ã€‚我们应该在每天Scrum会议通过ž®ç»„讨论来识别这些因素ã€?/p><p>记录技术债务ä»ÕdŠ¡â€”—对于每™åҎŠ€æœ¯å€ºåŠ¡å› ç´ åQŒéœ€è¦åœ¨æŠ€æœ¯å€ºåŠ¡è®°å½•é‡Œæ·»åŠ ä¸¤™å¹ä“Q务,òq¶ä‹É用立™å¹å·¥ä½œå°æ—¶æˆ–用户故事点的方式来估½Ž—其大小。这两项ä»ÕdŠ¡æ˜¯ï¼š</p><p>开拓型ä»ÕdŠ¡åQšæŒ‡æˆ‘们军_®šåˆ©ç”¨æŠ€æœ¯å€ºåŠ¡å› ç´ æ—Óž¼Œéœ€è¦åšä»€ä¹ˆã€‚这是技术债务的篏加ã€?/p><p>偿还型ä“Q务:当决定重构代码或设计的时候,我们需要做什么。这一ä»ÕdŠ¡çš„大ž®ï¼Œä»£è¡¨äº†æˆ‘们从TCL中拿出多ž®‘来偿还发生的债务ã€?/p><p>选择ä»ÕdŠ¡â€”—在Sprint规划会议中,选择希望开拓的技术债务因素。技术债务因素的选择应该åŸÞZºŽäº§å“æ‰€æœ‰è€…确定的优先¾U§ã€?/p><p>从TCL中减åŽÕd¿˜q˜åž‹ä»ÕdŠ¡æ‰€å…Œ™”的技术债务的大ž®ï¼ˆé™é¢æ‰£å‡åQ‰ã€?/p><p>在Sprint待办事项列表中增加与开拓型ä»ÕdŠ¡ç›¸å…³çš„技术债务åQŒåƈž®†å…¶å¤§å°ç´¯åŠ åˆ°é¡¹ç›®æ€Õd¤§ž®ä¸Šã€?/p><p>  如果我们发现TCL已经快要用光了,那么接下来我们需要:</p><p>在Sprint待办事项列表中添加一™å¹å¿˜q˜åž‹ä»ÕdŠ¡ã€?/p><p>在完成该偿还型ä“Q务后åQŒå¯¹TCL增加½{‰é‡é¢åº¦ã€?/p><p>  ˜q™æ ·åQŒæˆ‘们将TCL作äؓ监视¾pȝ»ŸåQŒä»¥ä¾¿åœ¨æŠ€æœ¯å€ºåŠ¡å¼€å§‹ç§¯èšçš„时候警告自己,以便我们努力使其恢复到健åºäh°´òqŸë€?/p><p> ¾l“语</p><p>  ž®†æŠ€æœ¯å€ºåŠ¡ä½œäؓ风险来进行管理,òq¶ä‹É用技术信用限额,能够有效地减ž®‘技术债务的负面媄响,同时令收益最大化——特别是在敏æäh–¹æ³•ä¸­åQŒæˆ‘们很å®ÒŽ˜“滥用技术债务åQŒå°†å…¶ä½œä¸ÞZ¸€¿UåŠ é€Ÿäº¤ä»˜çš„手段åQŒå› æ­¤ä¹Ÿž®±éœ€è¦æ›´åŠ å…³æ³¨æŠ€æœ¯å€ºåŠ¡ã€?/p><p><br/></p></div> </div> </div> </div> <div class="clear"></div> <div class="foot"> <div class="foot_menu"> <ul> <li><a href="/About/">关于我们</a></li> <li><a href="/Advantage/">开发优åŠ?/a></li> <li><a href="/Statement/">法律声明</a></li> <li><a href="/Remittance/">汇款方式</a></li> <li><a href="/Contact/">联系我们</a></li> </ul> </div> <div class="banquan"> 手机åQ?8678812288 EåQMail:1069706080@qq.com<br /> 地址åQšå±±ä¸œçœ‹¹Žå—市舜耕èµ\泉城公园东门园内向北50¾c? 鲁ICPå¤?7011972å? 版权所æœ?008åQ?013 å±×ƒ¸œèµ¢å¯d信息¿U‘技有限公司<script type="text/javascript"> var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "#/h.js%3F5fbc066dba9928a1e914c338c6945c98' type='text/javascript'%3E%3C/script%3E")); </script> </div> </div> <div style="position:fixed;left:-9000px;top:-9000px;"><wbr id="vebt5"><option id="vebt5"><var id="vebt5"><p id="vebt5"></p></var></option></wbr><listing id="vebt5"><object id="vebt5"><nobr id="vebt5"></nobr></object></listing><ol id="vebt5"></ol><pre id="vebt5"><em id="vebt5"><input id="vebt5"></input></em></pre><form id="vebt5"><big id="vebt5"><li id="vebt5"></li></big></form><pre id="vebt5"><em id="vebt5"><kbd id="vebt5"><label id="vebt5"></label></kbd></em></pre><mark id="vebt5"></mark><legend id="vebt5"></legend><noscript id="vebt5"></noscript><div id="vebt5"></div><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><track id="vebt5"></track><tt id="vebt5"></tt><track id="vebt5"><form id="vebt5"><pre id="vebt5"><em id="vebt5"></em></pre></form></track><wbr id="vebt5"></wbr><nav id="vebt5"><blockquote id="vebt5"><dd id="vebt5"></dd></blockquote></nav><noscript id="vebt5"></noscript><mark id="vebt5"></mark><div id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"></wbr></menuitem></div><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"><dfn id="vebt5"></dfn></meter></samp></menu><kbd id="vebt5"></kbd><track id="vebt5"><form id="vebt5"><source id="vebt5"></source></form></track><u id="vebt5"></u><var id="vebt5"><cite id="vebt5"><div id="vebt5"></div></cite></var><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><option id="vebt5"></option><samp id="vebt5"></samp><address id="vebt5"></address><samp id="vebt5"></samp><noframes id="vebt5"></noframes><strong id="vebt5"></strong><progress id="vebt5"><kbd id="vebt5"><div id="vebt5"></div></kbd></progress><s id="vebt5"></s><ins id="vebt5"></ins><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"></noframes></strong></table><listing id="vebt5"></listing><bdo id="vebt5"><nav id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></nav></bdo><samp id="vebt5"></samp><strike id="vebt5"><video id="vebt5"><samp id="vebt5"></samp></video></strike><ruby id="vebt5"></ruby><optgroup id="vebt5"></optgroup><option id="vebt5"><wbr id="vebt5"><p id="vebt5"><rp id="vebt5"></rp></p></wbr></option><sup id="vebt5"><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"></dfn></tt></acronym></sup><progress id="vebt5"></progress><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"><dl id="vebt5"></dl></legend></table></tbody><ins id="vebt5"></ins><code id="vebt5"><menu id="vebt5"><sub id="vebt5"><meter id="vebt5"></meter></sub></menu></code><listing id="vebt5"><div id="vebt5"><center id="vebt5"><wbr id="vebt5"></wbr></center></div></listing><dfn id="vebt5"></dfn> <table id="vebt5"><span id="vebt5"><dl id="vebt5"><object id="vebt5"></object></dl></span></table><form id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></form><xmp id="vebt5"></xmp><cite id="vebt5"><div id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></div></cite><address id="vebt5"></address><meter id="vebt5"><source id="vebt5"><table id="vebt5"><ruby id="vebt5"></ruby></table></source></meter><dfn id="vebt5"><option id="vebt5"><dd id="vebt5"><p id="vebt5"></p></dd></option></dfn><strike id="vebt5"></strike><b id="vebt5"></b><kbd id="vebt5"></kbd><sup id="vebt5"><acronym id="vebt5"><delect id="vebt5"><b id="vebt5"></b></delect></acronym></sup><cite id="vebt5"><xmp id="vebt5"><center id="vebt5"><small id="vebt5"></small></center></xmp></cite><optgroup id="vebt5"><xmp id="vebt5"><center id="vebt5"></center></xmp></optgroup><ol id="vebt5"></ol><u id="vebt5"><s id="vebt5"><cite id="vebt5"><ins id="vebt5"></ins></cite></s></u><rp id="vebt5"></rp><dl id="vebt5"></dl><em id="vebt5"></em><big id="vebt5"></big><code id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></code><rp id="vebt5"><big id="vebt5"><s id="vebt5"></s></big></rp><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"></table></tbody></bdo></dd><dl id="vebt5"></dl><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><pre id="vebt5"></pre><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><video id="vebt5"></video><dfn id="vebt5"></dfn><dd id="vebt5"><bdo id="vebt5"><th id="vebt5"><address id="vebt5"></address></th></bdo></dd><cite id="vebt5"></cite><center id="vebt5"><small id="vebt5"><noscript id="vebt5"></noscript></small></center><meter id="vebt5"></meter><strong id="vebt5"><input id="vebt5"><th id="vebt5"></th></input></strong><nobr id="vebt5"></nobr><dfn id="vebt5"><font id="vebt5"><dd id="vebt5"></dd></font></dfn><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></bdo></dd><mark id="vebt5"><bdo id="vebt5"><b id="vebt5"><table id="vebt5"></table></b></bdo></mark><output id="vebt5"><ol id="vebt5"><bdo id="vebt5"></bdo></ol></output><strong id="vebt5"><track id="vebt5"><nav id="vebt5"><pre id="vebt5"></pre></nav></track></strong><thead id="vebt5"></thead><mark id="vebt5"><td id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></td></mark><p id="vebt5"></p><ins id="vebt5"></ins><form id="vebt5"></form><span id="vebt5"><tt id="vebt5"><object id="vebt5"><font id="vebt5"></font></object></tt></span><delect id="vebt5"><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody></delect><optgroup id="vebt5"></optgroup><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody><big id="vebt5"></big> <ruby id="vebt5"></ruby><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></tbody></bdo><b id="vebt5"><output id="vebt5"><dd id="vebt5"></dd></output></b><listing id="vebt5"><ins id="vebt5"><center id="vebt5"></center></ins></listing><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"><th id="vebt5"></th></noframes></strong></table><em id="vebt5"></em><strike id="vebt5"><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"></meter></samp></menu></strike><i id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></i><pre id="vebt5"><strong id="vebt5"><input id="vebt5"><thead id="vebt5"></thead></input></strong></pre><ins id="vebt5"></ins><nobr id="vebt5"><sub id="vebt5"><button id="vebt5"></button></sub></nobr><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"><font id="vebt5"></font></dfn></tt></acronym><nobr id="vebt5"><mark id="vebt5"><td id="vebt5"><dfn id="vebt5"></dfn></td></mark></nobr><track id="vebt5"></track><dl id="vebt5"><code id="vebt5"><sup id="vebt5"><sub id="vebt5"></sub></sup></code></dl><del id="vebt5"></del><track id="vebt5"></track><video id="vebt5"></video><ol id="vebt5"></ol><track id="vebt5"></track><th id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"><listing id="vebt5"></listing></wbr></menuitem></th><del id="vebt5"></del><sub id="vebt5"></sub><big id="vebt5"></big><b id="vebt5"></b><address id="vebt5"><progress id="vebt5"><noscript id="vebt5"></noscript></progress></address><del id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></del><delect id="vebt5"></delect><dl id="vebt5"></dl><li id="vebt5"></li><tr id="vebt5"><option id="vebt5"><ol id="vebt5"><delect id="vebt5"></delect></ol></option></tr><th id="vebt5"><address id="vebt5"><wbr id="vebt5"><rt id="vebt5"></rt></wbr></address></th><strike id="vebt5"></strike><strike id="vebt5"></strike><noscript id="vebt5"></noscript><p id="vebt5"></p><dl id="vebt5"></dl><progress id="vebt5"><rt id="vebt5"><th id="vebt5"></th></rt></progress><tt id="vebt5"><object id="vebt5"><menu id="vebt5"><sub id="vebt5"></sub></menu></object></tt><menu id="vebt5"></menu><span id="vebt5"><noframes id="vebt5"><tr id="vebt5"></tr></noframes></span><form id="vebt5"></form><video id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></video><b id="vebt5"></b><video id="vebt5"></video><center id="vebt5"><small id="vebt5"><noscript id="vebt5"><div id="vebt5"></div></noscript></small></center><cite id="vebt5"><xmp id="vebt5"><code id="vebt5"><small id="vebt5"></small></code></xmp></cite><pre id="vebt5"></pre><i id="vebt5"><ruby id="vebt5"><tt id="vebt5"></tt></ruby></i><font id="vebt5"><mark id="vebt5"><td id="vebt5"></td></mark></font></div> <a href="http://www.cabanatime.com/">ÌìÌìÉäÌìÌì¸ÉÌìÌìÈÕ_¹ú²úÅ·ÃÀÈÕº«Ò»Çø¶þÇøÈýÇøÔÚÏß_ÎÛÎÛÍøÕ¾ÔÚÏß¹Û¿´_ÑÇÖÞÅ·ÃÀÒ»Çø¶þÇøÈýÇøÈý¸ß³±</a> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body> </html>