¦^¤W¤@­¶

Extreme Programming»PCMM/CMMI©ó¤p«¬¶}µo¹Î¶¤

¾A¥Î©Ê¤§±´°Q»P¤ñ¸û


¹ù®m¾W
¬F¤j¸ê¬ì©Ò´¼¼z«¬´CÅé¹êÅç«Ç
try@nccu.edu.tw


ºK­n


XP(eXreme Programming) ¬O¥Ñ Kent Beck ©ó 1996 ¦~¥Nªì´Á°w¹ï¤p«¬¹Î¶¤´£¥Xªº³nÅé¤uµ{¤èªk½×¡A¥i¥H¦P®Éº¡¨¬¶}µo¤H­ûªº¦¨´N·P»P´£°ª³nÅé«~½è¡C¦b¤p«¬±M®×ªºÀ³¥Î¤W¡AXP¬Û·í¦¨¥\¡C¥t¤@­Ó³Ìªñ¨ü¨ì­«µøªº³nÅé¤uµ{¤èªk½×¬OCMM/CMMI¡A¥¦¬OCMUªº³nÅé¤uµ{¾Ç°|¦b1986¦~¶}©lµo®iªº¤@®M³nÅé¤uµ{¯à¤O¦¨¼ô«×¼Ò«¬¡A¦³¬ã¨s«ü¥XCMM¥ç¾A¥Î©ó¤p«¬²Õ¾¤W[1]¡C¥xÆW¤j¾Ç°|®Õ¬ã¨s³æ¦ì¤Î¸ê°T¬ì¨t¹êÅç«Çªº¶}µo¹Î¶¤³q±`¥H¤p«¬¹Î¶¤¬°¥D¡A¦Ó³nÅ餽¥q¥Í²£¶}µo³¡ªù¤]¤j¦h¥Ñ¤p«¬²Õ´²Õ¦¨¡C³o½g³ø§iªº¥Øªº¦b©ó¤ÀªR³o¤G­Ó¤£¦Pªº¤èªk½×ªº¯S¦â¡A¨Ã°Q½×¦p¦ó¤~¯à±N¥L­ÌÀ³¥Î¦b¤p«¬¹Î¶¤¤W¡C¥»¤å¦P®É±´°Q¤F¤@­Ó³oÃþ«¬¹Î¶¤ªº®×¨Ò¡A¥i¥H°µ¬°¤p«¬³nÅé¶}µo¹Î¶¤«Ø¥ß¶}µoµ{§Ç®Éªº°Ñ¦Ò¡C

 

1 ¾É½×

(¦^­¶­º ¦^¤W¤@­¶)

XP(eXreme Programming) ¬O¥Ñ Kent Beck ©ó 1996 ¦~¥Nªì´Á´£¥X¡CXP ±q¤Hªº¥»½è¦Ò¼{¦p¦óÅýµ{¦¡³]­p®v¡A¥i¥H¦³´LÄYªº¤u§@¡A¦P®É¥i¥H²£¥X°ª«~½èªº³nÅé¡C¦b³nÅé¶}µoªº¹Lµ{¤¤XP ´£¥X4­Ó®Ö¤ß»ù­ÈÆ[¤Î 12 ¶µªº°ò¥»¹ê°È§@ªk¡CXPª`­«³æ¤¸´ú¸Õ¡BÂù¤H²Õµ{¦¡³]­p¤Îµ{¦¡­«ºc(refactoring)ªº¤u§@¡A³Q»{¬°¬O¾A¦X¥Î¦b¤p«¬±M®×¤Î¹Î¶¤ªº»´¶q¯Å³nÅé¤uµ{¤èªk½×¡C

CMM/CMMI¬O¬ü°ê¥d¤º°ò¬ü¶©¤j¾Çªº³nÅé¤uµ{¾Ç°|(SEI)±µ¨ü¬ü°ê°ê¨¾³¡©e°U¡B¦b1986¦~¶}©lµo®iªº¤@®M³nÅé¤uµ{¯à¤O¦¨¼ô«×¼Ò«¬¡C­ì¥»CMM/CMMI¬O¥Î¨ÓµûŲ²Õ´¡B³¡ªù©Î¹Î¶¤¶i¦æ³nÅé¶}µo±M®×ªº¯à¤O¤ô·Çªº¼Ò«¬¡A¦¹¼Ò«¬¹ï±M®×±q¶}µo¨ì§¹¦¨ªº¬yµ{´£¨Ñ¤@­ÓÄYÂÔ§¹³Æªº¬[ºc»P´y­z¡A¨Ï±o¾ú¦~¨Ó¤Þ¶i³o®MµûŲ¨î«×ªº¥ø·~¨É¨ü¨ì³nÅé¶}µo®Éµ{©úÅãÁYµu¡B¦¨¥»¤j´T­°§C¡B²£«~·å²«¼Æ´î¤Ö¥H¤Î«~½è´£¤Éµ¥µ¥ªº¦n³B¡C¥Ø«eCMM/CMMI¦b¬ü°ê¡B¦L«×¤Î¤¤°ê¤j³°¤w¸g¼sªx¦a³Q³nÅé¶}µo°Ó±Ä¥Î¡C

ÁöµMXP»PCMM/CMMI¬Û¤ñ¡A¦b¶}µoµ{§Ç¤W¸û¤£ÄYÂÔ¡A«Ü¦h½×ÂI¤]¨ü¨ì§åµû¤Îª§Ä³¡A¦ý¤]¦³¾ÇªÌ«ü¥X¡AXP­Ò¾É¤F³\¦h¨}¦nªº³nÅé¤uµ{­ì«h¡A­Y¦b¦X¾AªºÀô¹ÒùعB¥Î±o·í¡A¯à¹F¦¨³\¦hCMM²Ä¤G¯Å©M²Ä¤T¯Åªº¥Ø¼Ð[1]¡C±q¥t¤@­Ó¨¤«×¨Ó¬Ý¡A«Ü¦h¤ä«ùXPªº¤H»{¬°¡A¤p«¬¹Î¶¤¥Ñ©ó¤H¤â¤Î®É¶¡¤£¨¬¡ACMM/CMMI³\¦hÄY®æªº³W½d¤Ï¦Ó·|¹ï¾ã­Ó¹Î¶¤¼W¥[¤Ó¦h­t¾á¡C°w¹ï³oºØ»¡ªk¡A¤]¦³¾ÇªÌ´£¥XÀ³¥Î¦bCMM/CMMI¦b¤p«¬¹Î¶¤¤¤ªº¸Ñ¨M¤è®×[3]¡C

¥xÆW¤j³¡¥÷³nÅ餽¥qªº¬ãµo³¡ªù¤Î¦U¤j¾Çªº¹êÅç«Ç³£¬O³£¥H¤p«¬¹Î¶¤ªº¤è¦¡¹B§@¡B¶}µo³nÅé¡C¤j«¬ªº¬ãµo¹Î¶¤¦³¸û¦hªº¤H¤O¡A¸û²Óªº¤À¤u¤Î¸û¥R¨¬ªº¸ê·½¡A¦X¾A©ó¤j¹Î¶¤ªº¤èªk¤£¨£±o¯à°÷¾A¥Î©ó¤p«¬¹Î¶¤¡C¦]¦¹§Ú­Ì·|§âµJÂI©ñ¦b§ä¥X³o¤GºØ¤èªk½×¹ï©ó¤p«¬¹Î¶¤ªº¥¿­±¤Î­t­±¼vÅT¡A¨Ã«Øij¤@­Ó¾A¥Î©ó³oÃþ«¬¹Î¶¤ªº¥i¯àÀ³¥Î¤è¦¡¡C

 

2 CMM/CMMI³nÅ馨¼ô«×¼Ò«¬

(¦^­¶­º ¦^¤W¤@­¶)

³nÅéµo®i¯à¤Oªº¦¨¼ô«×¼Ò«¬(Capability Manurity Model for Software¡ACMM)¬O³nÅé¤uµ{¨ó·|SEI(Software Engineering Institution)¦bCMU¤j¾Ç¶}µo§¹¦¨¡A¥Øªº¬O°w¹ï¤@­Ó²Õ´ªº³nÅéµo®i¯à¤O¶i¦æµû»ù©Ò³]ªº¼Ð·Ç¡ACMM­«©ó¹ï³nÅéµo®i¹Lµ{©M¶}µo¤èªk½×ªº¦Ò¹î¡C¥¦¥]¬A¤­­Óµ¥¯Å¡A¶}µoªº¯à¤O¶V±j¡A¶}µo²Õ´ªº¦¨¼ô«×¶V°ª¡Aµ¥¯Å¤]´N¶V°ª¡C³o¤­­Óµ¥¯Åªº¨ãÅé©w¸q¦p¤U¡G

