±¾ÎÄ´Ó´úÂ븲¸ÇÂʵĻù±¾¸ÅÄʼ£¬Ïêϸ½éÉܲâÊÔ¹¤³ÌʦÈçºÎʹÓà Contest
À´·ÖÎö²âÊÔÓÃÀýµÄ´úÂ븲¸ÇÂÊ£¬½Ó׎áºÏ FoCuS À´²úÉú²âÊÔÓÃÀýµÄÔ´´úÂ븲¸ÇÂʱ¨±í£¬´ÓÒ»¸öÌØÊâµÄ½Ç¶ÈÀ´¶ÈÁ¿²âÊÔÓÃÀýµÄÓÅÁÓ¡£Í¬Ê±Í¨¹ýÒ»¸öʵ¼ÊÀý×ÓÀ´½²½âÈ¡µÃ´úÂ븲¸ÇÂʵĻù±¾Á÷³Ì£¬Æä¼ä¹á´©Ò»Ð©»ù±¾¸ÅÄ²¢ÇÒÔڵõ½´úÂ븲¸ÇÂʵĻù´¡Ö®ÉÏ·ÖÎöÈçºÎ¸Ä½ø²âÊÔÓÃÀý£¬ÔÚ·´¸´µü´úµÄ¹ý³ÌÖÐÀ´Ìá¸ß²âÊÔÓÃÀýµÄ´úÂ븲¸ÇÂÊ¡£Äú¿ÉÒÔÔÚ¶Ìʱ¼äÄÚÁ˽â´úÂ븲¸ÇÂʵĸÅÄ²¢ÇÒÓ¦ÓÃ×÷Õß½éÉܵÄÁ÷³ÌÀ´·¢ÏÖ²âÊÔÓÃÀýµÄ©¶´£¬ÒÔ¼°·ÖÎö¸Ä½ø²âÊÔÓÃÀý¡£
½â¾öʲôÎÊÌâ
ÎÊÌâµÄÌá³öʱÕâÑùµÄ£º¶ÔÓÚ²âÊÔÈËÔ±À´Ëµ£¬Ê×ÏÈÃæÁÙµÄÎÊÌâ¾ÍÊÇÎÞ·¨¶ÈÁ¿²âÊÔÓÃÀýµÄÖÊÁ¿£¬Èç¹û²âÊÔ¹¤³Ìʦ»¨·Ñ´óÁ¿Ê±¼äдµÄ²âÊÔÓÃÀý²»ÄÜÓÐЧµØ¸²¸ÇÖØÒªµÄʵÏÖ´úÂ룬ÄÇô¿ÉÒÔ±íÃ÷ÕâÑùµÄ²âÊÔÓÃÀý²»ÊÇÓÅÁ¼µÄ¡£Í¬Ê±¿ÉÒÔ¸ù¾Ý²âÊÔ¸²¸ÇÁ˵ı¨±íÀ´·ÖÎöΪʲôûÓи²¸Çµ½ÖØÒªµÄ´úÂ룬½Ó×ÅÐèÒª½øÐиĽø²âÊÔÓÃÀýµÄ´úÂ븲¸ÇÂÊ´ïµ½ÂúÒâµÄ½á¹û¡£´úÂ븲¸ÇÂʸߵ͸ù¾Ý²úÆ·µÄ²»Í¬¶ø²»Í¬£º70%£¬80%
ÉõÖÁ 100% ¶¼ÊÇ¿ÉÄܵġ£¶ÔÓÚ²âÊÔ¹¤³ÌʦÀ´½²£¬¿ÉÒÔ×ñÑÕâÑùµÄÁ÷³Ì : »ñÈ¡¸²¸ÇÂÊ ¨C > ·¢ÏÖδ¸²¸ÇµÄ´úÂë
¨C > Ìí¼ÓвâÊÔÓÃÀýÀ´¸ÄÁ¼²âÊÔÓÃÀý£¬±£Ö¤²úÆ·ÖÊÁ¿¡£
´úÂ븲¸ÇÂÊ»ù±¾½éÉÜ
ÔÚ CMMI4 ÌåϵµÄ²âÊÔ¹ý³ÌÖж¨ÒåÁËËĸö¶ÈÁ¿Ö¸±ê£º´úÂ븲¸ÇÂÊ¡¢²âÊÔÖ´ÐÐÂÊ¡¢²âÊÔÖ´ÐÐͨ¹ýÂÊ¡¢²âÊÔȱÏݽâ¾öÂÊ¡£ÆäÖдúÂ븲¸ÇÂʾÍÊÇÃèÊöÁ˳ÌÐòµÄÔ´´úÂëÔÚ¹¦ÄܲâÊÔÖеĸ²¸ÇÂÊ£¬¼´·´Ó³²âÊÔÓÃÀý¶Ô±»²âÈí¼þµÄʵÏÖ´úÂ븲¸Ç³Ì¶ÈµÄÖØÒªÖ¸±ê£¬ËüÒ²ÊǶԲâÊÔ¹¤×÷½øÐÐÁ¿»¯µÄÖØÒªÖ¸±êÖ®Ò»¡£²âÊÔ¹¤×÷ÍùÍù²»È翪·¢ÄÇÑù¿ÉÒÔÓÃͼ±íÊý¾Ý±íʾ½á¹û£¬Ò»¸öÖØÒªÔÒòÖ®Ò»¾ÍÊDzâÊÔÄÑÓÚÁ¿»¯£¬¶ø´úÂ븲¸ÇÂÊǡǡÊǽâ¾öÕâÒ»ÎÊÌâµÄÖØÒªÖ¸±ê¡£Í¬Ê±Ò»¸ö½Ç¶ÈÀ´½²£¬Èí¼þµÄ·çÏպܿÉÄܾʹæÔÚÓÚ´úÂ븲¸ÇÂÊûÓÐÉæ¼°µÄµØ·½£¬´úÂ븲¸ÇÂÊ¿ÉÒÔ·¢ÏÖÆäÖÐδ¸²¸ÇµÄ³¡¾°£¨Test
Hole£©, ²âÊÔ¹¤³Ìʦ¸ù¾ÝÕâ¸ö Test Hole À´·ÖÎö²âÊÔÓÃÀý£¬ÒÔ´ËÀ´ÓÅ»¯²âÊÔÓÃÀý£¬Õâ¸ö¹ý³ÌÄÜÏÔÖøÌá¸ß²âÊÔµÄÉú²úЧÂÊ£¬²¢Ìá¸ßÈí¼þ²úÆ·ÖÊÁ¿¡£´úÂ븲¸ÇÂÊÊǸö°×ºÐ²âÊԵĸÅÄ±Ï¾¹×îºóÒª¸ú×Ùµ½Ô´´úÂë¡£Ò»°ãÀ´Ëµ£¬´úÂ븲¸ÇÂʵIJâÊÔÓ¦¸ÃÊÇÔÚ²úÆ·µÄÖкóÆÚÒýÈ룬²»¹ý¶ÔÓÚʹÓÃÃô½Ý¼¼Êõ¿ª·¢µÄ²úÆ·£¬¿ÉÒÔÔÚ¿ªÊ¼¿ª·¢µÄµü´úÖÜÆÚ¾ÍÒýÈë¡£±ÊÕßËùÔÚµÄÍŶӾÍÔÚÏîÄ¿µÄÖкóÆÚʹÓã¬Ö÷ÒªÓÃÓÚ²âÊԻعé²âÊԵĴúÂ븲¸ÇÂÊ¡£
´úÂ븲¸ÇÂÊ»ù±¾µÄÖ¸±ê
Óï¾ä¸²¸Ç Statement coverage (line coverage):
ÓÃÓÚÆÀ²â²úÆ·´úÂë¶ÀÁ¢´úÂëÐÐÔÚ²âÊԻÖÐÖ´ÐеÄÐи²¸ÇÂÊ£¬ÓŵãÊǼòµ¥£¬È±µãÊÇÎÞ·¨°üº¬´úÂëµÄÂß¼·ÖÖ§¡£
»ù±¾Óï¾ä¿é¸²¸Ç Basic block coverage: °Ñ·Ç·ÖÖ§µÄ´úÂëÇøÓò×öΪһ¸ö¼ÆÁ¿µ¥Î»£¬ÓÃÓÚÒ»¸ö
if/else ÖеÄij¸ö·ÖÖ§ÐÐÊýÔ¶´óÓÚÁíÒ»¸ö·ÖÖ§£¬ËùÒÔ¿ÉÄÜ»á³öÏÖÕâÏîÖ¸±ê±È½Ï¸ßµÄÇé¿ö¡£
Ìõ¼þ¸²¸Ç Decision coverage (branch coverage):
ÓÃÓÚÆÀ¼Û´úÂë·ÖÖ§µØ´úÂ븲¸ÇÂÊ¡£
¹¦Äܸ²¸Ç Function coverage (Method Function):
ÆÀ²â²úÆ·´úÂëÔÚ²âÊԻÖÐÖ´Ðз½·¨µÄ¸²¸ÇÂÊ¡£
´úÂ븲¸ÇÂʵÄʵÏÖ·½Ê½
¶ÔÓÚ Java ×÷Ϊ¿ª·¢ÓïÑԵIJúÆ·£¬·ÖÎö´úÂ븲¸ÇÂÊʱºòʹÓà Instrumentation
¼¼Êõ£¬±¾ÖʾÍÊÇÔÚ²úÆ·´úÂëµÄ¹Ø¼üλÖòåÈëͳ¼Æ´úÂ룬¼´ÔÚ´úÂëµÄÿ¸ö·½·¨µÄ¿ªÊ¼¼ÓÈëͳ¼Æ¼ÆÊýÆ÷ºÍÐòÁкţ¬µ±·½·¨±»Ö´ÐÐÖ®ºó£¬¸ù¾ÝÐòÁкÅÒÔ¼ÆËã¸Ä·½·¨±»²âÊÔÓÃÀý²âÊÔµ½¡£Ò»°ãÀ´Ëµ£¬Instrumentation
¼¼Êõ¿ÉÒÔ·ÖΪÁ½ÖÖ·½Ê½£ºClass Instrumentation ºÍ Source Instrumentation¡£Ç°Õß°Ñͳ¼Æ´úÂë²åÈë±àÒëºÃµÄ
.class Îļþ£¬¶øºóÕßÔò°Ñͳ¼Æ´úÂë²åÈëÔ´´úÂë (.java Îļþ ) ²¢±àÒë³ÉÐ嵀 .class Îļþ¡£´ó¶àÊý´úÂ븲¸ÇÂʹ¤¾ß²ÉÓÃÕâÁ½ÖÖ
Instrumentation ¼¼Êõ¡£ÆäÖÐÓà Class Instrumentation ʹÓÃ×î¹ã£¬ÒòΪÔÚ²úÆ·¿ª·¢µÄÿ¸ö½×¶Î£¬²ÉÓóÖÐø¼¯³ÉµÄ·½Ê½À´¿ª·¢²úÆ·£¬²âÊÔ¹¤³ÌÊ¦Ãæ¶ÔµÄ²»ÊDzúÆ·µÄÔ´´úÂ룬¶øÊǽ»¸¶¸ø²âÊԵIJúÆ·°æ±¾£¬ËùÒÔ¿¼Âǵ½±ÜÃâÐÞ¸ÄÔ´´úÂ룬¶øÖ±½Ó×¢Èëͳ¼Æ´úÂëµ½Éú³ÉµÄ
class, ¶ÔÓÚ±¾ÎÄÖÐÒ²ÓõÚÒ»ÖÖ Class Instrumentation ¼¼Êõ¡£
Contest ½éÉÜ
Contest Êǹ¦ÄÜÇ¿´óµÄÒ×ÓõŤ¾ß£¬ÔÚ²âÊÔµÄǰÆÚÓÃÒÔ·¢ÏÖ²¢ÐÐϵͳµÄ
bug, ¶ø²»Óý¨Á¢¸´ÔӵIJâÊÔ¶à´¦ÀíÆ÷ºÍ¶àÓ¦ÓõIJâÊÔ»·¾³¡£Contest ¶Ô¿ª·¢ÈËÔ±¿É²âÊÔ¹¤³Ìʦ¶¼ºÜ·Ç³£ÓаïÖú£¬Ëü¿ÉÒÔ×÷Ϊ¶ÀÁ¢ÔËÐеŤ¾ß»òÕßÒ»¸ö
Eclipse ²å¼þ£¬¿ª·¢ÈËԱȥÔËÐпÉÒԵõ½µ¥Ôª²âÊԵĴúÂ븲¸ÇÂÊ¡£Contest ¿ÉÒÔÓÃ×îСµÄ³É±¾À´¶ÈÁ¿´úÂ븲¸ÇÂÊ£¬ÔÚµ÷ÊÔÆÚ¼ä£¬¿ÉÒÔ·¢ÏÖËÀËøÐÅÏ¢£¬Contest
»¹ÓкܶàÆäËû¹¦ÄÜ£¬´úÂ븲¸ÇÂÊÊÇÎÒÃÇÔÚ±¾ÎÄÖÐÓõ½µÄÒ»¸ö¹¦ÄÜ¡£ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔÔÚÕâÀïÏÂÔØ Contest¡£Contest
Ö§³ÖÁ½ÖÖ¼¶±ðµÄ´úÂ븲¸ÇÂÊ£¬¹¦Äܸ²¸Ç method coverage ºÍ»ù±¾Óï¾ä¿é basic-block
coverage¡£
·ÖÎö´úÂ븲¸ÇÂʼòµ¥µÄËĸö²½Öè
µÚÒ»²½£ºInstrumentation ÄúµÄÓ¦ÓÃ
Instrumentation ²¿ÊðµÄÓ¦ÓþÍÊǽ«´úÂ븲¸ÇÂʵÄͳ¼Æ´úÂë²åÈëµ½ÄúµÄÓ¦ÓÃÖÐÈ¥µÄ¹ý³Ì£¬Ö§³Ö
J2EE µÄÓ¦ÓÃÓУºweb application, °üÀ¨ war ²¿Êð°üºÍ ear ²¿Êð°ü¡£Ö§³Ö J2SE
µÄ C/S ϵͳÖÐµÄ Java Ó¦Óá£ÔÚ×ö Instrumentation ²Ù×÷ǰ±ØÐëÏÈ Contest
ÔËÐл·¾³£¬ÈÃÀà·¾¶ÄÜÕÒµ½ contest.jar Îļþ¼´¿É¡£
°éËæ Instrumentation ²Ù×÷ÓÐÒ»¸ö preference
Îļþ£¬Æä¼Ç¼ÐèÒªÔËÐÐ Instrumentation µÄ²ÎÊý£¬Ãû×ÖΪ King.Properties¡£
ÕâÀïÖ÷Òª¹Ø×¢Ëĸö²ÎÊý¼´¿É£¬ÆäÖÐ method Coverage ºÍ basic-Block
Coverage ÊǶþѡһµÄ£¬²»ÄÜͬʱΪ true¡£
methodCoverage = true // Ñ¡Ôñ¹¦Äܸ²¸ÇÂÊ
basicBlockCoverage = false// Ñ¡Ôñ basic
block ¸²¸ÇÂÊ
buffer_size = 2048 // ÔËÐÐ instrument
µÄ»º³å´óС
output = . //Instrument µÄÊä³öĿ¼µÄ·¾¶
instrument ÃüÁî
¶ÔÓÚ²¿Êð°üÊÇ war µÄ½Å±¾ :
java -classpath yourFolder:\Contest.jar;
com.ibm.Contest.instrumentation.Instrument yourFolder\YourApp.war
¶ÔÓÚ C/S µÄ jar ½Å±¾ :
java -classpath yourFolder:\Contest.jar;
com.ibm.contest.instrumentation.Instrument your1.jar
your2.jar your2.jar
Ö´ÐбàдµÄ½Å±¾£¬¾ÍÔËÐÐ Instrument ÃüÁÔÚÊä³öĿ¼µÄ·¾¶Éϵõ½
com_ibm_contest£¬ÕâÊǸö instrument µÄÊä³öĿ¼¡£È»ºó¾Í»áµÃµ½ÁíÍâÒ»¸ö½á¹ûÎļþ£¬±ÈÈçÄúÔÀ´µÄ²¿Êð°üÊÇ
YourApp.war, È»ºó¾Í»áÓÐÐ嵀 YourApp.war Îļþ£¬Size ±ÈÔÀ´µÄ´óһЩ£¬ÔÀ´µÄ¾Í»á±¸·ÝΪ
YourApp.war_backup¡£
µÚ¶þ²½£º²¿ÊðÄúµÄ²¿Êð°üµ½·þÎñÆ÷ÉÏ
ÔÚǰһ²½ÎÒÃǵõ½Ò»¸ö YourApp.war ²¿Êð°ü£¬È»ºóµÇ½ÄúµÄ·þÎñÆ÷£¬±ÈÈçÊÇ
Jboss ·þÎñÆ÷£¬ÕÒµ½ Jboss/server/default/deploy, ÓÃÄú¸ÄÔìµÄ YourApp.war
Ìæ»»ÔʼµÄ YourApp.war, È»ºóÆô¶¯Ó¦Ó÷þÎñÆ÷£¬ÈøÄÔìºó YourApp.war ¿ªÊ¼ÔËÐС£¾¹ýÒÔÉÏÁ½²½£¬ÔÚÔËÐзþÎñÆ÷ÉÏ´úÂ븲¸ÇÂʵĻ·¾³¾Í½¨Á¢³É¹¦ÁË¡£
µÚÈý²½£ºÔËÐвâÊÔÓÃÀý
ÔÚÕâÒ»²½²âÊÔÈËÔ±¿ÉÒÔÊÖ¹¤Ö´ÐвâÊÔÓÃÀý£¬Ò²¿ÉÒÔÔËÐÐ×Ô¶¯»¯²âÊÔ£¬±ÊÕß¾ÍÊÇÔËÐÐ×Ô¶¯»¯²âÊÔÀ´Ö´ÐвâÊÔÓÃÀý¡£
µÚËIJ½£ºµÃµ½´úÂ븲¸ÇÂÊ
ÔÚǰÈý²½ÔËÐÐÍê³Éºó£¬¾Í»á²úÉú com_ibm_contest Ŀ¼£¬ÒÔ
Jboss ΪÀý£¬Õâ¸öĿ¼ÔÚĿ¼Ï±»Éú³ÉÔÚ Jboss\bin£¬¼Ç¼×Å´úÂ븲¸ÇÂʵĸú×ÙÎļþ trace
file¡£Ä¿Â¼½á¹¹Èçͼ 1 Ëùʾ¡£

