ï»??xml version="1.0" encoding="utf-8" standalone="yes"?> 1.1¾~–写目的   说明¾~–写˜q™ä†¾‹¹‹è¯•计划目的åQŒæŒ‡å‡ºé¢„期的读者ã€?/p>
1.2背景   a.å¾…å¼€å‘ç³»¾lŸçš„åç§°åQ?br>  b.列出本项目的ä»ÕdŠ¡æå‡ºè€…ã€å¼€å‘者ã€ç”¨æˆ—÷€?/p>
1.3定义   列出本文件ä¸ç”¨åˆ°çš„专门术è¯çš„å®šä¹‰å’Œå¤–æ–‡é¦–å—æ¯¾l„è¯çš„原è¯ç»„ã€?/p>
1.4å‚考资æ–?/strong>   列出有关的å‚考资料ã€?/p>
2.1¾pÈ»Ÿè¯´æ˜Ž   [æä¾›ä¸€ä»½å›¾è¡¨ï¼Œòq‰™€é¡¹è¯´æ˜Žè¢«æµ‹¾pÈ»Ÿçš„功能ã€è¾“å…¥ã€è¾“出ç‰è´¨é‡æŒ‡æ ‡åQŒä½œä¸ºå™˜q°æµ‹è¯•计划的æçº²ã€‚] 2.2‹¹‹è¯•内容   [列出¾l„装‹¹‹è¯•和确认测试ä¸çš„æ¯ä¸€™åÒŽ(gu¨©)µ‹è¯•内容的åç§°æ ‡è¯†½W¦ã€è¿™äº›æµ‹è¯•çš„˜q›åº¦å®‰æŽ’以劘q™äº›‹¹‹è¯•的内容和目的。] 2.3‹¹‹è¯•1åQˆæ ‡è¯†ç¬¦åQ?/strong>   [¾l™å‡º˜q™é¡¹‹¹‹è¯•内容的å‚与å•ä½åŠè¢«æµ‹è¯•的部ä½ã€‚]   2.3.1˜q›åº¦å®‰æŽ’   2.3.2æ¡äšg   2.3.3‹¹‹è¯•资料   2.3.4‹¹‹è¯•åŸ¹è® 2.4‹¹‹è¯•2åQˆæ ‡è¯†ç¬¦åQ?/strong>   用与本测试计åˆ?ã€?æ¡ç›¸¾cÖM¼¼çš„æ–¹å¼è¯´æ˜Žç”¨äºŽå¦ä¸€™å¹åŠå…¶åŽå„项‹¹‹è¯•内容的测试工作计划ã€?br>  。。。。。ã€?/p>
,h3><3åQŽæµ‹è¯•设计说æ˜?
3.1‹¹‹è¯•1åQˆæ ‡è¯†ç¬¦åQ?/strong>   [说明对第一™åÒŽ(gu¨©)µ‹è¯•内容的‹¹‹è¯•设计考虑。]   3.1.1控制   3.1.2输入   3.1.3输出   3.1.4˜q‡ç¨‹ 3.2‹¹‹è¯•2åQˆæ ‡è¯†ç¬¦åQ?/strong>   [用与本测试计åˆ?ã€?æ¡ç›¸¾cÖM¼¼çš„æ–¹å¼è¯´æ˜Žç¬¬2™å¹åŠå…¶åŽå„项‹¹‹è¯•工作的设计考虑。]
4.1范围   [说明所选择的测试用例能够检查的范围åŠå…¶å±€é™æ€§ã€‚] 4.2æ•°æ®æ•´ç†   [陈述ä¸ÞZº†æŠŠæµ‹è¯•æ•°æ®åŠ å·¥æˆä¾¿äºŽè¯„äh(hu¨¢n)的适当形å¼åQŒä‹É得测试结果å¯ä»¥åŒå·²çŸ¥¾l“æžœ˜q›è¡Œæ¯”较而è¦ç”¨åˆ°çš„è{æ¢å¤„ç†æŠ€æœ¯ï¼›å¦‚æžœæ˜¯ç”¨è‡ªåŠ¨æ–¹å¼æ•´ç†æ•°æ®åQŒè¿˜è¦è¯´æ˜ŽäØ“˜q›è¡Œå¤„ç†è€Œè¦ç”¨åˆ°çš„硬件ã€èÊY件资æºã€‚] 4.3ž®ºåº¦   [说明用æ¥åˆ¤æ–‹¹‹è¯•工作是å¦èƒ½é€šè¿‡çš„评价尺度,如åˆç†å’Œè¾“出¾l“æžœçš„ç±»åž‹ã€æµ‹è¯•输出结果与预期输出之间的容许弛»èŒƒå›´ã€å…è®æ€¸æ–æˆ–åœæœºçš„æœ€å¤§æ•°ã€‚] 1.1¾~–写目的   [说明¾~–写˜q™ä†¾æ•°æ®è®¾è®¡è¯´æ˜Žä¹¦çš„目的åQŒæŒ‡å‡ºé¢„期的读者。] 1.2背景   a.[待开呿•°æ®åº“çš„å¿U°å’Œä½¿ç”¨æ¤æ•°æ®åº“çš„èÊYä»¶ç³»¾lŸçš„åç§°åQ›] 1.3定义   [列出本文件ä¸ç”¨åˆ°çš„专门术è¯çš„å®šä¹‰å’Œå¤–æ–‡é¦–å—æ¯¾l„è¯çš„原è¯ç»„。] 1.4å‚考资æ–?/strong>   [列出有关的å‚考资料。]
2.1æ ‡è¯†½W¦çš„状æ€?/strong>   [è”ç³»ç”¨é€”ï¼Œè¯¦ç»†è¯´æ˜Žç”¨äºŽå”¯ä¸€åœ°æ ‡è¯†è¯¥æ•°æ®åº“的代ç ã€å¿U°æˆ–æ ‡è¯†½W¦ï¼Œé™„åŠ çš„æ˜q°æ€§ä¿¡æ¯äº¦è¦ç»™å‡ºã€‚如果该数æ®åº“属于尚在实验ä¸ã€å°šåœ¨æµ‹è¯•䏿ˆ–是暂时使用的,则è¦è¯´æ˜Ž˜q™ä¸€ç‰¹ç‚¹åŠå…¶æœ‰æ•ˆæ—‰™—´èŒƒå›´ã€‚] 2.2使用它的½E‹åº   [列出ž®†è¦ä½¿ç”¨æˆ–è®¿é—®æ¤æ•°æ®åº“的所有应用程åºï¼Œå¯¹äºŽ˜q™äº›åº”用½E‹åºçš„æ¯ä¸€ä¸ªï¼Œ¾l™å‡ºå®ƒçš„å称和版本å·ã€‚] 2.3¾U¦å®š   [陈述一个程åºå‘˜æˆ–一个系¾lŸåˆ†æžå‘˜ä¸ÞZº†èƒ½ä‹Éç”¨æ¤æ•°æ®åº“而需è¦äº†è§£çš„å»ºç«‹æ ‡å·ã€æ ‡è¯†çš„¾U¦å®šã€‚] 2.4专门指导   [å‘å‡†å¤‡ä»Žäº‹æ¤æ•°æ®åº“的生æˆã€ä»Žäº‹æ¤æ•°æ®åº“çš„‹¹‹è¯•ã€ç»´æŠ¤äh员æä¾›ä¸“门的指导。] 2.5支æŒè½¯äšg   [½Ž€å•介¾låŒæ¤æ•°æ®åº“直接有关的支æŒèÊY件。说明这些èÊYä»¶çš„åç§°ã€ç‰ˆæœ¬å·çš„主è¦åŠŸèƒ½ç‰¹æ€§ã€‚åˆ—å‡ø™¿™äº›æ”¯æŒèÊYä»¶çš„æŠ€æœ¯æ–‡ä»¶çš„æ ‡é¢˜ã€ç¼–å·åŠæ¥æº]
3.1概念¾l“构设计   [说明本数æ®åº“ž®†åæ˜ çš„çŽ°å®žä¸–ç•Œä¸çš„实体ã€å±žæ€§å’Œå®ƒä»¬ä¹‹é—´çš„å…³¾pȉ的原始数æ®åÅžå¼ï¼ŒåŒ…æ‹¬å„æ•°æ®é¡¹ã€è®°å½•ã€ç³»ã€æ–‡åïLš„æ ‡è¯†½W¦ã€å®šä¹‰ã€ç±»åž‹ã€åº¦é‡å•ä½å’Œå€¼åŸŸåQŒå¾ç«‹æœ¬æ•°æ®åº“çš„æ¯ä¸€òq…用戯‚§†å›¾ã€‚] 3.2逻辑¾l“构设计   [说明把上˜q°åŽŸå§‹æ•°æ®è¿›è¡Œåˆ†è§£ã€åˆòq¶åŽé‡æ–°¾l„织èµäh¥çš„æ•°æ®åº“全局逻辑¾l“构。] 3物熾l“构设计   [建立¾pÈ»Ÿ½E‹åºå‘˜è§†å›¾ã€‚]
4.1æ•°æ®å—典设计   [å¯ÒŽ(gu¨©)•°æ®åº“è®¾è®¡ä¸æ¶‰åŠåˆ°çš„å„¿U项目一般è¦å»ºç«‹èµäh•°æ®å—å…¸ï¼Œä»¥è¯´æ˜Žå®ƒä»¬çš„æ ‡è¯†½W¦ã€åŒä¹‰ååŠæœ‰å…³ä¿¡æ¯ã€‚] 4.2安全ä¿å¯†è®¾è®¡   [说明在数æ®åº“的设计ä¸åQŒå°†å¦‚何通过区分ä¸åŒçš„访问者ã€ä¸åŒçš„讉K—®¾cÕdž‹å’Œä¸åŒçš„æ•°æ®å¯¹è±¡åQŒè¿›è¡Œåˆ†åˆ«å¯¹å¾…而获得的数æ®åº“安全ä¿å¯†çš„设计考虑。] 1.1¾~–写目的   [说明¾~–写˜q™ä†¾æ¦‚è¦è®¾è®¡è¯´æ˜Žä¹¦çš„目的åQŒæŒ‡å‡ºé¢„期的读者。] 1.2背景   a.[å¾…å¼€å‘èÊYä»¶ç³»¾lŸçš„åç§°åQ›] 1.3定义   [列出本文件ä¸ç”¨åˆ°çš„专门术è¯çš„å®šä¹‰å’Œå¤–æ–‡é¦–å—æ¯¾l„è¯çš„原è¯ç»„。] 1.4å‚考资æ–?/strong>   [列出有关的å‚考资料。]
2.1需求规å®?/strong>   [说明å¯ÒŽ(gu¨©)œ¬¾pÈ»Ÿçš„主è¦çš„输入输出™å¹ç›®ã€å¤„ç†çš„åŠŸèƒ½æ€§èƒ½è¦æ±‚。包括]   2.1.1¾pÈ»ŸåŠŸèƒ½   2.1.2¾pÈ»Ÿæ€§èƒ½   2.1.3è¾“å…¥è¾“å‡ºè¦æ±‚   2.1.4æ•°æ®½Ž¡ç†èƒ½åŠ›è¦æ±‚   2.1.5故障处ç†è¦æ±‚   2.1.6å…¶ä»–ä¸“é—¨è¦æ±‚ 2.2˜q行环境   [½Ž€è¦åœ°è¯´æ˜Žå¯ÒŽ(gu¨©)œ¬¾pÈ»Ÿçš„è¿è¡ŒçŽ¯å¢ƒçš„è§„å®šã€‚]   2.2.1讑֤‡   2.2.2支æŒè½¯äšg 1  2.2.3æŽ¥å£ ã€€ã€€2.2.4控制 2.3åŸºæœ¬è®¾è®¡æ¦‚å¿µå’Œå¤„ç†æµ½E?/strong>   [说明本系¾lŸçš„åŸºæœ¬è®¾è®¡æ¦‚å¿µå’Œå¤„ç†æµ½E‹ï¼Œž®½é‡ä½¿ç”¨å›¾è¡¨çš„åÅžå¼ã€‚] 2.4¾l“æž„   [¾l™å‡º¾pÈ»Ÿ¾l“æž„æ€ÖM½“框图åQˆåŒ…括èÊYä»¶ã€ç¡¬ä»¶ç»“构框图)åQŒè¯´æ˜Žæœ¬¾pÈ»Ÿçš„儿¨¡å—çš„åˆ’åˆ†ï¼Œæ‰ÆD¦è¯´æ˜Žæ¯ä¸ª¾pÈ»Ÿæ¨¡å—çš„æ ‡è¯†ç¬¦å’ŒåŠŸèƒ½ï¼Œåˆ†å±‚‹Æ¡åœ°¾l™å‡ºå„模å—之间的控制与被控制关系。] 2.5功能需求与¾pÈ»Ÿæ¨¡å—的关¾p?/strong>   [本æ¡ç”¨ä¸€å¼ 矩阵图说明å„项功能需求的实现åŒå„模å—的分é…å…³¾p…R€‚] 2.6人工处熘q‡ç¨‹   [说明在本¾pÈ»Ÿçš„工作过½E‹ä¸ä¸å¾—ä¸åŒ…å«çš„人工处熘q‡ç¨‹ã€‚] 2.7ž®šæœªè§£å†³çš„é—®é¢?/strong>   [说明在概è¦è®¾è®¡è¿‡½E‹ä¸ž®šæœªè§£å†³è€Œè®¾è®¡è€…认为在¾pÈ»Ÿå®Œæˆä¹‹å‰å¿…须解决的å„个问题。]
3.1ç”¨æˆ·æŽ¥å£ ã€€ã€€[说明ž®†å‘用户æä¾›çš„å‘½ä»¤å’Œå®ƒä»¬çš„è¯æ³•结构,以åŠç›¸åº”的回½{”ä¿¡æ¯ã€‚] 3.2å¤–éƒ¨æŽ¥å£ ã€€ã€€[说明本系¾lŸåŒå¤–界的所有接å£çš„安排包括软äšg与硬件之间的接å£ã€æœ¬¾pÈ»Ÿä¸Žå„支挾pÈ»Ÿä¹‹é—´çš„æŽ¥å£å…³¾p…R€‚] 3.3å†…éƒ¨æŽ¥å£ ã€€ã€€[说明本系¾lŸä¹‹å†…çš„å„个¾pÈ»Ÿå…ƒç´ 之间的接å£çš„安排。]
4.1˜q行模嗾l„åˆ ã€€ã€€[说明对系¾lŸæ–½åŠ ä¸åŒçš„外界˜q行控制时所引è“v的儿Uä¸åŒçš„˜q行模嗾l„åˆåQŒè¯´æ˜Žæ¯¿Uè¿è¡Œæ‰€åކç»çš„内部模å—的支æŒè½¯äšg。] 4.2˜q行控制   [说明æ¯ä¸€¿U外界的˜qè¡ŒæŽ§åˆ¶çš„æ–¹å¼æ–¹æ³•å’Œæ“作æ¥éª¤ã€‚] 4.3˜q行旉™—´   [说明æ¯ç§˜q行模嗾l„刞®†å 用儿U资æºçš„æ—‰™—´ã€‚]
  [䏿¶‰åŠèÊY件设计å¯ä¸åŒ…å«] 5.1逻辑¾l“构设计è¦ç‚¹   [¾l™å‡ºæœ¬ç³»¾lŸå†…软äšg所使用的æ¯ä¸ªæ•°æ®ç»“构的åç§°ã€æ ‡è¯†ç¬¦ä»¥åŠå®ƒä»¬ä¹‹ä¸æ¯ä¸ªæ•°æ®™åV€è®°å½•ã€æ–‡å·å’Œ¾pÈš„æ ‡è¯†ã€å®šä¹‰ã€é•¿åº¦åŠå®ƒä»¬ä¹‹é—´çš„层‹Æ¡çš„æˆ–è¡¨æ ¼çš„ç›æ€º’关系。] 5.2物熾l“构设计è¦ç‚¹   [¾l™å‡ºæœ¬ç³»¾lŸå†…软äšg所使用的æ¯ä¸ªæ•°æ®ç»“æž„ä¸çš„æ¯ä¸ªæ•°æ®é¡¹çš„å˜å‚¨è¦æ±‚,讉K—®æ–ÒŽ(gu¨©)³•ã€å˜å–å•ä½ã€å˜å–的物ç†å…³ç³»ã€è®¾è®¡è€ƒè™‘å’Œä¿å¯†æ¡ä»¶ã€‚] 5.3数殾l“构与程åºçš„关系   [说明å„个数殾l“构与访问这些数æ®ç»“构的å„个½E‹åºä¹‹é—´çš„对应关¾p…R€‚]
6.1å‡ºé”™ä¿¡æ¯ ã€€ã€€[用一览表的方å¼è¯´æ˜Žæ¯¿Uå¯èƒ½çš„出错或故障情况出现时åQŒç³»¾lŸè¾“å‡ÞZ¿¡æ¯çš„å½¢å¼ã€å«æ„åŠå¤„ç†æ–ÒŽ(gu¨©)³•。] 6.2补救措施   [说明故障出现åŽå¯èƒ½é‡‡å–çš„å˜é€šæŽªæ–½ã€‚包括:] 6.3¾pÈ»Ÿ¾l´æŠ¤è®¾è®¡   [说明ä¸ÞZº†¾pÈ»Ÿ¾l´æŠ¤çš„æ–¹ä¾¿è€Œåœ¨½E‹åºå†…部设计ä¸ä½œå‡ºçš„安排åQŒåŒ…括在½E‹åºä¸ä¸“门安排用于系¾lŸçš„‹‚€æŸ¥ä¸Ž¾l´æŠ¤çš„æ£€‹¹‹ç‚¹å’Œä¸“用模å—。] 1.1¾~–写目的   [……] 1.2背景   [……] 1.3定义   [……] 1.4å‚考资æ–?/strong>   [……]
2.1功能   [……] 2.2性能   2.2.1¾_‘Öº¦   [……]   2.2.2æ—‰™—´ç‰ÒŽ(gu¨©)€?br>  [……]   2.2.3ç‰|´»æ€?br>  [……] 2.3安全ä¿å¯†   [……]
3.1¼‹¬è®¾å¤?/strong>   [……] 3.2支æŒè½¯äšg   [……] 3.3数殾l“æž„   [……]
4.1安装与åˆå§‹åŒ–   [……] 4.2输入   4.2.1输入数æ®çš„现实背æ™?br>  [……]   4.2.2è¾“å…¥æ ¼å¼ ã€€ã€€4.2.3输入举例 4.3输出   4.3.1输出数æ®çš„现实背æ™?br>  [……]   4.3.2è¾“å‡ºæ ¼å¼ ã€€ã€€4.3.3输出举例 4.4æ–‡å·æŸ¥è¯¢   [……] 4.5出错处ç†ä¸Žæ¢å¤?/strong>   [……] 4.6¾lˆç«¯æ“作   [……] 1.1¾~–写的目çš?/strong>   说明¾~–写˜q™ä†¾éœ€æ±‚说明书的目çš?指出预期的读è€? 1.2背景   a. å¾…å¼€å‘çš„¾pÈ»Ÿçš„å¿U? 1.3定义   列出本文件ä¸ç”¨åˆ°çš„专门术è¯çš„å®šä¹‰å’Œå¤–æ–‡é¦–å—æ¯¾l„è¯çš„原è¯ç»„ã€?/p>
1.4å‚考资æ–?/strong>   列出用得ç€çš„å‚考资料ã€?/p>
2.1ç›®æ ‡   å™è¿°è¯¥ç³»¾lŸå¼€å‘çš„æ„图ã€åº”ç”¨ç›®æ ‡ã€ä½œç”¨èŒƒå›´ä»¥åŠå…¶ä»–应å‘读者说明的有关该系¾lŸå¼€å‘çš„èƒŒæ™¯ææ–™ã€‚解释被开å‘ç³»¾lŸä¸Žå…¶ä»–有关¾pÈ»Ÿä¹‹é—´çš„å…³¾p…R€?/p>
2.2用户的特ç‚?/strong>   列出本系¾lŸçš„æœ€¾lˆç”¨æˆïLš„特点åQŒå……分说明æ“作äh员ã€ç»´æŠ¤äh员的教育水åã^å’ŒæŠ€æœ¯ä¸“é•¿ï¼Œä»¥åŠæœ¬ç³»¾lŸçš„预期使用频度ã€?/p>
2.3å‡å®šå’Œçº¦æ?/strong>   列出˜q›è¡Œæœ¬ç³»¾lŸå¼€å‘工作的å‡å®šå’Œçº¦æŸã€?/p>
3.1对功能的规定   用列表的方å¼åQŒé€é¡¹å®šé‡å’Œå®šæ€§åœ°å™è¿°å¯¹ç³»¾lŸæ‰€æå‡ºçš„åŠŸèƒ½è¦æ±‚,说明输入什么é‡ã€ç»æ€Žä¹ˆæ ïLš„处ç†ã€å¾—åˆîC»€ä¹ˆè¾“出,说明¾pÈ»Ÿçš„容é‡?包括¾pÈ»Ÿåº”支æŒçš„¾lˆç«¯æ•°å’Œåº”支æŒçš„òq¶è¡Œæ“作的用æˆäh•°½{‰æŒ‡æ ‡ã€?/p>
3.2 å¯ÒŽ(gu¨©)€§èƒ½çš„è§„å®?/strong>   3.2.1¾_‘Öº¦   3.2.2æ—‰™—´ç‰ÒŽ(gu¨©)€§è¦æ±?br>  说明对于该系¾lŸçš„æ—‰™—´ç‰ÒŽ(gu¨©)€§è¦æ±‚ã€?/p>
  3.2.3ç‰|´»æ€?br>  说明对该¾pÈ»Ÿçš„絋zÀL€§çš„è¦æ±‚åQŒå³å½“需求å‘生æŸäº›å˜åŒ–æ—¶åQŒè¯¥¾pÈ»Ÿå¯¹è¿™äº›å˜åŒ–的适应能力ã€?/p>
3.3è¾“å…¥è¾“å‡ºè¦æ±‚   解释å„输入输出数æ®ç±»åž‹ï¼Œòq‰™€é¡¹è¯´æ˜Žå…¶åª’ä½“ã€æ ¼å¼ã€æ•°å€ÆDŒƒå›´ã€ç²¾åº¦ç‰ã€‚对¾pÈ»Ÿçš„æ•°æ®è¾“出åŠå¿…é¡»æ ‡æ˜Žçš„æŽ§åˆ¶è¾“å‡ºé‡˜q›è¡Œè§£é‡Šòq¶ä‹D例ã€?/p>
3.4æ•°æ®½Ž¡ç†èƒ½åŠ›è¦æ±‚åQˆé’ˆå¯¹èÊYä»¶ç³»¾lŸï¼‰   说明需è¦ç®¡ç†çš„æ–‡å·å’Œè®°å½•的个数ã€è¡¨å’Œæ–‡åïLš„大å°è§„模åQŒè¦æŒ‰å¯é¢„è§çš„增长对数æ®åŠå…¶åˆ†é‡çš„å˜å‚¨è¦æ±‚作å‡ÞZ¼°½Ž—ã€?/p>
3.5故障处ç†è¦æ±‚   列出å¯èƒ½çš„èÊYä»¶ã€ç¡¬ä»¶æ•…障以åŠå¯¹å„é¡¹æ€§èƒ½è€Œè¨€æ‰€äº§ç”Ÿçš„åŽæžœå’Œå¯ÒŽ(gu¨©)•…障处ç†çš„è¦æ±‚ã€?/p>
3.6å…¶ä»–ä¸“é—¨è¦æ±‚   如用户å•ä½å¯¹å®‰å…¨ä¿å¯†çš„è¦æ±‚,对ä‹Éç”¨æ–¹ä¾¿çš„è¦æ±‚åQŒå¯¹å¯ç»´æŠ¤æ€§ã€å¯è¡¥å……æ€§ã€æ˜“è¯ÀL€§ã€å¯é 性ã€è¿è¡ŒçŽ¯å¢ƒå¯è½¬æ¢æ€§çš„ç‰ÒŽ(gu¨©)®Šè¦æ±‚½{‰ã€?/p>
4.1讑֤‡   列出˜q行该èÊY件所需è¦çš„¼‹¬è®¾å¤‡ã€‚说明其ä¸çš„æ–°åž‹è®‘Ö¤‡åŠå…¶ä¸“门功能åQŒåŒ…括: 4.2支æŒè½¯äšg   列出支æŒè½¯äšgåQŒåŒ…括è¦ç”¨åˆ°çš„æ“ä½œç³»¾lŸã€ç¼–译程åºã€æµ‹è¯•支æŒèÊYä»¶ç‰ã€?/p>
4.3æŽ¥å£ ã€€ã€€è¯´æ˜Žè¯¥ç³»¾lŸåŒå…¶ä»–¾pÈ»Ÿä¹‹é—´çš„æŽ¥å£ã€æ•°æ®é€šä¿¡åè®®½{‰ã€?/p>
4.4控制   说明控制该系¾lŸçš„˜q行的方法和控制信å·åQŒåƈ说明˜q™äº›æŽ§åˆ¶ä¿¡å·çš„æ¥æºã€?/p>
1.1¾~–写目的   说明¾~–写˜q™ä†¾æ•°æ®è¦æ±‚说明书的目的åQŒæŒ‡å‡ºé¢„期的读者ã€?/p>
1.2背景   a.å¾…å¼€å‘èÊYä»¶ç³»¾lŸçš„åç§°åQ?br>  b.列出本项目的ä»ÕdŠ¡æå‡ºè€…ã€å¼€å‘者ã€ç”¨æˆ·ä»¥åŠå°†˜q行该项软äšg的计½Ž—站或计½Ž—机¾|‘络¾pÈ»Ÿã€?/p>
1.3定义   列出本文件ä¸ç”¨åˆ°çš„专门术è¯çš„å®šä¹‰å’Œå¤–æ–‡é¦–å—æ¯¾l„è¯çš„原è¯ç»„ã€?/p>
1.4å‚考资æ–?/strong>   列出有关的å‚考资料ã€?/p>
  å¯ÒŽ(gu¨©)•°æ®è¿›è¡Œé€»è¾‘æè¿°æ—¶å¯æŠŠæ•°æ®åˆ†ä¸ºåŠ¨æ€æ•°æ®å’Œé™æ€æ•°æ®ã€?/p>
2.1陿€æ•°æ?/strong>   列出所有作为控制或å‚è€ƒç”¨çš„é™æ€æ•°æ®å…ƒç´ ã€?/p>
2.2动æ€è¾“入数æ?/strong>   列出动æ€è¾“入数æ®å…ƒç´ ã€?/p>
2.3动æ€è¾“出数æ?/strong>   列出动æ€è¾“出数æ®å…ƒç´ ã€?/p>
2.4å†…éƒ¨ç”Ÿæˆæ•°æ®   列出å‘用æˆähˆ–å¼€å‘å•ä½ä¸çš„维护调试äh员æä¾›çš„å†…éƒ¨ç”Ÿæˆæ•°æ®ã€?/p>
2.5数殾U¦å®š   说明å¯ÒŽ(gu¨©)•°æ®è¦æ±‚çš„åˆ¶çº¦ã€‚é€æ¡åˆ—å‡ºå¯¹è¿›ä¸€æ¥æ‰©å……或使用斚w¢çš„考虑而æå‡ºçš„å¯ÒŽ(gu¨©)•°æ®è¦æ±‚çš„é™åˆ¶ã€‚对于在设计和开å‘丼‹®å®šæ˜¯äÍ界性的é™åˆ¶æ›´è¦æ˜Žç¡®æŒ‡å‡ºã€?/p>
3.1è¦æ±‚和范å›?/strong>   按数æ®å…ƒçš„逻辑分组æ¥è¯´æ˜Žæ•°æ®é‡‡é›†çš„è¦æ±‚和范å›ß_¼ŒæŒ‡æ˜Žæ•°æ®çš„采集方法,说明数æ®é‡‡é›†å·¥ä½œçš„æ‰¿æ‹…者是用户˜q˜æ˜¯å¼€å‘者ã€?/p>
3.2输入的承担è€?/strong>   说明预定的对数æ®è¾“入工作的承担者。如果输入数æ®åŒæŸä¸€æŽ¥å£è½¯äšg有关åQŒè¿˜åº”说明该接å£è½¯äšgçš„æ¥æºã€?/p>
3.3é¢„æœŸå¤„ç† ã€€ã€€å¯ÒŽ(gu¨©)•°æ®çš„采集和预处熘q‡ç¨‹æå‡ºä¸“门的规定,包括适åˆåº”ç”¨çš„æ•°æ®æ ¼å¼ã€é¢„定的数æ®é€šä¿¡åª’ä½“å’Œå¯¹è¾“å…¥çš„æ—¶é—´è¦æ±‚ç‰ã€‚对于需¾l模拟è{æ¢æˆ–æ•°å—转æ¢å¤„ç†çš„æ•°æ®é‡åQŒè¦¾l™å‡ºè½¬æ¢æ–ÒŽ(gu¨©)³•å’Œè{æ¢å› åç‰æœ‰å…³ä¿¡æ¯åQŒä»¥ä¾¿èÊYä»¶ç³»¾lŸä‹É用这些数æ®ã€?/p>
3.4å½±å“ ã€€ã€€è¯´æ˜Ž˜q™äº›æ•°æ®è¦æ±‚对于讑֤‡ã€èÊYä»¶ã€ç”¨æˆ—÷€å¼€å‘å•使‰€å¯èƒ½äº§ç”Ÿçš„媄å“ã€?/p>
1.1 ¾~–写目的   [说明¾~–写˜q™ä†¾™å¹ç›®å¼€å‘计划的目的åQŒåƈ指出预期的读者。] 1.2 背景   a. å¾…å¼€å‘èÊYä»¶ç³»¾lŸçš„åç§°åQ?br>  b.本项目的ä»ÕdŠ¡æå‡ºè€…ã€å¼€å‘者ã€ç”¨æˆ·åŠå®žçŽ°è¯¥èÊY件的计算ä¸å¿ƒæˆ–计½Ž—机¾|‘络åQ?br>  c.该èÊYä»¶ç³»¾lŸåŒå…¶ä»–¾pÈ»Ÿæˆ–其他机构的基本的相互æ¥å¾€å…³ç³»ã€?/p>
1.3 定义   [列出本文件ä¸ç”¨åˆ°çš„专门术è¯çš„å®šä¹‰å’Œå¤–æ–‡é¦–å—æ¯¾l„è¯çš„原è¯ç»„。] 1.4 å‚考资æ–?/strong>   [列出用得ç€çš„å‚考资料。]
2.1 工作内容   [½Ž€è¦åœ°è¯´æ˜Žåœ¨æœ¬™å¹ç›®çš„å¼€å‘丙å»è¿›è¡Œçš„å„项主è¦å·¥ä½œã€?] 2.2 主è¦å‚åŠ äººå‘˜   [æ‰ÆD¦åœ°è¯´æ˜Žå‚åŠ æœ¬™å¹ç›®å¼€å‘工作的主è¦äººå‘˜çš„æƒ…况,包括他们的技术水òqŸë€‚] 2.3 äº§å“ ã€€ã€€2.3.1 ½E‹åº   2.3.2.æ–‡äšg   2.3.3.æœåŠ¡   2.3.4.éžç§»äº¤çš„äº§å“ 2.4 éªŒæ”¶æ ‡å‡†   [对于上述˜q™äº›åº”交出的产å“å’ŒæœåŠ¡ï¼Œé€é¡¹è¯´æ˜Žæˆ–å¼•ç”¨èµ„æ–™è¯´æ˜ŽéªŒæ”¶æ ‡å‡†ã€‚] 2.5 [完戙å¹ç›®çš„æœ€˜qŸæœŸé™] 2.6 [本计划的批准者和批准日期]
3.1 工作ä»ÕdŠ¡çš„åˆ†è§£ä¸Žäººå‘˜åˆ†å·¥   [对于™å¹ç›®å¼€å‘ä¸éœ€å®Œæˆçš„å„™å¹å·¥ä½œï¼Œä»Žéœ€æ±‚分æžã€è®¾è®¡ã€å®žçŽ°ã€æµ‹è¯•直到维护,包括文äšg的编制ã€å®¡æ‰V€æ‰“å°ã€åˆ†å‘工作,用户培è®å·¥ä½œåQŒèÊY件安装工作ç‰åQŒæŒ‰å±‚次˜q›è¡Œåˆ†è§£åQŒæŒ‡æ˜Žæ¯™å¹ä“Q务的负责人和å‚åŠ äººå‘˜ã€‚] 3.2 接å£äººå‘˜   [说明负责接å£å·¥ä½œçš„äh员åŠä»–们的èŒè´£ã€‚] 3.3 ˜q›åº¦   [对于需求分æžã€è®¾è®¡ã€ç¼–ç å®žçŽ°ã€æµ‹è¯•ã€ç§»äº¤ã€åŸ¹è®å’Œå®‰è£…½{‰å·¥ä½œï¼Œ¾l™å‡ºæ¯é¡¹å·¥ä½œä»ÕdŠ¡çš„é¢„å®šçš„å¼€å§‹æ—¥æœŸã€å®Œæˆæ—¥æœŸåŠæ‰€éœ€èµ„æºåQŒè§„定儙å¹å·¥ä½œä“Q务完æˆçš„先厙åºåºä»¥åŠè¡¨å¾æ¯é¡¹å·¥ä½œä»ÕdŠ¡å®Œæˆçš„æ ‡å¿—性事件。] 3.4 预算   [é€é¡¹åˆ—出本开å‘项目所需è¦çš„力_Š¡ä»¥åŠ¾l费的预½Ž—å’Œæ¥æºã€‚] 3.5 关键问题   [é€é¡¹åˆ—å‡ºèƒ½å¤Ÿå½±å“æ•´ä¸ª™å¹ç›®æˆèÓ|çš„å…³é”®é—®é¢˜ã€æŠ€æœ¯éš¾ç‚¹å’Œé£Žé™©åQŒæŒ‡å‡ø™¿™äº›é—®é¢˜å¯¹™å¹ç›®çš„媄å“。]
  [è¯´æ˜Žä¸ºæ”¯æŒæœ¬™å¹ç›®çš„开呿‰€éœ€è¦çš„å„ç§æ¡äšg和设施。] 4.1 计算机系¾lŸæ”¯æŒ?/strong>   [é€é¡¹åˆ—出开å‘ä¸å’Œè¿è¡Œæ—¶æ‰€éœ€çš„计½Ž—机¾pÈ»Ÿæ”¯æŒåQŒåŒ…括计½Ž—机ã€å¤–围设备ã€é€šè®¯è®‘Ö¤‡ã€æ¨¡æ‹Ÿå™¨ã€ç¼–译程åºã€æ“作系¾lŸã€æ•°æ®ç®¡ç†ç¨‹åºåŒ…ã€æ•°æ®å˜å‚¨èƒ½åŠ›å’Œ‹¹‹è¯•支æŒèƒ½åŠ›½{‰ï¼Œé€é¡¹¾l™å‡ºæœ‰å…³åˆ°è´§æ—¥æœŸã€ä‹Éç”¨æ—¶é—´çš„è¦æ±‚。] 4.2 需ç”Þq”¨æˆäh‰¿æ‹…的工作   [é€é¡¹åˆ—出需è¦ç”¨æˆäh‰¿æ‹…çš„å·¥ä½œå’Œå®ŒæˆæœŸé™ï¼ŒåŒ…括需ç”Þq”¨æˆäh供的æ¡äšgåŠæä¾›æ—¶é—´ã€‚] 4.3 需由外å•ä½æä¾›çš„æ¡ä»?/strong>   [é€é¡¹åˆ—出需è¦å¤–å•ä½åˆ†åˆåŒæ‰¿åŒ…者承担的工作和完æˆçš„æ—‰™—´ã€‚]
  [说明本项目开å‘ä¸éœ€åˆ¶è®¢çš„å„个专题计划的è¦ç‚¹ã€‚]
1.引言
2åQŽè®¡åˆ?/h3>
  [¾l™å‡ºå¯¹è¿™™åÒŽ(gu¨©)µ‹è¯•çš„˜q›åº¦å®‰æŽ’åQŒåŒ…括进行测试的日期和工作内å®V€‚]
  [陈述本项‹¹‹è¯•工作对资æºçš„è¦æ±‚。包括:]
  a.¼‹¬äšg
  b.软äšg
  c.人员
  列出本项‹¹‹è¯•所需的资料ã€?/p>
ã€€ã€€è¯´æ˜Žæˆ–å¼•ç”¨èµ„æ–™è¯´æ˜ŽäØ“è¢«æµ‹¾pÈ»Ÿçš„ä‹É用æä¾›åŸ¹è®çš„计划。规定培è®çš„内容ã€å—è®çš„人员åŠä»Žäº‹åŸ¹è®çš„工作人员ã€?/p>
  [说明本测试的控制方å¼ã€‚]
  [说明本项‹¹‹è¯•䏿‰€ä½¿ç”¨çš„输入数æ®åŠé€‰æ‹©˜q™äº›è¾“入数æ®çš„ç–略。]
  [说明预期的输出数æ®ã€‚]
  [è¯´æ˜Žå®Œæˆæ¤é¡¹‹¹‹è¯•的一个个æ¥éª¤å’ŒæŽ§åˆ¶å‘½ä»¤ã€‚]
  [。。。。。。]4åQŽè¯„价准åˆ?/h3>
]]>
1.引言
  b.[列出本项目的ä»ÕdŠ¡æå‡ºè€…ã€å¼€å‘者ã€ç”¨æˆ—÷€‚]2åQŽå¤–部设è®?/h3>
3åQŽç»“构设è®?/h3>
4åQŽè¿ç”¨è®¾è®?/h3>
]]>
1åQŽå¼•a€
  b.[列出本项目的ä»ÕdŠ¡æå‡ºè€…ã€å¼€å‘者ã€ç”¨æˆ—÷€‚]2åQŽæ€ÖM½“设计
    2.1.2.1¾_‘Öº¦
    2.1.2.2æ—‰™—´ç‰ÒŽ(gu¨©)€§è¦æ±?br>    2.1.2.4å¯é æ€?br>    2.1.2.5ç‰|´»æ€?/p>
  [列出˜q行该èÊY件所需è¦çš„¼‹¬è®¾å¤‡ã€‚说明其ä¸çš„æ–°åž‹è®‘Ö¤‡åŠå…¶ä¸“门功能。]
  [列出支æŒè½¯äšgåQŒåŒ…括è¦ç”¨åˆ°çš„æ“ä½œç³»¾lŸã€ç¼–译(或汇¾~–)½E‹åºã€æµ‹è¯•支æŒèÊYä»¶ç‰ã€‚]
  [说明该系¾lŸåŒå…¶ä»–¾pÈ»Ÿä¹‹é—´çš„æŽ¥å£ã€æ•°æ®é€šä¿¡åè®®½{‰]
  [说明控制该系¾lŸçš„˜q行的方法和控制信å·åQŒåƈ说明˜q™äº›æŽ§åˆ¶ä¿¡å·çš„æ¥æºã€‚]
   
[¾pÈ»Ÿæ¨¡å—1]
[¾pÈ»Ÿæ¨¡å—2]
[……]
[¾pÈ»Ÿæ¨¡å—m]
[功能需�]
 √ 
   
   
   
[功能需�]
   
 √ 
   
   
[┇]
   
   
   
   
[功能需求n]
   
 √ 
   
 √ 
3åQ޿ޥå£è®¾è®?/h3>
  [说明æä¾›¾l™ç”¨æˆäh“作的¼‹¬äšgæŽ§åˆ¶é¢æ¿çš„定义。]4åQŽè¿è¡Œè®¾è®?/h3>
5åQŽç³»¾lŸæ•°æ®ç»“构设è®?/h3>
   
[½E‹åº1]
[½E‹åº2]
[……]
[½E‹åºm]
[数殾l“æž„1]
 √ 
   
   
   
[数殾l“æž„2]
   
 √ 
   
   
[┇]
   
   
   
   
[数殾l“æž„n]
   
 √ 
   
 √ 
6åQŽç³»¾lŸå‡ºé”™å¤„ç†è®¾è®?/h3>
  a.åŽå¤‡æŠ€æœ?[说明准备采用的åŽå¤‡æŠ€æœ¯ï¼Œå½“原始系¾lŸæ•°æ®ä¸‡ä¸€ä¸¢å¤±æ—¶å¯ç”¨çš„副本的å¾ç«‹å’Œå¯åŠ¨çš„æŠ€æœ¯ï¼Œä¾‹å¦‚å‘¨æœŸæ€§åœ°æŠŠç£ç›˜ä¿¡æ¯è®°å½•到¼‚带上去ž®±æ˜¯å¯¹äºŽ¼‚盘媒体的一¿UåŽå¤‡æŠ€æœ¯ã€‚]
  b.陿•ˆæŠ€æœ?[说明准备采用的åŽå¤‡æŠ€æœ¯ï¼Œä½¿ç”¨å¦ä¸€ä¸ªæ•ˆçއç¨ä½Žçš„¾pÈ»Ÿæˆ–æ–¹æ³•æ¥æ±‚得所需¾l“果的æŸäº›éƒ¨åˆ†ï¼Œä¾‹å¦‚一个自动系¾lŸçš„陿•ˆæŠ€æœ¯å¯ä»¥æ˜¯æ‰‹å·¥æ“作和数æ®çš„人工记录。]
c.æ¢å¤åŠå†å¯åŠ¨æŠ€æœ?[说明ž®†ä‹É用的æ¢å¤å†å¯åŠ¨æŠ€æœ¯ï¼Œä½¿èÊY件从故障ç‚ÒŽ(gu¨©)¢å¤æ‰§è¡Œæˆ–使èÊYä»¶ä»Žå¤´å¼€å§‹é‡æ–°è¿è¡Œçš„æ–ÒŽ(gu¨©)³•。]
]]>
1åQŽå¼•a€
2åQŽç”¨é€?/h3>
3åQŽè¿è¡Œçޝå¢?/h3>
4åQŽä‹É用过½E?/h3>
  [……]
  [……]
  [……]
]]>
1åQŽå¼•a€
  b.本项目的ä»ÕdŠ¡æå‡ºè€…ã€å¼€å‘者ã€ç”¨æˆøP¼›
  c.该系¾lŸåŒå…¶ä»–¾pÈ»Ÿæˆ–其他机构的基本的相互æ¥å¾€å…³ç³»ã€?/p>
2åQŽä“Q务概˜q?/h3>
3åQŽéœ€æ±‚è§„å®?
  说明对该¾pÈ»Ÿçš„输入ã€è¾“出数æ®ç²¾åº¦çš„è¦æ±‚åQŒå¯èƒ½åŒ…æ‹¬ä¼ è¾“è¿‡½E‹ä¸çš„精度ã€?/p>
4åQŽè¿è¡ŒçŽ¯å¢ƒè§„å®?/h3>
  a.处ç†å™¨åž‹å·åŠå†…å˜å®šw‡
  b.外å˜å®šw‡ã€è”机或脱机ã€åª’体åŠå…¶å˜å‚¨æ ¼å¼ï¼Œè®‘Ö¤‡çš„åž‹å·åŠæ•°é‡
  c.输入åŠè¾“凸™®¾å¤‡çš„åž‹å·å’Œæ•°é‡ï¼Œè”机或脱机;
  d.æ•°æ®é€šä¿¡è®‘Ö¤‡çš„åž‹å·å’Œæ•°é‡
  e.功能键åŠå…¶ä»–专用¼‹¬äšg
1åQŽå¼•a€
2åQŽæ•°æ®çš„逻辑æè¿°
3åQŽæ•°æ®çš„采集
1. 引言
2. ™å¹ç›®æ¦‚è¿°
  [列出需¿UÖMº¤¾l™ç”¨æˆïLš„½E‹åºçš„å¿U°ã€æ‰€ç”¨çš„¾~–程è¯è¨€åŠå˜å‚¨ç¨‹åºçš„媒体形å¼åQŒåƈ通过引用有关文äšg。é€é¡¹è¯´æ˜Žå…¶åŠŸèƒ½å’Œèƒ½åŠ›ã€‚]
  [列出需¿UÖMº¤¾l™ç”¨æˆïLš„æ¯ç§æ–‡äšgçš„å¿U°åŠå†…容è¦ç‚¹ã€‚]
  [列出需å‘用æˆäh供的å„项æœåŠ¡ã€?]
  [说明开å‘é›†ä½“åº”å‘æœ¬å•ä½äº¤å‡ºä½†ä¸å¿…å‘用户¿UÖMº¤çš„äñ”å“ã€?]3. 实施计划
4.æ”¯æŒæ¡äšg
5.专题计划è¦ç‚¹
]]>
1.1 ¾~–写目的
  [¾~–写本å¯è¡Œæ€§ç ”½I¶æŠ¥å‘Šçš„目的åQŒæŒ‡å‡ºé¢„期的读者。]
