Á¦ 2 Àå. StarUML ¾ÆÅ°ÅØÃÄ
ÀÌ Àå¿¡¼´Â StarUML™ÀÇ ±âº» ¾ÆÅ°ÅØÃ³¿¡ ´ëÇØ¼ ¼³¸íÇÑ´Ù. Ç÷§Æû
¾ÆÅ°ÅØÃ³¿Í Add-InÀÇ ±¸¼º ±×¸®°í ¿ÜºÎ API(External API)°¡ ¾î¶»°Ô ±¸¼ºµÇ¾î ÀÖ´ÂÁö¿¡ ´ëÇØ ÁÖ·Î ±â¼úÇÑ´Ù.
Ç÷§Æû ¾ÆÅ°ÅØÃÄ
StarUML™Àº ´Ü¼øÈ÷ Á¤ÀÇµÈ ±â´Éµé¸¸À» Á¦°øÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó »õ·Î¿î
±â´ÉµéÀ» ¾ó¸¶µçÁö Ãß°¡ÇÒ ¼ö ÀÖ´Â È®Àå °¡´ÉÇÑ ¼ÒÇÁÆ®¿þ¾î ¸ðµ¨¸µ Ç÷§ÆûÀÌ´Ù. ´ÙÀ½ ±×¸²Àº StarUML™ÀÇ
¾ÆÅ°ÅØÃ³ ±¸¼ºÀ» º¸¿©ÁØ´Ù. ÇϴûöÀº Ç÷§Æû(Platform)À» ÀǹÌÇϰí ÃÊ·Ï»öÀº È®Àå °¡´ÉÇÑ ºÎºÐ(Extensible part)À» ÀǹÌÇÑ´Ù.
È®Àå °¡´ÉÇÑ ºÎºÐÀº »ç¿ëÀÚ È¤Àº Á¦3ÀÚ¿¡ ÀÇÇØ °³¹ßµÈ ÈÄ Ç÷§Æû¿¡ Ãß°¡µÇ¾î »óÈ£ ¿¬µ¿µÉ ¼ö ÀÖ´Ù.