ͼ 1. Contest Instrument
Éú³ÉµÄĿ¼½á¹¹
FoCuS ÊÇÒ»¿îÉú³É¸÷ÖÖ±¨±íµÄ¹¤¾ß£¬Óë Contest ½áºÏ£¬¸ù¾Ý Contest
µÄ Task ÎļþºÍ Trace Îļþ¿ÉÒÔÉú³É¸÷ÖÖÐèÒªµÄ±¨±í£¬Èç´úÂ븲¸ÇÂʱ¨±í¡¢²âÊÔ©¶´±¨±íµÈµÈ¡£
ͨ¹ý FoCuS µÃµ½´úÂ븲¸ÇÂʵĹý³ÌÈçÏ£ºÆô¶¯ FoCuS, ÔËÐÐ YourFolder\JavaConTest\FoCuS\FoCuS.bat£¬Èçͼ
2 Ëùʾ¡£FoCuS µÄʹÓÿÉÒԲο¼°ïÖúÎļþ£¬ÔÚÕâÀÊ×ÏȱØÐëµ¼Èë Task Îļþ£¬Èçͼ 3 Ëùʾ¡£

ͼ 2. FoCuS Æô¶¯½çÃæ
½ÓÏÂÀ´Ñ¡ÔñÔÚµÚÒ»²½²úÉúµÄ Task ÎļþĿ¼£¬Èçͼ 3 Ëùʾ£º