ªì¯Å(Initial)¡G³nÅéµo®i¹Lµ{¤¤°¸º¸·|¥X²{²V¶Ãªº²{¶H¡A¥u¦³«Ü¤Öªº¤u§@¹Lµ{¬O¸g¹LÄY®æ©w¸qªº¡A¶}µo¦¨¥\©¹©¹¨Ì¾aªº¬O¬Y­Ó¤Hªº´¼¼z©M§V¤O¡C

¥i­«½Æªº(Repeatable)¡G«Ø¥ß¤F°ò¥»ªº±M®×ºÞ²z¹Lµ{¡C«ö³¡´N¯Z¦a³]­p¥\¯à¡B°lÂܶO¥Î¡B®Ú¾Ú±M®×¶i«×ªí¨Ó¶i¦æ¶}µo¡C¹ï©ó¬Û¦üªº±M®×¡A¥i¥H­«ÂШϥΥH«e¤w¸g¶}µo¦¨¥\ªº³¡¤À¡C

¤w©w¸qªº(Defined)¡G³nÅéµo®iªº¤uµ{¬¡°Ê©MºÞ²z¬¡°Ê³£¨ã³Æ¤å¥ó¤Æ¡B¼Ð·Ç¤Æªº¡A¥¦³Q¶°µ²¦¨?¤@­Ó²Õ´ªº¼Ð·Çªº¶}µo¹Lµ{¡C©Ò¦³±M®×ªº¶}µo©MºûÅ@³£¦b³o­Ó¼Ð·Ç°ò¦¤W¶i¦æ¨î©w¡C

³QºÞ²zªº(Managed)¡G¹ï©ó³nÅéµo®i¹Lµ{©M?«~«~½èªº´ú¸Õ²Ó¸`³£¦³«Ü¦nªºÂk¯Ç¡A?«~©M¶}µo¹Lµ{³£¥i¥H©w¶q¦a¤À¸Ñ©M±±¨î¡C

³Ì¨Î¤Æªº(Optimizing)¡G³q¹L«Ø¥ß¶}µo¹Lµ{ªº©w¶q¤ÏõX¾÷¨î¡A¤£Â_?¥Í·sªº«ä·Q¡A±Ä¥Î·sªº§Þ³N¨Ó³Ì¨Î¤Æ¶}µo¹Lµ{¡C


°£¤F²Ä¤@¯Å¡A¨ä¥L¨C¤@¯Å³£¦³´X­Ó¯S§O­È±oª`·NªºÃöÁä¹Lµ{¡C²Ä¤G¯ÅªºÃöÁ䤧³B¬O«Ø¥ß°ò¥»ªº±M®×ºÞ²z±±¨î¡A¥L­Ì¬O»Ý¨DºÞ²z¡B³nÅé±M®×­p¹º¡B³nÅé±M®×ªº¸òÂÜ©MºÊ·þ¡B³nÅéÂà¥]ºÞ²z¡B³nÅé«~½è«OÃÒ©M³nÅé²ÕºAºÞ²z¡C

¡@¡@²Ä¤T¯ÅªºÃöÁä¬O¬JÃöª`±M®×°ÝÃD¡A¤]Ãöª`²Õ´°ÝÃD¡A¦]?²Õ´«Ø¥ß°_¯à«P¨Ï°ª®Ä²v³nÅé¤uµ{¨î«×¤Æªº°ò¥»¬[ºc¡A©M¸ó±M®×ªººÞ²z¹Lµ{¡C¥¦­Ì¥]¬A²Õ´¹Lµ{Ãöª`µ{«×¡B²Õ´µ{§Ç©w¸q¡B°ö°V±M®×¡B¶°¦¨¤Æªº³nÅéºÞ²z¡B³nÅé?«~¤Æ¾÷¨î¡B±M®×²Õªº¤º³¡¨ó½Õ©M¹ï¥X²{¿ù»~ªº½Æ¬d¡C

¡@¡@²Ä¥|¯ÅªºÃöÁä¬O¹ï³nÅéµo®i¹Lµ{©M³nÅé?«~³£¦³¤@­Ó©w¶qªº²z¸Ñ¡C¥¦±j½Õªº¬O©w¶qªº¹Lµ{ºÞ²z©M³nÅé«~½èºÞ²z¡C

¡@¡@²Ä¤­¯Å«h±j½Õ¡A¤£½×²Õ´ÁÙ¬O±M®×¥²¶·°l¨D«ùÄòªº¡B¥i«×¶qªº¹Lµ{§ï¶i¡C¥]¬A¯Ê³´¹w¨¾¡B§Þ³N§ó·sºÞ²z©M¬yµ{§ï³yºÞ²z¡C

¦b³o¤­­Óµ¥¯Å¤§¤U¡A¦³18­ÓKPA(Key Process Areas)¡A¦A¨Ó¬O52­ÓGoals¡A¹F¦¨¨C­Ó³nÅ馨¼ô«×®É¤@©w­n°µ¨ì³o52­ÓGoals¡C¦ÓKPA¥u¬O´£¨Ñ¹F¨ìGoals¥i¯àªº°µªk¡C

3 Extreme Programming

(¦^­¶­º ¦^¤W¤@­¶)

XP ¬O¥Ñ Kent Beck ©ó 1996 ¦~¥Nªì´Á´£¥X¡CKent Beck ¬O¤@­Óµ{¦¡³]­p®v¡A¥L¥Hµ{¦¡³]­p®vªºÆ[ÂI¬Ýµ{¦¡³]­p³o¶µ¤u§@¡Cªø´Á¥H¨Ó¡Aµ{¦¡³]­pªº¤u§@¨ü¨ì¶}µo´Á­­¡]dead line¡^ªºÀ£­¢¡A¥L­Ìªº²£¥X©¹©¹µLªk¹F¨ìÀ³¦³ªº«~½è¡CXP ±q¤Hªº¥»½è¦Ò¼{¦p¦óÅýµ{¦¡³]­p®v¡A¥i¥H¦³´LÄYªº¤u§@¡A¦Ó¦P®É¥i¥H²£¥X°ª«~½èªº³nÅé¡CXP ªººë¯«¥i¥H»¡¬O¹ê½î Agile¡]¤¤¤åĶ¬°±Ó±¶¡B»´¶q¡BÆF¬¡¡B»´§Ö¡^³nÅéµo®i«Å¨¥ªº¥|¶µ»ù­ÈÆ[¡G¡y­Ó¤H¤Î¬Û¤¬¥æ¬y³Ó¹L³nÅé¤uµ{©M¤u¨ã¡z¡B¡y¥i¹B¦æªº³nÅé³Ó¹L§¹¾ã¼s³Õªº¤åÀɸê®Æ¡z¡B¡y»P¥Î¤á¦X§@³Ó¹L¦X¬ù½Í§P¡z¡B¡y¦^À³ÅܤƳӹLªA±q­pµe¡z¡C

XP ´£¥X¥|­Ó®Ö¤ß»ù­ÈÆ[:¡u·¾³q¡B¦^õX¡B²¤Æ¡B«i®ð¡v¡C±q³o¥|­Ó®Ö¤ß»ù­ÈÆ[¡AKent Beck¬°XP­l¥Í¥X 5¶µ³ÌÀu¥ýªº­ì²z:

  1. ´£¨Ñ¨³³tªº¦^õX
    ®Ú¾Ú»{ª¾¤ß²z¾Çªº­ì²z¡A±o¨ì¦^õXªº®É¶¡©M¾Ç²ßªº³t«×¦³«Ü¤jªºÃö«Y¡A·U§Ö±o¨ì¦^õX¡A¾Ç²ßªº¦¨ªG·U¤j¡CXP±N¶}µo¶g´ÁÁY¤p¡A¦]¦¹±o¨ì¦^õXªº®É¶¡¤]ÁYµu¡A­Yµ{¦¡¦³°ÝÃDªº®É¶¡¤]¥i¤Î¦­µo²{¡C
  2. ²¤Æ
    XP¥D±i¡A¼gµ{¦¡¬O¥Î¨Óº¡¨¬«È¤áªº»Ý¨D¡A¤£¬O¥Î¨ÓÅýµ{¦¡³]­p®v®i¥Ü­Ó¤H§Þ³N¯à¤O¡C¦]¦¹¡AÀ³¨Ï¥Î¯à¹F¦¨±M®×¥Ø¼Ð³Ì²³æªº§Þ³N¨Ó¹ê§@¡CXP¤£¥D±i¬°¤Fµ{¦¡¥¼¨Óªº¥i©µ®i©Ê¦Ó¨Ïµ{¦¡¬[ºcÅܽÆÂø¡A¦]¬°µ{¦¡»Ý¨D¥²©w¤£Â_§ïÅÜ¡A­Y¥¼¨Ó³o¶µ¥\¯à¤£¦A»Ý­n¡A«h¬°¤F¥i©µ®i©Ê¦Ó°µªº§V¤O¤]±N¥Õ¶O¡C
  3. º¥¶i¦¡§ïÅÜ
    ´N¹³¶}¨®¤@¼Ë¡A¾r¾p¨®½ø®É¤£¥i¯à¤£½Õ¾ã¤è¦V½L¡A¥[¾p¤H¥²¶·ÀH®É«O«ù±Mª`¡A¤@ÂI¤@ÂI§ïÅܤè¦V½Lªº¨¤«×¨Ó°t¦X¹ê»Ú¸ôªp¡C
  4. ¾Ö©ê§ïÅÜ
    ¦b³nÅé¶}µo¹Lµ{¤¤¡A»Ý¨D§ïÅܬO¤@©w·|¹J¨ìªº°ÝÃD¡A³q±`¤]¬Oµ{¦¡³]­p®v³Ì·Ð´oªº°ÝÃD¡AXP§i¶D§Ú­Ì¥²¶·¹w´Á§ïÅÜ¥²©w·|µo¥Í¡A³z¹L¶}µo¶g´ÁÅܵu¡AÀH®É©M«È¤á«O«ù±µÄ²¡A¤@ÂI¤@ÂI½Õ¾ã¤è¦V¡A½T«O¶}µo¤è¦V©M«È¤áªº»Ý¨D¦P¨B¡C
  5. °µ¦³«~½èªº¤u§@
    XP«D±`ª`­«´ú¸Õ¡A¬Æ¦Ü¥D±i¥ý¼g´ú¸Õµ{¦¡½X¡A¤~¶}©l¼g¥D­nµ{¦¡½X¡C¥²¶·½T«O¨C¤@¦æµ{¦¡½X³£­n³Q´ú¸Õ¡A°ß¦³³z¹L¤£Â_ÄY®æªº´ú¸Õ¡A¤~¥i¥H½T«O³nÅ骺«~½è¡C

Kent Beck¨Ã´£¥X¤Q¤G¶µ°È¹êªº°ò¥»§@ªk¨Ó¸¨¹êXPªº°õ¦æ¡A¥L­Ì¬O¡u³W¹º¡v¡B¡u¤p¶qµo¦æ¡v¡B¡u²¤Æ³]­p¡v¡B¡u´ú¸Õ¡v¡B¡u«ùÄò©Ê¾ã¦X¡v¡B¡uµ{¦¡½X­«ºc¡v¡B¡uÂù¤Hµ{¦¡³]­p¡v¡B¡uµ{¦¡½X¦@¨É¡v¡B¡u¨C¶g40¤u®É¡v¡B¡u«È¤á¾nÂI¡v¡B¡u«È¤á»Pµ{¦¡¤H­û¨Ï¥Î¬Û¦P³N»y¡v¤Î¡u¿í¦æµ{¦¡½XºD¨Ò¡v¡C

4 CMM/CMMI»PXP¦b¤p«¬±M®×ªº¾A¥Î©Ê

(¦^­¶­º ¦^¤W¤@­¶)

 

4.1 CMM¶q¨­­q°µ(Tailoring and interpretation)ªº¥²­n©Ê

 

CMM/CMMI¨î©w¼Ò«¬®É¬°¨D¼u©Ê¡A±N¾ã­Ó³W®æ¥H¶¥¼h¦¡¨Ó¨î©w¡C¦p¤U¹Ï¡C



³Ì¤W¼h¬O5­Ó³nÅ馨¼ô«×¡A±µ¤U¨Ó¬O18­ÓKPA(Key Process Areas)¡A¦A¨Ó¬O52­ÓGoals¡A¹F¦¨¨C­Ó³nÅ馨¼ô«×®É¤@©w­n°µ¨ì³o52­ÓGoals¡C¦ÓKPA¥u¬O´£¨Ñ¹F¨ìGoals¥i¯àªº°µªk¡C¤@­ÓKPA¥i¯à¹F¨ì¤@­Ó©Î¦h­ÓGoal¡C¸g±`»²¾É·~¬É°µCMMªº¾ÇªÌ«ü¥X¡A¥L­Ì¨Ì­Ó§O¤½¥q¤å¤Æªº¤£¦P¡A³q±`¤]·|§ä¨ìKPA¤§¥~ªº¤è¦¡¨Ó¹F¦¨Goals[3]¡C¦b³Ì¤U¼h(Key practices / Subpractices and examples)¤~¬OCMM³W®æ®Ñ©Ò´£¨Ñªº¨ãÅé§@ªk¤Î½d¨Ò¡A­È±oª`·Nªº¬O³o¨Ç½d¨Ò³£¬O°ò©ó¤j«¬±M®×/¹Î¶¤©Ò´£¥X¡C

°ò©óCMM³oºØ°ª«×¼u©Êªº¯S¦â¡A¦b¤KºØ±¡ªp¤U¡A§Ú­Ì¥²»Ý¹ïCMM¶q¨­­q°µ(tailoring and interpretation)¡A¥H¾A¦X²Õ´¥»¨­ªº¹B§@¤è¦¡[10]:

  1. «D±`¤j«¬±M®×©Î²Õ´¡C
  2. µêÀÀ±M®×©Î²Õ´¡C
  3. ±M®×©Î²Õ´¤À´²¦U¦a®É¡C
  4. §Ö³t§Öµo¡C
  5. ¬ãµo¤u§@(R&D)¡C
  6. ºûÅ@¤u§@¡C
  7. ³nÅéªA°È(Software Services)¡C
  8. ¤p«¬²Õ´¡C

¥»¤å©ÒÃö¤ßªº¡u¤p«¬±M®×/²Õ´¡v¤Î¡u¹êÅç«Ç³æ¦ì¡v³£ÄÝ©ó³oºØ­n¶q¨­­q°µªºÃþ«¬¡C

 

4.2 CMM»PExtreme Programming¦p¦ó¬Û¤¬°t¦X

 

¥Ñ©óCMM¥u´£¨Ñ¡u­n°µ¤°»ò¡v(What to do)ªº­ì«h©Ê«ü¾É¡A¨Ã¥¼ÄY®æ³W©w§Ú­Ì¬O¡u¦p¦ó°µ¡v(How to do)¡A©Ò¥H¦b¹F¦¨CMM¥Ø¼Ð®É»Ý­n§Q¥Î´¼¼z(Intelligence)¤Î±`ÃÑ(Common sense)¨Ó°µ§PÂ_¨Ã¦]¦a¨î©y¿ï¾Ü³Ì¦nªº°µªk[5]¡C

®Ú¾Ú¬ã¨s«ü¥X¡A¤j³¡¥÷ªºXP¤èªk½×©Ò­n¹F¦¨ªº¥Ø¼Ð¨ä¹ê©MCMM/CMMI¦bLevel 2¡BLevel 3¤Î¤Ö¼ÆªºLevel 4/ 5©Ò´£¥Xªº¬O¤@­Pªº[1]¡C¦p¤U¹Ï:

¤]´N¬O»¡¡ACMM/CMMI§i¶D§Ú­Ì¡u¤°»ò¡v¤~¬O¥¿½Tªº³nÅé¶}µo¡A¦ÓXP«h§i¶D§Ú­Ì­n¡u¦p¦ó¡v¸¨¹ê³o¨Ç¥¿½Tªº³nÅé¶}µo¤è¦¡¡C¥Ñ¦¹¥iª¾¡A­Y§Ú­Ì¯à¦b¤p«¬¹Î¶¤¤¤¹ê²{XP¡Aµ¥©ó³¡¥÷¹F¦¨¤FCMM /CMMI Level2/3ªº»Ý¨D¡C³o¼Ëªº¦¨ªG¬Û¹ï©ó«Ü¦h¤p«¬¹Î¶¤­ì¥»²@µL³¹ªkªº¶}µo¬yµ{¨Ó»¡¡A¤w¸g±o¨ì¬Û·í¤jªº§ïµ½¡C

¦ý§Y¨Ï¬O¦p¦¹¡A­n±NXP¸¨¹ê¨Ã¤£®e©ö¡CÁ|¨Ò¨Ó»¡¡AXPªºPair-Programming¬O³Ì¤Þ°_ª§Ä³ªº¤@¶µ³W©w¡C¥¦±j½ÕÂù¤H¦@¥Î¤@¥x¹q¸£¨Ó¼gµ{¦¡¡A¤@­Ó¤H¶}µo®É¡A¥t¤@­Ó¥i¥H¼g¤å¥ó©Îºc«ä¡A¦P®É¦³°ÝÃD®É¤G¤H¤]¥i¥H¤¬¬ÛÀ°§U¡C¦b¤G¤H²Õ¤¤­Y¦³¦Ü¤Ö¦³¤@¤H¬O¸ê²`µ{¦¡¶}µo¤H­û¡A³oºØ¤è¦¡¬O¦X²zªº¡A¦ý­Y¤G¤H³£¬Oªì¾ÇªÌ¡A®£©È·|¦³¤Ï®ÄªG¡C¦AªÌ¡Aµ{¦¡¶}µo¤H­û§Y¨Ï¬O¼g§@¤å¥ó¡A¤]³£¤w¸g²ßºD¥Î¹q¸£¨Ó¼g§@¡A­Y±j¨î¤G¤H¦@¥Î¤@¥x¹q¸£¨ä¹ê¤]¬O¤£¦X²zªº¡C

§Ú­Ìªº«Øij¬O¥ý¦æ¤ñ¸û¹Î¶¤¥»¨­¤å¤Æ¤Îª¬ªp¡A¥Hº¥ªñªº¤è¦¡¨Ó¹ê¬IXPªº³¡¥÷¾÷¨î¡C¦]¬°XP¤èªk½×´¿¤Þ°_«Ü¦hª§½×¡A±j¨î±N¥¦©Ò´£¥Xªº¤è¦¡®M¥Î¨ì¥ô·N¹Î¶¤¤¤¡A¤£¨£±o¯à¹F¦¨³Ì¦nªº®ÄªG¡C

 

4.3 ®×¨Ò±´°Q


2003¦~´H°²´Á¶¡¡A¬F¤j¸ê°T¬ì¾Ç¨tªº´¼¼z«¬´CÅé¹êÅç«Ç(IM Lab)±À¦æ¤F¤@­Ó¹êÅç«Çºô¯¸ªº­«ºc­pµe¡A­«ºc­«ÂI¦b©ó¬ðÅãIM Lab¬ã¨s¥DÃD¤Î¬ã¨s¦¨ªG¥H§l¤Þ§ó¦hÀu¨q¤H¤~¥[¤J¡C

¾ã­Ó¶}µo¶g´Á¬ù¬°10¤Ñ(¬ù2¶gªº¤u§@¤Ñ)¡A°Ñ¥[¦¨­û¬ù8¦W¡A¬O¤@­Ó¨å«¬¤p«¬¹Î¶¤/¤p«¬±M®×ªº³nÅé¶}µo¡CIM Lab­ì¦³ºô¯¸¬O¥HJ2EE§Þ³N«Øºc¦bLinux¥­¥x¤W¡A±Ä¥ÎResin°µ¬°À³¥Îµ{¦¡¦øªA¾¹¡C¸g¹L¹êÅç«Ç¦¨­û¶}·|°Q½×ªºµ²ªG¡A¾ã­Ó­«ºcªº­«ÂI¦p¤U:

  1. °w¹ï¨Ï¥ÎªÌ¬É­±¤Îºô¯¸Layoutµ¹¨Ï¥ÎªÌªºÆ[·P­«·s³]­p¡A¯àÅý¨Ï¥ÎªÌ±Nºô¯¸ªºLayout©MIM Labªº¯S¦âÁp·Q¦b¤@°_¡C
  2. ¥[±jºô¯¸¤Wªº¤å®×¼g§@¡A¸Ô²Ó¤¶²Ð¹êÅç«Çªº¬ã¨s­«ÂI¤Î¦¨ªG¡C
    ¹êÅç«Ç¦¨­û­Ó¤H²³æ¸ê®Æ¡B¬ã¨s±Mªø¤Î¿³½ìÀ³¸Ó¥i¥H¦bºô¯¸¤W¨Ñ°ÑÆ[ªÌÂsÄý¡A
  3. °w¹ï¨p±K©Ê¸ê®Æ¡AÀ³¸Ó´£¨Ñ¹êÅç«Ç¦¨­û«È»s§@(customize)ªº¥\¯à¡A¯à°÷¥Î¦Û¤vªº±b¸¹µn¤J¡BºûÅ@¡A¨Ã½Õ¾ã­n¤½¶}ªº¸ê°T¡C
    À³¸Ó¥[¤W¯d¨¥ª©©Î°Q½×°Ï¡A¥H§Q°Ñ³X¨Ó»«µo°Ý¡B´£¥X«Øij©Î¦¨­û°Q½×¡BÁpµ¸¥Î³~¡C
  4. ¥[±jºô¯¸ªº¦w¥þ©Ê¡A¨¾¤î¤J«I·N¥~¡C

¾ã­Ó±M®×¶i¦æªº¯S¦âÂk¯Ç¦p¤U:

  1. Pair-Programming:¤W­±¦C¥Xªº­«ÂI¤u§@©Ò»Ý§Þ³N°£¤FJ2EE¤§¥~¡AÁÙ¥]§t¤å®×¼g§@¡B¬ü¤u¤ÎLinux¨t²ÎºÞ²z¡C¦³«Ü¦h¹êÅç«Ç·s¶i¦¨­û¹ï©ó³o¨Ç§Þ³N¤@ÂI¤]¤£¼ô±x¡A¥L­Ì§Æ±æ¯àÂǥѰѻP³o¦¸±M®×¨Ó¾Ç²ß³o¨Ç§Þ³N¡A¦]¦¹§Ú­Ì±Ä³]XP©Ò«ØijªºPair-Programming¤è¦¡¡A±N¾ã­Ó¤u§@³Wµe¬°¥|­Ó¤p²Õ¡A¤@­Ó¤p²Õ¥Ñ¤G¤H²Õ¦¨¡C³o¼Ë°µªº¦n³B¬Oªì¾ÇªÌ¥i¥HÀH®É½Ð±Ð¼ô±xªÌ¦Ó¥¼¨Ó¤H­û¬y°Ê®É¡A¦b§Þ³Nªº¥æ±µ¤W¤]¤ñ¸û¤£·|¥X²{°ÝÃD¡C
  2. ÀH®É¬Ý¨ì¦¨ªG¡A§Ö³t±o¨ì¦^õX:¦b¤G­Ó¬P´Áªº¤u§@¤Ñ¤¤¡A¶}µo¤H­û°£¿ù§¹²¦¤§«á¡A¥i¥HÀH®É±N¦¨ªG¤W¶Ç¨ì¥¿¦¡¤W½uªººô¯¸¤W¡A¨C¤H¦Ü¤Ö¨C¤Ñ­n¨C¤Ñ¤U¤È¤­ÂI«e­n¤W¶Ç¤@¦¸¡A¥H½T©w¤µ¤Ñ¦³¤u§@¦¨ªG¡C¤­ÂI¤§«áQA²Õ´N¥i¥H¶}©l¨Ï¥Îºô¯¸¨Ã¦b°w¹ïºô¯¸µ¹¤©«Øij¡C¦bµu´Á¤º¬Ý¨ì¦¨ªG¡A¥i¥HÀH®É­×¥¿¤è¦V¡A¦Ó¤£­P©ó¦b¾ã­Ó®×¤l§¹¦¨«á¡A¤~µo²{°µ¥X¨Óªº¤£¬O§Ú­Ì­nªº¡C
  3. ¥­¦æ¶}µo¡A¨Ã·Q¿ìªkµý©ú¦Û¤vªº¤u§@¦¨ªG¡G¥Ñ©ó³\¦h¤u§@¨BÆJ¦³¬Û¨Ì©Ê¡A¤ñ¤è»¡­n¥ý°µ¹Ï¡A¤å®×¤~¯à©ñ¤W¥h¡Aµ{¦¡¤~¯à®M¥Î¦b¬ü¤u¤H­ûªº¹Ï¤W¡C¦b¨º»òµuªº¶}µo¶g´Á¤¤(2¬P´Á¤u§@¤Ñ)¡A³o¼Ë°µ«Ü®ö¶O®É¶¡¡C¦]¦¹§Ú­Ì±j½Õ¨C­Ó¤HÀ³·Q¿ìªk¯à®i¥Ü©Îµý¹ê¦Û¤vªº¤u§@¦¨ªG¡C¦p¼g¤å®×ªº­Y¼È®ÉÁÙ¤£¯à¾ã¦X¨ìµe­±¤W¡A¤]­n·Q¿ìªk±N¤u§@¦¨ªG¥Hpdf©Îhtmlµ¥¤è¦¡µo§Gµ¹QA²Õ¡C¦Ó¶}µo¤¸¥óªº¤H¡A¤]­n¥ý¼g³æ¤¸´ú¦¡½X¨Óµý¹ê¤¸¥óªº¥i¥Î©Ê¡C

 

5 ¥¼¨Ó¬ã¨s¤è¦V

(¦^­¶­º ¦^¤W¤@­¶)

 

CMM/CMMI´£¨Ñ¤@­Ó¨}¦n³nÅé¶}µo¬yµ{À³¸Ó¹F¦¨ªº¥Ø¼Ð¡A¦ÓXP«h¬O°w¹ï¤p«¬¶}µo¹Î¶¤´£¥X¤F¹ê»Úªº°µªk¡C¦ý¬O°õ¦æ­±ªº¨ãÅé°µªk¡A¥u¦³«Ü¤Öªº¤å³¹°Q½×¡C¥D­nªº­ì¦]¬O¦pªG­n°w¹ï³o¤GºØ¤èªk½×´£¥X¦³®Ä¨ãÅé°µªkªº¸Ü¡A·|¨Ï³oºØ¨ãÅé§@ªk¥u¾A¥Î©ó¯S©w¥­¥x©Î§Þ³N¡C

¥Ø«e·~¬Éªº¥D­n¶}µo¥­¥x¦³J2EE¤Î.NET¤GºØ¡A¦bJ2EE¤è­±¡A¤w¸g¦³«Ü¦nªº¨ãÅé§@ªk³Q´£¥X[6]¡A¦b¹ê»Ú»²§U¤u¨ã¤W«h¦³±M®×«Ø¸m¤u¨ãAnt¡A³æ¤¸´ú¸ÕJUnit¤ÎHttpUnit¡AÀ£¤O´ú¸ÕJMeter¡C¤Ï¤§.NET¤W¨Ã¨S¦³¬Û¹ïÀ³ªº¨ãÅé§@ªk©Î¤u¨ã¡C

Microsoft¶}µo¤W´£¨Ñ¤F«ÜÀu¨qªº§Ö³t¶}µo¤u¨ã(Visual Studio.NET)¡A¦b³nÅé¶}µoªº¤èªk½×¤W¤]´£¥X¹LMSF(Microsoft Solution Framework)¡A¦ýVisual Studio.NET ¨Ã¥¼¾ã¦XMSFªº²z©À¡A¥BMSF¤]¥u´£¨Ñ­ì«h©Êªº«ü¤Þ¡A¨Ã¥¼°Q½×¨ì¨ãÅé§@ªk¡A¥BMSFªº³W©w«ÜÁc½Æ¡A¨Ã¤£¦pCMM/CMMI¯ë¦³¼u©Ê¡A¨Ã¤£¦X¾A¤p«¬¹Î¶¤±Ä¥Î¡C

¥¼¨Ó¦pªG¥i¥H°w¹ï¤p«¬¹Î¶¤¤Î.NET¥­¥x´£¥XXP(©ÎCMM)ªº¨ãÅé¥i¦æ¤è¦¡¡A¨Ã´£¨Ñ«Ø¸m¡B³æ¤¸´ú¸Õ¡BÀ£¤O´ú¸Õªº¬ÛÃö¤u¨ã°t¦X¡A¬Û«H¥i¥H¹ï±Ä¥Î.NET¸Ñ¨M¤è®×ªº¤p«¬¹Î¶¤±a¨Ó«Ü¤jªºÀ°§U¡C

 

6 µ²½×

(¦^­¶­º ¦^¤W¤@­¶)

¸g¥Ñ¤@¨t¦Cªº°Q½×»P¤ÀªR¡A§Ú­Ìµo²{CMM/CMMI»PXP³o¤G­Ó¤èªk½×¨Ã¨S¦³«Ü¤jªº½Ä¬ð¡C³\¦hXPªº®Ö¤ßÆ[©À¡A¥¿¬O¸¨¹êCMM Level 2/3ªº¨ãÅé°µªk¡C¹ï©ó¤p«¬¹Î¶¤¦Ó¨¥¡ACMM/CMMI§i¶D§Ú­Ì¡u¤°»ò¡v¤~¬O¥¿½Tªº³nÅé¶}µo¤è¦¡¡A¦ÓXP«h§i¶D§Ú­Ì­n¡u¦p¦ó¡v¸¨¹ê³o¨Ç¥¿½Tªº³nÅé¶}µo¤è¦¡¡C

¹ï¤p«¬¤Î¬ãµo«¬¹Î¶¤¦Ó¨¥¡A³q±`¹ï©Ò¿×ªº¡u³W«h¡v¤ñ¸û®e©ö§Ü©Ú¡A¹Î¶¤¦¨­û³q±`³£»{¬°¦Û¤v¦b¹Î¶¤¤¤¤w§êºt¤FºÙ¾ªº¨¤¦â¡A¤£»Ý­n¤°»ò³W©w¡CCMM/CMMI¤ÎXP¨ó§U§Ú­Ì¦b¹Î¶¤¬ö«ß(discipline)¤Î³Ð·N¶¡¨ú±o¥­¿Å¡C¥Ñ©ó¶}µo©P´Á(iteration)ÁYµu¡A¹Î¶¤¦¨­û¥i¥H°¨¤W¬Ý¥X±M®×ªº¦¨ªG¡A¶i¦Ó±o¨ì¦¨´N·P¡AÄY­«¿ù»~¤]¥i¤Î¦­µo²{¡C¦b¶}µo¹Lµ{¤¤©Ò²£¥Íªº¦UºØ§¹¾ãªº¤å¥ó¡A¤]¥i¥H¦b¶}µo¦¨­û¬y°Ê®É¡A¤£¹ï±M®×³y¦¨¹L¤j¶Ë®`¡C¤p«¬¹Î¶¤¦¨­û¸û¤Ö¡A¦b·¾³q¤Î­×§ï³W«h®É¤ñ¤j«¬²Õ´®e©ö¡A¦]¦¹§Ú­Ì»{¬°CMM/CMMI­Y¥[¤WXP¤èªkªº¨ó§U¡A¥i¥H¨Ï¤p«¬¹Î¶¤¦b§ïµ½³nÅé¶}µoªº¹Lµ{¤¤¦¨®Ä§ó°ª¡C

 

7 °Ñ¦Ò¤åÄm

(¦^­¶­º ¦^¤W¤@­¶)

[1] M. C. Paulk. ¡§Extreme programming from a CMM perspective¡¨. In XP Universe, Raleigh, NC, July 2001.

[2] Beck, K. Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading, MA, 1999.

[3] M.C. Paulk.¡¨ Using the Software CMM in Small Organizations¡¨, Joint 1998 Proc. Pacific Northwest Software Quality Conf. and the Eighth Int¡¦l. Conf. On Software Quality, pp. 350-361, October 1998.

[4] Beck, K. Embracing Change with Extreme Programming. IEEE Computer, 32, 10 (October 1999) 70-77.

[5] M.C. Paulk. ¡§Using the Software CMM With Good Judgment¡¨, ASQ Software Quality Professional, 1(3), pp. 19-29, June 1999.

[6] Richard Hightower, Nicholas Lesiecki. ¡§Java Tools for Extreme Programming¡¨, John Wiley & Sons, December 15, 2001.

[7] C.Wrandle Barth. ¡§When the CMM Shoe Doesn¡¦t Fit:Tools for SPI on Numerous Small Projects¡¨, Raytheon ITSS, Sep 2000.

[8] Mikael Lindvall and Ioana Rus, ¡§Process Diversity in Software Development¡¨ ,IEEE Software, (July/August 2000) 14-18.

[9] A.Laryd and T.Orci. ¡§Dynamic CMM for Small Organizations¡¨, Proceedings of the First Argentine Symposium on Software Engineering (ASSE 2000), Sep 2000.

[10] Mark C.Paulk , ¡§Effective CMM-Based Process Improvement¡¨, Proceedings of the 6th International Conference on Software Quality,Ottawa,Canada,28-31 October 1996,pp.226-237.


 

¦^­¶­º ¦^¤W¤@­¶