- Approach : Á¢±Ù¹ý(Approach)Àº ÇÁ·ÎÁ§Æ®ÀÇ ¸ðµ¨°ú ´ÙÀ̾î±×·¥ÀÇ ±âº» ±¸¼º(organization)À»
Á¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. Á¢±Ù¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº "Chapter 5. Writing Approaches"¸¦ Âü°íÇ϶ó.
- UML Profile & Notation Extension : UML ÇÁ·ÎÆÄÀÏ(Profile)Àº UMLÀÇ È®Àå ¸ÞÄ¿´ÏÁòÀ» ÅëÇØ ¼ÒÇÁÆ®¿þ¾î ¸ðµ¨¿¡ ´ëÇÑ
Ç¥Çö·ÂÀ» È®ÀåÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. UML ÇÁ·ÎÆÄÀÏ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº "Chapter 7. Writing UML
Profiles"¸¦
Âü°íÇ϶ó.
- Model Framework : ¸ðµ¨ ÇÁ·¹ÀÓ¿öÅ©(Model Framework)´Â ¼ÒÇÁÆ®¿þ¾î ¸ðµ¨À» Àç»ç¿ë °¡´ÉÇϵµ·Ï
ÇÏ¿© ´Ù¸¥ ¼ÒÇÁÆ®¿þ¾î ¸ðµ¨À» Á¤ÀÇÇÒ ¶§ ÇÔ²² »ç¿ëµÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¸ðµ¨ ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº "Chapter
6.
Writing Frameworks"¸¦ Âü°íÇ϶ó.
- Add-In COM Object : Add-In COM °³Ã¼´Â StarUML™¿¡
»õ·Î¿î ±â´É(Functionality)À» Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. Add-In COM °³Ã¼¿¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº "Chapter
9. Writing Add-In COM Object"¸¦ Âü°íÇ϶ó.
- Menu Extension : StarUML™ ¾ÖÇø®ÄÉÀ̼ÇÀÇ
¸Þ´º(¸ÞÀÎ ¸Þ´º ¹× ÆË¾÷ ¸Þ´º)¸¦ »ç¿ëÀÚ°¡ ¿øÇÏ´Â ´ë·Î Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¸Þ´º È®Àå¿¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº "Chapter
8. Extending Menu"¸¦ Âü°íÇ϶ó.
- Option Extension : StarUML™ÀÇ ¿É¼Ç
Ç׸ñµéÀ» »ç¿ëÀÚ°¡ ¿øÇÏ´Â ´ë·Î Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¿É¼Ç È®Àå¿¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
"Chapter 9. Writing Add-in COM Object"¸¦
Âü°íÇ϶ó.
- Event Subscription : StarUML™¿¡¼
¹ß»ýµÇ´Â ´Ù¾çÇÑ À̺¥Æ®¸¦ ¼ö½ÅÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. À̺¥Æ® ¼ö½Å¿¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº
"Chapter 9. Writing Add-in COM Object"¸¦
Âü°íÇ϶ó.
- External API : StarUML™¿¡¼ ¿ÜºÎ¿¡
°ø°³µÈ API·Î ´Ù¾çÇÑ ±â´É°ú Á¤º¸¿¡ ´ëÇÑ Á¢±ÙÀ» Çã¿ëÇÑ´Ù. ¿ÜºÎ API¿¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÀÌ °³¹ßÀÚ °¡À̵å Àü¹Ý¿¡ °ÉÃÄ ¼³¸íµÇ¸ç
ƯÈ÷ StarUML™ ÇÁ·Î±×·¥ ¼³Ä¡ ½Ã ¿¹Á¦ÀÇ Çϳª·Î Á¦°øµÇ´Â 'StarUML
Application Model.uml'À» Âü°íÇÒ ¼ö ÀÖ´Ù. ÀÌ¿¡ ´ëÇØ¼´Â
"Appendix A. Plastic
Application Model" ºÎºÐÀ» Âü°íÇ϶ó.
¸ðµâ ±¸¼º
¸ðµâÀº StarUML™À» È®ÀåÇÏ¿© »õ·Î¿î ±â´É°ú Ư¡µéÀ» Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï
ÇØÁÖ´Â ¼ÒÇÁÆ®¿þ¾î ÆÐŰÁöÀÌ´Ù. ¸ðµâÀº StarUML™ÀÇ ¿©·¯ °¡Áö
È®Àå ¸ÞÄ¿´ÏÁòÀ¸·Î ±¸¼ºµÇ´Âµ¥ ´ÙÀ½ÀÇ ±×¸²°ú °°ÀÌ ¿©·¯ °³ÀÇ Á¢±Ù¹ý, ¿©·¯ °³ÀÇ ¸ðµ¨ ÇÁ·¹ÀÓ¿öÅ©, ¿©·¯ °³ÀÇ UML ÇÁ·ÎÆÄÀÏ ±×¸®°í ¿©·¯ °³ÀÇ
½ºÅ©¸³Æ®(Script)µé°ú ¸Þ´º È®Àå(Menu Extension), ¿É¼Ç È®Àå(Option Extension), µµ¿ò¸»(Help) ¹×
Add-In COM Object°¡ »ç¿ëµÇ¾î ÇϳªÀÇ ÆÐŰÁö·Î ±¸¼ºµÉ ¼ö ÀÖ´Ù.