ͼ 3. Ñ¡Ôñ Task Îļþ
µ¼Èë Task Îļþºó£¬FoCuS ÐèÒª´´½¨Ò»¸öÄ£ÐÍÎļþ£¬Ä£ÐÍÎļþÏ൱ÓÚ¹¤³ÌÎļþ£¬°üº¬ËùÓеÄ
Task ÎļþºÍ Trace Îļþ£¬ÎÒÃÇÃüÃûΪ Coverage, Èçͼ 4 Ëùʾ¡£

ͼ 4. ´´½¨ÐµÄÄ£ÐÍÎļþ
½ÓÏÂÀ´µ¯³öÒ»¸öÏûÏ¢´°¿ÚÏÔʾȫ²¿µÄ Task ÎļþÊýÄ¿£¬Õâ¸öÊýÄ¿ºÍÄúÔÚµÚÒ»²½Éú³ÉµÄ
Task ÎļþÏàͬ£¬Èçͼ 5 Ëùʾ¡£

ͼ 5. ËùʹÓÃµÄ Task ÎļþµÄÌáʾ½çÃæ
½ÓÏÂÀ´Ñ¡ÔñËùÓÐµÄ Task µÄÎļþÊôÐÔ£¬Èçͼ 6 Ëùʾ¡£

ͼ 6. Ñ¡Ôñ Task ÎļþµÄÊôÐÔ
½ÓÏÂÀ´ÒªÑ¡ÔñÉú³É±¨±í£¬Ñ¡Ôñ Code-Coverage->Hierarchy
(Drill Down). Èçͼ 7 Ëùʾ¡£