1.2 背景
  a.[æ‰€å»ø™®®å¼€å‘的软äšg¾pÈ»Ÿçš„å¿UŽÍ¼›]
  b.[本项目的ä»ÕdŠ¡æå‡ºè€…ã€å¼€å‘者ã€ç”¨æˆ·åŠå®žçŽ°è¯¥èÊY件的计算站或计算机网¾lœï¼›]
  c.[该èÊYä»¶ç³»¾lŸåŒå…¶ä»–¾pÈ»Ÿæˆ–其他机构的基本的相互æ¥å¾€å…³ç³»ã€‚]
1.3 定义
  [列出本文件ä¸ç”¨åˆ°çš„专门术è¯çš„å®šä¹‰å’Œå¤–æ–‡é¦–å—æ¯¾l„è¯çš„原è¯ç»„。]
1.4 å‚考资æ–?/strong>
  [列出用得ç€çš„å‚考资料。]
  [说明å¯ÒŽ(gu¨©)‰€å»ø™®®å¼€å‘的软äšg的项目进行å¯è¡Œæ€§ç ”½I¶çš„å‰æã€‚]
2.1 è¦æ±‚
  [说明å¯ÒŽ(gu¨©)‰€å»ø™®®å¼€å‘的软äšgçš„åŸºæœ¬è¦æ±‚。]