¸ðµâÀÇ ÀÀ¿ë
¸ðµâÀº ´Ù¾çÇÑ ±¸¼º ¿ä¼ÒµéÀ» Æ÷ÇÔÇÒ ¼ö Àֱ⠶§¹®¿¡ ¿©·¯ °¡ÁöÀÇ ¸ñÀû¿¡ ¸Âµµ·Ï °³¹ßµÉ ¼ö ÀÖ´Ù. ƯÁ¤ ÇÁ·Î¼¼½º³ª ¾ð¾î ±×¸®°í
Ç÷§ÆûÀ» Áö¿øÇÏ´Â °Í¿¡¼ºÎÅÍ Å¸ µµ±¸¿ÍÀÇ ¿¬µ¿°ú ±â´ÉÀÇ È®Àå µîÀ¸·Î °í·ÁµÉ ¼ö ÀÖ´Ù.
- ƯÁ¤ ÇÁ·Î¼¼½º Áö¿ø : UML Components, RUP, Catalysis, XP, ...
- ƯÁ¤ ÇÁ·Î±×·¡¹Ö ¾ð¾î Áö¿ø : C/C++, Python, C#, Visual Basic, Java, Perl,
Object Pascal, ...
- ƯÁ¤ µµ±¸¿ÍÀÇ ¿¬µ¿ : Visual SourceSafe, CVS, MS Word, Eclipse, Visual
Studio.NET, ...
- ±âŸ ±â´ÉÀÇ È®Àå : Traceability Manager, Design Patterns Support, Rule
Checking, ...
- ÀÚ½Å(ȤÀº ƯÁ¤ ȸ»ç)¸¸ÀÇ È¯°æ ±¸Ãà µî
¸ðµâÀÇ °¢ ±¸¼º ¿ä¼Ò
- Approach : Á¢±Ù¹ýÀº ÇÁ·ÎÁ§Æ® ½ÃÀÛ ½Ã¿¡ Àû¿ëµÇ¾î Ãʱ⠸𵨠±¸Á¶¸¦ °áÁ¤ Áþ´Â´Ù. ¿¹¸¦ µé¸é À̰ÍÀº ƯÁ¤
ÇÁ·Î¼¼½º¸¦ À§ÇÑ ¸ðµâÀ» ¸¸µå´Â °æ¿ì ÇÁ·Î¼¼½ºÀÇ °¢ ´Ü°è°¡ »êÃâÇÏ°Ô µÇ´Â ¸ðµ¨À» °ü¸®Çϱâ À§ÇÑ ±¸Á¶¸¦ ¹Ì¸® ¼³Á¤ÇÏ´Â ¿ëµµ·Î »ç¿ëµÉ
¼ö ÀÖ´Ù.
- Model Framework : ¸ðµ¨ ÇÁ·¹ÀÓ¿öÅ©´Â ƯÁ¤ ¾ð¾î³ª Ç÷§Æû¿¡ °ü°èµÈ ¸ðµâÀ» °³¹ßÇÏ´Â °æ¿ì¿¡ Ŭ·¡½º
¶óÀ̺귯¸®(Class Library) ȤÀº ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©(Application Framework)¸¦ Á¦ÀÛÇÒ ¼ö ÀÖ°í, ±âŸ ±âº»
¼ºñ½º(e.g. Event, Transaction, Security, Directory, ...)µéÀ» ¸ðµ¨·Î °³¹ßÇÏ¿© Ãß°¡ÇÒ ¼öµµ ÀÖÀ»
°ÍÀÌ´Ù.
- UML Profile : UML ÇÁ·ÎÆÄÀÏÀº ƯÁ¤ ÇÁ·Î¼¼½º³ª ¾ð¾î, ÇÁ·¹ÀÓ¿öÅ© µî ´Ù¾çÇÑ ¿ëµµ¿¡¼ UMLÀÇ Ç¥±â¹ýÀ»
È®ÀåÇØ¾ß Çϰųª Ãß°¡ÀûÀÎ ÇÁ·ÎÆÛƼ¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °æ¿ì¿¡ Á¤ÀÇµÉ ¼ö ÀÖ´Ù. À̰ÍÀº ¸ðµâ¿¡¼ ¸Å¿ì ±¤¹üÀ§ÇÑ ¿ªÇÒÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
- Menu Extension : Add-InÀº ´ëºÎºÐ »õ·Î¿î ±â´ÉµéÀ» Ãß°¡Çϴµ¥ °¢°¢ÀÇ ±â´ÉµéÀ» »ç¿ëÀÚ°¡ ¼±ÅÃÇÏ¿©
½ÇÇàÇÒ ¼ö ÀÖµµ·Ï StarUML™ÀÇ ¸ÞÀÎ ¸Þ´º ȤÀº ÆË¾÷ ¸Þ´º¸¦ È®ÀåÇϴµ¥
»ç¿ëµÈ´Ù. Add-In °³¹ß¿¡¼ °ÅÀÇ ÇʼöÀûÀÎ ºÎºÐÀÌ´Ù.
- Option Extension : Add-In ÀÚü¿¡ ´Ù¾çÇÑ ¼±Åà »çÇ×µéÀ» µÑ ¼ö Àִµ¥, À̰ÍÀ» Ȱ¿ëÇϸé
StarUML™ÀÇ ¿É¼Ç ´ÙÀ̾ó·Î±×¸¦ ±×´ë·Î »ç¿ëÇÏ¸é¼ ¿É¼Ç Ç׸ñÀ» ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï
ÇÑ´Ù.
- Add-In COM Object : Visual Basic, Delphi, Visual C++, C# µî°ú °°Àº ¾ð¾î
¹× µµ±¸µéÀ» Ȱ¿ëÇÏ¿© È®ÀåÇÒ ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ÁÖ·Î Ãß°¡ÀûÀÎ GUI°¡ ÇÊ¿äÇϰųª º¹ÀâÇÑ ±â´ÉÀ» ±¸ÇöÇÒ ¶§¿¡ COM °³Ã¼·Î ±¸ÇöÇÒ
¼ö ÀÖ°í °£´ÜÇÑ °ÍÀº Script·Î ÇØ°áÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº ÁÖ·Î ¿ÜºÎ API¸¦ ´Ù·ç¾î ÇÁ·Î±×·¡¹ÖÇÏ°Ô µÈ´Ù.
- Script : °£´ÜÇÑ ±â´ÉÀÇ È®ÀåÀº Scripting Language(JScript, VBScript,
Python, ...)¸¦ »ç¿ëÇÏ¿© ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº ÁÖ·Î ¿ÜºÎ API¸¦ ´Ù·ç¾î ÇÁ·Î±×·¡¹ÖÇÏ°Ô µÈ´Ù.
- Help : Add-In¿¡ °üÇÑ µµ¿ò¸»À» HTML·Î ÀÛ¼ºÇÏ¿© ¿ø°ÝÁÖ¼Ò ¶Ç´Â ·ÎÄðæ·Î·Î µî·ÏÇÒ ¼ö ÀÖ´Ù.
Open API °³¿ä
StarUML™Àº ¹æ´ëÇÑ Open API(Application
Programming Interface)¸¦ Á¦°øÇÑ´Ù. StarUML™ ¿ÜºÎ API´Â
¿ÜºÎ¿¡¼ ÇÁ·Î±×·¥ ³»ºÎÀÇ ±â´ÉÀ» È£ÃâÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ±Ô°ÝÈµÈ ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽ºÀÌ´Ù.
StarUML™ ¿ÜºÎ API´Â ¾Æ·¡ ±×¸²°ú °°ÀÌ Modeling
Elements, Non_Modeling Elements ±×¸®°í Application ObjectsÀÇ Å©°Ô 3
ºÐ·ù·Î ³ª´ ¼ö ÀÖ´Ù. Modeling Elements ºÎºÐÀº ¸ðµ¨¸µ ¿ä¼Ò¿¡ ´ëÇÑ Á¢±Ù¿¡ °üÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇϰí,
Non_Modeling Elements´Â ¸ðµ¨¸µ ¿ä¼Ò ÀÌ¿ÜÀÇ ¿©·¯ °¡Áö ¿ä¼Òµé ¹× MOF(Meta-Object Facility)¿¡ °ü·ÃµÈ
ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. Application Objects¿¡´Â ¾ÖÇø®ÄÉÀÌ¼Ç ÀÚü¸¦ ´Ù·ç´Â ´Ù¾çÇÑ ÀÎÅÍÆäÀ̽ºµéÀ» Á¦°øÇϰí ÀÖ´Ù.