ͼ 7. Éú³É±¨±í²Ëµ¥
ÔÚÕâÒ»²½ÇëÑ¡Ôñ Trace Îļþ£¬È»ºóÔËÐÐËùÓеIJâÊÔÓÃÀýºóÉú³É Trace£¬Èçͼ
8 Ëùʾ£º
µã»÷ Add °´Å¥£¬È»ºóÑ¡Ôñ Trace ÎļþËùÔÚµÄλÖá£

ͼ 8. Ñ¡Ôñ Trace Îļþ½çÃæ
Ñ¡ÔñÍê Trace Îļþºó£¬µã»÷ Create Report °´Å¥£¬ÕâÑù¾ÍÉú³É´úÂ븲¸ÇÂʵı¨±í£¬Éú³É±¨±íµÄʱ¼ä¸ù¾Ý
Task ÎļþµÄÊýÄ¿¶ø²»Í¬£¬×îºóÉú³ÉµÄ±¨±íÈçͼ 9 Ëùʾ¡£

ͼ 9. Éú³ÉµÄ±¨±í
ͼ 9 µÚÒ»ÐÐÏÔʾ´úÂ븲¸ÇÂÊΪ 49.2%£¬ÏÔʾ×ܹ²ÓÐ 5593 ¸ö·½·¨ÐèÒª±»²âÊÔ£¬ÆäÖÐÄúµÄ²âÊÔÓÃÀý¸²¸Çµ½
2752 ¸ö·½·¨£¬Á½ÕßµÄÏà³ýµÄ½á¹û¾ÍÊÇ´úÂ븲¸ÇÂÊ¡£½Ó×ÅÔÙ¿´ºìÉ«²¿·ÖÏÔʾµÄÊÇûÓи²¸ÇµÄ´úÂ루¸²¸ÇÂÊΪ 0%£©£¬ÂÌÉ«²¿·ÖÏÔʾȫ²¿¸²¸ÇµÄ´úÂë
( ¸²¸ÇÂÊΪ 100%)£¬»ÆÉ«²¿·ÖÏÔʾµÄÊÇÖ»Óв¿·Ö´úÂë±»¸²¸Ç¡£
ͬʱÎÒÃÇ¿ÉÒÔ´´½¨²âÊÔ©¶´ (Test Hole) ±¨±í£¬Ñ¡Ôñ Functional-Coverage
-> Holes (Drill Down)£¬Èçͼ 10 Ëùʾ¡£

