| Model Driven Crisis #1(ÇÁ·Î¸Þ½·) (2008/11/20) | ![]() |
Á¦ÀÌ·¦ Çã¿øÁø
¡¡
ÀÌ ±â»ç´Â ÇÊÀÚ°¡ MD?(?¿¡´Â A ºÙÀ̵ç D¸¦ ºÙÀÌµç ±âº»Àº MD ÀÌ´Ù)¸¦ ½ÃÀÛÇÏ°Ô µÉ ¶§ ºÎÅÍ ÇöÀç ±îÁöÀÇ À̾߱â´Ù. ÀÌŬ¸³½º ÇÁ·ÎÁ§Æ® Áß¿¡´Â EMF¿Í GMF¸¦ ¾ð±Þ ÇÑ´Ù. EMF´Â ÀÌ¹Ì Á¦ÀÌ·¦ ±â»ç·Î ´Ù·ç¾úÀ¸¹Ç·Î GMF¸¸ ÀÚ¼¼È÷ ´Ù·ê ¿¹Á¤ ÀÌ´Ù.
¡¡
ÇÁ·Î¸Þ½·
ÀºÇÏ Ã¶µµ 999 öÀÌ¿Í ¸ÞÅÚ
ÇÊÀÚ°¡ óÀ½ MD¸¦ Á¢ÇßÀ»¶§ ÀÌ·¸°Ô ¸»Çß´Ù. "ÀÌ°Ç ¹º ÇÁ·Î¸Þ½· À̾߱â¾ß", Çö½ÇÀº Áö±¸¿¡¼ ¾ö¸¶¶û ¸Ô°í »ì±âµµ Èûµçµ¥ ¾îµð ÀÖ´ÂÁöµµ ¸ð¸£´Â º°À̾߱⳪ Çϴ°ÍÀ¸·Î ´À²¸Á³´Ù. ÇÁ·Î¸Þ½·´Â ÀϺ» ¿¡´Ï¸ÞÀÌ¼Ç "ÀºÇÏ Ã¶µµ 999"¿¡¼ öÀÌ¿Í ¸ÞÅÚÀÇ ÃÖÁ¾ ¸ñÀûÁöÀÌ´Ù. 1998³âµµ¿¡ ¼ÒÇÁÆ®¿þ¾î Á¦Á¶¾÷À¸·Î ¼¼¹«¼¿¡ ½Å°í¸¦ Çϰí SI ÇÏûÀ» ¹Þ¾Æ »ç¾÷À» ²Ù¸®´ø ½Ã±âÀÌ´Ù. À̶§ À̾߱⸦ ª°Ô ÇÑ´Ù¸é ÇÏ·ç¿¡ 4~5½Ã°£ ÀÚ°í Çб³¿Í »ç¾÷À» °°ÀÌ ÇÏ´ø ½Ã±â¿´´Ù. °á±¹Àº ÇÑ´Þ°£ º´¿ø ½Å¼¼¸¦ Áö±âµµ Çß´Ù. ±×¶§ ÇÊÀÚ°¡ ÀÌÇØÇÑ MD´Â "¸ðµ¨À» Á¤ÀÇ ÇØ¼ ÀÌ ¸ðµ¨¿¡ ºÎ°¡ ÀåÄ¡¸¦ Ãß°¡ÇÏ¿© ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÑ´Ù" ¿´´Ù. ¸ðµ¨À̶ó°í ÇØºÃÀÚ °³¹ß °èȹ¼¿¡ µé¾î°¡´Â ÀԷ°ú ÀúÀå ·¹ÄÚµå ¸ðµ¨? Á¤µµ ¿´´Ù. Áö±Ýµµ ¼¼¹Ì³ª³ª °ÀÇ·Î MD¿¡ ´ëÇØ À̾߱âÇϸé ûÁߵ鵵 ±×‹šÀÇ ³ªÃ³·³ ÇÁ·Î¸Þ½· À̾߱â·Î ¹Þ¾ÆµéÀÌÁö ¾ÊÀ»±î »ý°¢ÇÑ´Ù.
À̸§Àº »ý°¢ ³ªÁö ¾ÊÁö¸¸ 1998~1999³âµµ PCÀâÁö¿¡ ÀÔ·Â ·¡Äڵ带 Á¤ÀÇ ÇÏ¸é ·¡Äڵ带 ±â¹ÝÀ¸·Î ÇÏ´Â ¾îÇø®ÄÉÀ̼Ç(ºñµð¿À Å×ÀÌÇÁ, º´¿ø µîµî)À» ÀÚµ¿À¸·Î ¸¸µé¾îÁÖ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ÆÇ¸ÅÇÏ´Â ±¤°í°¡ ÀÖ¾ú´Ù. ÀÌ ¶§¿¡´Â Çѱ¹ ¼ÒÇÁÆ®¿þ¾î »ê¾÷ÀÇ È²±Ý ½Ã´ë¿´´Ù. Áö±ÝÀÇ SI Á᫐ º¸´Ù´Â Àڱ⠺귣µå¸¦ °É°í ÆÐŰÁö¸¦ ¸¸µå´Â ȸ»ç°¡ ¸¹¾Ò´Ù. ÀÌ·± ¼ÒÇÁÆ®¿þ¾îÀÇ ÀÏÁ¾Àΰ¡ »ý°¢Çß´Ù. ÀÌ·¸°Ô MD¿ÍÀÇ ¸¸³²Àº Å« Àǹ̴ ³²±âÁö ¾Ê°í 2001³âµµ°¡ µÈ´Ù.
¡¡
ÀÌŬ¸³½º¸¦ ¸¸³ª´Ù. CBD¸¦ ¸¸³ª´Ù.
2001³âÀº ÇÊÀÚ¿¡°Ô ÀÖ¾î Å« º¯ÈÀÇ ½Ã±âÀÌ´Ù. ÇÔ¼ö¿Í ±¸Á¶Ã¼°¡ ÀüºÎÀÎ ÇÊÀÚ¿¡°Ô Class Áß½ÉÀÇ °´Ã¼ ÁöÇâÀÌ ½ÃÀ۵ȰÍÀÌ´Ù. À̶§ÀÇ Å¬·¡½º´Â ÇÊÀÚ¿¡°Ô ÇÔ¼ö°¡ µé¾î ÀÖ´Â ±¸Á¶Ã¼¿´´Ù. Àü¿¡ µð½ºÅ©¿¡ ÀúÀåÇϱâ À§Çؼ´Â ±¸Á¶Ã¼¸¦ Á¤ÀÇ Çϰí ÀÌ ±¸Á¶Ã¼¸¦ ÀÎÀÚ·Î ÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¾î¾ßÇߴµ¥, ÀÌÁ¦´Â ±¸Á¶Ã¼°¡ ½º½º·Î Àڱ⸦ ÀúÀåÇÏ´Â ÇÔ¼ö¸¦ °®À» ¼ö ÀÖ°Ô µÇ¾ú´Ù. À̸® ÇÏ¿© ¼ö¸¹Àº ÇÔ¼öµéÀº °¢ ¸ñÀû¿¡ ¸Â´Â Ŭ·¡½º·Î ºÐÈ µÇ¾î¼ ÇÁ·ÎÁ§Æ®¸¦ ÀüüÀûÀ¸·Î º¼¼ö ÀÖ´Â ¿©°ÇÀÌ µÇ¾ú´Ù. ÇÊÀÚ°¡ ´ÜÀÏ ÇÁ·ÎÁ§Æ®·Î °¡Àå ¸¹ÀÌ ÇÁ·Î±×·¥¹ÖÀ» ÇØº» ±â·ÏÀº 31¸¸ ¶óÀÎÀÌ¿´´Ù. Áö±ÝÀÇ ÀÚµ¿ »ý¼º µÇ°í stub/skeleton ±â¹ÝÀÇ OOP(Object Oriented Programming) ȯ°æ¿¡¼´Â ¸ð¸£°ÚÁö¸¸ °ú°ÅÀÇ 31¸¸ ¶óÀÎÀº ½Ç·Î ¾öû³ ¾ç À̾ú´Ù. À̶§ÀÇ ÇÁ·ÎÁ§Æ® ºÐ¼®Àº ¼ÖÁ÷È÷ ºÒ°¡´ÉÇß´Ù. À̶§¹®¿¡ ÄÚµù º¸´Ù´Â ÁÖ¼® ¿½ÉÈ÷ ´Ù´Â °³¹ßÀÚ°¡ Ãß¾Ó ¹Þ´ø ½Ã´ë¿´´Ù.
OOP¿¡ °üÇÑ Ã¥ÀÚ µéÀ» º¸¸é Àç»ç¿ëÀÇ ½±´Ù°í ½áÀִµ¥ ½ÇÁ¦·Î ³»°¡ ÀÛ¼ºÇÑ Å¬·¡½º¸¦ Àç»ç¿ëÇÑÀûÀÌ °ÅÀÌ ¾ø´Ù. 2002³âµµ Á¦ÀÌ·¦ ½ºÅ͵ðÀÇ ¼³¹® Á¶»çµµ ÀÚ½ÅÀÇ ÄÚµåÀÇ 8% Á¤µµ¸¸ Àç»ç¿ëÇϴ°ÍÀ¸·Î ³ª¿ÍÀÖ´Ù. ¿©·¯ ÀÌÀ¯°¡ ÀÖ°ÚÁö¸¸ ´ÙÀ½°ú °°Àº ÀÌÀ¯°¡ °¡Àå ÄÇ´Ù.
1. ³»°¡ ÀÛ¼ºÇÑ Å¬·¡½ºÀÇ ¿ëµµ¸¦ ÀÏÀÏÈ÷ ±â¾ïÇÏ±â ¾î·Æ´Ù.
2. ³»°¡ ÀÛ¼ºÇÑ Å¬·¡½º¸¦ °ü¸®ÇÏ±â ¾î·Æ´Ù.
°ú°Å¿¡ °¡Àå ¸¹ÀÌ ¸¸µç Ŭ·¡½º´Â ¹®ÀÚ¿ °ü·Ã Ŭ·¡½ºÀÌ´Ù. ´ëÇ¥ÀûÀ¸·Î ¿ì¸®³ª¶ó ¼ýÀÚ Ç¥±â ó·³ 1000´ÜÀ§¸¶´Ù ","¸¦ Ç¥½Ã ÇѴٰųª ÇÏ´Â °ÍµéÀÌ´Ù. ¸¸µé¶§´Â ¿Í Á¤¸» ÁÁ¾Æ ³ªÁß¿¡µµ ½á¾ßÁö Çϰí jar·Î ¸¸µé¾î ³õ´Â´Ù. ÀÌ°Ô ³¡ÀÌ´Ù. ÀÌ°Ô ¾îµð ÀÖ´ÂÁö ÀÌ ¾È¿¡ ¹¹°¡ ÀÖ´ÂÁö ¾Ë¼ö°¡ ¾ø´Ù. ¶Ç À§¿Í °°Àº ±â´ÉÀÌ ÇÊ¿äÇÏ¸é ¶Ç ¸¸µç´Ù. ±â²°ÇغÃÀÚ copy&paste¼öÁØÀÇ Àç»ç¿ëÀÎ °ÍÀÌ´Ù. ±â´ÉÀÇ ÁýÇÕÀÌ ¾Æ´Ñ ±â´É Çϳª Çϳª·Î »ç¿ë ÇÏ·Á Ç߱⠶§¹®¿¡ Àç»ç¿ëÀÌ Á¦´ë·Î µÇÁö ¾ÊÀº°ÍÀÌ´Ù. ¶ÇÇÑ ¹®¼µµ ¹®Á¦ÀÌ´Ù. ¾Æ¹«¸® ÁÖ¼®À» ¿½ÉÈ÷ ´Þ¾Æµµ ÀÌ jar¾È¿¡ ¹¹°¡ ÀÖ´ÂÁö ¾Ë ¼ö°¡ ¾ø´Ù. ÇöÀçÀÇ ±Ùº»ÀûÀÎ ¿øÀÎÀº ´ÙÀ½°ú °°¾Ò´Ù.
1. ±â´ÉÀ» ¿ø¼Ò(Ŭ·¡½º) ´ÜÀ§·Î ±â¾ï/°ü¸®/ »ç¿ë ÇÏ·Á Çß´Ù.
2. »ç¿ë Áß½ÉÀÇ ¹®¼°¡ ¾ø´Ù.
JavaDoc
2ÀÇ ¹®Á¦´Â ÀÚ¿¬ ½º·´°Ô JavaDocÀ¸·Î ÇØ°áÀÌ µÇ¾ú´Ù. ¿©ÀüÈ÷ 1ÀÇ Å¬·¡½º ´ÜÀ§·Î Á¢±ÙÇÏ·Á´Â ¹®Á¦´Â ÇØ°áµÇÁö ¾Ê¾Ò´Ù. ±â´ÉÀ» ±¸·ìº°·Î ³ª´©°í ±â´ÉÀ»±¸·ì ´ÜÀ§·Î Á¦°øÇÒ ¹æ¹ýÀÌ ÇÊ¿äÇß´Ù. A±â´ÉÀ» Á¦°ø ÇÏ´Â AŬ·¡½º°¡ ¾Æ´Ï°í A±â´ÉÀ» °¡Áö°í ÀÖ´Â A±¸·ìÀÌ´Ù. JavaDocÀÇ »ç¿ë°ú JavaDocÀ» Áö¿øÇÏ´Â IDE(ÅëÇÕ °³¹ß ȯ°æ)ÀÇ »ç¿ëÀ¸·Î ÄÚµå Àç»ç¿ëÀº ´Ü¹ø¿¡ 30% ÀÌ»ó Áõ°¡ Çß´Ù. ÀÌ‹š ¸¸³°ÍÀÌ ÀÌŬ¸³½ºÀÌ´Ù. ÀÌŬ¸³½º´Â Âü ½Å±âÇÑ ¹°°ÇÀ̾ú´Ù. Ç÷¯±×ÀÎ À̶ó´Â°Í¸¸ ¼³Ä¡ÇÏ¸é ±â´ÉÀÌ ¹«ÇÑÈ÷ ´Ã¾î³µ´Ù. ÀÌÀü¿¡µµ Ç÷¯±×ÀÎ ±â¹ÝÀÇ ¾îÇø®ÄÉÀ̼ÇÀº ÀÖ¾úÁö¸¸ ÀÌó·³ Á¤¸» ±â´ÉÀÌ ¹«ÇÑÈ÷ ´Ã¾î³ª´Â Ç÷¯±×ÀÎ ±â¹Ý ¼ÒÇÁÆ®¿þ¾î´Â óÀ½ ºÃ´Ù. ÀÌŬ¸³½º ¾È¿¡¼ Åׯ®¸®½ºµµ Çϰí MSNµµ Çϰí MP3µµ µéÀ» ¼ö ÀÖ´Ù. ÀÌŬ¸³½º´Â ÄÄÆ÷³ÍÆ® ȯ°æÀ» Àû±Ø Ȱ¿ëÇÏ¿© extension point¶ó´Â ±¸Ã¼ÀûÀÎ ±â´É È®Àå °³³ä±îÁö ¸¸µé¾ú´Ù. ÇÏÁö¸¸ ÀÌ¿Í °°Àº CBDȯ°æÀº À¯Áö º¸¼ö¿Í Àç»ç¿ë¿¡´Â µµ¿òÀÌ µÇÁö¸¸ ÃÖÃÊ ½ÇÁ¦ °³¹ß¿¡´Â Å« µµ¿òÀ» ÁÖÁö ¸øÇÑ´Ù. A ÇÁ·Î´öÆ®¸¦ ¸¸µé¶§ ±×³É ¸¸µé´ø CBD¸¦ ÀÌ¿ëÇÏ´ø °É¸®´Â ½Ã°£Àº °°´Ù¶ó´Â°ÍÀÌ´Ù.
"CBD¸¦ ±âº»À¸·ÎÇÑ Model Driven ¹æ½ÄÀº ³¡ÀÓ¾øÀÌ Áõ°¡ÇÏ´Â °³¹ß ºñ¿ë ¹®Á¦ÀÇ ±Ùº»ÀûÀÎ ÇØ°á ¹æ¹ýÀÌ´Ù."
¿©ÀüÈ÷ ³Ê¹« °³¹ß ºñ¿ëÀº ¸¹´Ù.
OOP³ª CBD ¸ðµÎ °³¹ß ºñ¿ë¿¡ ¸¹Àº µµ¿òÀ» ÁÖ¾úÁö¸¸ ½Ç°³¹ß¿¡ À־ ¿©ÀüÈ÷ °³¹ß ºñ¿ëÀº ¸¹´Ù. ¼ÒÇÁÆ®¿þ¾î °³¹ßÀº °íµµÀÇ ³ëµ¿ Áý¾àÀû ÀÛ¾÷ÀÌ´Ù. Àΰ£ÀÌ ÇØ¾ßµÉ°ÍÀÌ ³Ê¹« ¸¹´Ù. ¿©·¯ ¼Ö·ç¼ÇÀ» ÀÌ¿ëÇÏ¿© ÀÚµ¿ »ý¼ºÇÏÀÚ´Ï ¿©ÀüÈ÷ ¼ÕÈ÷ °¡´Â ºÎºÐÀÌ ¸¹°í °á°úµµ ¸¶À½¿¡ µéÁö ¾Ê´Â´Ù. ¾îÂ÷ÇÇ ¼ÕÀÌ °¡´Âµ¥ »õ ¼Ö·ç¼ÇÀ» ÀÍÈ÷´Âµ¥ °É¸®´Â ½Ã°£ÀÌ ¾Æ±õ´Ù. ³»°¡ OOP, Pattern, CBDµîÀ¸·Î »ý»ê·ÂÀ» °ÈÇØµµ ÇÁ·ÎÁ§Æ®µµ ±×¿¡ µû¶ó¼ °°ÀÌ º¹Àâµµ°¡ Áõ°¡ÇÏ´Ï °á±¹ °É¸®´Â ½Ã°£Àº ÁÙÁö ¾Ê´Â´Ù. ¿©·¯ºÐÀÌ Áö½Ä ½ÀµæÀ¸·Î »ý»ê·ÂÀÌ Áõ°¡µÆ´Ù°í ´À³¤´Ù¸é ¿©·¯ºÐÀº °ú°Å¿Í °°Àº ÀÏÀ» Çϰí Àִٴ°ÍÀ» ¶æ ÇÑ´Ù. Áï, º¹Àâµµ°¡ Áõ°¡µÈ Á»´õ ³ôÀº ¼öÁØÀÇ ÇÁ·ÎÁ§Æ®¸¦ Çϴ°ÍÀÌ ¾Æ´Ï´Ù. ³»°¡ ÇöÀçÀÇ »óÅ·Π10³âÀü¿¡ Çß´ø ÇÁ·ÎÁ§Æ®¸¦ Çß´Ù¸é ´ç¿¬È÷ ¾öû³ »ý»ê·ÂÀ» º¸Àϼö ÀÖÁö¸¸ ÇöÀçÀÇ ÇÁ·ÎÁ§Æ®¿¡´Â 10³â Àü°ú »ý»ê·ÂÀÌ ´Ù¸¦¹Ù°¡ ¾ø´Ù. »Ó¸¸ ¾Æ´Ï¶ó °³¹ß ³»¿ëµµ ³Ê¹« º¹ÀâÇØ Á³´Ù. °ú°ÅÀÇ ¸î°¡Áö ¹®¼¿Í ¼Ò½º ¸¸À¸·Î ÀμöÀΰ谡 °¡´ÉÇß´ø°Í°ú ´Þ¸® Çö´ëÀÇ ÇÁ·ÎÁ§Æ®´Â °íµµÀÇ ¹è°æ Áö½ÄÀ» ÇÊ¿ä·Î ÇÑ´Ù. 1³â ¿© Àü ÀμöÀΰ踦 À§Çؼ Ã¥À» ¾²°í ÀÖ´Â ÀÚ½ÅÀ» ¹ß°ßÇÏ°í ³î¶õÀûÀÌ ÀÖ´Ù. ÇÊÀÚ´Â Á¦ÀÌ·¦ ±â»ç ½ºÅ¸ÀÏÀÇ ±ÛµéÀ» °³¹ß ¹®¼¿¡ Æ÷ÇÔ½ÃÄÑ °øµ¿ ÀÛ¾÷ÀÚ³ª ÈÄ¿¡ À̾°¥ °³¹ßÀÚ, ³ª Àڽſ¡°Ôµµ ½ÇÁ¦ µµ¿òÀÌ µÇµµ·Ï ÇÑ´Ù. ÀÌ·¸°Ô Ãß°¡ÀûÀÎ ¹®¼°¡ ÀÖ´õ¶óµµ º¹ÀâÇÏ´Ù.
![]()
ÇÁ·Î´öÆ®¸¦ Model, View, Control·Î ³ª´©¾î º¸ÀÚ. ÀÚ½ÅÀÇ ÇÁ·ÎÁ§Æ®°¡ MVC¾ÆÅ°ÅØÃ³¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´õ¶óµµ ³ª´©¾î¸¸ º¸ÀÚ. ModelÀº ÀÔ·Â ³»¿ëÀÌ µÇ±âµµ Çϰí ÀúÀå ³»¿ëÀÌ µÇ±âµµ ÇÑ´Ù. °ú°ÅÀÇ °³¹ß¿¡µµ Model ºñÁßÀº ²Ï ÄÇ´Ù. °íÀüÀûÀÎ °³¹ß ¹®¼ ¾ç½Ä¿¡´Â ÀÔ·Â, Ãâ·Â, ÀúÀå ·¡ÄÚµå(Æ÷¸ä) ¶õÀÌ ÀÖ´Ù. ÀÚ¿¬°è »ó¿¡ Á¸ÀçÇÏ´Â ¸ðµ¨ÀÌ ¾Æ´Ñ ÆÑŶ ¸ðµ¨À̳ª µ¥ÀÌÅͺ£À̽º ¸ðµ¨¿¡´Â Â÷ÈÄ È®ÀåµîÀ» °í·ÁÇØ¼ ½Ã°£ÀÌ °É¸± ¼öµµ ÀÖÀ¸³ª ±âº»ÀûÀ¸·Î ¿ä±¸»çÇ×ÀÌ ¼ö·ÅµÇ¸é ¹Ù·Î ³ª¿À´Â °ÍÀÌ ¸ðµ¨ÀÌ´Ù. ±×¸® ½Ã°£ÀÌ °É¸®´Â ºÎºÐÀº ¾Æ´Ï´Ù. View¸¦ º¸ÀÚ. À¯ÀúÀÇ ÀÔ·ÂÀ» ¹Þ°í ÀԷ¿¡ ´ëÇÑ feedback °á°ú¸¦ º¸À̰í ÀÌ ºÎºÐÀº ²Ï °³¹ß ºñ¿ëÀÌ µç´Ù. Äڵ差µµ ¸¹Áö¸¸ »ç¿ëÀÚÀÇ º¯´ö ¶§¹®¿¡ °³¹ß Áß¿¡µµ ¸¹ÀÌ ¹Ù²ï´Ù. ControlÀº À̺¥Æ®(ÀϹÝÀûÀ¸·Î´Â À¯Àú³ª ½Ã½ºÅÛ)¿¡ µû¸¥ °á°ú¸¦ View¿¡ Å뺸Çϰí À̸¦ ¶ÇÇÑ ¸ðµ¨¿¡ ¹Ý¿µÇÏ°í ¿µ¼Ó¼º(persistence)À» µð½ºÅ© ÀúÀåÀ̳ª DB¸¦ ÅëÇØ ±â·ÏÇÑ´Ù. À̶ÇÇÑ Äڵ差, Å×½ºÆ®·® º¹Àâµµ°¡ ²Ï ³ôÀº ºÎºÐÀÌ°í ¹ö±×°¡ ¹ß»ýÇÏ¸é °¡Àå °ï¶õÇÑ ºÎºÐÀÌ´Ù. ÀÛ¾÷·®À» ºñ±³ÇÏÀÚ¸é Model < View = Control ÀÌ´Ù.
View¿Í ControlÀÇ ºñ¿ëÀ» ÁÙ¿©¾ß ½ÇÁ¦ °³¹ß ºñ¿ëÀÌ ÁÙ¾îµç´Ù
ViewÀÇ ºñ¿ë ¹®Á¦´Â ³ªÁß¿¡ À̾߱â Çϱâ·Î Çϰí Control ºñ¿ë ¹®Á¦¸¦ »ìÆì º¸ÀÚ. ControlÀÇ ¿ªÇÒÀº Å©°Ô 2°¡ÁöÀÌ´Ù.
1. ÀÎDz Çǵå¹é(ºäÀÇ À̺¥Æ®¸¦ ½ÇÁ¦ ¸ðµ¨¿¡ ¹Ý¿µÇÑ´Ù)
2. ¿µ¼Ó¼º À¯Áö
2ÀÇ ¿ªÇÒÀº Çö´ë ¼ÒÇÁÆ®¿þ¾î¿¡¼ Á¡Â÷ ÀÛ¾ÆÁö°í ÀÖ´Ù. »Ó¸¸ ¾Æ´Ï¶ó Çö´ë ¼ÒÇÁÆ®¿þ¾î¿¡ ÀÖ¾î¼ Áß°£ »ý»ê¹°·Î xmlÀ» ÀÌ¿ëÇÔÀ¸·Î½á ÀÌ xmlÀ» adaptÇϰųª convert¸¸ ÇØÁÖ¸é ¿µ¼Ó¼º À¯Áö ¿ªÇÒÀº ³¡ÀÌ ³´Ù. ÁÖ ¿ªÇÒÀº À¯Àú³ª ½Ã½ºÅÛ¿¡ ÀÇÇÑ ÀÎDz Çǵå¹éÀÎ °ÍÀÌ´Ù.
MVC Sequence
ÀÌÀü ³ªÀÇ EMF³ª GEF±Û¿¡¼ ¹àÈù¹Ù¿Í °°ÀÌ ControlÀº Model¿¡ Á¾¼ÓÀûÀÌ´Ù. ModelÀÌ µðÀÚÀεǸé Model µðÀÚÀÎÀ» ³Ñ¾î¼´Â ControlÀÌ ¸¸µé¾î Áú ¼ö´Â ¾ø´Ù´Â ¶æ ÀÌ´Ù.
À§ Ŭ·¡½º ´ÙÀ̾Ʊ׷¥À» º¸ÀÚ Natural Model¿¡ GEF¸¦ À§ÇØ Ãß°¡ Çʵå¿Í ¸Þ¼Òµå°¡ ÀÖ´Â ¸ðµ¨ Ŭ·¡½ºÀÌ´Ù. SimpleDiagramÀÌ SimpleModelÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. Áï ³»°¡ ¹«½¼ÁþÀ» Çϵç SimpleModelÀÌ SimpleDiagramÀ» Æ÷ÇÔÇÒ ÀÏÀº ¾ø´Ù´Â°ÍÀÌ´Ù. ModelÀÌ ControlÀ» Á¦ÇÑÇÑ´Ù. À§ ¸ðµ¨¿¡ µû¸¥ ControlÀ» ¼öµ¿À¸·Î ¸¸µç´Ù¸é °íÀÛÇØ¾ß ÀÎDzÀÌ SimpleModelÀÎÁö È®ÀÎÇϰí SimpleModelÀ̸é SimpleDiagram¿¡ ³Ö´Â Äڵ带 ÀÛ¼ºÇÏ°Ô µÈ´Ù. ControlÀº Model Á¾¼ÓÀûÀ̰í Á¦ÇѵDZ⠶§¹®¿¡ ModelÀ» ÅëÇÑ Control engineeringÀÌ °¡´ÉÇÏ´Ù. ControlÀ» ÅëÇÑ ModelÀÇ reverse engineeringÀº ¿Ïº®ÇÏÁö´Â ¸øÇÏ´Ù. ÀÌÀ¯´Â ½º½º·Î »ý°¢ÇØ º¸±â¸¦ ¹Ù¶õ´Ù. °á±¹Àº ÀÌ·¯ÇÑ °ü°è ¶§¹®¿¡ Model¸¸À¸·Î ControlÀ» °øÂ¥·Î ¾òÀ» ¼ö ÀÖ´Ù´Â ¸»ÀÌ´Ù.
±×·¯¸é ±× °øÂ¥·Î ¾òÀ» ¼ö ÀÖ´Â ControlÀ» ¸¸µå´Â °³¹ßÀÚµéÀº ¹Ùº¸Àΰ¡. ´ÙÀ½°ú °°Àº ÀÌÀ¯·Î ¾Æ´Ï´Ù.
1.Model Driven Software Package°¡°ÝÀº ¹«Áö ºñ½Î´Ù.
2.Model Driven Software·Î ¸¸µé¾îÁø ControlÀº Äڵ尡 ÁöÀúºÐ ÇÏ´Ù.
3.2¿Í °ü·ÃµÈ ÀÌÀ¯Àε¥ ModelÀÌ ¼öÁ¤µÇ¾î ControlÀ» ´Ù½Ã »ý¼ºÇÏ¸é ¹®Á¦°¡ ¹ß»ýÇÒ¶§°¡ ¸¹´Ù. (´ç¿¬ÇÑ À̾߱âÁö¸¸ ¿©·¯ºÐÀÌ EMF°¡ »ý¼ºÇØÁØ Äڵ带 ¼Õ´òÀ» °æ¿ì ´Ù½Ã »ý¼ºÇÏ¸é ´Ù ³¯¾Æ°£´Ù! °í°¡ÀÇ ¼ÒÇÁÆ®¿þ¾î Áß¿¡´Â ÀÌ ¹®Á¦¸¦ ÇØ°áÇѰ͵µ ÀÖÁö¸¸ ÁÖ¼®¿¡ ¼ÕÀ» ´ë°Å³ª ¼öÁ¤ÀÇ ¼±À» ³Ñ¾úÀ» °æ¿ì ¸¶Âù°¡Áö·Î ¹®Á¦°¡ ¹ß»ýÇÑ´Ù.)
¾Æ·¡´Â EMF°¡ ÀÚµ¿ »ý¼ºÇØÁØ ÄÚµå Áß ÀϺΠÀÌ´Ù.¹ü¿ë Model Driven Software·Î½áÀÇ °íÃæÀº ¾Ë°Ú´Âµ¥ ÀÌ°É º¼¶§¸¶´Ù °©°©ÇÏ´Ù. (EMF°¡ »ý¼ºÇÑ ÄÚµå´Â ±â°è¾î´Ù! ±× ¿µ¿ª¿¡ °¡Áö¸»ÀÚ.)
public void unsetCategory() {
ContentCategory oldCategory = category;
boolean oldCategoryESet = categoryESet;
category = CATEGORY_EDEFAULT;
categoryESet = false;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, GethinkPackage.CONTENT__CATEGORY, oldCategory, CATEGORY_EDEFAULT, oldCategoryESet));
}
public boolean isSetCategory() {
return categoryESet;
}
public EList getLinks() {
if (links == null) {
links = new EObjectResolvingEList(Content.class, this, GethinkPackage.CONTENT__LINKS);
}
return links;
}
public String getLink() {
return link;
}
public void setLink(String newLink) {
String oldLink = link;
link = newLink;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GethinkPackage.CONTENT__LINK, oldLink, link));
}
public Object eGet(EStructuralFeature eFeature, boolean resolve) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case GethinkPackage.CONTENT__TITLE:
return getTitle();
case GethinkPackage.CONTENT__DESCRIPTION:
return getDescription();
case GethinkPackage.CONTENT__CATEGORY:
return getCategory();
case GethinkPackage.CONTENT__LINKS:
return getLinks();
case GethinkPackage.CONTENT__LINK:
return getLink();
}
return eDynamicGet(eFeature, resolve);
}
public void eSet(EStructuralFeature eFeature, Object newValue) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case GethinkPackage.CONTENT__TITLE:
setTitle((String)newValue);
return;
case GethinkPackage.CONTENT__DESCRIPTION:
setDescription((String)newValue);
return;
case GethinkPackage.CONTENT__CATEGORY:
setCategory((ContentCategory)newValue);
return;
case GethinkPackage.CONTENT__LINKS:
getLinks().clear();
getLinks().addAll((Collection)newValue);
return;
case GethinkPackage.CONTENT__LINK:
setLink((String)newValue);
return;
}
eDynamicSet(eFeature, newValue);
}
public void eUnset(EStructuralFeature eFeature) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case GethinkPackage.CONTENT__TITLE:
setTitle(TITLE_EDEFAULT);
return;
case GethinkPackage.CONTENT__DESCRIPTION:
setDescription(DESCRIPTION_EDEFAULT);
return;
case GethinkPackage.CONTENT__CATEGORY:
unsetCategory();
return;
case GethinkPackage.CONTENT__LINKS:
getLinks().clear();
return;
case GethinkPackage.CONTENT__LINK:
setLink(LINK_EDEFAULT);
return;
}
eDynamicUnset(eFeature);
}
public boolean eIsSet(EStructuralFeature eFeature) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case GethinkPackage.CONTENT__TITLE:
return TITLE_EDEFAULT == null ? title != null : !TITLE_EDEFAULT.equals(title);
case GethinkPackage.CONTENT__DESCRIPTION:
return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
case GethinkPackage.CONTENT__CATEGORY:
return isSetCategory();
case GethinkPackage.CONTENT__LINKS:
return links != null && !links.isEmpty();
case GethinkPackage.CONTENT__LINK:
return LINK_EDEFAULT == null ? link != null : !LINK_EDEFAULT.equals(link);
}
return eDynamicIsSet(eFeature);
}
EMF¸¦ Model Driven Software·Î »ç¿ë ÇÒ °æ¿ìÀÇ ±Ç°í¾È
ÇÊÀÚ°¡ EMF¸¦ Model Driven Software·Î »ç¿ë ÇÒ °æ¿ìÀÇ ±Ç°í¾ÈÀº ´ÙÀ½°ú °°´Ù. ÀÌ¹Ì ÆÈÀÚ°¡ ¿¬ÀçÇÑ EMF±â»ç¿¡ ÀÖ´Â ³»¿ëÀÌ´Ù. ¸» ±×´ë·Î ±Ç°í¾ÈÀÌ´Ù ÀÌ ±Ç°í¸¦ ¶Ù¾î³Ñ¾î ´õ À¯¿ëÇÏ°Ô ¾µ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ´Ù¸é ¾Ë·Á´Þ¶ó 100¹ø ¸Ó¸®¸¦ Á¶¾Æ·Á °¨»çÈ÷ °¡¸£Ä§À» ¹Þ°Ú´Ù.
Level2´Ü°è¸¸ ¾²ÀÚ
EMF°¡ »ý¼ºÇØÁÖ´Â ÄÚµå´Â 3·¡¹ë·Î ³ª´«´Ù(Å×½ºÆ® ÄÚµå Á¦¿Ü)
Level1 Model Level2 Item Provider Level3 Viewer/Editor Viewer ºÒÆí ÇÏÁö¸¸ ±âº»ÀûÀÎ Viewer¸¦ EMF¸¸À¸·Îµµ »ý¼º ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ Level 1°ú Level2¸¸À» »ç¿ëÇϱ⸦ ±Ç°í ÇÑ´Ù. ÀÌÀ¯´Â Level3ÀÇ ÄÚµå´Â Á¤¸» ÁöÀúºÐÇϰí ÀÌ°É ¾µ¸¸ÇÏ°Ô °íÄ¡·Á¸é ³¡ÀÌ ¾ø±â ¶§¹®ÀÌ´Ù.
EMF°¡ »ý¼ºÇØÁØ ÄÚµå ±×´ë·Î ¾²ÀÚ
Level1,2¸¸À¸·Îµµ Model ControlÀÇ ÄÚµå´Â ¿Ïº®ÇÏ´Ù. ÆÄÀÏ ·Îµå/¼¼À̺꿡 ¾îµªÅͳª ÄÁ¹öÅ͸¦ ºÙÈ÷´Â ¼öÁØÀÇ ¼öÁ¤¸¸ Çϱ⸦ ±ÇÇÑ´Ù. ¸ðµ¨À» ÀÌ¿ëÇØ¼ Á¦³Ê·¹À̼ÇÇÏ¸é ¸ðµ¨ Ç÷¯±×Àΰú ¸ðµ¨ ÄÁÆ®·Ñ Ç÷¯±×ÀÎÀÌ µû·Î »ý¼ºµÈ´Ù. À̰ÍÀ» ¼öÁ¤ÇÒ »ý°¢À» ÇÏÁö ¸»ÀÚ. ¸ðµ¨ Á¤Àǰ¡ ¿Ïº®ÇÏ´Ù¸é À̰ÍÀ» ¼öÁ¤ÇÒ ÀÏÀº ¾ø´Ù.
ModelÀÌ ¼öÁ¤ µÉ °æ¿ì ´Ù½Ã Á¦³Ê·¹ÀÌ¼Ç ÇØ¼ ¾²ÀÚ
¿¹¸¦ µé¾î Çʵå Çϳª Ãß°¡Çß´Ù°í ±âÁ¸ ÄÚµå ¼öÁ¤Çؼ ¾²Áö ÇÏ´Â ¿À·ù¸¦ ¹üÇÏÁö ¸»ÀÚ. ´Ù½Ã Á¦³Ê·¹ÀÌ¼Ç ÇØ¼ ¾²´Â °ÍÀÌ ÈξÀ ºü¸£°í ¾ÈÀüÇÏ´Ù.
Note EMF¿¡ ´ëÇÑ ±Ã±ÝÇÔÀº ±â»ç ÇÏ´ÜÀÇ °ü·Ã Á¦ÀÌ·¦ ±â»ç¸¦ ÂüÁ¶¸¦ ÇÏ¸é µµ¿òÀÌ µÈ´Ù.
´ÙÀ½ ±â»ç¿¡¼´Â ViewerÀÇ ºñ¿ëÀ» ÁÙÀÌ´Â ¹æ¾ÈÀ» °í¹ÎÇØ º¸°í GMF¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ.
| °ü·Ã Á¦ÀÌ·¦ ±â»ç | |
| Áö´Ï°¡ EMF¸¦ ¸¸³µÀ» ¶§1 | http://www.jlab.net/news/20050722/news.htm |
| Áö´Ï°¡ EMF¸¦ ¸¸³µÀ» ¶§2 | http://www.jlab.net/news/20050727/news.htm |
| Áö´Ï°¡ EMF¸¦ ¸¸³µÀ» ¶§3 | http://www.jlab.net/news/20050729/news.htm |
| Áö´Ï°¡ EMF¸¦ ¸¸³µÀ» ¶§4 | http://www.jlab.net/news/20050804/news.htm |
| Áö´Ï°¡ EMF¸¦ ¸¸³µÀ» ¶§5 | http://www.jlab.net/news/20050809/news.htm |
| Á¤º¸ |
| ÀºÇÏöµµ 999 ´Â ¸¶Ã÷¸ðÅä ·¹ÀÌÁöÀÇ ÀÛǰ ÀÔ´Ï´Ù. |
About Author
Çã¿øÁø
Á¦ÀÌ·¦ ´ëÇ¥ ¿î¿µÀÚ, Total Eclipse ´ëÇ¥ ÀúÀÚ, Eclipse Consultant, Juliet Scandal Project Leader. ÀÌŬ¸³½º ÇÁ·ÎÁ§Æ®µéÀ» Àû±Ø ÀÌ¿ëÇØ¼ Àúºñ¿ëÀ¸·Î Äè¼Ó°³¹ßÀ» Çϴµ¥ °ü½ÉÀÌ ¸¹´Ù. Contact
www.jlab.net
ÀÌ ÄÁÅÙÃ÷´Â JPL¿¡ ÀÇÇØ¼ º¸È£ ¹Þ½À´Ï´Ù. ¿ÀÅ» ÀÚ³ª °ÇÀÇ´Â À̰÷¿¡ ÇØÁֽʽÿÀ
¡¡