Application Objects ºÎºÐ
Application Objects ºÎºÐ¿¡´Â ¾ÖÇø®ÄÉÀÌ¼Ç ÀÚü¸¦ ´Ù·ç´Â ÀÎÅÍÆäÀ̽ºµéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. ÀÌ ºÎºÐ¿¡ Æ÷ÇԵǾî ÀÖ´Â
ÀÎÅÍÆäÀ̽º·Î´Â ±âº» ÀÎÅÍÆäÀ̽ºÀÎ IPlasticApplication, ¿ä¼ÒµéÀÇ ¼±ÅÃÀ» ´Ù·ç´Â ISelectionManager,
¿ä¼ÒµéÀ» »ý¼ºÇÏ´Â IUMLFactory, ÇÁ·ÎÁ§Æ®¸¦ °ü¸®Çϱâ À§ÇÑ IProjectManager ¹× À̺¥Æ®, GUI¿¡
°üÇÑ ÀÎÅÍÆäÀ̽º µîÀÌ ÀÖ´Ù.
Modeling Elements ºÎºÐ
Modeling Elements ºÎºÐ¿¡´Â ¸ðµ¨¸µ ¿ä¼ÒµéÀ» ´Ù·ç±â À§ÇÑ ÀÎÅÍÆäÀ̽ºµéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. ÀÌ ºÎºÐÀº ´Ù½Ã ¿©·¯ °³ÀÇ
ºÎºÐÀ¸·Î ³ª´ ¼ö ÀÖ´Ù. Core Elements ºÎºÐÀº ¸ðµ¨ ¹× ºä ±×¸®°í ´ÙÀ̾î±×·¥ ¿ä¼ÒµéÀÇ ÃÖ»óÀ§ ÀÎÅÍÆäÀ̽º°¡ Á¤ÀǵǾî
ÀÖÀ¸¸ç, ExtCore Elements ºÎºÐÀº È®Àå °¡´ÉÇÑ ¸ðµ¨ ¿ä¼Òµé¿¡ °ü·ÃµÈ ÀÎÅÍÆäÀ̽º°¡ À§Ä¡Çϰí ÀÖ°í UML Model
Elements ºÎºÐÀº À̰Ϳ¡ ±â¹ÝÇÏ¿© UML ¸ðµ¨ ¿ä¼ÒµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. ±×¸®°í ViewCore Elements ºÎºÐÀº
ºä ¿ä¼ÒµéÀÇ ±âº» ÄÄÆ÷³ÍÆ®µé¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽ºµéÀÌ À§Ä¡Çϰí ÀÖ°í, UML View Elements ºÎºÐ¿¡´Â ¿ª½Ã À̰Ϳ¡ ±â¹ÝÇÏ¿©
UML ºä ¿ä¼ÒµéÀÌ Á¤ÀǵǾî ÀÖ´Ù.

Non_Modeling Elements ºÎºÐ
Non_Modeling Elements ºÎºÐ¿¡´Â ¸ðµ¨¸µ ¿ä¼ÒµéÀ» Á¦¿ÜÇÑ ±âŸ ¿ä¼Òµé¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽ºµéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. ÀÌ
ºÎºÐÀº ´Ù½Ã ¿©·¯ °³ÀÇ ºÎºÐÀ¸·Î ³ª´µ´Âµ¥ UML È®Àå ¸ÞÄ¿´ÏÁò¿¡ °ü·ÃµÈ ¿ä¼Òµé¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º¸¦ Æ÷ÇÔÇÏ´Â Extension
Elements ºÎºÐ°ú StarUML™ÀÇ ÀúÀå ÆÄÀϵéÀ» ´Ù·ç´Â
Document Elements ºÎºÐ ±×¸®°í ¸ÞŸ-¼öÁØÀÇ ¿ä¼ÒµéÀ» ´Ù·ç±â À§ÇÑ Metamodeling Elements
ºÎºÐÀ¸·Î ±¸¼ºµÈ´Ù.