2.2 ç›®æ ‡
  [è¯´æ˜Žæ‰€å»ø™®®¾pÈ»Ÿçš„主è¦å¼€å‘ç›®æ ‡ã€‚]
2.3 æ¡äšgã€å‡å®šå’Œé™åˆ¶
  [说明对这™å¹å¼€å‘举l™å‡ºçš„æ¡ä»¶ã€å‡å®šå’Œæ‰€å—到期的é™åˆ¶ã€‚]
2.4 ˜q›è¡Œå¯è¡Œæ€§ç ”½I¶çš„æ–ÒŽ(gu¨©)³•
  [说明˜q™é¡¹å¯è¡Œæ€§ç ”½I¶å°†æ˜¯å¦‚何进行的åQŒæ‰€å»ø™®®çš„ç³»¾lŸå°†æ˜¯å¦‚何评ä»ïLš„åQŒæ‘˜è¦è¯´æ˜Žæ‰€ä½¿ç”¨çš„基本方法和½{–略。]
2.5 评äh(hu¨¢n)ž®ºåº¦
  [说明对系¾lŸè¿›è¡Œè¯„ä»äh—¶æ‰€ä½¿ç”¨çš„主è¦å°ºåº¦ã€‚]
  [˜q™é‡Œçš„现有系¾lŸæ˜¯æŒ‡å½“å‰å®žé™…ä‹É用的¾pÈ»ŸåQŒè¿™ä¸ªç³»¾lŸå¯èƒ½æ˜¯è®¡ç®—机系¾lŸï¼Œä¹Ÿå¯èƒ½æ˜¯ä¸€ä¸ªæœºæ¢°ç³»¾lŸç”šè‡Ïx˜¯ä¸€ä¸ªäh工系¾lŸã€‚]
  [分æžçŽ°æœ‰¾pÈ»Ÿçš„目的是ä¸ÞZº†˜q›ä¸€æ¥é˜æ˜Žå¾è®®ä¸çš„开呿–°¾pÈ»Ÿæˆ–修改现有系¾lŸçš„å¿…è¦æ€§ã€‚]
3.1 处熋¹ç¨‹å’Œæ•°æ®æµ½E?/strong>
  [说明现有¾pÈ»Ÿçš„基本的处熋¹ç¨‹å’Œæ•°æ®æµ½E‹ã€‚椋¹ç¨‹å¯ç”¨å›¾è¡¨åÏxµ½E‹å›¾çš„åÅžå¼è¡¨½Cºï¼Œòq¶åŠ ä»¥å™˜q°ã€‚]
3.2 工作负è·
  [列出现有¾pÈ»Ÿæ‰€æ‰¿æ‹…的工作åŠå·¥ä½œé‡ã€‚]
3.3 费用开�/strong>
  [列出ç”׃ºŽ˜q行现有¾pÈ»Ÿæ‰€å¼•è“v的费用开支。]
3.4 人员
  [列出ä¸ÞZº†çŽ°æœ‰¾pÈ»Ÿçš„è¿è¡Œå’Œ¾l´æŠ¤æ‰€éœ€è¦çš„人员的专业技术类别和数é‡ã€‚]
3.5 讑֤‡
  [列出现有¾pÈ»Ÿæ‰€ä½¿ç”¨çš„å„¿U设备。]
3.6 局陿€?/strong>
  [列出本系¾lŸçš„主è¦å±€é™æ€§ã€‚]
4.1 å¯ÒŽ(gu¨©)‰€å»ø™®®¾pÈ»Ÿçš„说æ˜?/strong>
  [æ¦‚æ‹¬åœ°è¯´æ˜Žæ‰€å»ø™®®¾pÈ»ŸåQŒåƈ说明在第2æ¡ä¸åˆ—å‡ºçš„é‚£äº›è¦æ±‚将如何得到满èƒöåQŒè¯´æ˜Žæ‰€ä½¿ç”¨çš„基本方法åŠç†è®ºæ ÒŽ(gu¨©)®ã€‚]
4.2 处熋¹ç¨‹å’Œæ•°æ®æµ½E‹ã€?/strong>
  [¾l™å‡ºæ‰€å»ø™®®¾pÈ»Ÿçš„å¤„ç†æµ½E‹å¼å’Œæ•°æ®æµ½E‹ã€‚]
4.3 改进之处
  [æŒ?.2æ¡ä¸åˆ—å‡ºçš„ç›®æ ‡ï¼Œé€é¡¹è¯´æ˜Žæ‰€å»ø™®®¾pÈ»Ÿç›¸å¯¹äºŽçްå˜ç³»¾lŸå…·æœ‰çš„æ”¹è¿›ã€‚]
4.4 å½±å“
  [说明新æå‡ºçš„讑֤‡è¦æ±‚åŠå¯¹çŽ°å˜¾pÈ»Ÿä¸å°šå¯ä‹É用的讑֤‡™åÖM½œå‡ºçš„修改。]
  4.4.1.对设备的影å“
  [说明新æå‡ºçš„讑֤‡è¦æ±‚åŠå¯¹çŽ°å˜¾pÈ»Ÿä¸å°šå¯ä‹É用的讑֤‡™åÖM½œå‡ºçš„修改]
  4.4.2.对èÊY件的影å“
  [说明ä¸ÞZº†ä½¿çްå˜çš„应用软äšg和支æŒèÊYä»¶èƒ½å¤ŸåŒæ‰€å»ø™®®¾pÈ»Ÿç›”R€‚应åQŒè€Œéœ€è¦å¯¹˜q™äº›è½¯äšg所˜q›è¡Œçš„修改和补充。]
  4.4.3.对用户å•使œºæž„的影å“
  [说明ä¸ÞZº†å»ºç«‹å’Œè¿è¡Œæ‰€å»ø™®®¾pÈ»ŸåQŒå¯¹ç”¨æˆ·å•使œºæž„ã€äh员的数é‡å’ŒæŠ€æœ¯æ°´òq³ç‰æ–šw¢çš„å…¨éƒ¨è¦æ±‚。]
  4.4.4.对系¾lŸè¿è¡Œè¿‡½E‹çš„å½±å“
  [è¯´æ˜Žæ‰€å»ø™®®¾pÈ»Ÿå¯¹è¿è¡Œè¿‡½E‹çš„å½±å“。]
  4.4.5.对开å‘的影å“
  [说明对开å‘的影å“。]
  4.4.6.对地点和设施的媄å“?br>  [说明对徽{‘物攚w€ çš„è¦æ±‚åŠå¯¹çŽ¯å¢ƒè®¾æ–½çš„è¦æ±‚。]
  4.4.7.对ç»è´¹å¼€æ”¯çš„å½±å“
  [æ‰ÆD¦è¯´æ˜Žä¸ÞZº†æ‰€å»ø™®®¾pÈ»Ÿçš„å¼€å‘,¾lŸè®¡å’Œç»´æŒè¿è¡Œè€Œéœ€è¦çš„å„项¾l费开支。]
4.5 技术æ¡ä»¶æ–¹é¢çš„å¯èƒ½æ€?/strong>
  [本节应说明技术æ¡ä»¶æ–¹é¢çš„å¯èƒ½æ€§]
  [æ‰ÆD¦è¯´æ˜Žæ›¾è€ƒè™‘˜q‡çš„æ¯ä¸€¿Uå¯é€‰æ‹©çš„ç³»¾lŸæ–¹æ¡ˆï¼ŒåŒ…括需开å‘的和å¯ä»Žå›½å†…国外直接è´ä¹°çš„åQŒå¦‚果没有供选择的系¾lŸæ–¹æ¡ˆå¯è€ƒè™‘åQŒåˆ™è¯´æ˜Ž˜q™ä¸€ç‚V€‚]
5.1 å¯é€‰æ‹©çš„ç³»¾lŸæ–¹æ¡?
  [说明å¯é€‰æ‹©çš„ç³»¾lŸæ–¹æ¡?åQŒåƈ说明它末被选ä¸çš„ç†ç”±ã€‚]
5.2 å¯é€‰æ‹©çš„ç³»¾lŸæ–¹æ¡?
  [按类ä¼?ã€?æ¡çš„æ–¹å¼è¯´æ˜Ž½W?个乃至第n个å¯é€‰æ‹©çš„ç³»¾lŸæ–¹æ¡ˆã€‚]
  [……]
6.1 支出
  [对于所选择的方案,说明所需的费用,如果已有一个现å˜ç³»¾lŸï¼Œåˆ™åŒ…括该¾pÈ»Ÿ¾l§ç®‹˜q行期间所需的费用。]
  6.1.1 åŸºæœ¬å»ø™®¾æŠ•资
  [包括采è´ã€å¼€å‘和安装所需的费用。]
  6.1.2 其他一‹Æ¡æ€§æ”¯å‡?
  6.1.3 éžä¸€‹Æ¡æ€§æ”¯å‡?br>
  [列出在该¾pÈ»Ÿç”Ÿå‘½æœŸå†…æŒ‰æœˆæˆ–æŒ‰å£æˆ–按年支出的用于è¿è¡Œå’Œ¾l´æŠ¤çš„费用。]
6.2 收益
  [对于所选择的方案,说明能够带æ¥çš„æ”¶ç›Šï¼Œ˜q™é‡Œæ‰€è¯´çš„æ”¶ç›ŠåQŒè¡¨çŽîCؓ开支费用的å‡å°‘或é¿å…ã€å·®é”™çš„å‡å°‘ã€çµ‹zÀL€§çš„å¢žåŠ ã€åŠ¨ä½œé€Ÿåº¦çš„æé«˜å’Œ½Ž¡ç†è®¡åˆ’æ–šw¢çš„æ”¹˜q›ç‰åQŒåŒ…括:
  6.2.1 一‹Æ¡æ€§æ”¶ç›Š]
  [说明能够用ähæ°‘å¸æ•°ç›®è¡¨ç¤ºçš„一‹Æ¡æ€§æ”¶ç›Šï¼Œå¯æŒ‰æ•°æ®å¤„ç†ã€ç”¨æˆ—÷€ç®¡ç†å’Œæ”¯æŒ½{‰é¡¹åˆ†ç±»å™è¿°ã€‚]
  6.2.2 éžä¸€‹Æ¡æ€§æ”¶ç›?br>  [说明在整个系¾lŸç”Ÿå‘½æœŸå†…由于è¿è¡Œæ‰€å»ø™®®¾pÈ»Ÿè€Œå¯¼è‡´çš„æŒ‰æœˆçš„ã€æŒ‰òq´çš„èƒ½ç”¨äººæ°‘å¸æ•°ç›®è¡¨½Cºçš„æ”¶ç›ŠåQŒåŒ…括开支的å‡å°‘å’Œé¿å…。]
6.2.3 ä¸å¯å®šé‡çš„æ”¶ç›?br>  [é€é¡¹åˆ—å‡ºæ— æ³•ç›´ç”¨äººæ°‘å¸è¡¨½Cºçš„æ”¶ç›Šã€‚]
6.3 收益/投资�/strong>
  [求出整个¾pÈ»Ÿç”Ÿå‘½æœŸçš„æ”¶ç›Š/投资比倹{€‚]
6.4 投资回收周期
  [求出收益的ç¯è®¡æ•°å¼€å§‹è¶…˜q‡æ”¯å‡ºçš„累计数的旉™—´ã€‚]
6.5 æ•æ„Ÿæ€§åˆ†æž?/strong>
  [æ˜¯æŒ‡ä¸€äº›å…³é”®æ€§å› ç´ ä¸Ž˜q™äº›ä¸åŒ¾cÕdž‹ä¹‹é—´çš„åˆç†æé…ã€å¤„ç†é€Ÿåº¦è¦æ±‚ã€è®¾å¤‡å’Œè½¯äšg的酾|®ç‰å˜åŒ–æ—Óž¼Œå¯¹å¼€æ”¯å’Œæ”¶ç›Šçš„åª„å“æœ€ç‰|•的范围的估计。]
7.1.[法律斚w¢çš„å¯è¡Œæ€§]
7.2.[使用斚w¢çš„å¯è¡Œæ€§]
  [在进行å¯è¡Œæ€§ç ”½I¶æŠ¥å‘Šçš„¾~–制æ—Óž¼Œå¿…é¡»æœ‰ä¸€ä¸ªç ”½I¶çš„¾l“论]
åœ¨æ•æ¯‚ÊY件开呿–¹æ³•上ä¸ä¸‹¾pÕdˆ—的最åŽä¸€½‹‡æ–‡ç« 里åQŒæˆ‘们将探讨开å‘å°¾l„如何与客户交互åQŒå¦‚何让其å‚与到开å‘过½E‹é‡Œæ¥ã€?/p>
åœ¨ã€Šæ•æ¯‚ÊYä»¶å¼€å‘》上ä¸ä¸‹¾pÕdˆ—的上½‹‡é‡ŒåQŒæˆ‘们了解了开å‘ähå‘˜åšæ³•ä»¥åŠæŠ€æœ¯ä¼˜åŠ¿å¦‚ä½•å¸¦æ¥è´¨é‡çš„æ˜¾è‘—æé«˜ã€‚在ä¸ç¯‡é‡Œï¼Œæˆ‘们探讨了开å‘å°¾l„åšæ³•以åŠå¦‚何å¾ç«‹ä¸€ä¸ªæ•ˆçŽ‡æœ€é«˜çš„å¼€å‘å°¾l„,òq‰™‡ç‚¹ç ”½I¶äº†ä»£ç ¾~–å†™æ ‡å‡†ã€è¿ž¾l集æˆå’Œç”¨äºŽæè¿°¾pÈ»Ÿçš„通用è¯è¨€ã€‚现在,我们è¦çœ‹çœ‹æœ€å¤–é¢çš„圆环——“统一ž®ç»„åšæ³•åQˆone team practiceåQ‰â€ï¼Œ˜q™å…¶ä¸åŒ…括开å‘ähå‘˜ã€æµ‹è¯•ähå‘˜å’Œå®¢æˆ·â€”â€”åÆˆå¸®åŠ©æ›´å¥½åœ°å调业务和ITã€?/p>
å调业务和IT——“统一ž®ç»„â€åšæ³?br />æ•æ·è½¯äšgå¼€å‘里的统一ž®ç»„æŒ‡çš„æ˜¯æ•æ·å¼€å‘å°¾l„和所有的利益相关äºÞZؓ了一个共åŒçš„ç›®æ ‡¾l“æˆä¸€ä¸ªå›¢é˜Ÿå·¥ä½œã€‚å°½½Ž¡å°¾l„里的æ¯ä¸ªæˆå‘˜éƒ½å¿…须把å„自主è¦ç²¾åŠ›æ”¾åœ¨å…·ä½“çš„ä»ÕdŠ¡ä¸Šï¼Œä½†æ˜¯ž®ç»„æ›´å–œ‹Æ¢å¼€æ”„¡š„ã€çœŸè¯šçš„和频¾Jçš„æ²Ÿé€šï¼Œè€Œä¸æ˜¯æš—地里的æ“作ã€?/p>
¾lŸä¸€ž®ç»„å¼ø™°ƒç”±å¼€å‘äh员作出技术决定而由客户作出业务军_®šåQŒä¸€è´¯å¦‚æ¤ï¼Œæ¯«æ— 例外。高度的交æµåQŒä¾‹å¦‚æ¯æ—¥ä¾‹ä¼šä»¥åŠé¡¹ç›®è¾ž®„(在《丽‹‡ã€‹é‡Œè®¨è®º˜q‡ï¼‰ä¼šå¸®åŠ©å¢žåŠ äº¤‹¹åÆˆä¸æ–æŒç®‹ä¸‹åŽ»åQŒä»¥¼‹®ä¿åŠæ—¶è޷得频ç¹çš„å馈信æ¯ã€?/p>
˜q™ä¸€æ¦‚念对于ž®†æ•æ·å¼€å‘çš„æ‰€æœ‰å…ƒç´ é›†ä¸åˆ°ä¸€èµäh˜¯å¿…需的ã€?/p>
创å¾èƒŒæ™¯òq¶å–得需求——第一æ?br />åœ¨ä½ å¼€å§‹æ•æ·å¼€å‘çš„˜q™ä¸€éƒ¨åˆ†ä¹‹å‰åQŒä»Žå®¢æˆ·ã€ä¸šåŠ¡æ–¹å’Œç”¨æˆ·å–得需求信æ¯ï¼›ä»–ä»¬æ‰æ˜¯å®šä¹‰éœ€æ±‚çš„äººã€‚ç”±äºŽä¸šåŠ¡æ–¹åœ¨è¿™äº›åšæ³•䏿‰®æ¼”了至关é‡è¦çš„角色åQŒæ‰€ä»¥ä»–们必™åÕd®Œå…¨ç†è§£è‡ªå·±åœ¨æ•æ·å¼€å‘环境里的角色是什么,以åŠä»–们能够åšåˆ°ä»€ä¹ˆã€‚让光™«˜é€Ÿè¿è½¬è“væ¥è‚¯å®šéœ€è¦è¿›è¡Œè®¨è®ÞZ¼šå’Œå…¶ä»–培è®å·¥ä½œã€?/p>
åœ¨è§£é‡Šæ•æ·å¼€å‘的时候,需è¦å‘ä¸šåŠ¡äººå‘˜é˜æ˜Žçš„é‡è¦ä¼˜åŠ¿æœ‰åQ?/p>
é‡è¦çš„æˆåŠŸå› ç´?/em>
客户åQ业务方介入——第二æ¥
在这一æ¥éª¤é‡Œï¼Œæˆ‘们è¦é€šè¿‡ç”¨æˆ·çš„ç´ æå’ŒéªŒæ”¶‹¹‹è¯•让客户å‚与到开å‘过½E‹é‡Œæ¥ã€‚很多客户å¯èƒ½åœ¨¾~–å†™ç”¨æˆ·ç´ ææˆ–者验收测试上¾l验ä¸å¤šæˆ–者完全没有ç»éªŒï¼›å†å¼ºè°ƒä¸€‹Æ¡ï¼Œå¯èƒ½éœ€è¦æŸ¿Uç¨‹åº¦çš„è®¨è®ºä¼šæˆ–è€…åŸ¹è®æ¥å¸®åŠ©å…¶å®Œæˆä“Q务ã€?/p>
ç”¨æˆ·çš„ç´ æ?/b>
ç”¨æˆ·çš„ç´ æå°±æ˜¯â€œéœ€æ±‚â€ã€‚æ¯ä¸ªç´ æéƒ½ä»£è¡¨¾pÈ»Ÿéœ€è¦å¦‚何解å†ÏxŸä¸ªç‰¹å®šçš„é—®é¢˜ã€‚ç„¶è€Œï¼Œç”¨æˆ·çš„ç´ æä¸æ˜¯å¤§é‡çš„写满需求的文档åQŒè€Œæ˜¯å†™åœ¨ç´ æå¡ä¸ŠåQŒåº”该作为实现更˜q›ä¸€æ¥è°ˆè¯çš„引åã€?/p>
å¥½çš„ç´ æéœ€è¦ä»€ä¹ˆï¼Ÿ
客户åQŒæˆ–è€…æ›´åŠ å¸¸è§çš„客户ž®ç»„åQŒéœ€è¦èšåœ¨ä¸€èµøP¼Œåœ¨ä¸€å¼?x3å¯¸çš„ç´ æå¡ä¸Šä¸ºç³»¾lŸç¼–写用æˆïL´ æã€‚我们用财物½Ž¡ç†è½¯äšgå…¬å¸3Q Solutionsæ¥ä½œä¸ÞZ¾‹å:
“客户希望能够获得一个规则引擎,从而å¯ä»¥ç”¨è§„则æ¥è¯„估顾客的¾l济状æ€ã€‚â€?/p>
˜q™ä¸€è¦æ±‚æˆ–è€…ç´ æå˜åœ¨çš„é—®é¢˜æ˜¯å¤ªä¸æ˜Ž¼‹®ã€‚ç¼–å†™å¥½ç´ æå¡çš„æ£ç¡®è§„åˆ™åº”è¯¥æ˜¯INVESTåQ?/p>
独立çš?/strong>åQ?/strong>IndependentåQ?br />å¯å商的åQ?strong>NegotiableåQ?br />垂直的(VerticalåQ?br />å¯ä¼°è®¡çš„åQ?strong>EstimableåQ?br />çŸå°çš„(SmallåQ?br />坿µ‹è¯•çš„åQ?strong>TestableåQ?/p>
é¢çš„ç´ ææ˜„¡„¶æ˜¯ä¸å¯ä¼°è®¡çš„åQˆå¾ˆéš‘Öˆ¤æ–它需è¦èŠ±å¤šé•¿æ—‰™—´åQ‰ã€ä¸çŸå°çš„(˜q™æ˜¯ä¸€ä¸ªéžå¸¸å·¨å¤§çš„ã€ä¸æ˜Žç¡®çš„è¦æ±‚)åQŒä¹Ÿæ˜¯ä¸å¯æµ‹è¯•çš„åQˆä½ 如何能够对僘q™æ ·çš„è¦æ±‚进行由‹¹‹è¯•驱动的开å‘工作?åQ‰ã€‚所以下é¢è¿™æ ·ä¸€ä¸ªç´ æå¯èƒ½ä¼šæ›´å¥½åQ?/p>
“客户希望能够分æžé¡¾å®¢å½“剿‹¥æœ‰çš„现金é‡â€”—太多ã€å¤ªž®‘,˜q˜æ˜¯åˆšåˆšå¥½ï¼ˆå–决于生‹zÀL–¹å¼çš„æˆæœ¬å’Œå¯¹é£Žé™©çš„æ€åº¦åQ‰ã€‚â€?/p>
˜q™ä¸€ç´ æž®±æ»¡‘³äº†æˆ‘们INVESTæ ‡å‡†çš„æ‰€æœ‰è¦æ±‚。当˜q™ä¸ªç´ æåœ¨å°¾l„ï¼ˆå®¢æˆ·å’Œå¼€å‘æ–¹åQ‰ä¸è®¨è®ºçš„æ—¶å€™ï¼Œå®ƒå¾ˆæ˜Žæ˜¾åœ°å°±ä¼ 达了客æˆïLœŸæ£éœ€è¦çš„æ˜¯å…·å¤‡è¯´æ˜Žè§„则引擎的能力。上é¢çš„例å表明åQŒä¸€æ¡è§„则就‘›_¤Ÿè¯´æ˜Žç”¨æˆ·çš„需è¦ã€‚è¿™ž®±æ˜¯¾~–å†™ç´ æçš„æ–¹æ³•。é‡è¦çš„æ˜¯ï¼Œç´ æè¦å¼•å‘äñ”生对è¯ï¼Œè€Œå¯¹è¯å¸¦æ¥å¯¹å®¢æˆ·éœ€æ±‚的明确和真æ£ç†è§£ã€?/p>
沟�/b>
è¦è®°ä½ï¼Œç´ æçš„ä¸»å¯¼æ€æƒ³æ˜¯ï¼Œå®ƒä»¬æ˜¯å‘生更˜q›ä¸€æ¥å¯¹è¯çš„引åã€‚å…¶åŽŸå› æ˜¯è¯a€è¦ä»¥ä¸Šä¸‹æ–‡å’Œç†è§£ä¸ºåŸº¼‹€ã€‚没有æé—®ï¼Œæ²¡æœ‰å¯¹è¯åQŒæˆ‘ä»¬å°†æ— æ³•ä½“ä¼šå…¶ä¸å¾®å¦™çš„å«ä¹‰ã€‚我们就以Matt Cohn’s Buffalo˜q™ä¸ªçŸè¯ä¸ÞZ¾‹å。BuffaloåQˆå¸ƒæ³•罗市)是美国纽¾U¦å·žçš„一座城市,是野牛(bisonåQ‰çš„åŒä¹‰è¯ï¼Œ˜q˜æœ‰åЍè¯â€œæ¬ºéª—和困惑â€çš„æ„æ€ã€‚æ‰€ä»¥è¿™æ ·ä¸€ä¸ªå¥å“Buffalobuffalobuffalobuffaloâ€æ˜¯æˆç«‹çš„ã€‚æˆ–è€…æ›´åŠ æ˜Ž¼‹®ä¸€ç‚¹å°±æ˜¯æ¥è‡ªï¼ˆ¾U½çº¦å·žï¼‰å¸ƒæ³•¾|—市的野牛欺骗了其他的野牛(bison from Buffalo (NY) intimidate and confuse other buffaloåQ‰ã€‚所以如果没有上下文åQŒè¿™ä¸ªçŸè¯å°±æ˜¯æ¯«æ— æ„义的ã€?/p>
在æ¯å¼ ç´ æå¡çš„背é¢ï¼Œæˆ‘们廸™®®å®¢æˆ·å¿«é€Ÿè®°ä¸‹ä“Q何有关验收测试的æƒÏx³•ã€?/p>
验收‹¹‹è¯•
验收‹¹‹è¯•用æ¥ä¿è¯åQ?/p>
åœ¨æ•æ·å¼€å‘项目里åQŒå®¢æˆ¯‚¦¾~–写所有的验收‹¹‹è¯•。在™å¹ç›®åˆæœŸåQŒå¼€å‘äh员å¯èƒ½éœ€è¦ä¸Žå®¢æˆ·ç´§å¯†åˆä½œåQŒä»¥¾~–写验收‹¹‹è¯•的内å®V€?/p>
我们˜q˜å¾è®®ä½ 使用AT框架òq¶å°†‹¹‹è¯•自动化。开人员人需è¦èƒ½å¤Ÿéšç€ä»–们䏿–åŠ å…¥æ–°åŠŸèƒ½è€Œåå¤åœ°˜q行˜q™äº›‹¹‹è¯•ã€?/p>
下颞®±æ˜¯ä¸Žä¸Š˜q°ç´ æç›¸å…³çš„AT框架的例åã€?/p>
交互‹¹‹è¯•åQˆç¤ºä¾‹ï¼‰
//概述
“分æžé¡¾å®¢çš„现金收支状况åQŒè€ƒå¯Ÿä»–ä»¬åœ¨ç»™å®šçš„ç”Ÿæ´»æ–¹å¼æˆæœ¬å’Œå¯¹é£Žé™©çš„æ€åº¦çš„æ¡ä»¶ä¸‹æ˜¯å¦æ¡æœ‰˜q‡å¤šçš„现金。â€?/p>
//讄¡½®™å‘Ö®¢æ•°æ® |  |  |
UserClicksMainMenu | MenuFinancialObjectives | Â |
UserInputsText | FinancialObjectivesAttitudeToRisk | â€?åQ低回报åQé•¿¾U¿æŠ•资â€?/p> |
UserClicksMainMenu | MenuCurrentBalanceSheet | Â |
UserInputsText | CurrentBalanceSheetTotalCash | 30000 |
UserClicksMainMenu | MenuFinancialObjectives | Â |
UserInputsText | FinancialObjectivesLifestyleCost | 25000 |
//现金规则 |  |  |
TestValueOfText | AnalyseObservation | â€œå¦‚æžœæ‹…å¿ƒé£Žé™©ï¼Œä½ åº”è¯¥ç»´æŒä¸‘…过#12,500的现金结余。â€?/p> |
TestValueOfText | AnalyseRecommendation | “考虑ž®?17,500ä»ŽçŽ°é‡‘å¸æˆ¯‚{¿UÕdˆ°å¯æŠ•资的资äñ”上。â€?/p> |
TestValueOfText | AnalyseDestination | “查询投资本金总é¢åQŒå°†å¤šä½™çš„现金è{¿UÕdˆ°çް金å˜å‚¨å¸æˆ·åQŒé™¤éžç”¨çް金è´ä¹°èµ„äñ”。â€?/p> |
//hyperlink | Â | Â |
UserClicksControl | AnalyseDestination | Â |
TestValueOfLabel | WorkAreaTitle | “本金总é¢â€?/p> |
åœ?Qå…¬å¸åQŒå®¢æˆ·ä¼š¾~–写验收‹¹‹è¯•åQŒåƈ以电(sh¨´)åæ–‡æœ¬çš„形弿¯å¤©æäº¤¾l™å¼€å‘å°¾l„。所有的验收‹¹‹è¯•都会被尽早地æä¾›¾l™å¼€å‘å°¾l„。这一˜q‡ç¨‹ä¸Žæµ‹è¯•ï¼¾~–ç åQ釿•´åó@环é…åˆå¾—相当好,它ä‹Éå¾—å¼€å‘äh员å¯ä»¥åœ¨˜q›è¡ŒéªŒæ”¶‹¹‹è¯•å¤ÞpÓ|之åŽåQŒè¿è¡Œé€šè¿‡‹¹‹è¯•åQç¼–ç ï¼é‡æ•´å¾ªçޝåQŒç„¶åŽé‡æ–°è¿æ–°éªŒæ”¶æµ‹è¯•,直到看到光™€šè¿‡‹¹‹è¯•。æ¯ä¸ªç´ æéƒ½å¯èƒ½å¤šæ¬¡˜q›è¡ŒéªŒæ”¶‹¹‹è¯•åQŒä½†æ˜¯ä¸€æ—¦æ‰€æœ‰çš„验收‹¹‹è¯•éƒ½é€šè¿‡äº†ï¼Œé‚£ä¹ˆè¯¥ç´ æï¼åŠŸèƒ½çš„å®žçŽ°å°±å®Œæˆäº†ã€?/p>
é‡è¦çš„æˆåŠŸå› ç´?/em>
½{–划——第三æ¥
æ•æ·è½¯äšg开呿œ‰ä¸‰ä¸ªå±‚次的ç–划:
˜q™ä¸€ä¸‰çñ”½{–划˜q‡ç¨‹çš„目的是让尾l„首先ç†è§£æœ€¾lˆçš„ç›®æ ‡åQŒä½†æ˜¯åªè¯¦ç»†½{–划他们现在所知的内容——未æ¥ä¸¤å‘¨çš„工作ã€?/p>
å‘布½{–划
在高层次å‘布½{–划阶段åQŒå®¢æˆ·å’Œå¼€å‘äh员应该在一起共åŒè®¨è®ºå’Œç†è§£æ•´ä¸ª¾pÈ»Ÿã€‚通常已ç»å˜åœ¨çš„需求文档能够用于å¯åŠ¨è¿™ä¸€è®¨è®ºã€‚åœ¨ç†æƒ³çŠ¶å†µä¸‹ï¼Œå®¢æˆ·åº”è¯¥åœ¨å¼€ä¼šçš„æ—¶å€™å¸¦ä¸Šå«æœ‰å³ž®†å‘å¸ƒçš„å¤§å¤šæ•°å†…å®¹çš„ç´ æå¡ã€?/p>
在会议过½E‹ä¸åQŒå¼€å‘äh员将需è¦ä¼°è®¡ç´ æçš„隑ֺ¦ã€‚è¿™å¯ä»¥åœ¨ä¼šè®®è¿‡½E‹ä¸æˆ–者在会议之厘q›è¡Œã€‚我们å¾è®®æ¯ä¸ªähç›æ€º’比较å„è‡ªç´ æåQŒåƈ把具有相åŒéš¾åº¦çš„ç´ æé›†ä¸åˆîC¸€èµ—÷€‚ç„¶åŽï¼Œä½¿ç”¨ä¸€ä¸ªä»Žæœ€½Ž€å•到最隄¡š„‹¹‹é‡è¡¨ï¼Œä½ å°±å¯ä»¥å¼€å§‹ä¼°è®¡æ¯ä¸ªç´ æï¼ˆçš„难度了åQ‰ã€‚å°¾l„ä‹É用ä¸åŒçš„æ–ÒŽ(gu¨©)³•æ¥ç»™ç´ æè¯„分åQŒæŒ‰ç…§éš¾åº¦åˆ†åˆ«æ‰“ä¸?åˆ?0分ã€?/p>
现在客户能够½{–划最åˆçš„高层‹Æ¡å‘布计划了。高层次å‘布òq¶ä¸ä¸€å®šè¦å分¾_„¡¡®åQŒä¼˜å…ˆé¡ºåºå’Œä¼°è®¡éƒ½ä¸éœ€è¦å¾ˆå¯é åQŒä½†æ˜¯å®ƒä¼šäØ“ž®ç»„定下方å‘å’Œæä¾›å†³½{–çš„‘›_¤Ÿä¿¡æ¯ã€?/p>
ž®åž‹å‘布
下一æ¥ï¼Œå®¢æˆ·éœ€è¦æ‹¿èµîC¼°è®¡å¥½çš„ç´ æå¡åQŒåƈæ ÒŽ(gu¨©)®æœ€˜q‘一个å‘å¸ƒå°†ç´ æçš„é‡è¦æ€§çš„优先™åºåºæŽ’列好。客户需è¦è€ƒè™‘它们需è¦ç³»¾lŸç«‹å›_®žçŽîC»€ä¹ˆï¼Œå› è€Œè¿™äº›ç´ æå°†æž„æˆå›_°†˜q›è¡Œçš„å‘布。这些估计在˜q™é‡Œå˜å¾—å分é‡è¦åQŒå› 为开å‘äh员已¾l估计的是他们能够给定的å‘布旉™—´é‡Œå®Œæˆä»€ä¹ˆï¼›åQˆè¿™ä¸ªç»™å®šçš„æ—‰™—´åQ‰åœ¨å¤§å¤šæ•°æƒ…况下æ˜?个月ã€?/p>
çŸæœŸå‘布循环å¯ä»¥ä¿è¯ç´§å¯†çš„å馈åó@环,˜q˜èƒ½è®©å°¾l„把¾_‘ÖŠ›æ”‘Öœ¨ä¸Žé¡¹ç›®ç´§å¯†ç›¸å…³çš„é‡è¦ç›®æ ‡ä¸Šã€?/p>
å夽{–划
现在ž®ç»„需è¦äؓ未æ¥ä¸¤å‘¨åˆ¶å®šå…·ä½“的计划。å†å¼ø™°ƒä¸€‹Æ¡ï¼Œå®¢æˆ·å¿…é¡»ž®†ç´ æçš„优先™åºåºæŽ’列出æ¥åQŒè¯¦¾l†è¯´æ˜Žä»–们希望在未æ¥ä¸¤å‘¨é‡Œçœ‹åˆ°çš„功能ã€?/p>
˜q™äº›ç´ æå¡ç„¶åŽå°±è¢«æ”¾åˆîC¸¤å‘¨çš„åå¤åQˆå‘布里åQ‰ã€‚最˜q‘的一‹Æ¡åå¤å°†æ˜¯å°¾l„立匙¿›è¡Œçš„工作。他们将交付˜q™ä¸ªåå¤åQŒä¹Ÿž®±æ˜¯å…¨åŠ›å·¥ä½œã€èÊY件测试和å–å¾—å馈åQˆå³å†æ¬¡ä¸ºæœªæ¥ä¸¤å‘¨ç–划)åQŒç„¶åŽå†‹Æ¡å¼€å§‹ã€‚å¦‚æžœç´ æåœ¨ä¸€ä¸ªåå¤ä¹‹å‰å°±å®Œæˆäº†ï¼Œå¼€å‘ähå‘˜ä¼šè¦æ±‚èŽ·å¾—æ›´å¤šçš„ç´ æã€‚å¦‚æžœæ‰€æœ‰çš„ç´ æéƒ½çœ‹èµäh¥æ˜¯æ— 法完æˆçš„åQŒé‚£ä¹ˆå¼€å‘äh员和客户è¦å…±åŒå°†ç´ æ¿UÕdˆ°ä¸‹ä¸€ä¸ªåå¤é‡Œæˆ–è€…é€‚å½“åœ°åˆ†å‰²ä¸€ä¸‹ç´ æã€?/p>
两周的åå¤è®©å®¢æˆ·å¯ä»¥å……分利用ä»ÖM½•å˜åŒ–。例如,3Q公帼„°åˆ°äº†ä¸€ä¸ªå¾ˆæœ‰é¢„è§èƒ½åŠ›çš„å®¢æˆ·ã€‚ä»–æ„识åˆîC¸€ä¸ªæŒ‰è®¡åˆ’攑֜¨å‘å¸ƒåŽæœŸçš„ç´ æäº‹å®žä¸Šéœ€è¦æ›´æ—©å®Œæˆã€‚在¾l过一个简çŸçš„讨论之åŽåQŒå°¾l„ç”¨å®¢æˆ·è¦æ±‚çš„ç´ ææ›¿æ¢æŽ‰äº†å½“å‰å‘布里å…ähœ‰åŒç‰ä»·å€¼çš„ç´ æã€‚é‚£ä¹ˆæˆæœ¬å‘¢åQŸåªæ˜¯ä¸€ä¸?5分钟的对è¯ã€?/p>
ä»¥ä¸Šåªæ˜¯å¯¹ç–划过½E‹å¦‚何工作的½Ž€è¦æ¦‚˜q°ã€‚我们å¾è®®å¯»æ±‚对该过½E‹è¿™ä¸€éƒ¨åˆ†çš„一些帮助或者指å¯û|¼Œå› äØ“å®ƒå¯èƒ½ä¼šååˆ†å¤æ‚åQŒä»”¾l†è°ƒæ•´å¸¸å¸æ€¹Ÿæ˜¯å¿…需的ã€?/p>
˜q™ä¸€å夘q‡ç¨‹å’Œå‘布ç–åˆ’åˆ†åˆ«è¦æ¯ä¸¤ä¸ªæ˜ŸæœŸå’Œæ¯ä¸‰ä¸ªæœˆ˜q›è¡Œä¸€‹Æ¡ã€?/p>
é‡è¦çš„æˆåŠŸå› ç´?/em>
æ•æ·å¼€å‘里的ç–划å¯èƒ½ä¼šå¾ˆå›°éš¾ï¼Œæ‰€ä»¥æˆ‘们å¾è®®ä½ åŽÕd¯»æ±‚一些帮助,òq¶èŠ±æ—‰™—´æ¥å®Œæˆå®ƒã€?/p>
ä¿æŒé«˜æ•ˆâ€”—第四æ¥
逿¥æŽ¨è¿›˜q™ä¸€˜q‡ç¨‹çš„æœ€ä½Ïx–¹æ³•之一是有一个在现场的客戗÷€‚æœ€ç†æƒ³çš„æ–¹æ³•是让客户å在尾l„æˆå‘˜å½“ä¸ï¼Œ˜q™æ ·ž®±å¯ä»¥éšæ—¶å›ž½{”问题。这é™åˆ¶äº†å¼€å‘ähå‘˜çš„éšæ„猜想。æ¤å¤–,在现场的客户能够以最快的速度回ç”å¼€å‘äh员的疑问ã€?/p>
˜q™åÆˆä¸æ„味瀘q™ä¸ªå®¢æˆ·ä¸åŽ»ä»Žäº‹ä»–çš„â€œæ—¥å¸¸â€å·¥ä½œï¼Œè€Œæ˜¯è¯´ä»–ž®±åœ¨å‘¨å›´å‡†å¤‡å¥½å›ž½{”问题。å³ä½‰Kš”ç€ä¸€å±‚æ¥¼ä¹Ÿä¼šå½±å“æ²Ÿé€šã€‚覘q›è¡Œé¢å¯¹é¢çš„对è¯åQŒè€Œä¸æ˜¯ç”¨ç”?sh¨´)è¯æˆ–者电(sh¨´)å邮件ã€?/p>
昄¡„¶åQŒè®¾¾|®çŽ°åœºå®¢æˆ·åÆˆä¸æ€ÀL˜¯å¯èƒ½çš„,在这¿U情况下åQŒä»–应该ž®½å¯èƒ½åœ°æŽ¥è¿‘ž®ç»„åQŒåƈž®½å¯èƒ½åœ°å‚åŠ æ¯æ—¥ä¾‹ä¼šã€‚如果这也ä¸å¯èƒ½åQŒé‚£ä¹ˆä½ ž®Þp¦è®©ä»–å‚åŠ æ—¥å¸¸ä¼šè®®â€”â€”è‡³ž®‘一周一‹Æ¡â€”—以¼‹®ä¿ä½ åœ¨ä¸æ–地去的å馈æ„è§å’Œæ²Ÿé€šã€?/p>
对åé¦ˆå’Œæ²Ÿé€šçš„å¢žåŠ ä¹Ÿéœ€è¦å®šæœŸè¿›è¡Œå›ž™å¾ã€‚这最好应该在æ¯ä¸ªå夾l“尾的时候进行。这æ ïLš„回顾能够让尾l„有æœÞZ¼šåä¸‹æ¥æ£€æŸ¥ä¸Šä¸€ä¸ªåå¤ï¼Œòq¶å¼„清楚什么åšå¾—好ã€ä»€ä¹ˆåšå¾—ä¸å¥½ï¼Œä»¥åŠä¸‹ä¸€‹Æ¡èƒ½å¤ŸæŠŠä»€ä¹ˆåšå¾—更好。应该问三个问题åQšä»€ä¹ˆæœ‰ç”¨ï¼Ÿä»€ä¹ˆæ²¡æœ‰ç”¨åQŸæˆ‘ä»¬è¦æ”¹è¿›ä»€ä¹ˆï¼Ÿ
é‡è¦çš„æˆåŠŸå› ç´?/em>
æˆ‘ä»¬åˆšåˆšæ›´åŠ ä»”ç»†åœ°æŽ¢è®¨äº†ã€Šä¸Š½‹‡ã€‹é‡Œ½W¬ä¸€ä¸ªå›¾è¡¨çš„外层圆环åQŒå®ƒéœ€è¦æ‰€æœ‰å‚ä¸Žè€…çš„åŒæ„。这å¯èƒ½æ˜¯æ•æ·å¼€å‘里最困难的一部分åQŒä½†æ˜¯å®ƒèƒ½å¤Ÿå¾ˆå¥½åœ°å调业务和ITåQŒè€Œä¸”其好处ä¸ä»…对于业务而且对于IT也是很有价值的ã€?/p>
æ€È»“
ž®½ç®¡åœ¨æœ¬¾pÕdˆ—里我们å‘ä½ è®²è§£äº†å¦‚ä½•ä¸€æ¥æ¥åœ°åŸ¹å…ÀL•毂ÊYä»¶å¼€å‘的能力åQŒä»¥åŠå¦‚ä½•ä»Žå†…åˆ°å¤–æ ‘ç«‹å¼€å‘äh员的信心åQŒç„¶åŽæ˜¯å¼€å‘å°¾l„的信心åQŒæœ€åŽæ˜¯æ•´ä¸ª™å¹ç›®ž®ç»„的信心。从在Exoftwareå…¬å¸çš„ç»éªŒå¯ä»¥çœ‹å‡ºï¼Œå¾ˆå¤šå…¬å¸éƒ½é€‰æ‹©ä¸ºæŸä¸ªé¡¹ç›®å¾ç«‹ä¸€ä¸ªå®Œæ•´çš„æ•æ·å¼€å‘实验尾l„,òq¶è®©ä¸€ä¸ªæŒ‡å¯ÆD€å¸ˆæ‰‹æŠŠæ‰‹åœ°å¸®åŠ©ž®ç»„ã€‚å¦‚æžœä½ é€‰æ‹©˜q™ä¸€æ–ÒŽ(gu¨©)³•åQŒä½ ž®†å…·æœ‰ä»Žæ‰€æœ‰åšæ³•ç›´æŽ¥èŽ·å¾—å¥½å¤„çš„ä¼˜åŠ¿åQŒæ¤å¤–,它将¾l™ä½ é€‚åº”ä½ å…·ä½“çŽ¯å¢ƒçš„æœ‰äh(hu¨¢n)值的信æ¯ã€‚简å•地说有åQ?/p>
å®žéªŒæ€§çš„æ•æ·è½¯äšg开呗—如何开å§?/b>
ä½ çš„ç›®æ ‡æ˜¯ä»€ä¹ˆï¼Ÿ
è¯„ä¼°ä½ çŽ°åœ¨æ‰€å¤„çš„ä½ç½®ä»¥åŠä½ 想è¦åŽ»å“ªé‡ŒåQŒè¿™å¯¹äºŽä½¿ç”¨æ•æ·å¼€å‘åšæ³•æ¥è¯´æ˜¯è‡›_…³é‡è¦çš„。这ž®†å¸®åŠ©ä½ ¼‹®å®šå¸Œæœ›å–å¾—çš„é¢„æœŸæˆæžœã€‚对其的外部评估常常也是很有用的åQŒå› 为它们将为处ç†ä½ 的问题æä¾›ä¸€ä¸ªå®¢è§‚的视角ã€?/p>
å®žéªŒæ€§çš„æ•æ·å¼€å?/i>
虽然我们已ç»å™è¿°äº†å¼€å‘æ•æ·å¼€å‘的一¿Uæ–¹æ³•ï¼Œä½†æ˜¯åœ¨ä¸€ä¸ªé¡¹ç›®ä¸Šå¼•å¯¼å®žçŽ°æ•æ·å¼€å‘是ç†è§£æ•æ·å¼€å‘方法是å¦é€‚ç”¨äºŽä½ çš„æœºæž„çš„æœ€ä½Ïx–¹æ³•ï¼Œå®ƒè¿˜ä¼šå¸®åŠ©ä½ äº†è§£å¦‚ä½•é€‚åº”è‡ªå·±çš„çŽ¯å¢ƒã€?/p>
‹¹‹é‡æ ‡å‡†
如果å¯èƒ½çš„è¯åQŒä½ è¦åœ¨™å¹ç›®å¼€å§‹å‰æˆ–è€…åœ¨å®žçŽ°æ•æ·å¼€å‘åšæ³•之剿”¶é›†ä¸€äº›æµ‹é‡æ ‡å‡†ã€‚å³ä½¿è¿™äº›æ ‡å‡†æ¥è‡ªäºŽå…¶ä»–çš„é¡¹ç›®ï¼Œå®ƒä»¬ä¹Ÿå°†æœ‰åŠ©äºŽäØ“æ•æ·å¼€å‘å·²¾l实现的内容æä¾›ä¸€ä¸ªè‰¯å¥½çš„åŸºå‡†ã€‚ä½ ˜q˜è¦¼‹®ä¿èƒ½å¤Ÿåœ¨æ•æ·å¼€å‘项目过½E‹ä¸ä»¥åŠä¹‹åŽæ”‰™›†åˆîC¸€äº›é«˜æ ‡å‡†çš„æµ‹é‡æ ‡å‡†ã€‚缺é™ïLŽ‡ã€æµ‹è¯•内å®ÒŽ(gu¨©)ˆ–者最¾lˆæœŸé™éƒ½æ˜¯å¾ˆå¥½çš„ä¸”ç®€å•æ˜“è¡Œçš„é«˜æ ‡å‡†æµ‹é‡æ ‡å‡†ã€?/p>
环境
è¦æ˜Žç™½å®žéªŒæ€§çš„æ•æ·å¼€å‘å¯èƒ½è¦æ±‚å¯¹ä½ çš„ç‰©ç†çŽ¯å¢ƒ˜q›è¡Œä¸€äº›æ”¹å˜ã€‚例如,开攄¡š„工作½Iºé—´æ˜¯æ•æ·å¼€å‘真æ£è“væ•ˆçš„å¿…è¦æ¡äšgã€?/p>
å¯ÀL±‚帮助
外部的帮助能够指å¯ég½ çš„å®žéªŒæ€§é¡¹ç›®è¿ˆå‘æˆåŠŸã€‚å®ƒèƒ½å¤Ÿå¸®åŠ©ä½ ç†è§£ä½ 在哪里以åŠä½ 惛_Ž»å“ªé‡ŒåQŒåƈ且能够å‘ä½ æŒ‡æ˜Žå¦‚ä½•è®©æ•æ·å¼€å‘é€‚åº”ä½ çš„çŽ¯å¢ƒåQŒä»Žè€Œåˆ°è¾¾è¿™ä¸€ç›®æ ‡ã€‚æ¤å¤–,外部帮助å¯ä»¥¼‹®ä¿ž®ç»„集举_‘ÖŠ›å›žç”éšæ—¶å‡ºçŽ°çš„é—®é¢˜ã€‚äØ“ž®†æ•æ·å¼€å‘应用到其他工程ž®ç»„é‡Œè€Œæ ‘ç«‹ä¸€ä¸ªä¸šåŠ¡æ¡ˆä¾‹ä¹Ÿæ˜¯å分é‡è¦çš„ã€?/p>
Brian Swanæ˜?a >Exoftware公叿•™æŽˆæ•æ·å¼€å‘的指导è€å¸ˆã€‚ä»–åœ¨æ•æ·å¼€å‘的技术和½Ž¡ç†æ–šw¢å…ähœ‰ç›¸å½“丰富的ç»éªŒï¼Œæ›„¡»å¸¦é¢†å¾ˆå¤šž®ç»„æˆåŠŸåœ°è{æ¢åˆ°äº†æ•æ·å¼€å‘,òq¶ä»¥æ•æ·å¼€å‘çš„æ€æƒ³å’Œå𿳕æ¥åŸ¹è®å¼€å‘äh员和½Ž¡ç†äººå‘˜ã€‚他在Exoftwareå…¬å¸å’Œåœ¨æ•æ·å¼€å‘æ–¹é¢çš„工作使他到过很多公å¸åQŒåƈ对其开å‘å°¾l„äñ”生了æŒç®‹çš„ã€ç§¯æžçš„å½±å“。Brianå…ˆå‰çš„ç»éªŒè¿˜åŒ…括担ä“QNapier大å¦çš„讲师,讲授软äšgå¼€å‘和人机互动。Brianå¯ä»¥é€šè¿‡ç”?sh¨´)åé‚®äšgè”系上ã€?/i>
Â
åœ¨ã€Šæ•æ¯‚ÊYä»¶å¼€å‘》上ä¸ä¸‹¾pÕdˆ—的上½‹‡é‡ŒåQŒæˆ‘们探讨了开å‘ähå‘˜åšæ³•,也回™å¾äº†æŠ€æœ¯ä¼˜åŠ¿å¦‚ä½•å¤§òq…æé«˜èÊYä»¶è´¨é‡ã€‚第一部分把é‡ç‚¹ä¸»è¦æ”¾åœ¨äº†‹¹‹è¯•åQç¼–ç ï¼é‡æ•´å¾ªçŽ¯ä¸Šã€‚çŽ°åœ¨æˆ‘ä»¬è{åˆîC¸é—´ä¸€ä¸ªåœ†çŽ¯ï¼Œçœ‹çœ‹æ•æ·å¼€å‘åšæ³•如何在ž®ç»„˜q™ä¸€å±‚æ¬¡å‘æŒ¥ä½œç”¨ã€?/p>
让尾l„高效工作——尾l„åšæ³?br />一旦æ¯ä¸ªå¼€å‘äh员都在紧密围¾l•ä¸å¿ƒåœ†çŽ¯çš„å馈循环工作æ—Óž¼Œæˆ‘们ž®±å¯ä»¥çœ‹çœ‹æ•´ä¸ªå¼€å‘å°¾l„èƒ½å¤Ÿå¦‚ä½•ä»¥æ›´åŠ æ•æ·çš„æ–¹å¼å·¥ä½œã€‚å°¾l„è¿™ä¸€å±‚æ¬¡çš„åšæ³•æ˜¯æ•æ·å¼€å‘çš„æ ¸å¿ƒåQŒå› 为它们能够显½Cºå‡ºž®ç»„æˆå‘˜å¯ä»¥å¦‚ä½•æ›´åŠ é«˜æ•ˆåœîC¸€èµ·å·¥ä½œåƈ推动共匘q›è¡ŒæŠ€æœ¯å†³½{–ã€‚æˆ‘ä»¬å°†åˆ†åˆ«ä»Žå››ä¸ªæ–¹é¢æ¥è®¨è®ºž®ç»„的这¿U改å˜â€”—设定基调ã€åŸºäºŽå°¾l„çš„ä»£ç ¾~–å†™æ ‡å‡†ã€æé«˜å’Œä¿æŒæ•ˆçއã€é‡‡ç”¨â€œç»Ÿä¸€ž®ç»„â€æ–¹å¼ï¼ˆåŒ…括与开å‘å°¾l„直接相关的东西åQ‰çš„é¦–è¦æ¥éª¤ã€‚æˆ‘ä»¬ç»™ä½ ä‹Dçš„ä¾‹åæ¥è‡ªäºŽ3Q Solutionså…¬å¸åQŒè¿™æ˜¯ä¸€å®¶ç”Ÿäº§èƒ¦ç‰©ç®¡ç†ç³»¾lŸåÆˆå®Œå…¨ä½¿ç”¨æ•æ·å¼€å‘方法的软äšgå…¬å¸ã€?/p>
讑֮šåŸø™°ƒâ€”—第一æ?br />æ•æ·è½¯äšgå¼€å‘的一个ä¸å¿ƒæ€æƒ³æ˜¯å°¾l„æœç€ä¸€ä¸ªå…±åŒçš„ç›®æ ‡å·¥ä½œã€‚å°½½Ž¡å¾ˆå¤šæµ½E‹éƒ½æå€¡å°¾l„å·¥ä½œï¼Œä½†æ˜¯æ•æ·å¼€å‘(真æ£åQ‰èžåˆäº†æ”¯æŒž®ç»„å·¥ä½œçš„åšæ³•,òq¶å°†ž®ç»„工作攑ֈ°äº†æ—¥å¸¸åšæ³•é‡Œã€‚åœ¨å¼€å§‹è®¨è®ºå°¾l„åšæ³•之å‰ï¼Œæˆ‘们需è¦å…ˆä¸ºå°¾l„è®¾å®šä¸€ä¸ªåŸºè°ƒï¼Œè®©ä»–ä»¬å¼€å§‹æ„Ÿè§‰æ›´åƒæ˜¯ä¸€ä¸ªçœŸæ£çš„ž®ç»„ã€?/p>
开攄¡š„工作½Iºé—´
ä¸ºæ›´åŠ å¼€æ”„¡š„ã€åŸºäºŽå°¾l„çš„æ•æ·å¼€å‘æ–¹å¼è®¾å®šåŸºè°ƒçš„一¿U最ä½Ïx–¹æ³•是为尾l„åˆ›é€ ä¸€¿U开攄¡š„工作½Iºé—´åQˆopen workplaceåQ‰ã€‚è¿™æ„味ç€è¦å¾ç«‹ä¸€ä¸ªæˆ–多个开攄¡š„区域åQŒåƈž®½æœ€å¤§å¯èƒ½è¿›è¡Œæ²Ÿé€šå’Œåˆä½œã€‚ä½ æƒŒ™¦ä¸“é—¨äº†è§£ä»€ä¹ˆæ ·çš„çŽ¯å¢ƒèƒ½å¤Ÿè®©é…对¾~–ç¨‹æ›´å®¹æ˜“ã€‚å°æ ¼é—´å’ŒåŠžå…¬å®¤æ˜¯ä¸Žæ•æ·å¼€å‘开攑ַ¥ä½œç©ºé—´æ ¼æ ég¸å…¥çš„åQŒæ‰€ä»¥åº”该é¿å…其出现。在一家与Exoftware有åˆä½œå…³¾pÈš„å…¬å¸é‡Œï¼Œå¼€æ”„¡©ºé—´åŒºåŸŸåªè¢«ç”¨äºŽå·¥ä½œï¼Œé‡Œé¢åªæœ‰ç”¨äºŽé…对¾~–程ã€é›†æˆå’Œæž„å¾è½¯äšg的机器。其它的所有区域都留给带有Internet˜qžæŽ¥å’Œç”µ(sh¨´)è¯çš„个ähè®¡ç®—æœºã€‚å¦‚æžœä½ æœ‰è¿™æ ïLš„½Iºé—´åQŒè¿™ž®±æ˜¯åº”è¯¥è€ƒè™‘çš„ä¸œè¥¿ï¼Œå› äØ“å®ƒæœ‰åŠ©äºŽæ¸…æ¥šåœ°è¡¨æ˜Žâ€œå½“æˆ‘ä»¬åœ¨å·¥ä½œåŒºçš„æ—¶å€™ï¼Œæˆ‘ä»¬åœ¨å·¥ä½œâ€ã€?/p>
ä¸è¦ä½Žä¼°å¼€æ”„¡š„工作½Iºé—´å¯¹äºŽž®ç»„çš„é‡è¦æ€§â€”—这ž®±æ˜¯ä¸ÞZ»€ä¹ˆæˆ‘们将其作为第一æ¥çš„åŽŸå› ã€‚ä¸‹é¢çš„一òq…照片就是是3Q Solutionså¼€å‘å°¾l„的工作½Iºé—´ã€?/p>
è¯äh³¨æ„ï¼Œä¸¤å¼ å¤§æ¡Œåï¼ˆä¸‹é¢æ²¡æœ‰æ–‡äšgæŸœï¼‰è¢«æ‘†åœ¨ä¸€èµøP¼Œæž„æˆäº†æœ€é€‚åˆé…对¾~–程的办公桌ã€?/p>
集体ä¸ÖM¹‰ä¸ÖMh¾˜ç²¾¼œ?/b>
我们惌™¦ä»‹ç»çš„ä¸‹ä¸€ä¸ªæ€æƒ³æ˜¯é›†ä½“主义主人翾_„¡¥žåQˆCollective OwnershipåQ‰ã€‚æ•æïL¼–½E‹çš„˜q™ç§ä¸å¿ƒæ€æƒ³æ˜¯è®©æ¯ä¸€ä¸ªäh都对整个¾pÈ»Ÿè´Ÿè´£åQŒæ¯ä¸€ä¸ªäh都有更改代ç 的自由。这是一¿Ué‡è¦çš„æ€ç»´æ–ÒŽ(gu¨©)³•åQŒå› 为它让尾l„的注æ„力都集ä¸åˆîCº†™å¹ç›®ä¸Šï¼Œä»Žè€Œç¡®ä¿æœ‰ä¸€ä¸ªå…±åŒçš„ç›®æ ‡ã€‚ä¸Žé…对¾~–程相关的其它æ¥éª¤ä¹Ÿå¼ø™°ƒ˜q™ç§æ€æƒ³åQŒä½†æ˜¯å°½æ—©å¼•入这¿Uæ€æƒ³æ˜¯éžå¸¸å¥½çš„ã€?/p>
½Ž€å•设è®?/b>
æ•æ·å¼€å‘å´‡ž®šç®€å•çš„æ¸è¿›è®¾è®¡åQŒè€Œä¸æ˜¯å‰§çƒˆçš„é¢ è¦†å¼è®¾è®¡ã€‚å…¶ç›®æ ‡æ˜¯ï¼ˆé¦–å…ˆåQ‰åªæŒ‡è®¾è®¡æˆ‘们所了解的项目的那些部分åQŒä»…æ¤è€Œå·²åQŒç„¶åŽè®©è¯¥è®¾è®¡éšç€æ—‰™—´çš„æŽ¨¿U»è€Œé€æ¸æ”¹è¿›åQŒè¿™æœ‰åŠ©äºŽæé«˜çµ‹zÀL€§åƈž®†å˜åŒ–å¯¼è‡´çš„æˆæœ¬æœ€ž®åŒ–ã€?/p>
我们ž®×ƒ»Ž3Q Solutionså…¬å¸ä¸¾ä¸€ä¸ªä¾‹å,有一个客戯‚¦æ±‚获得一个规则引擎(rules engineåQ‰ã€‚å°¾l„ä¼ ¾lŸçš„åšæ³•是花上数月时间开å‘规则引擎,然åŽå¯èƒ½˜q˜æ˜¯æ— 法把它å–出厅R€‚在与客户共åŒå商的情况下,ž®ç»„军_®šè®¾è®¡ä¸€ä¸ªæ»¡‘Œ™§„åˆ™å¼•æ“Žå·¥ä½œè¦æ±‚的最½Ž€å•ç³»¾lŸï¼Œòq¶äØ“æ¯ä¸€æ¡è§„则创å»ÞZ¸€ä¸ªç˜¦åž‚ç›´¾pÈ»ŸåQˆa thin vertical systemåQ‰ã€‚è¿™ž®Þq»™äºˆäº†å®¢æˆ·ä»–们真æ£éœ€è¦çš„东西——å¯è¯æ˜Žçš„è§„åˆ™â€”â€”åÆˆ¼‹®ä¿æŠ•资抉|¶ˆäº†æŠ•入的旉™—´ã€‚è¿™æ ·å°¾l„å¯ä»¥åœ¨ä¿æŒç‰|´»æ€§çš„åŒæ—¶ä»Žä¸€å¼€å§‹å°±ä¸æ–改进设计。简å•è®¾è®¡æ˜¯ä¸€ä¸ªå¤æ‚的领域åQŒç ”½I¶å®ƒçš„æœ€ä½Ïx–¹æ³•是获得外部的帮助ã€?/p>
é‡è¦çš„æˆåŠŸå› ç´?/i>
ž®ç»„¾~–写代ç ——第二æ¥
既然我们已ç»å®‰ç½®å¥½äº†å·¥ä½œ½Iºé—´åQŒåƈ讑֮šäº†å°¾l„çš„åŸø™°ƒåQŒæˆ‘们现在就需è¦çœ‹çœ‹å°¾l„是如何处ç†ä»£ç çš„ã€‚æˆ‘ä»¬è¿™é‡Œçš„ç›®æ ‡æ˜¯ç¡®ä¿æ‰€æœ‰é€šè¿‡é…对¾~–程¾~–写的代ç éƒ½èƒ½æ— ¾~地集æˆåœ¨ä¸€èµøP¼Œòq¶ä¸”½W¦åˆž®ç»„æ‰€æ‰¿è®¤çš„æ ‡å‡†ã€‚é€šè¿‡æŽ¨åŠ¨½W¬äºŒæ¥çš„˜q›è¡ŒåQŒæˆ‘ä»¬äØ“æ”¯æŒ½W¬ä¸€æ¥è¿˜æœ‰å¾ˆå¤§ä¸€ŒDµèµ\è¦èµ°ã€?/p>
ä»£ç ¾~–å†™æ ‡å‡†
æ— è®ºä½ æ˜¯å¦å†³å®šé‡‡ç”¨æ•æïL¼–½E‹ï¼Œä»£ç ¾~–å†™æ ‡å‡†åQˆcoding standardåQ‰æ˜¯ä¸€ä¸ªéžå¸¸å¥½çš„æœ€ä½?j¨©ng)_šæ³•ã€‚è¿™ä¸€æ¥éª¤æ¶‰åŠè®©å°¾l„创立一套他们能够完全ç†è§£å’ŒåšæŒä½¿ç”¨çš„代ç ç¼–å†™æ ‡å‡†ã€‚ä»£ç ç¼–å†™æ ‡å‡†ç»™äºˆæˆ‘ä»¬ä¸‹åˆ—ä¼˜åŠ¿ï¼š
大多数尾l„都会利用已有的框架åQŒåÆˆå›´ç»•å…¶æž„å»ø™‡ªå·Þqš„ä¸€å¥—æ ‡å‡†ã€‚è¿™é‡Œçš„å…³é”®è¦ç´ 是开始,立å³è§£å†³ž®ç»„æ£åœ¨å¥‹åŠ›è§£å†³çš„é—®é¢˜ï¼Œç„¶åŽæ ÒŽ(gu¨©)®éœ€è¦å‘剿ލ˜q›ã€‚也ä¸è¦ä¸ÞZº†æ ‡å‡†è€Œå޻弸™¡ŒæŽ¨è¡Œæ ‡å‡†â€”—这毕竟是整个尾l„需è¦å…±åŒè®¤å¯ã€ç›¸ä¿¡å’Œä½¿ç”¨çš„东è¥Ñ€‚䏋颿˜¯3Qå…¬å¸ä»£ç ¾~–å†™æ ‡å‡†æ–‡æ¡£çš„ä¸€ž®æ®µã€?/p>
CamelCase
CamelCase里的一切ã€ç±»åç§°éƒ½ä»¥å¤§å†™å—æ¯å¼€å§‹ï¼Œè€Œæ–¹æ³•å’Œå—æ®µçš„å¿U°åˆ™ä¸éœ€è¦ã€?/p>
ä»ÖM½•内容都ä¸è¦æ”¾åœ¨æœ‰å¤§æ‹¬åïLš„那一行ã€?/p>
å—æ®µä»¥ä¸‹åˆ’线开å¤ß_¼š | _fieldname |
å˜é‡åä¸ä»¥ä¸‹åˆ’线开å¤ß_¼š | variableName |
æ–ÒŽ(gu¨©)³•åQ?/p> | public void methodName(String stringValue) |
Â
接å£å…¬å¼€
公共æ–ÒŽ(gu¨©)³•在类的最上部åQŒåŽé¢è·Ÿæœ‰å—ä¿æŠ¤çš„æ–¹æ³•ï¼Œç„¶åŽæ‰æ˜¯¿U有æ–ÒŽ(gu¨©)³•。将所有ç‘ô承自抽象¾cÀLˆ–者实现结构的æ–ÒŽ(gu¨©)³•都é 剿”¾¾|®ï¼Œ˜q™æ˜¯ä¸€ä¸ªå¥½ä¸ÀL„ã€?/p>
ž®½å¯èƒ½åšåˆ°ç«‹å›_°±èƒ½æ‰¾åˆîC¸€ä¸ªç±»åQŒåƈ马上å¯ä»¥æ„Ÿè§‰åˆ°å…¶åŠŸèƒ½ä»¥åŠå®ƒå¦‚何实现该功能åQŒè€Œä¸éœ€è¦æ»šå±ã€?/p>
æ–ÒŽ(gu¨©)³•和类的å¿U?/strong>
让其å称能够说明其功能。注æ„,ä¸åŒçš„å¼€å‘ähå‘˜å¯¹äºŽä»€ä¹ˆæ ·çš„æ–¹æ³•å¯è¯ÀLœ‰ä¸åŒçš„看法,他们更喜‹Æ¢ä»Žå‘¨å›´çš„ç±»åQŒç”šè‡Ïx˜¯æ–ÒŽ(gu¨©)³•é‡Œçš„å‚æ•°çœ‹å‡ºå…¶ä½œç”¨ã€‚对˜q™ä¸€ç‚¹è¿˜å˜åœ¨äº‰è®®åQŒä½†æ˜¯ä»Žåå—æ¥åˆ¤æ–一个方法的作用是肯定å¯è¡Œçš„åQŒå› æ¤ï¼š
doIForAllX()
ž®×ƒ¸ç†æƒ³åQŒä½†æ˜¯ï¼š
setupAllTableRowItems()
ž®±å¾ˆå¥½ã€?/p>
而:
createRows()
å¯èƒ½æ›´å¥½ã€?/p>
[getVarvscalculateVar, 直接的getterå¯ÒŽ(gu¨©)–¹æ³•]
[ä¸è¦ž®†æŸ¥è¯¢ä¸Žä½œä¸šæ··åœ¨ä¸€èµ·]
æ–ÒŽ(gu¨©)³•的抽è±?/strong>
æ–ÒŽ(gu¨©)³•里的代ç 的抽象程度应该与åŒä¸€ä¸ªæ–¹æ³•里其他所有代ç 的相åŒã€‚è¿™æ ïLš„è¯ï¼Œäº‹äšg的自然过½E‹èƒ½å¤Ÿè¢«å¼„清楚。例如:
public void initializeDataBase()
{
  _connection = createConnection ();
  setUpTable();.
  For (inti=0;i<tableRows;i++)
    SetUpTableRow(i);
}
ä½ ç¨½E一瞥,ä¸ç”¨è´¹ä»€ä¹ˆåŠŸå¤«å°±å¯ä»¥è¯ÀL‡‚它。我们在3Q的时候éžå¸¸ç惜视力,所以把˜q™æ®µä»£ç å˜æˆäº†å‡ 个清晰明了的æ¥éª¤åQŒå°±åƒä¸‹é¢è¿™æ øP¼š
public void initializeDataBase()
{
  setUpConnection();
  setUpTable();
  setUpTableRow();
}
˜q™å°±æœ‰å¯èƒ½ï¼š
1.感觉åˆîCº‹æƒ…进展得怎么æ ?/p>
2.很容易就‹¹è§ˆåˆ°æˆ‘们希望找到的¾cÈš„¼‹®åˆ‡éƒ¨åˆ†åQˆå¦‚æžœæˆ‘ä»¬å¯¹è¡¨æ ¼è¡Œçš„è®„¡½®æ„Ÿå…´‘£ï¼Œæˆ‘们ž®±æŒ‰ä½Ctrl点击setUpTableRow()åQ‰ã€?/p>
得墨忒尔法则åQ?/strong>Law of DemeteråQŒå³æœ€ž®‘知识法则)
¾cÕdº”该åªèƒ½å¤Ÿè®‰K—®é‚£äº›å¯ä»¥ç›´æŽ¥ä»Žå…¶å—段或者å˜é‡è®¿é—®åˆ°çš„æ–¹æ³•。对é€è¿›æ¥çš„对象或者类自行实例化的对象的å‚考也是如æ¤ã€?/p>
一般情况下åQŒä¸è¦è¿™ä¹ˆåšâ€¦â€?/p>
publicintcalculateRetirementFund()
{
return getClient().getRetirementDetails().getRetirementFund();
}
……而覘q™ä¹ˆåšï¼š
public void calculateRetirementFund (RetirementDetails details)
{
return details.getRetirementFund();
}
˜q™æœ‰åŠ©äºŽä¸ºç±»è®‘Ö®šèŒƒå›´òq¶å‡ž®‘ä¸å¿…è¦çš„æ–¹æ³•调用和委派ã€?/p>
™åºåºé€‰æ‹©˜q代
一般å¯ä»¥å°†æ–ÒŽ(gu¨©)³•åˆ†äØ“ä¸‹é¢ä¸‰ç§¾cÕdž‹ã€‚一¾pÕdˆ—事äšgåQŒä¸€ä¸ªæŽ¥ä¸€ä¸ªï¼›å¯šw›†åˆçš„æœçƒ¦æˆ–è¿‡æ»¤ï¼›ä»¥åŠå¯šw›†åˆæˆ–者数¾l„çš„˜q代ã€?/p>
攉™›†æ–ÒŽ(gu¨©)³•ã€å‘é‡åˆ›å»ºã€å‘é‡è®¾¾|®ã€å‘é‡åŠŸèƒ½ï¼ˆvector dosomethingåQ?/strong>
集åˆä¸€‹Æ¡åˆä¸€‹Æ¡åœ°å‡ºçްåQŒæ¯‹Æ¡éƒ½æ˜¯åŒæ ïLš„问题åQŒä¸»è¦åŒ¾cÕdž‹æœ‰å…³ã€‚如果在集åˆé‡Œæœ‰ä¸€ä¸ªä“Qæ„çš„˜q行库强制è{æ¢ï¼ˆcastingåQ‰ï¼Œé‚£ä¹ˆæ€ÀLœ‰å‡ºçŽ°é”™è¯¯¾cÕdž‹çš„æœºä¼šï¼Œå¯ÆD‡´å¼ºåˆ¶è½¬æ¢å¼‚常的出现ã€?/p>
让集åˆå˜æˆå¯ä»¥é’ˆå¯¹å…·ä½“类型,˜q™ä‹É得在¾~–译的时候检查往集åˆé‡ŒåŠ å…¥çš„å†…å®¹æˆäØ“å¯èƒ½åQŒåŒæ—¶è¿˜è®©æ ¹æ®ç±»åž‹æ¥é€‚åº”è‡ªå®šä¹‰çš„é›†åˆæ–ÒŽ(gu¨©)³•å˜å¾—更容易ã€?/p>
ä¸è¦ä½¿ç”¨ä¸´æ—¶å˜é‡â€”â€”ç”¨æŸ¥è¯¢æ¥æ›¿ä»£äÍæ—¶å˜é‡?/strong>
åœ¨æœ‰å…³é‡æ•´çš„书上查找˜q™ä¸ªå†…å®¹â€”â€”â€œç”¨æŸ¥è¯¢æ¥æ›¿ä»£äÍæ—¶å˜é‡â€ï¼Œæœ€å¥½ä¸è¦æŠ±ç€ä¸´æ—¶å˜é‡ä¸æ”¾åQŒå®ƒä¼šå¢žåР代ç çš„å¤æ‚性,¾l™é˜…读者带æ¥å›°éš¾ï¼ŒåŒæ—¶å‡å°‘了对½Ž—法作进一æ¥é‡æ•´çš„å¯èƒ½æ€§ã€?/p>
‹¹‹è¯•æ‰“ç ´å¸¸è§„
˜q‡å¤šçš„设¾|®æ„味ç€ä¸ä½³çš„æ¨¡å¼ã€‚ä½ åº”è¯¥åªéœ€è¦è®¾¾|®é‚£äº›ä¸Žä½ æ£åœ¨æµ‹è¯•çš„¾cÈ›´æŽ¥ç›¸å…³çš„对象ã€?/p>
ž®½é‡è®©å•元测试精¾l†åŒ–åQŒè¿™ž®†å¸¦æ¥å¯¿UÀL¤æ€§æ›´å¼ºçš„代ç åQŒåƈž®†å®ƒæŽ¨å‘æ›´åŠ æ¸…æ™°ã€æ›´åŠ ç‹¬ç«‹çš„å®žçŽ°ã€?/p>
通过回调刉™’ˆ‹¹‹è¯•
回调刉™’ˆåQˆbackpointeråQ‰å®Œå…¨å°±æ˜¯ä¸ªéºÈƒ¦äº‹ï¼Œåº”该é¿å…其出现。它会带æ¥ç›¸å½“å¤šçš„å¼‚å¸¸ï¼ŒçŠ¶æ€æ¨¡å¼å°±æ˜¯å…¶ä¸ä¸€ä¸ªã€‚一定è¦äº†è§£è‡ªå·±å®žçŽ°å›žè°ƒæŒ‡é’ˆçš„ç†ç”±ã€‚如果ç†ç”±æ˜¯â€œå®ƒä¼šè“v作用â€ï¼Œé‚£ä¹ˆä½ 就在失åŽÖM»€ä¹ˆä¸œè¥Ñ€?/p>
视图‹¹‹è¯•——将‹¹‹è¯•三è¦ç´ 实例化
åœ¨ä¸€ä¸ªæž„é€ å®Œå¥½çš„åº”ç”¨½E‹åºé‡Œï¼Œè§†å›¾å±‚应该从域抽象出æ¥ï¼Œè¾‘Öˆ°ä¸€¿Uä¸éœ€è¦åˆ›å»ø™§†å›‘Ö°±èƒ½å¤Ÿ‹¹‹è¯•该应用程åºçš„½E‹åº¦ã€‚ä¸å¤Ÿç²¾¾l†çš„‹¹‹è¯•éœ€è¦æ›´åŠ ç»å¸¸åœ°æ›´æ”¹ã€‚è§ä¸Šæ–‡‹¹‹è¯•æ‰“ç ´å¸¸è§„ã€?/p>
˜q™åªæ˜¯æ¥è‡ªä¸€ä¸ªä¸æ–改˜q›çš„ž®ä¾‹åã€‚æˆ‘å†æé†’ä¸€é,从简å•çš„å¼€å§‹ï¼Œä¿æŒå…¶åŸºæœ¬æ¡†æžÓž¼Œå¾—到所有ähçš„åŒæ„ã€?/p>
Â
˜qžç®‹é›†æˆ
ç€‘å¸ƒå¼æ–¹æ³•的一个缺é™äh˜¯ä»£ç 库的集æˆå¾€å¾€æ¯é𔿕°å‘¨æˆ–者数月之久托q›è¡Œä¸€‹Æ¡ã€‚æ–°çš„é”™è¯¯å¸¸å¸æ€¼šéšç€ä»£ç 的集æˆè€Œä¸æ–暴露出æ¥ï¼Œæˆ‘们ä¸å¾—ä¸èбé¢å¤–çš„æ—¶é—´æ¥æ›´æ£é”™è¯¯òq‰™‡æ–°é›†æˆã€‚如果集æˆä¸æ˜¯é¢‘¾J进行,那么å馈ž®×ƒ¸å¯èƒ½åƒåº”è¯¥çš„é‚£ä¹ˆç´§å¯†ã€‚æ•æ·å¼€å‘è¦æ±‚è¿›è¡Œæ›´åŠ é¢‘¾J的集æˆâ€”—在3Q的案例里åQŒè¿™æ„å‘³ç€æ¯å¤©è¦é›†æˆä¸€åˆîC¸¤‹Æ¡ã€?/p>
大多数尾l„ä¸€èˆ¬éƒ½ä¼šæœ‰ä¸€å°æž„廸™®¡½Ž—机åQŒæˆå¯¹çš„å¼€å‘äh员能够利用其‹‚€æŸ¥åœ¨‹¹‹è¯•åQç¼–ç ï¼é‡æ•´å¾ªçŽ¯é‡Œç¼–å†™å¥½çš„ä»£ç 。æ¯å¯¹å¼€å‘äh员都有确信其代ç 在被集æˆåˆîC»£ç 库之剞®±å·²¾l绘q‡æµ‹è¯•å’Œé‡æ•´ã€‚一旦检验完毕,自动化的构å¾è®¡ç®—机就会编译所有的代ç åQŒè¿è¡Œæ‰€æœ‰çš„‹¹‹è¯•åQŒåƈ通过昄¡¤ºå™¨ï¼ˆå‘å°¾l„)昄¡¤ºå‡ºæ¥â€”â€”æž„å»ø™¿‡½E‹æ˜¯å¦éœ€è¦å¼•èµäh³¨æ„â€”â€”ä¾‹å¦‚ï¼šæ–°åŠ å…¥çš„ä»£ç æœ‰æ²¡æœ‰ç ´å什么东西?
˜q™ä¼šåšä¸¤ä»¶äº‹æƒ…:
åƒè¿™æ ·é¢‘¾Jçš„é›†æˆæ„味ç€è½¯äšg的构建是ä¸åœ˜q›è¡Œçš„,ä»ÖM½•人在ä»ÖM½•时候都å¯ä»¥å‚与构徘q‡ç¨‹ã€‚æž„å»ø™¿‡½E‹éœ€è¦è¢«è‡ªåŠ¨åŒ–ï¼Œä»¥ä¾¿ä½‰K›†æˆå°½å¯èƒ½åœ°å®¹æ˜“,˜q™æ˜¯å分é‡è¦çš„。下é¢å°±æ˜?Qå…¬å¸çš„æž„建监视器的呞®ç»„ä¼ è¾¾ä¿¡æ¯çš„一个例åã€?/p>
ž®±å¦‚上é¢å›„¡”»æ‰€æ˜„¡¤ºçš„ï¼Œæž„å¾æœåŠ¡å™¨èƒ½å¤Ÿå‘ž®ç»„æä¾›é¢å¤–的信æ¯ã€?
é‡è¦çš„æˆåŠŸå› ç´?/i>
ä¿æŒé«˜æ•ˆçŽ‡â€”â€”ç¬¬ä¸‰æ¥
ž®±å¦‚我们在《上½‹‡ã€‹é‡Œè¯´çš„åQŒæ•æ·å¼€å‘过½E‹æ˜¯ä¸€™å¹å·¥ä½œå¼ºåº¦å¾ˆå¤§çš„¾~–程方å¼ã€‚除æ¤ä¹‹å¤–,软äšg开呿œ¬íw«å°±åŽ‹åŠ›é‡é‡åQŒè€Œå°¾l„ç¯åž®çš„å¯èƒ½æ€§éžå¸”R«˜ã€?/p>
坿Œ¾lçš„æ¥ä¼æ„味ç€å¼€å‘å°¾l„现在和未æ¥çš„工作都ž®†éžå¸¸è‰°è‹¦ã€‚åŠ ç䏿˜¯æˆ‘们希望鼓åŠÞqš„事情åQŒå°½½Ž¡æœ‰çš„æ—¶å€™éœ€è¦å¦‚æ¤ã€‚如果尾l„ä¸å¾—ä¸åŠ ç工作åQŒé‚£ä¹ˆæˆ‘们想è¦å°è¯•将坿Œ¾læ¥ä¼é‡Œçš„åŠ çæ—¶é—´æŽ§åˆ¶åœ¨ä¸€åˆîC¸¤å‘¨è€Œä¸æ˜¯ä¸€åˆîC¸¤ä¸ªæœˆã€‚å†å¼ø™°ƒä¸€éï¼Œæ•æ·å¼€å‘是一™å¹å¼ºåº¦å¾ˆå¤§çš„工作åQ›é…对编½E‹è¦æ±‚很多交互和é‡è§†åQŒæµ‹è¯•ï¼¾~–ç åQ釿•´åó@环也是如æ¤ã€‚å°½½Ž¡æ•æ·å¼€å‘ä¼šå¼•å‘æˆ‘们ž®ç»„çš„æœ€å¤§æ½œèƒ½ï¼Œä½†æ˜¯æˆ‘ä»¬éœ€è¦æ¸…楚很多时候的大é‡åŠ ç会ç¯åž®æ•´ä¸ªå°¾l„的风险ã€?/p>
é‡è¦çš„æˆåŠŸå› ç´?/i>
˜q™æ˜¯½Ž¡ç†è€…å¿…™åÕd分清楚的一个领域。确ä¿å°¾l„在整个™å¹ç›®é‡Œä¿æŒåˆç†çš„æ¥ä¼æ˜¯å…¶ä¸»è¦èŒè´£ã€?/p>
开始è{¿UÕdˆ°¾lŸä¸€ž®ç»„——第四æ¥
有的人å¯èƒ½è®¤ä¸ºMetaphor的概念应该æ¥å¾—æ›´æ—©ä¸€äº›ï¼Œä½†æ˜¯æˆ‘ä»¬å»ø™®®åœ¨è¿™ä¸€é˜¶æ®µå¿«ç»“æŸçš„æ—¶å€™æ‰å¼•å…¥å®ƒï¼Œå› äØ“˜q™æ˜¯æˆ‘们首次æåˆ°å®¢æˆ·åQ业务方åQˆcustomeråQbusinessåQ‰ã€‚Metaphor是客户与开å‘äh员之间系¾lŸçš„通用è¯è¨€ã€‚它看è“væ¥å¯èƒ½ä¸é‡è¦åQŒä½†æ˜¯ä»¥Exoftwareçš„æ”¿åºœé¡¾å®¢äØ“ä¾‹ï¼Œå¼€å‘å°¾l„一般都把业务方åQˆä¹Ÿž®±æ˜¯å®šä¹‰¾pÈ»Ÿéœ€æ±‚的人)当作客户。但是对于业务方而言åQŒâ€œå®¢æˆ·â€æŒ‡çš„æ˜¯æœ€¾lˆç”¨æˆ—÷€‚è¿™ž®±å¯¼è‡´å¼€å‘äh员和“业务方â€ä¹‹é—´çš„困惑和挫折ã€?/p>
Metaphor的作用ä¸åªæ˜¯ä¸€é—¨é€šç”¨è¯è¨€â€”—它˜q˜ä¸Žä¸Šä¸‹æ–‡å’Œå¯¹ç³»¾lŸæ˜¯ä»€ä¹ˆçš„高层‹Æ¡ç†è§£æœ‰å…Ÿë€‚在˜q™é‡Œæˆ‘ä»¬èƒ½å¤Ÿé‡‡å–æ¥éª¤åšåˆ°çœŸæ£åœîC¸Žæˆ‘们的业务åˆä½œä¼™ä¼´æ²Ÿé€šåƈå…׃ínå…±åŒçš„ç›®æ ‡ã€?Qå…¬å¸ä½¿ç”¨ä¸€¿Uå«åšAdaptor Tree Hierarchy体系åQŒå®ƒé€šè¿‡ä¸€é—¨å®¢æˆøP¼ä¸šåŠ¡æ–¹å…±åŒè®¤å¯çš„è¯è¨€¾l™äºˆå¼€å‘äh员一个广阔的¾pÈ»Ÿè§†é‡Žã€‚例如:
ThreeQData
˜q™ä¸ªæ ‘åÅž¾l“构的æ¯ä¸€éƒ¨åˆ†éƒ½å¯ä»¥æ‰©å±•出更多¾l†èŠ‚åQŒèƒ½å¤Ÿè½»æ˜“地改å˜åQŒåƈæä¾›ä¸€ä¸ªå¾ˆå¥½çš„¾pÈ»Ÿè§†è§’åQŒåŒä¸ºæ•´ä¸ªå°¾l„æä¾›ä¸€é—¨é€šç”¨çš„è¯a€ã€?/p>
Â
é‡è¦çš„æˆåŠŸå› ç´?/i>
æ•æ·å¼€å‘çš„ž®ç»„åšæ³•的目的是帮助ž®ç»„把é‡ç‚ÒŽ(gu¨©)”¾åœ¨é›†ä½“工作上åQŒåƈç†è§£å…¶å…±æœ‰çš„åšæ³•å’Œç›®æ ‡ã€‚å°½½Ž¡æœ‰çš„åšæ³•ï¼Œæ¯”å¦‚ä»£ç ¾~–å†™æ ‡å‡†åQŒèƒ½å¤Ÿåœ¨éš”离的情况下完æˆåQŒä½†æ˜¯å¦‚果与具体的开å‘ähå‘˜åšæ³•,例如‹¹‹è¯•åQç¼–ç ï¼é‡æ•´å’Œé…对编½E‹ç»“åˆè“væ¥ï¼Œé‚£ä¹ˆ˜q™äº›ž®ç»„åšæ³•ž®†å‘挥最大效用ã€?/p>
本系列的最åŽä¸€éƒ¨åˆ†ž®†æŽ¢è®¨å¼€å‘äh员尾l„如何开始åŒå®¢æˆ·æ–¹ï¼ä¸šåŠ¡æž„æˆâ€œç»Ÿä¸€ž®ç»„â€ã€?/p>
Â
Brian Swanæ˜?a >Exoftware公叿•™æŽˆæ•æ·å¼€å‘的指导è€å¸ˆã€‚ä»–åœ¨æ•æ·å¼€å‘的技术和½Ž¡ç†æ–šw¢å…ähœ‰ç›¸å½“丰富的ç»éªŒï¼Œæ›„¡»å¸¦é¢†å¾ˆå¤šž®ç»„æˆåŠŸåœ°è{æ¢åˆ°äº†æ•æ·å¼€å‘,òq¶ä»¥æ•æ·å¼€å‘çš„æ€æƒ³å’Œå𿳕æ¥åŸ¹è®å¼€å‘äh员和½Ž¡ç†äººå‘˜ã€‚他在Exoftwareå…¬å¸å’Œåœ¨æ•æ·å¼€å‘æ–¹é¢çš„工作使他到过很多公å¸åQŒåƈ对其开å‘å°¾l„äñ”生了æŒç®‹çš„ã€ç§¯æžçš„å½±å“。Brianå…ˆå‰çš„ç»éªŒè¿˜åŒ…括担ä“QNapier大å¦çš„讲师,讲授软äšgå¼€å‘和人机互动。Brianå¯ä»¥é€šè¿‡ç”?sh¨´)åé‚®äšgè”系上ã€?/i>
ä½œäØ“ä¸‰ç¯‡¾pÕdˆ—æ–‡ç« çš„ç¬¬ä¸€½‹‡ï¼Œæˆ‘们ž®†å¸¦ä½ äº†è§£æ•æ¯‚ÊYä»¶å¼€å‘çš„é‡è¦åšæ³•â€”â€”å¦‚ä½•ä‹É用它们ã€ä½ å¯èƒ½ä¼šç¢°åˆîC»€ä¹ˆæ ·çš„问题,以åŠä½ 将从它们那里获得什么ã€?/p>
æ•æ·è½¯äšgå¼€å‘䏿˜¯ä¸€ä¸ªå…·ä½“çš„˜q‡ç¨‹åQŒè€Œæ˜¯ä¸€ä¸ªæ¶µç›–性术è¯ï¼ˆumbrella termåQ‰ï¼Œç”¨äºŽæ¦‚括å…ähœ‰¾cÖM¼¼åŸºç¡€çš„æ–¹å¼å’Œæ–ÒŽ(gu¨©)³•。这些方法,其ä¸åŒ…括æžé™¾~–程åQˆExtreme ProgrammingåQ‰ã€åЍæ€ç³»¾lŸå¼€å‘方法(Dynamic System Development MethodåQ‰ã€SCRUMã€Crystalå’ŒLean½{‰ï¼Œéƒ½ç€çœégºŽå¿«é€Ÿäº¤ä»˜é«˜è´¨é‡çš„工作èÊYä»Óž¼Œòq¶åšåˆ°å®¢æˆäh»¡æ„ã€?/p>
ž®½ç®¡æž„战q™ä¸ªæ•æ·å¼€å‘过½E‹çš„æ¯ç§æ–ÒŽ(gu¨©)³•éƒ½å…·æœ‰ç±»ä¼¼çš„ç›®æ ‡åQŒä½†æ˜¯å®ƒä»¬å®žçŽ°è¿™ä¸ªç›®æ ‡çš„åšæ³•åQˆpracticeåQ‰å´ä¸å°½ç›¸åŒã€‚æˆ‘ä»¬æŠŠåœ¨è‡ªå·±å®Œæˆæ‰€æœ‰è¿‡½E‹ä¸¾l历˜q‡çš„æœ€ä½?j¨©ng)_𿳕集ä¸åˆ°äº†æœ¬¾pÕdˆ—çš„æ–‡ç« é‡Œã€?/p>
下é¢çš„图表基本勾ç”Õd‡ºäº†æˆ‘们æç‚¼å‡ºæ¥çš„˜q™äº›æ•æ·å¼€å‘最ä½?j¨©ng)_šæ³•ã€‚æœ€ä¸é—´çš„圆环代表一对程åºå‘˜æ—¥å¸¸å·¥ä½œçš„åšæ³•。紧接ç€çš„ä¸é—´ä¸€ä¸ªåœ†çŽ¯è¡¨½Cºå¼€å‘äh员尾l„ä‹Éç”¨çš„åšæ³•。最外é¢çš„一个圆环是™å¹ç›®æ‰€æ¶‰åŠçš„æ‰€æœ‰ähçš„åšæ³•——客戗÷€å¼€å‘ähå‘˜ã€æµ‹è¯•äh员ã€ä¸šåŠ¡åˆ†æžå¸ˆ½{‰ç‰ã€?/p>
˜q™äº›åœ†çŽ¯é‡Œçš„æ‰€æœ‰åšæ³•都直接与四个角上显½Cºçš„æ•æ·å¼€å‘çš„æ ¸å¿ƒä»·å€¼ç›¸å…»I¼šæ²Ÿé€šï¼ˆCommunicationåQ‰ã€å馈(FeedbackåQ‰ã€å‹‡æ°”(CourageåQ‰å’Œ½Ž€å•(SimplicityåQ‰ã€‚也ž®±æ˜¯è¯ß_¼Œæ¯ä¸ªåšæ³•éƒ½ç»™äºˆæˆ‘ä»¬ä¸€æ¡å®žçŽ°æ•æ·å¼€å‘äh(hu¨¢n)å€¼åÆˆè®©å®ƒä»¬æˆä¸ø™¯¥˜q‡ç¨‹ä¸€éƒ¨åˆ†çš„具体方法ã€?/p>
Â
åœ¨ç†æƒ³çж况䏋åQŒå¦‚æžœå†³å®šé‡‡ç”¨æ•æ¯‚ÊYä»¶å¼€å‘çš„æ–ÒŽ(gu¨©)³•åQŒä½ ž®±åº”该在一个绘q‡ç®¡ç†å±‚许å¯çš„æ•æ·å¼€å‘实验项目里ž®è¯•æ‰€æœ‰çš„ä½œæ³•ã€‚è¿™æ˜¯æŽŒæ¡æ•æ·å¼€å‘的最好方法之一åQŒå› 䏸™¿™æ ¯‚ƒ½ä¿è¯å¾—到支æŒåQŒäØ“ä½ çš„åŠªåŠ›æä¾›æ›´å¤šçš„å›žæŠ¥ï¼Œå¸®åŠ©æ•æ‰å¦ä¹ 到的东西åQŒè¿™æ ·ä½ æ‰èƒ½è®©æ•æ·å¼€å‘过½E‹æ¥é€‚åº”ä½ ç‹¬ç‰¹çš„çŽ¯å¢ƒã€?/p>
然而,˜q™åÆˆä¸æ€ÀL˜¯å¯è¡Œçš„ï¼Œæ‰€ä»¥æœ‰çš„æ—¶å€™æœ€å¥½é‡‡ç”¨æ¥æ¥äØ“è¥çš„æ–ÒŽ(gu¨©)³•。在˜q™ç§æƒ…å†µä¸‹ï¼Œæˆ‘ä»¬å»ø™®®ä»Žæœ€é‡Œé¢çš„圆环å‘外é¢çš„圆环推˜q›ã€‚也ž®±æ˜¯ä»Žå¼€å‘ähå‘˜å®žè·µå¼€å§‹ï¼Œç„¶åŽæ˜¯å°¾l„è¿™ä¸€å±‚æ¬¡çš„åšæ³•,最åŽå†èžå…¥â€œç»Ÿä¸€ž®ç»„åQˆone teamåQ‰â€çš„æ¦‚念ã€?/p>
为技术优势设个é™â€”—开å‘ähå‘˜åšæ³?br />æŠ€æœ¯ä¼˜åŠ¿æ˜¯æ•æ·å¼€å‘过½E‹çš„æ ¸å¿ƒã€‚äØ“äº†è®©å…¶ä»–çš„åšæ³•真æ£ç”Ÿæ•ˆï¼Œæˆ‘们必须在开å‘äh员丘q›è¡ŒæŠ€æœ¯ä¼˜åŠ¿çš„åŸ¹è®ã€‚从表é¢ä¸Šçœ‹åQŒæŠ€æœ¯ä¼˜åŠ¿å¯èƒ½çœ‹èµäh¥òq¶ä¸æ˜¯æ ¸å¿ƒä¼˜å…ˆå¯¹è±¡ï¼Œä½†æ˜¯å¦‚果把我们注æ„力都放在上é¢ï¼Œå®ƒå°†¼‹®ä¿æˆ‘们¾~–写å‡ÞZ¸åŒå¯»å¸¸çš„优秀代ç 。这å过æ¥åŒæ ·ä¼š¾l™äºˆå…¬å¸ã€å®¢æˆøP¼Œä»¥åŠç”¨æˆ·å¯¹èÊYä»¶å’Œå¯ÒŽ(gu¨©)ˆ‘们交付能力的信心ã€?/p>
å¼€å‘ähå‘˜åšæ³•(developer practiceåQ‰æ˜¯æˆ‘们推动技术优势的切实å¯è¡Œçš„æ–¹æ³•。å³ä½¿æ˜¯ç‹¬ç«‹å®ŒæˆåQŒè€Œæ²¡æœ‰å…¶ä»–æ•æ·å¼€å‘åšæ³•的介入åQŒå¼€å‘ähå‘˜åšæ³•也能够¾l™ä½ çš„èÊY件带æ¥å·¨å¤§çš„æ”¶ç›Šã€?/p>
å¼€å‘ähå‘˜åšæ³•å¯ä»¥è¢«åˆ†è§£ä¸ºå››ä¸ªåšæ³•ï¼ˆå¦‚æžœä½ æŠŠå®žé™…çš„ç¼–å†™ä»£ç çš„˜q‡ç¨‹åŠ ä¸ŠåŽÕd°±æ˜¯äº”ä¸ªåšæ³•)。它们分别是‹¹‹è¯•åQç¼–ç ï¼é‡æ•´å¾ªçޝåQˆTest-Code-Refactor cycleåQ‰ã€é…对编½E‹ï¼ˆPair ProgrammingåQ‰å’Œ½Ž€å•设计(Simple DesignåQ‰ç‰ã€?/p>
‹¹‹è¯•åQç¼–ç ï¼é‡æ•´åQˆTCRåQ‰åó@环——第一æ?br />由测试驱动的开å‘å’Œé‡æ•´å¸¸å¸¸è¢«å½“作是å„è‡ªç‹¬ç«‹åšæ³•åQŒä½†æ˜¯å®ƒä»¬äº‹å®žä¸Šæ˜¯TCR循环的一部分。è¦å»ºç«‹æˆ‘们æ£åœ¨å¯ÀL±‚的紧密å馈åó@环,我们ž®±éœ€è¦æŠŠå®ƒä»¬æ”‘Öœ¨ä¸€èµ—÷€?/p>
æˆ‘ä»¬åœ¨è¿™é‡Œçš„ç›®æ ‡æœ‰ä¸¤å±‚ï¼š‹¹‹è¯•让我们对代ç è´¨é‡çš„充满信心,òq¶èƒ½è¡¨æ˜Žæˆ‘ä»¬åŠ å…¥æ–îC»£ç çš„æ—¶å€™æ²¡æœ‰ç ´åä“Qä½•ä¸œè¥¿ï¼›é‡æ•´å’Œæµ‹è¯•有助于让代ç å˜æˆæˆ‘们就代ç 实际在åšä»€ä¹ˆè€Œè¿›è¡Œæ²Ÿé€šçš„æœ€çœŸå®žå½¢å¼â€”—ä“Q何äh都应该å¯ä»¥çœ‹åˆ°å®ƒåQŒåƈ知é“什么是什么ã€?/p>
由测试驱动的开å‘(TDDåQ‰æ˜¯ä¸€ä¸ªåó@环,它从‹¹‹è¯•å¤ÞpÓ|å¼€å§‹ï¼Œç„¶åŽæ˜¯ç¼–写èƒö够的代ç 通过‹¹‹è¯•åQŒå†æ˜¯é‡æ•´ä»£ç ,使得代ç 在实现系¾lŸå½“å‰åŠŸèƒ½çš„æ¡äšg下尽å¯èƒ½åœ°ç®€å•ã€?/p>
‹¹‹è¯•åQç¼–ç ï¼é‡æ•´å¾ªçޝéžå¸¸çŸæš‚——也ž®±å‡ åˆ†é’Ÿã€‚å¦‚æžœè¶…å‡ø™¿™ä¸ªæ—¶é—´èŒƒå›´é‚£ž®±æ„味瀋¹‹è¯•çš„çñ”别过高,有å¯èƒ½åŠ å…¥äº†æœªç»‹¹‹è¯•的实çŽîC»£ç ã€?/p>
在本文的开始部分,我们ä¸ä¼šä¸‘Ö‡ºTDD的例å,有关的内容会在åŽé?sup>2, 3, 4详细讨论。在˜q™é‡ŒåQŒä»Žæ•´ä½“上把æ¡åƈ把é‡ç‚ÒŽ(gu¨©)”¾åœ¨TCR循环更有‘£çš„æ–šw¢ä¸Šä¼šæ›´åŠ æœ‰ç”¨ã€?/p>
ž®±åŒä»ÖM½•æžé™¾~–程åQæ•æ·å¼€å‘é¡¹ç›®ä¸€æ øP¼Œè¦åšçš„ç¬¬ä¸€ä¸ªç´ æï¼ˆstoryåQ‰æ˜¯ä¸€ä¸ªç»˜q‡ç®€åŒ–的应用½E‹åºåQŒç”¨æ¥å®Œæ•´åœ°è¯´æ˜Ž½E‹åºçš„功能。在本文里,˜q™æ ·çš„åº”ç”¨ç¨‹åºæ˜¯ä¸€ä¸ªäºŒå一点纸牌游æˆã€‚在¾l过½Ž€åŒ–çš„½W¬ä¸€ä¸ªç´ æé‡ŒåQŒåªæœ‰ä¸€ä¸ªçŽ©å®¶å¤–åŠ ä¸€ä¸ªå‘牌ähåQŒæ¯ä¸ªçީ家åªä¼šå¾—åˆîC¸¤å¼ 牌åQŒèŽ·èƒœè€…æ˜¯ä¸¤å¼ ç‰Œå‘完åŽç‚ÒŽ(gu¨©)•°æœ€å¤§çš„人ã€?/p>
ç´ æåQè¦æ±?br />一个简å•的二å一点纸牌游æˆ?/p>
验收‹¹‹è¯•
è¦çŸ¥é“æˆ‘ä»¬çš„ç´ æä»€ä¹ˆæ—¶å€™å®Œæˆå°±éœ€è¦ç»˜q‡ä¸€¾pÕdˆ—验收‹¹‹è¯•ã€‚æˆ‘ä»¬è¿™ä¸ªç®€å•æ¸¸æˆçš„验收‹¹‹è¯•如下åQ?/p>
玩家莯‚ƒœ | å‘ç‰Œäºø™Ž·èƒ?/b> | òq›_±€ |
玩家赌注总é¢åQ?00 | 玩家赌注总é¢åQ?00 | 玩家赌注总é¢åQ?00 |
å‘ç‰Œäºø™µŒæ³¨æ€»é¢åQ?000 | å‘ç‰Œäºø™µŒæ³¨æ€»é¢åQ?000 | å‘ç‰Œäºø™µŒæ³¨æ€»é¢åQ?000 |
玩家下注10 | 玩家下注10 | 玩家下注10 |
玩家å‘到10 & 9 | 玩家å‘到8 & 9 | 玩家å‘到8 & 9 |
å‘牌人å‘åˆ? & 9 | å‘牌人å‘åˆ?0 & 9 | å‘牌人å‘åˆ? & 9 |
玩家赌注总é¢åQ?10 | 玩家赌注总é¢åQ?0 | 玩家赌注总é¢åQ?00 |
å‘ç‰Œäºø™µŒæ³¨æ€»é¢åQ?90 | å‘ç‰Œäºø™µŒæ³¨æ€»é¢åQ?010 | å‘ç‰Œäºø™µŒæ³¨æ€»é¢åQ?000 |
ä»ÕdŠ¡
ç´ æå¾€å¾€å•独解决èµäh¥å¾€å¾€éžå¸¸å›°éš¾åQŒæ‰€ä»¥åœ¨ä¸€èˆ¬æƒ…å†µä¸‹æˆ‘ä»¬éƒ½æŠŠå®ƒåˆ†è§£äØ“ä¸€¾pÕdˆ—ä»ÕdŠ¡æ¥å®Œæˆã€‚在本文的二å一点纸牌游æˆé‡ŒåQŒéœ€è¦è¿›è¡Œä¸‹åˆ—ä“Q务:
åœ¨æŠŠç´ æåˆ†è§£æˆäØ“ä»ÕdŠ¡çš„æ—¶å€™ï¼Œæˆ‘ä»¬å¯ä»¥æŠŠå„个ä“Q务å†åˆ†è§£æˆä¸€¾pÕdˆ—待办事项åQŒä»Žè€ŒæŒ‡å¯¼æˆ‘们进行测试。这让我们å¯ä»¥ä¿è¯åœ¨é€šè¿‡æ‰€æœ‰æµ‹è¯•之åŽå®Œæˆè¿™ä¸ªä“Q务。对于这一副牌åQŒæˆ‘们有下列事项需è¦å®Œæˆã€?/p>
在进行过½W¬ä¸€è½®çš„å‡ ä¸ª½Ž€å•测试之åŽï¼Œæˆ‘们的待办事™å¹åˆ—表就åƒä¸‹é¢è¿™æ ·äº†åQ?/p>
下一个覘q›è¡Œçš„æµ‹è¯•是从牌桌上å‘ç‰Œã€‚å½“æˆ‘ä»¬åœ¨äØ“‹¹‹è¯•æ–ÒŽ(gu¨©)³•¾~–写代ç 的时候,我们所扮演的角色就是将è¦ç¼–写的应用½E‹åºçš„用戗÷€‚è¿™ž®±æ˜¯ä¸ÞZ»€ä¹ˆæˆ‘们给自己的类创å¾çš„æŽ¥å£è¦ä¸Žç»™ç”¨æˆ·çš„æŽ¥å£åƒ¾cÖM¼¼çš„åŽŸå› ã€‚åœ¨æœ¬æ–‡çš„è¿™ä¸ªä¾‹å里åQŒæˆ‘们将按照命ä×oåQ查询分¼›ÕdŽŸåˆ™ï¼ˆCommand/Query Separation Principle5åQ‰ç¼–写出下题q™æ ·çš„代ç ã€?/p>
Deck¾c…R€‚如列表A所½Cºã€?/p>
列表A
import java.util.List;
import java.util.ArrayList;
public class Deck {
   private static final int CARDS_IN_DECK = 52;
   private List cards = new ArrayList();
   public boolean isEmpty() {
       return size() == 0;
   }
     public int size() {
       return cards.size();
   }
     public void add(int card) throws IllegalStateException {
       if(CARDS_IN_DECK == size())
           throw new IllegalStateException("Cannot add more than 52 cards");
       cards.add(new Integer(card));
   }
     public int top() {
       return ((Integer) cards.get(0)).intValue();
   }
     public void remove() {
       cards.remove(0);
   }
 }
我们所有的‹¹‹è¯•都通过了,而且我们没有看到ä»ÖM½•é‡å¤æˆ–者其他必è¦çš„釿•´åQŒæ‰€ä»¥åº”该是时候进行下é¢çš„‹¹‹è¯•了。然而事实å´ä¸æ˜¯˜q™æ ·çš„。我们topå’Œremoveæ–ÒŽ(gu¨©)³•的实现里有一个潜在的问题。如果对一个空的Deck调用它们åQŒä¼šå‘生什么?˜q™ä¸¤ä¸ªæ–¹æ³•都会从¾U¸ç‰Œçš„内部列表里跛_‡ºä¸€ä¸ªIndexOutOfBoundsException异常åQŒä½†æ˜¯ç›®å‰æˆ‘们还没有ž®Þp¿™ä¸ªé—®é¢˜è¿›è¡Œæ²Ÿé€šã€‚å›žå¤´çœ‹çœ‹ç®€å•æ€§çš„原则åQŒæˆ‘们知é“è‡ªå·±éœ€è¦æ²Ÿé€šã€‚我们的¾cÈš„用户应该知铘q™ä¸ªæ½œåœ¨çš„问题。幸˜q的是,我们ž®†è¿™¿U测试当作是一¿U沟通的方å¼åQŒå› æ¤æˆ‘ä»¬å¢žåŠ äº†ä¸‹é¢çš„æµ‹è¯•ã€?br />
public void testTopOnEmptyDeck() {
   Deck deck = new Deck();
   try {
       deck.top();
       fail("IllegalStateException not thrown");
   } catch(IllegalStateException e) {
       assertEquals("Cannot call top on an empty deck", e.getMessage());
   }
}Â
public void testRemoveOnEmptyDeck() {
   Deck deck = new Deck();
   try {
       deck.remove();
       fail("IllegalStateException not thrown");
   } catch(IllegalStateException e) {
       assertEquals("Cannot call remove on an empty deck", e.getMessage());
   }
}
上é¢éƒ½æ˜¯å¼‚常‹¹‹è¯•åQˆException Test2åQ‰çš„例å。我们å†ä¸€‹Æ¡è¿è¡Œè¿™äº›æµ‹è¯•看它们å¤ÞpÓ|åQŒç„¶åŽåŠ å…¥å®žçŽ°è®©å®ƒä»¬é€šè¿‡ã€?br />
public int top() {
   if(isEmpty())
       throw new IllegalStateException("Cannot call top on an empty deck");
   return ((Integer) cards.get(0)).intValue();
}
 public void remove() {
   if(isEmpty())
       throw new IllegalStateException("Cannot call remove on an empty deck");
   cards.remove(0);
}
ž®½ç®¡guardè¯å¥æœ‰é‡å¤ï¼Œä½†æ˜¯æˆ‘们军_®šä¸åŽ»½Ž¡å®ƒåQŒæ²¡æœ‰å°†å®ƒä»¬½Ž€åŒ–æˆä¸€ä¸ªå…±åŒçš„æ–ÒŽ(gu¨©)³•ã€‚è¿™æ˜¯å› ä¸ºæ²Ÿé€šçš„ä»·å€ÆD¶…˜q‡äº†é‡å¤çš„代仸P¼Œå½“ç„¶˜q™åªæ˜¯ä¸€ä¸ªä¸ªäººçš„选择ã€?/p>
一手牌
我们已ç»å®Œæˆäº†å¯¹ç‰Œæ¡Œå’ŒæŠ•注å°é¢çš„‹¹‹è¯•和实玎ͼŒçŽ°åœ¨ž®±åˆ°äº†åˆ›å»ÞZ¸€æ‰‹ç‰Œçš„æ—¶å€™äº†ã€‚待办事™å¹åˆ—表å†ä¸€‹Æ¡å‘挥其作用åQŒæˆ‘们得åˆîCº†ä¸‹é¢˜q™æ ·ä¸€ä¸ªåˆ—表:
Â
ä¸ºç©ºæ‰‹å¢žåŠ ä¸€ä¸ªæµ‹è¯•å¾ˆ½Ž€å•,我们¾l§ç®‹åˆ°ç»™æ‰‹ä¸ŠåŠ å…¥¾U¸ç‰Œã€?/p>
public void testAddACard()
{
  Hand hand = new Hand();
  hand.add(10);
  assertEquals(1, hand.size());
  hand.add(5);
  assertEquals(2, hand.size());
}
我们˜q行‹¹‹è¯•åQŒç„¶åŽåŠ å…¥å®žçŽ°ã€?/p>
public void add( int card )
{
  cards.add(new Integer(card));
}
‹¹‹è¯•通过了,我们没有看到Hand¾c»é‡Œæœ‰ä“Q何é‡å¤ã€‚但是我们刚刚给HandåŠ ä¸Šçš„å®žçŽ°å’Œ¾l™DeckåŠ ä¸Šçš„æ–¹æ³•æžå…¶ç›¸ä¼¹{€‚回头看看牌桌的待办事项列表åQŒæˆ‘们记得必™åÀL£€æŸ¥ç‰Œæ¡Œï¼ˆä¸Šçº¸ç‰Œçš„å¼ æ•°åQ‰æ˜¯å¦æ£¼‹®ï¼Œæˆ‘们最åŽä¹Ÿå¯ÒŽ(gu¨©)‰‹åšåŒæ ïLš„事情ã€?/p>
public void testAddInvalidCard() {
   Hand hand = new Hand();
   try {
       hand.add(1);
       fail("IllegalArgumentException not thrown");
   } catch(IllegalArgumentException e) {
       assertEquals("Not a valid card value 1", e.getMessage());
   }
     try {
       hand.add(12);
       fail("IllegalArgumentException not thrown");
   } catch(IllegalArgumentException e) {
       assertEquals("Not a valid card value 12", e.getMessage());
   }
}
æˆ‘ä»¬åŠ å…¥äº†ä¸‹é¢çš„实现æ¥é€šè¿‡‹¹‹è¯•ã€?/p>
public void add( int card )
{
  if(card < 2 || card > 11)
    throw new IllegalArgumentException("Not a valid card value " + card);
  cards.add(new Integer(card));
}
但是现在我们在Deckå’ŒHand里有相åŒçš„guardè¯å¥åQŒç”¨æ¥æ£€æŸ¥è¯¥è‡ªå˜é‡æ˜¯å¦ä»£è¡¨ç€æ£ç¡®çš„纸牌倹{€‚ç®€å•æ€§çš„åŽŸåˆ™è¦æ±‚æˆ‘ä»¬åˆ é™¤é‡å¤åQŒä½†æ˜¯åœ¨˜q™é‡Œæƒ…况òq¶ä¸åƒExtract Method釿•´6˜q™ä¹ˆ½Ž€å•。如果我们看到多个类之间å˜åœ¨é‡å¤åQŒè¿™æ„å‘³ç€æˆ‘们¾~ºå¤±äº†æŸ¿U概å¿üc€‚在˜q™é‡Œæˆ‘们很容易就看到Card¾cÀL‹…è´Ÿè“v了判æ–什么值是有效的责任,而Deckå’ŒHandä½œäØ“Card的容器å˜å¾—æ›´å…äh²Ÿé€šæ€§ã€?/p>
我们引入了Card¾cÖM»¥åŠç›¸åº”çš„Deckå’ŒHand釿•´åQŒå¦‚åˆ?b>è¡?/b>BåQ?/p>
public class Card {
   private final int value;
   public Card( int value ) {
       if( value < 2 || value > 11 )
           throw new IllegalArgumentException( "Not a valid card value " + value );
       this.value = value;
   }
     public int getValue() {
       return value;
   }
}
 public class Deck {
   private static final int[] NUMBER_IN_DECK = new int[] {0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 16, 4};
     �
   public void add( Card card ) throws IllegalStateException {
       if(NUMBER_IN_DECK[card.getValue()] == countOf(card))
           throw new IllegalStateException("Cannot add more cards of value " + card.getValue());
       cards.add(card);
   }
     public Card top() {
       if(isEmpty())
           throw new IllegalStateException("Cannot call top on an empty deck");
       return (Card) cards.get(0);
   }
     �
   private int countOf(Card card) {
       int result = 0;
       for(Iterator i = cards.iterator(); i.hasNext(); ) {
           Card each = (Card) i.next();
           if(each.getValue() == card.getValue())
               result++;
       }
         return result;
   }
}
 public class Hand {
   �
   public void add( Card card ) {
       cards.add(card);
   }
   �
}
‹¹‹è¯•åQç¼–ç ï¼é‡æ•´å¾ªçŽ¯çš„æ¯ä¸€é˜¶æ®µéƒ½æ¶‰åŠä¸åŒç±»åž‹çš„æ€æƒ³ã€‚åœ¨‹¹‹è¯•阶段åQŒé‡ç‚ÒŽ(gu¨©)”¾åœ¨äº†è¢«å®žçŽ°çš„¾cÈš„接å£ä¸Šã€‚ç¼–å†™ä»£ç æ˜¯ä¸ÞZº†è®©æµ‹è¯•å°½å¯èƒ½å¿«åœ°é€šè¿‡‹¹‹è¯•ã€‚è€Œé‡æ•´é˜¶ŒDµå¯ä»¥è¢«å½“作是ä‹Éç”¨ç®€å•æ€§åŽŸåˆ™è¿›è¡ŒæŒ‡å¯¼çš„å¾®åž‹ä»£ç 审查。有没有é‡å¤çš„æˆ–者看èµäh¥¾cÖM¼¼çš„代ç ,ä¸ä»…仅是在当å‰çš„¾c»é‡ŒåQŒè€Œä¸”是在¾pÈ»Ÿçš„其他类里?现在的实现å¯èƒ½ä¼šå‡ºçŽ°ä»€ä¹ˆé—®é¢˜ï¼Œ¾cÈš„用户能够与之™åºåˆ©æ²Ÿé€šå—åQ?/p>
é‡è¦çš„æˆåŠŸå› ç´?/i>
é…对¾~–程——第二æ¥
TCR循环å¯ä»¥ç”±æŸä¸ªå¼€å‘äh员独自完æˆï¼Œä½†æ˜¯æ•æ·å¼€å‘å’ŒTCR循环的真æ£å¨åŠ›æ¥è‡ªäºŽé…对¾~–程åQˆpair programmingåQ‰ã€‚åœ¨æ•æ·å¼€å‘里åQŒå¼€å‘äh员æ¯ä¸¤äh一¾l„编写所有的生äñ”代ç åQŒå…¶ä¸ä¸€äººæ‹…当“驱动者(driveråQ‰â€ï¼ˆè´Ÿè´£æ“ä½œé¼ æ ‡å’Œé”®ç›˜ï¼‰åQŒè€Œå¦ä¸€ä¸ªähåŒé©±åŠ¨è€…ä¸€é“解决问题和规划更大的图景。编½E‹é…寚w‡Œçš„这个驱动者å¯ä»¥æŒ‰éœ€è¦è¿›è¡Œè½®æ¢ã€‚é…å¯¹è®©ä½ èƒ½å¤Ÿå®žçŽ°çœ¼å‰çš„ç›®æ ‡åQŒåŒæ—¶ç¡®ä¿ä¸ä¼šå¿½ç•¥é¡¹ç›®çš„æ•´ä½“ç›®æ ‡ã€‚å®ƒä¼šä¿è¯æœ‰äººåœ¨è€ƒè™‘下一æ¥çš„èµ°å‘和下一个è¦è§£å†³çš„问题ã€?/p>
虽然é…对¾~–程引è“v了很多争议,但是大多æ•îC¼˜¿U€çš„å¼€å‘äh员还是在按照˜q™ä¸€æ–ÒŽ(gu¨©)³•˜q›è¡Œå¼€å‘,臛_°‘有的时候是˜q™æ ·çš„。管ç†äh员们å¯èƒ½ä¼šç›¸ä¿¡é…对编½E‹é™ä½Žäº†ç”Ÿäñ”效率åQŒç„¶è€Œå°½½Ž¡å¼€å‘å°¾l„的生äñ”效率在一开始会有所é™ä½ŽåQŒä½†æ˜¯ç ”½I¶å·²¾l表明从质é‡å’Œå¢žåŠ çš„ç”Ÿäñ”效率的角度æ¥çœ‹ï¼Œé…对¾~–程˜qœè¿œ‘…过了开å‘äh员å•独工作的质é‡å’Œæ•ˆçŽ?sup>7。而å¦ä¸€æ–šw¢åQŒå¼€å‘äh员å¯èƒ½ä¼šè§‰å¾—é…对¾~–程éžå¸¸å›°éš¾åQŒå› 为它需è¦ä¸ŽäºÞZ»¬æ›´å¤šçš„交互过½E‹ï¼Œòq¶ä¸Žå¦ä¸€ä¸ªå¼€å‘äh员一èµïL¼–写代ç 。但是这也是建立一¿U相互å¦ä¹ 的环境的最好方法ã€?/p>
Â
实施é…对¾~–程
1.      ä¸è¦ç‹¬æ–专行——è¦è®¨è®ºã€‚ä¸Žä½ çš„ž®ç»„æˆå‘˜è®¨è®ºé…对¾~–ç¨‹çš„æ€æƒ³åŠå…¶ä¼˜åŠ£åQŒè€Œä¸æ˜¯ç‹¬æ–专行地¾l™ä»–们定规则。é…对编½E‹æ˜¯å¼€å‘äh员相互å¦ä¹ çš„¾l好æœÞZ¼šã€?/p>
2.      ¼‹®å®šä½ çš„ž®ç»„需è¦å¤šž®‘é…å¯V€‚é…对编½E‹æ˜¯ä¸€™å¹å·¥ä½œå¼ºåº¦å¾ˆå¤§ä½†æ˜¯ä×o人满æ„的工作方å¼ã€?/p>
3.      ä¸è¦è®©é…对编½E‹äh员æ¯å¤©è¿ž¾lå·¥ä½œå…«ä¸ªå°æ—¶â€”—å¦åˆ™ä½ 的尾l„会åƒä¸æ¶ˆçš„。从较çŸçš„æ—¶é—´å¼€å§‹â€”—æ¯å¤©ä¸€åˆîC¸¤ä¸ªå°æ—Óž¼Œçœ‹çœ‹å®ƒæ˜¯å¦‚何˜q›å±•的,然åŽéšç€ž®ç»„ä¿¡å¿ƒçš„å¢žå¼ø™€Œåšgé•¿æ—¶é—´ã€?/p>
4.      定期‹‚€æŸ¥ã€‚å¦‚æžœä½ å·²ç»å†›_®šž®è¯•冿¬¡˜q›è¡Œæ•æ·å¼€å‘ï¼Œä½ å°±éœ€è¦ç¡®ä¿äØ“ž®ç»„è¥é€ 了æ£å¼çš„环境,以便åQˆå®šæœŸï¼‰ž®±é¡¹ç›®è¿›åº¦è¿›è¡Œå馈ã€?/p>
é‡è¦çš„æˆåŠŸå› ç´?/i>
从整体上è®ÔŒ¼Œæˆ‘们在这里说的是è¦å°è¯•è¿™¿U方法——首先å°è¯•测试^~–ç åQ釿•´åó@çŽ¯ï¼Œä¸€æ—¦ä½ è®©å®ƒ˜qè{èµäh¥åQŒå°±ž®è¯•一下é…对编½E‹ã€‚ä½ åº”è¯¥é©¬ä¸Šž®±å¯ä»¥çœ‹åˆ°è´¨é‡çš„æå‡åQŒä»¥åŠå›¢é˜Ÿé‡Œæ²Ÿé€šå±‚‹Æ¡çš„æé«˜ã€?/p>
我们在本文没有谈åŠçš„内容很简å•——增é‡è®¾è®¡ã€‚æ•æïL¼–½E‹å–œ‹Æ¢ç®€å•的增é‡ã€æ”¹˜q›çš„设计åQŒè€Œä¸æ˜¯åœ¨¾~–写代ç 之å‰çš„大型设计。很多ähéƒ½è®¤ä¸ºæ•æïL¼–½E‹ä¸å–œæ¬¢è®¾è®¡â€”â€”äº‹å®žåÆˆä¸æ˜¯å¦‚æ¤åQŒè€Œåº”该是åªè¦æ»¡èƒö最低需è¦å°±è¡Œäº†ã€?/p>
在本¾pÕdˆ—的第二部分里åQŒæˆ‘ä»¬å°†æ›´åŠ ä»”ç»†åœ°æŽ¢è®¨ç®€å•设计以åŠä¸€å¥—的开å‘å›¢é˜Ÿåšæ³•ã€?/p>
å‚考资æ–?/u>
1.      Beck Kå’ŒAndres CåQŒã€Šæžé™ç¼–½E‹è¯¦è§£ï¼šå˜åŒ–åQŒç¬¬äºŒç‰ˆåQ?i>Extreme Programming explained: embrace change 2nd ed.åQ‰ã€‹ï¼ŒPearson Education出版½C¾ï¼Œ2005òq´ã€?/p>
2.      Beck KåQŒã€Šæµ‹è¯•驱动的开å‘:举例åQ?i>Test-driven development: by exampleåQ‰ã€‹ï¼ŒPearson Education出版½C¾ï¼Œ2003òq´ã€?/p>
3.      Jeffries Rã€Anderson Aã€Hendrickson CåQŒã€Šå®žçްæžé™ç¼–½E‹ï¼ˆExtreme Programming installedåQ‰ã€‹ï¼ŒAddison-Wesley出版½C¾ï¼Œ2001òq´ã€?/p>
4.      Wake WåQŒã€Šæžé™ç¼–½E‹æŽ¢è®¨ï¼ˆExtreme programming exploredåQ‰ã€‹ï¼ŒAddison-Wesley出版½C¾ï¼Œ2002òq´ã€?/p>
5.      Meyer BåQŒã€Šæž„建é¢å‘对象的软äšgåQŒç¬¬äºŒç‰ˆåQ?i>Object-oriented software construction 2nd ed.åQ‰ã€‹ï¼ŒPrentice Hall出版½C¾ï¼Œ1997òq´ã€?/p>
6.      Fowler MåQŒã€Šé‡æ•ß_¼šæ”¹è¿›åŽŸæœ‰ä»£ç 的设计(Refactoring: improving the design of existing codeåQ‰ã€‹ï¼ŒAddison Wesley Longman出版½C¾ï¼Œ1999òq´ã€?/p>
7.      Williams L½{‰ï¼Œã€Šå¼ºåŒ–é…对编½E‹æ¡ˆä¾‹ï¼ˆStrengthening the Case for Pair-ProgrammingåQ‰ï¼Œ¾ŸŽå›½çй他大å¦è®¡ç®—机系åQ?999òq´ã€?/p>
Brian Swanæ˜?a >Exoftware公叿•™æŽˆæ•æ·å¼€å‘的指导è€å¸ˆã€‚ä»–åœ¨æ•æ·å¼€å‘的技术和½Ž¡ç†æ–šw¢å…ähœ‰ç›¸å½“丰富的ç»éªŒï¼Œæ›„¡»å¸¦é¢†å¾ˆå¤šž®ç»„æˆåŠŸåœ°è{æ¢åˆ°äº†æ•æ·å¼€å‘,òq¶ä»¥æ•æ·å¼€å‘çš„æ€æƒ³å’Œå𿳕æ¥åŸ¹è®å¼€å‘äh员和½Ž¡ç†äººå‘˜ã€‚他在Exoftwareå…¬å¸å’Œåœ¨æ•æ·å¼€å‘æ–¹é¢çš„工作使他到过很多公å¸åQŒåƈ对其开å‘å°¾l„äñ”生了æŒç®‹çš„ã€ç§¯æžçš„å½±å“。Brianå…ˆå‰çš„ç»éªŒè¿˜åŒ…括担ä“QNapier大å¦çš„讲师,讲授软äšgå¼€å‘和人机互动。Brianå¯ä»¥é€šè¿‡ç”?sh¨´)åé‚®äšgè”系上ã€?/i>
Â