ͼ 10. Ñ¡Ôñ²âÊÔ©¶´²Ëµ¥
ÔÚÕâ¸ö´°¿ÚÖУ¬ÔÚÄ¿±ê·¾¶ÉÏÑ¡Ôñ Trace Îļþ£¬È»ºóµã»÷ Create
Report °´Å¥£¬ÕâÑù¾ÍÉú³É²âÊÔ©¶´±¨±í£¬Õâ¸ö±¨±íÏÔʾËùÓеÄûÓб»²âÊÔÓÃÀý¸²¸ÇµÄ´úÂ룬±¨±íͼ 11 Ëùʾ¡£

ͼ 11. Éú³É²âÊÔ©¶´±¨±í
Èç¹ûÎÒÃÇÐèÒª¿´¿´ÄÇЩ´úÂëûÓб»¸²¸Ç£¬Ö±½Óµã»÷ Substring µÄÏîĿȥ¿´ÏêϸÄÚÈÝ£¬±ÈÈçÎÒÃÇÑ¡Ôñ
delete ÏîÄ¿£¬µã»÷½øÈ¥¿´µ½Èçͼ 12 Ëùʾ¡£

ͼ 12. ²âÊÔ©¶´Ïêϸ±¨±í
ÔÚÕâ¸öͼ±íÖУ¬±ÈÈçÎÒÃÇ¿´µ½ÔÚĿ¼ com\pasw\dms\uiservice\serviceImpl\quicklaunch
ÖÐµÄ UserPreferenceServiceImpl.java Ô´Îļþ£¬¼ì²éµ½ deleteApplicationGroup
(com.pasw.dms.userprefs.TypeApplicationBookmark) ·½·¨Ã»Óб»¸²¸Ç£¬Õâ¸ö±¨±í·Ç³£Ã÷È·µØ¸æËß²âÊÔÈËÕâ¸ö·½·¨Ã»Óб»²âÊÔµ½£¬ÄÇôÎÒÃǾͼì²é²âÊÔÓÃÀý£¬ÊÇ·ñÓжÔÓ¦Õâ¸ö·½·¨µÄ²âÊÔÓÃÀý£¬½Ó×Å¿ÉÒÔ²¹³äÕâ¸ö²âÊÔÓÃÀýÒÔÌá¸ß´úÂ븲¸ÇÂÊ¡£ÒÔ´ËÀàÍÆ¼ì²éËùÓÐûÓб»¸²¸Çµ½µÄ·½·¨£¬²¢·ÖÎöºÍ²¹³äȱʧµÄ²âÊÔÓÃÀý¡£
×ܽá
ÎÒÃÇ¿ÉÒÔÃâ·ÑµØ»ñµÃ Contest ºÍ FoCuS ¹¤¾ß£¬²¢ÓÃÓÚÏîÄ¿¿ª·¢¡£ÕâÁ½¸ö¹¤¾ßʹÓ÷½·¨ºÜ¼òµ¥£¬ÕâÑù¼õÉÙѧϰ¹¤¾ßµÄʱ¼ä¿ªÏú£¬Ê¹²âÊÔÈËÔ±Ö»ÐèÒª°Ñʱ¼ä»¨ÏúÔÚ׫д²âÊÔÓÃÀý²ãÃæ¡£Contest
ÊÇÒ»¸öÓÃÓÚ¼ì²âºÍ±¨¸æ Java ´úÂ븲¸ÇÂʵĿªÔ´¹¤¾ß¡£Ëü²»µ«ÄܺܺõÄÓÃÓÚСÐÍÏîÄ¿£¬ºÜ·½±ãµÃµÃ³ö¸²¸ÇÂʱ¨¸æ£¬¶øÇÒÊÊÓÃÓÚ´óÐÍÆóÒµ¼¶±ðµÄÏîÄ¿¡£Contest
Ö§³ÖÁ½ÖÖ·½Ê½µÄ´úÂ븲¸ÇÂÊ·ÖÎö£¬Óû§¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèÒª½øÐÐÑ¡Ôñ¡£
FoCuS ¹¤¾ß¿ÉÒԺܷ½±ãµØÕë¶Ô±¾»úÒÔ¼°Ô¶³Ì»úÆ÷É쵀 Java ³ÌÐò½øÐдúÂ븲¸Ç·ÖÎö£¬·ÖÎö±¨¸æ¿É×Ô¶¯Éú³É¡£FoCuS
¿ÉÒÔ¾«È·µØÕÒ³ö±»¸²¸ÇÒÔ¼°Ã»Óб»¸²¸ÇµÄ·½·¨£¬ÒÔ¶àÖÖ±¨±íÀ´Õ¹Ê¾¸øÓû§£¬Í¨¹ý¸²¸ÇÂÊÊý¾Ý£¬¿ÉÒÔÖªµÀ²âÊÔµÃÊÇ·ñ³ä·Ö£¬²âÊÔµÃÈõµãÔÚÄÄЩ·½Ã棬½ø¶ø¿ÉÒÔÖ¸µ¼ÎÒÃÇÉè¼ÆÄܹ»Ôö¼Ó¸²¸ÇÂʵIJâÊÔÓÃÀý¡£
´úÂ븲¸ÇÂÊÔÚʵ¼ÊÓ¦ÓÃÖг£Óë×Ô¶¯²âÊÔÏà½áºÏÒÔ´ïµ½×îºÃµÄЧ¹û¡£×Ô¶¯²âÊÔ¹ý³ÌÖеĴúÂ븲¸ÇÂÊ·ÖÎö£¬ÒÔ×îСµÄ²âÊÔ´ú¼Û£¬×ȷµÄ·ÖÎö£¬À´»ñµÃµ±Ç°µÄ²âÊÔÍê³ÉÇé¿ö£¬Îª²âÊÔÈËÔ±Ìá¸ßÁËÁ¼ºÃµÄ·ÖÎö±¨¸æ£¬ÒÔ±ã²âÊÔÈËÔ±¸Ä½øºÍÐÂÔöеIJâÊÔÓÃÀý£¬´ó´óÌá¸ßÁ˻عé²âÊԵIJâÊÔЧÂÊÓëÖÊÁ¿¡£
|