| <html xmlns:v="urn:schemas-microsoft-com:vml" |
| xmlns:o="urn:schemas-microsoft-com:office:office" |
| xmlns:w="urn:schemas-microsoft-com:office:word" |
| xmlns:st1="urn:schemas-microsoft-com:office:smarttags" |
| xmlns="http://www.w3.org/TR/REC-html40"> |
| |
| <head> |
| <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> |
| <meta name=ProgId content=Word.Document> |
| <meta name=Generator content="Microsoft Word 10"> |
| <meta name=Originator content="Microsoft Word 10"> |
| <link rel=File-List href="article_files/filelist.xml"> |
| <link rel=Edit-Time-Data href="article_files/editdata.mso"> |
| <link rel=OLE-Object-Data href="article_files/oledata.mso"> |
| <!--[if !mso]> |
| <style> |
| v\:* {behavior:url(#default#VML);} |
| o\:* {behavior:url(#default#VML);} |
| w\:* {behavior:url(#default#VML);} |
| .shape {behavior:url(#default#VML);} |
| </style> |
| <![endif]--> |
| <title>Customizing UML</title> |
| <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags" |
| name="country-region"/> |
| <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags" |
| name="place"/> |
| <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags" |
| name="date"/> |
| <!--[if gte mso 9]><xml> |
| <o:DocumentProperties> |
| <o:Author>jbruck, khussey</o:Author> |
| <o:Template>Normal</o:Template> |
| <o:LastAuthor>jbruck</o:LastAuthor> |
| <o:Revision>606</o:Revision> |
| <o:TotalTime>21545</o:TotalTime> |
| <o:LastPrinted>2006-09-12T15:08:00Z</o:LastPrinted> |
| <o:Created>2004-07-06T14:17:00Z</o:Created> |
| <o:LastSaved>2008-06-23T17:59:00Z</o:LastSaved> |
| <o:Pages>1</o:Pages> |
| <o:Words>4747</o:Words> |
| <o:Characters>27058</o:Characters> |
| <o:Company>IBM</o:Company> |
| <o:Lines>225</o:Lines> |
| <o:Paragraphs>63</o:Paragraphs> |
| <o:CharactersWithSpaces>31742</o:CharactersWithSpaces> |
| <o:Version>10.6830</o:Version> |
| </o:DocumentProperties> |
| </xml><![endif]--><!--[if gte mso 9]><xml> |
| <w:WordDocument> |
| <w:SpellingState>Clean</w:SpellingState> |
| <w:GrammarState>Clean</w:GrammarState> |
| <w:Compatibility> |
| <w:ApplyBreakingRules/> |
| </w:Compatibility> |
| <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> |
| </w:WordDocument> |
| </xml><![endif]--><!--[if !mso]><object |
| classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object> |
| <style> |
| st1\:*{behavior:url(#ieooui) } |
| </style> |
| <![endif]--> |
| <link rel=Stylesheet type="text/css" media=all href="default_style.css"> |
| <style> |
| <!-- |
| /* Font Definitions */ |
| @font-face |
| {font-family:"MS Mincho"; |
| panose-1:2 2 6 9 4 2 5 8 3 4; |
| mso-font-alt:"MS Mincho"; |
| mso-font-charset:128; |
| mso-generic-font-family:modern; |
| mso-font-pitch:fixed; |
| mso-font-signature:-1610612033 1757936891 16 0 131231 0;} |
| @font-face |
| {font-family:Tahoma; |
| panose-1:2 11 6 4 3 5 4 4 2 4; |
| mso-font-charset:238; |
| mso-generic-font-family:swiss; |
| mso-font-pitch:variable; |
| mso-font-signature:1627421319 -2147483648 8 0 66047 0;} |
| @font-face |
| {font-family:Verdana; |
| panose-1:2 11 6 4 3 5 4 4 2 4; |
| mso-font-charset:238; |
| mso-generic-font-family:swiss; |
| mso-font-pitch:variable; |
| mso-font-signature:536871559 0 0 0 415 0;} |
| @font-face |
| {font-family:"\@MS Mincho"; |
| panose-1:2 2 6 9 4 2 5 8 3 4; |
| mso-font-charset:128; |
| mso-generic-font-family:modern; |
| mso-font-pitch:fixed; |
| mso-font-signature:-1610612033 1757936891 16 0 131231 0;} |
| /* Style Definitions */ |
| p.MsoNormal, li.MsoNormal, div.MsoNormal |
| {mso-style-parent:""; |
| margin:0in; |
| margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| font-size:12.0pt; |
| font-family:"Times New Roman"; |
| mso-fareast-font-family:"Times New Roman"; |
| mso-believe-normal-left:yes;} |
| h1 |
| {mso-margin-top-alt:auto; |
| margin-right:0in; |
| mso-margin-bottom-alt:auto; |
| margin-left:0in; |
| mso-pagination:widow-orphan; |
| mso-outline-level:1; |
| font-size:21.0pt; |
| mso-fareast-font-family:"MS Mincho"; |
| font-weight:bold;} |
| h2 |
| {mso-margin-top-alt:auto; |
| margin-right:0in; |
| mso-margin-bottom-alt:auto; |
| margin-left:0in; |
| mso-line-height-alt:10.5pt; |
| mso-pagination:widow-orphan; |
| mso-outline-level:2; |
| font-size:18.0pt; |
| mso-fareast-font-family:"MS Mincho"; |
| font-weight:bold;} |
| h3 |
| {mso-margin-top-alt:auto; |
| margin-right:0in; |
| mso-margin-bottom-alt:auto; |
| margin-left:0in; |
| mso-pagination:widow-orphan; |
| mso-outline-level:3; |
| font-size:14.0pt; |
| mso-fareast-font-family:"MS Mincho"; |
| font-weight:bold;} |
| h4 |
| {mso-style-link:"Heading 4 Char"; |
| mso-style-next:Normal; |
| margin-top:12.0pt; |
| margin-right:0in; |
| margin-bottom:3.0pt; |
| margin-left:0in; |
| mso-pagination:widow-orphan; |
| page-break-after:avoid; |
| mso-outline-level:4; |
| font-size:12.0pt; |
| mso-bidi-font-size:14.0pt; |
| font-family:Arial; |
| mso-bidi-font-family:"Times New Roman"; |
| font-weight:bold;} |
| p.MsoCaption, li.MsoCaption, div.MsoCaption |
| {mso-style-noshow:yes; |
| mso-style-next:Normal; |
| margin-top:6.0pt; |
| margin-right:0in; |
| margin-bottom:6.0pt; |
| margin-left:0in; |
| mso-pagination:widow-orphan; |
| font-size:10.0pt; |
| font-family:"Times New Roman"; |
| mso-fareast-font-family:"Times New Roman"; |
| font-weight:bold;} |
| a:link, span.MsoHyperlink |
| {color:blue; |
| text-decoration:underline; |
| text-underline:single;} |
| a:visited, span.MsoHyperlinkFollowed |
| {color:purple; |
| text-decoration:underline; |
| text-underline:single;} |
| p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap |
| {mso-style-noshow:yes; |
| margin:0in; |
| margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| background:navy; |
| font-size:12.0pt; |
| font-family:Tahoma; |
| mso-fareast-font-family:"Times New Roman";} |
| p |
| {mso-margin-top-alt:auto; |
| margin-right:0in; |
| mso-margin-bottom-alt:auto; |
| margin-left:0in; |
| mso-pagination:widow-orphan; |
| font-size:10.0pt; |
| mso-fareast-font-family:"Times New Roman";} |
| code |
| {mso-fareast-font-family:"Times New Roman";} |
| pre |
| {margin:0in; |
| margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; |
| font-size:10.0pt; |
| mso-fareast-font-family:"Times New Roman";} |
| span.Heading4Char |
| {mso-style-name:"Heading 4 Char"; |
| mso-style-link:"Heading 4"; |
| mso-ansi-font-size:12.0pt; |
| mso-bidi-font-size:14.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-language:EN-US; |
| mso-fareast-language:EN-US; |
| mso-bidi-language:AR-SA; |
| font-weight:bold;} |
| p.indextop, li.indextop, div.indextop |
| {mso-style-name:indextop; |
| mso-margin-top-alt:auto; |
| margin-right:0in; |
| mso-margin-bottom-alt:auto; |
| margin-left:0in; |
| mso-pagination:widow-orphan; |
| font-size:24.0pt; |
| mso-fareast-font-family:"Times New Roman"; |
| font-weight:bold;} |
| p.indexsub, li.indexsub, div.indexsub |
| {mso-style-name:indexsub; |
| mso-margin-top-alt:auto; |
| margin-right:0in; |
| mso-margin-bottom-alt:auto; |
| margin-left:0in; |
| mso-pagination:widow-orphan; |
| font-size:7.5pt; |
| mso-fareast-font-family:"Times New Roman";} |
| p.NormalWeb20, li.NormalWeb20, div.NormalWeb20 |
| {mso-style-name:"Normal \(Web\)20"; |
| margin:0in; |
| margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| font-size:12.0pt; |
| font-family:"Times New Roman"; |
| mso-fareast-font-family:"Times New Roman";} |
| span.SpellE |
| {mso-style-name:""; |
| mso-spl-e:yes;} |
| span.GramE |
| {mso-style-name:""; |
| mso-gram-e:yes;} |
| @page Section1 |
| {size:8.5in 11.0in; |
| margin:1.0in 1.25in 1.0in 1.25in; |
| mso-header-margin:.5in; |
| mso-footer-margin:.5in; |
| border:solid windowtext 1.0pt; |
| mso-border-alt:solid windowtext .5pt; |
| padding:24.0pt 24.0pt 24.0pt 24.0pt; |
| mso-paper-source:0;} |
| div.Section1 |
| {page:Section1;} |
| /* List Definitions */ |
| @list l0 |
| {mso-list-id:144593442; |
| mso-list-template-ids:1135626828;} |
| @list l1 |
| {mso-list-id:255553693; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-267987446 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l1:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l1:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l1:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l1:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l1:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l1:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l1:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l1:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l1:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l2 |
| {mso-list-id:478545422; |
| mso-list-template-ids:74583296;} |
| @list l2:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l3 |
| {mso-list-id:517741502; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-162223636 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} |
| @list l3:level1 |
| {mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l3:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l4 |
| {mso-list-id:529877076; |
| mso-list-template-ids:108792314;} |
| @list l4:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l5 |
| {mso-list-id:532773372; |
| mso-list-template-ids:-19074778;} |
| @list l5:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l6 |
| {mso-list-id:549002421; |
| mso-list-type:hybrid; |
| mso-list-template-ids:1286779964 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l6:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l6:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l6:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l6:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l6:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l6:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l6:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l6:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l6:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7 |
| {mso-list-id:589234754; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-1596542860 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l7:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l7:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l7:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l8 |
| {mso-list-id:685324530; |
| mso-list-template-ids:-978666272;} |
| @list l8:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l9 |
| {mso-list-id:719548679; |
| mso-list-template-ids:-797676954;} |
| @list l9:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l10 |
| {mso-list-id:728964541; |
| mso-list-type:hybrid; |
| mso-list-template-ids:690360822 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l10:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l10:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l10:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l10:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l10:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l10:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l10:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l10:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l10:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11 |
| {mso-list-id:771710111; |
| mso-list-type:hybrid; |
| mso-list-template-ids:556288082 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l11:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l11:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l11:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12 |
| {mso-list-id:799109081; |
| mso-list-type:hybrid; |
| mso-list-template-ids:1868734138 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l12:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l12:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l12:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13 |
| {mso-list-id:811143652; |
| mso-list-type:hybrid; |
| mso-list-template-ids:328496344 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l13:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l13:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l13:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14 |
| {mso-list-id:847869548; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-1267585690 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l14:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l14:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l14:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l15 |
| {mso-list-id:853154983; |
| mso-list-template-ids:-988006538;} |
| @list l16 |
| {mso-list-id:904529610; |
| mso-list-type:hybrid; |
| mso-list-template-ids:1076248554 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l16:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l16:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l16:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l16:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l16:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l16:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l16:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l16:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l16:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17 |
| {mso-list-id:1007514218; |
| mso-list-type:hybrid; |
| mso-list-template-ids:539417408 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l17:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l17:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l17:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l18 |
| {mso-list-id:1027103804; |
| mso-list-template-ids:1984749596;} |
| @list l18:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l19 |
| {mso-list-id:1034844399; |
| mso-list-template-ids:1746536754;} |
| @list l19:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l20 |
| {mso-list-id:1125197649; |
| mso-list-template-ids:333978974;} |
| @list l20:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l21 |
| {mso-list-id:1143425324; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-793502586 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l21:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l21:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l21:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l21:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l21:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l21:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l21:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l21:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l21:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l22 |
| {mso-list-id:1236545736; |
| mso-list-template-ids:999078962;} |
| @list l22:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l23 |
| {mso-list-id:1286883312; |
| mso-list-template-ids:277090318;} |
| @list l24 |
| {mso-list-id:1331255473; |
| mso-list-template-ids:-1595142070;} |
| @list l24:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l25 |
| {mso-list-id:1374891901; |
| mso-list-template-ids:384856622;} |
| @list l25:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l26 |
| {mso-list-id:1470051823; |
| mso-list-template-ids:-1612799752;} |
| @list l26:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l27 |
| {mso-list-id:1494178132; |
| mso-list-template-ids:1552964670;} |
| @list l27:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l28 |
| {mso-list-id:1515462140; |
| mso-list-template-ids:-337994500;} |
| @list l28:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l29 |
| {mso-list-id:1597405131; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-464640288 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l29:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l29:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l29:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l29:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l29:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l29:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l29:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l29:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l29:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l30 |
| {mso-list-id:1708675427; |
| mso-list-template-ids:297816472;} |
| @list l30:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l31 |
| {mso-list-id:1755127003; |
| mso-list-template-ids:1305669862;} |
| @list l31:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l32 |
| {mso-list-id:1760832891; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-40578748 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l32:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l32:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l32:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l32:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l32:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l32:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l32:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l32:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l32:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33 |
| {mso-list-id:1786540090; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-171164678 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l33:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l33:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l33:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34 |
| {mso-list-id:1812405428; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-643256280 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l34:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l34:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l34:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l35 |
| {mso-list-id:1875536204; |
| mso-list-template-ids:-952757150;} |
| @list l35:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l36 |
| {mso-list-id:1927689794; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-1847530706 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} |
| @list l36:level1 |
| {mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l36:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l37 |
| {mso-list-id:1941181149; |
| mso-list-template-ids:-1179713952;} |
| @list l37:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| @list l38 |
| {mso-list-id:2007048353; |
| mso-list-type:hybrid; |
| mso-list-template-ids:-875133158 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} |
| @list l38:level1 |
| {mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l38:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39 |
| {mso-list-id:2065056820; |
| mso-list-type:hybrid; |
| mso-list-template-ids:1923922954 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} |
| @list l39:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| font-family:Symbol;} |
| @list l39:level2 |
| {mso-level-tab-stop:1.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39:level3 |
| {mso-level-tab-stop:1.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39:level4 |
| {mso-level-tab-stop:2.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39:level5 |
| {mso-level-tab-stop:2.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39:level6 |
| {mso-level-tab-stop:3.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39:level7 |
| {mso-level-tab-stop:3.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39:level8 |
| {mso-level-tab-stop:4.0in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l39:level9 |
| {mso-level-tab-stop:4.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in;} |
| @list l40 |
| {mso-list-id:2114591223; |
| mso-list-template-ids:-2066551808;} |
| @list l40:level1 |
| {mso-level-number-format:bullet; |
| mso-level-text:\F0B7; |
| mso-level-tab-stop:.5in; |
| mso-level-number-position:left; |
| text-indent:-.25in; |
| mso-ansi-font-size:10.0pt; |
| font-family:Symbol;} |
| ol |
| {margin-bottom:0in;} |
| ul |
| {margin-bottom:0in;} |
| --> |
| </style> |
| <!--[if gte mso 10]> |
| <style> |
| /* Style Definitions */ |
| table.MsoNormalTable |
| {mso-style-name:"Table Normal"; |
| mso-tstyle-rowband-size:0; |
| mso-tstyle-colband-size:0; |
| mso-style-noshow:yes; |
| mso-style-parent:""; |
| mso-padding-alt:0in 5.4pt 0in 5.4pt; |
| mso-para-margin:0in; |
| mso-para-margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| font-size:10.0pt; |
| font-family:"Times New Roman";} |
| table.MsoTableSimple2 |
| {mso-style-name:"Table Simple 2"; |
| mso-tstyle-rowband-size:0; |
| mso-tstyle-colband-size:0; |
| mso-padding-alt:0in 5.4pt 0in 5.4pt; |
| mso-para-margin:0in; |
| mso-para-margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| font-size:10.0pt; |
| font-family:"Times New Roman";} |
| table.MsoTableSimple2FirstRow |
| {mso-style-name:"Table Simple 2"; |
| mso-table-condition:first-row; |
| mso-tstyle-border-bottom:1.5pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableSimple2LastRow |
| {mso-style-name:"Table Simple 2"; |
| mso-table-condition:last-row; |
| mso-tstyle-border-top:.75pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| color:windowtext; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableSimple2FirstCol |
| {mso-style-name:"Table Simple 2"; |
| mso-table-condition:first-column; |
| mso-tstyle-border-right:1.5pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableSimple2LastCol |
| {mso-style-name:"Table Simple 2"; |
| mso-table-condition:last-column; |
| mso-tstyle-border-left:.75pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableSimple2NECell |
| {mso-style-name:"Table Simple 2"; |
| mso-table-condition:ne-cell; |
| mso-tstyle-border-left:0in none windowtext; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableSimple2SWCell |
| {mso-style-name:"Table Simple 2"; |
| mso-table-condition:sw-cell; |
| mso-tstyle-border-top:0in none windowtext; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableClassic1 |
| {mso-style-name:"Table Classic 1"; |
| mso-tstyle-rowband-size:0; |
| mso-tstyle-colband-size:0; |
| border-top:solid black 1.5pt; |
| border-left:none; |
| border-bottom:solid black 1.5pt; |
| border-right:none; |
| mso-padding-alt:0in 5.4pt 0in 5.4pt; |
| mso-para-margin:0in; |
| mso-para-margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| font-size:10.0pt; |
| font-family:"Times New Roman";} |
| table.MsoTableClassic1FirstRow |
| {mso-style-name:"Table Classic 1"; |
| mso-table-condition:first-row; |
| mso-tstyle-border-bottom:.75pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-style:italic; |
| mso-bidi-font-style:italic;} |
| table.MsoTableClassic1LastRow |
| {mso-style-name:"Table Classic 1"; |
| mso-table-condition:last-row; |
| mso-tstyle-border-top:.75pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| color:windowtext;} |
| table.MsoTableClassic1FirstCol |
| {mso-style-name:"Table Classic 1"; |
| mso-table-condition:first-column; |
| mso-tstyle-border-right:.75pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial;} |
| table.MsoTableClassic1NECell |
| {mso-style-name:"Table Classic 1"; |
| mso-table-condition:ne-cell; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold; |
| mso-ansi-font-style:normal; |
| mso-bidi-font-style:normal;} |
| table.MsoTableClassic1SWCell |
| {mso-style-name:"Table Classic 1"; |
| mso-table-condition:sw-cell; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableList1 |
| {mso-style-name:"Table List 1"; |
| mso-tstyle-rowband-size:1; |
| mso-tstyle-colband-size:0; |
| border-top:1.5pt; |
| border-left:1.0pt; |
| border-bottom:1.5pt; |
| border-right:1.0pt; |
| border-color:teal; |
| border-style:solid; |
| mso-border-top-alt:1.5pt; |
| mso-border-left-alt:.75pt; |
| mso-border-bottom-alt:1.5pt; |
| mso-border-right-alt:.75pt; |
| mso-border-color-alt:teal; |
| mso-border-style-alt:solid; |
| mso-padding-alt:0in 5.4pt 0in 5.4pt; |
| mso-para-margin:0in; |
| mso-para-margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| font-size:10.0pt; |
| font-family:"Times New Roman";} |
| table.MsoTableList1FirstRow |
| {mso-style-name:"Table List 1"; |
| mso-table-condition:first-row; |
| mso-tstyle-shading:white; |
| mso-tstyle-pattern:solid silver; |
| mso-tstyle-border-bottom:.75pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| color:maroon; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold; |
| mso-ansi-font-style:italic; |
| mso-bidi-font-style:italic;} |
| table.MsoTableList1LastRow |
| {mso-style-name:"Table List 1"; |
| mso-table-condition:last-row; |
| mso-tstyle-border-top:.75pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial;} |
| table.MsoTableList1OddRow |
| {mso-style-name:"Table List 1"; |
| mso-table-condition:odd-row; |
| mso-tstyle-shading:white; |
| mso-tstyle-pattern:solid silver; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| color:windowtext;} |
| table.MsoTableList1EvenRow |
| {mso-style-name:"Table List 1"; |
| mso-table-condition:even-row; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| color:windowtext;} |
| table.MsoTableList1SWCell |
| {mso-style-name:"Table List 1"; |
| mso-table-condition:sw-cell; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| table.MsoTableList4 |
| {mso-style-name:"Table List 4"; |
| mso-tstyle-rowband-size:0; |
| mso-tstyle-colband-size:0; |
| border:solid black 1.5pt; |
| mso-padding-alt:0in 5.4pt 0in 5.4pt; |
| mso-border-insideh:.75pt solid black; |
| mso-para-margin:0in; |
| mso-para-margin-bottom:.0001pt; |
| mso-pagination:widow-orphan; |
| font-size:10.0pt; |
| font-family:"Times New Roman";} |
| table.MsoTableList4FirstRow |
| {mso-style-name:"Table List 4"; |
| mso-table-condition:first-row; |
| mso-tstyle-shading:white; |
| mso-tstyle-pattern:solid gray; |
| mso-tstyle-border-bottom:1.5pt solid black; |
| mso-tstyle-diagonal-down:0in none windowtext; |
| mso-tstyle-diagonal-up:0in none windowtext; |
| font-size:10.0pt; |
| mso-ansi-font-size:10.0pt; |
| mso-bidi-font-size:10.0pt; |
| font-family:Arial; |
| mso-ascii-font-family:Arial; |
| mso-hansi-font-family:Arial; |
| mso-bidi-font-family:Arial; |
| color:white; |
| mso-ansi-font-weight:bold; |
| mso-bidi-font-weight:bold;} |
| </style> |
| <![endif]--><![if mso 9]> |
| <style> |
| p.MsoNormal |
| {margin-left:8.5pt;} |
| </style> |
| <![endif]><!--[if gte mso 9]><xml> |
| <o:shapedefaults v:ext="edit" spidmax="59394"/> |
| </xml><![endif]--><!--[if gte mso 9]><xml> |
| <o:shapelayout v:ext="edit"> |
| <o:idmap v:ext="edit" data="1"/> |
| </o:shapelayout></xml><![endif]--> |
| </head> |
| |
| <body lang=EN-US link=blue vlink=purple style='tab-interval:.5in;margin-left: |
| 8.5pt;margin-top:14.2pt'> |
| |
| <div class=Section1> |
| |
| <p class=MsoNormal align=right style='text-align:right'><span style='font-size: |
| 10.0pt'>Copyright © 2007 International Business Machines Corp.</span><span |
| style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p> |
| |
| <div align=right> |
| |
| <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="100%" |
| style='width:100.0%;mso-cellspacing:0in;mso-padding-alt:1.5pt 1.5pt 1.5pt 1.5pt'> |
| <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes'> |
| <td valign=top style='background:#0080C0;padding:1.5pt 1.5pt 1.5pt 1.5pt'> |
| <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial; |
| color:white'> </span></b><span style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p> |
| </td> |
| </tr> |
| </table> |
| |
| </div> |
| |
| <h1><img width=120 height=86 id="_x0000_i1025" src="../../../../images/Idea.jpg" |
| align=CENTER></h1> |
| |
| <p> </p> |
| |
| <h1 align=center style='text-align:center'>Customizing UML: </h1> |
| |
| <h1 align=center style='text-align:center'>Which Technique is Right for You?</h1> |
| |
| <h1 align=center style='text-align:center'><o:p> </o:p></h1> |
| |
| <blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'> |
| |
| <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'>Summary</span></b><span |
| style='font-size:10.0pt;font-family:Arial'><br style='mso-special-character: |
| line-break'> |
| <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'> |
| <![endif]><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Extending |
| or restricting UML to suit a particular domain is not a simple task.<span |
| style='mso-spacerun:yes'> </span>Several different options are available, each |
| of which presents its own set of challenges.<span style='mso-spacerun:yes'> |
| </span>This article walks the reader through the decision making process of |
| figuring out which technique to use.<span style='mso-spacerun:yes'> </span>The |
| mechanics of actually extending UML to suit a domain will be handled in future |
| articles.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p><b>By James <span class=SpellE>Bruck</span> and <span class=SpellE>Kenn</span> |
| Hussey, IBM</b><br> |
| <st1:date Month="6" Day="19" Year="2008">June 19, 2008</st1:date> </p> |
| |
| </blockquote> |
| |
| <div class=MsoNormal align=center style='text-align:center'><span |
| style='font-size:10.0pt;font-family:Arial'> |
| |
| <hr size=2 width="100%" align=center> |
| |
| </span></div> |
| |
| <p><o:p> </o:p></p> |
| |
| <h2>Glossary</h2> |
| |
| <p>A few terms and abbreviations will be used throughout this document.</p> |
| |
| <table class=MsoTableList4 border=1 cellspacing=0 cellpadding=0 |
| style='border-collapse:collapse;border:none;mso-border-alt:solid black 1.5pt; |
| mso-yfti-tbllook:160;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-insideh: |
| .75pt solid black'> |
| <tr style='mso-yfti-irow:-1'> |
| <td width=168 valign=top style='width:125.75pt;border:solid black 1.5pt; |
| border-right:none;background:gray;mso-shading:white;mso-pattern:solid gray; |
| padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:1'><b><span style='color:white'>Term<o:p></o:p></span></b></p> |
| </td> |
| <td width=684 valign=top style='width:513.0pt;border:solid black 1.5pt; |
| border-left:none;background:gray;mso-shading:white;mso-pattern:solid gray; |
| padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:1'><b><span style='color:white'>Definition<o:p></o:p></span></b></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:0'> |
| <td width=168 valign=top style='width:125.75pt;border-top:none;border-left: |
| solid black 1.5pt;border-bottom:solid black 1.0pt;border-right:none; |
| mso-border-top-alt:solid black .75pt;mso-border-top-alt:solid black .75pt; |
| mso-border-left-alt:solid black 1.5pt;mso-border-bottom-alt:solid black .75pt; |
| padding:0in 5.4pt 0in 5.4pt'> |
| <p><b style='mso-bidi-font-weight:normal'>DSL <o:p></o:p></b></p> |
| </td> |
| <td width=684 valign=top style='width:513.0pt;border-top:none;border-left: |
| none;border-bottom:solid black 1.0pt;border-right:solid black 1.5pt; |
| mso-border-top-alt:solid black .75pt;mso-border-top-alt:solid black .75pt; |
| mso-border-bottom-alt:solid black .75pt;mso-border-right-alt:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt'> |
| <p>Domain Specific Language.<span style='mso-spacerun:yes'> </span>A |
| language designed to be useful for a specific set of tasks.<span |
| style='mso-spacerun:yes'> </span>This is in contrast to a general-purpose modeling |
| language such as UML.<span style='mso-spacerun:yes'> </span>A DSL is created |
| specifically to solve problems in a particular domain and is not intended to |
| be able to solve problems outside of it.<span style='mso-spacerun:yes'> |
| </span>DSLs are usually small, more declarative and less expressive than a |
| general-purpose language.</p> |
| <p><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:1'> |
| <td width=168 valign=top style='width:125.75pt;border-top:none;border-left: |
| solid black 1.5pt;border-bottom:solid black 1.0pt;border-right:none; |
| mso-border-top-alt:solid black .75pt;mso-border-top-alt:solid black .75pt; |
| mso-border-left-alt:solid black 1.5pt;mso-border-bottom-alt:solid black .75pt; |
| padding:0in 5.4pt 0in 5.4pt'> |
| <p><b style='mso-bidi-font-weight:normal'>MOF<o:p></o:p></b></p> |
| </td> |
| <td width=684 valign=top style='width:513.0pt;border-top:none;border-left: |
| none;border-bottom:solid black 1.0pt;border-right:solid black 1.5pt; |
| mso-border-top-alt:solid black .75pt;mso-border-top-alt:solid black .75pt; |
| mso-border-bottom-alt:solid black .75pt;mso-border-right-alt:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt'> |
| <p><st1:place>Meta</st1:place> Object Facility.<span |
| style='mso-spacerun:yes'> </span>MOF is an OMG standard for Model Driven |
| Engineering.<span style='mso-spacerun:yes'> </span>MOF is designed as a four |
| level architecture.<span style='mso-spacerun:yes'> </span>UML is considered |
| a layer 2 MOF model.<span style='mso-spacerun:yes'> </span>M3 is the |
| language used by MOF to build meta-models.</p> |
| <p><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:2'> |
| <td width=168 valign=top style='width:125.75pt;border-top:none;border-left: |
| solid black 1.5pt;border-bottom:solid black 1.5pt;border-right:none; |
| mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p><b style='mso-bidi-font-weight:normal'>OMG<o:p></o:p></b></p> |
| </td> |
| <td width=684 valign=top style='width:513.0pt;border-top:none;border-left: |
| none;border-bottom:solid black 1.5pt;border-right:solid black 1.5pt; |
| mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p>Object Management Group.<span style='mso-spacerun:yes'> </span>A |
| consortium that promotes the adoptions of standards.</p> |
| <p><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:3'> |
| <td width=168 valign=top style='width:125.75pt;border-top:none;border-left: |
| solid black 1.5pt;border-bottom:solid black 1.5pt;border-right:none; |
| mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p><b style='mso-bidi-font-weight:normal'>UML Testing Profile<o:p></o:p></b></p> |
| </td> |
| <td width=684 valign=top style='width:513.0pt;border-top:none;border-left: |
| none;border-bottom:solid black 1.5pt;border-right:solid black 1.5pt; |
| mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p>The UML testing profile can be found at: <a |
| href="http://www.omg.org/technology/documents/formal/test_profile.htm">http://www.omg.org/technology/documents/formal/test_profile.htm</a>.<span |
| style='mso-spacerun:yes'> </span>It is a demonstration of creating a DSL |
| using both a profile and MOF based approach.</p> |
| <p><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'> |
| <td width=168 valign=top style='width:125.75pt;border-top:none;border-left: |
| solid black 1.5pt;border-bottom:solid black 1.5pt;border-right:none; |
| mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p><b style='mso-bidi-font-weight:normal'>UML<o:p></o:p></b></p> |
| </td> |
| <td width=684 valign=top style='width:513.0pt;border-top:none;border-left: |
| none;border-bottom:solid black 1.5pt;border-right:solid black 1.5pt; |
| mso-border-top-alt:solid black .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p>UML2 2.1. This refers to the latest version of the UML API which is based |
| on the UML 2.1.2 specification defined by OMG</p> |
| <p>The latest draft of the UML Superstructure Specification can be found at: <a |
| href="http://www.omg.org/technology/documents/formal/uml.htm">http://www.omg.org/technology/documents/formal/uml.htm</a></p> |
| <p><o:p> </o:p></p> |
| </td> |
| </tr> |
| </table> |
| |
| <p><o:p> </o:p></p> |
| |
| <h2>Introduction</h2> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The ability |
| to customize UML to a specific domain is one of the great features of UML.<span |
| style='mso-spacerun:yes'> </span>Creating customizations allows one to |
| leverage existing modeling tools and conventions defined by the UML |
| specification while making modeling easier for the end user (and possibly less |
| abstract).<span style='mso-spacerun:yes'> </span>The type of customizations |
| required often depends on the nature of the domain and how the extended model |
| is intended to be used.<span style='mso-spacerun:yes'> </span>If one wants to |
| make simple customizations, by adding new properties to existing UML |
| meta-classes, then a light-weight extension is the way to go.<span |
| style='mso-spacerun:yes'> </span>However, if one wants to extend the behavior |
| of UML, add restrictions on certain collections, or, take advantage of the more |
| complex features of UML such as redefinition, then a heavy weight extension is |
| the way to go.<span style='mso-spacerun:yes'> </span>As the <a |
| href="http://www.omg.org/technology/documents/formal/uml.htm">superstructure |
| specification</a> further points out, there are several reasons why one may |
| want to customize a meta-model: <o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l29 level1 lfo3;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Give a terminology that is |
| adapted to a particular domain.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l29 level1 lfo3;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Give a syntax for constructs |
| that do not have a notation.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l29 level1 lfo3;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Give a different notation for |
| already existing symbols<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l29 level1 lfo3;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Add semantics that is left |
| unspecified in the meta-model.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l29 level1 lfo3;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Add semantics that do not exist |
| in the meta-model.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l29 level1 lfo3;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Add constraints that restrict |
| the way you use the meta-model.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l29 level1 lfo3;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Add information that can be |
| used when transforming a model to another model or code.<o:p></o:p></span></li> |
| </ul> |
| |
| <h2>Decisions, Decisions
</h2> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Creating |
| your own Domain Specific Language has several advantages:<span |
| style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l10 level1 lfo6;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>DSLs allow solutions to be |
| expressed at the level of abstraction of the problem domain.<span |
| style='mso-spacerun:yes'> </span>Therefore domain experts can understand, |
| validate and modify them easily.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l10 level1 lfo6;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>DSLs enhance quality, |
| productivity, maintainability, reusability.<o:p></o:p></span></li> |
| </ul> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>And some |
| disadvantages:<o:p></o:p></span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l33 level1 lfo9;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Cost of designing, implementing |
| and maintaining a DSL.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l33 level1 lfo9;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Difficulty in balancing between |
| domain-specific and general-purpose language constructs.<o:p></o:p></span></li> |
| </ul> |
| |
| <p><o:p> </o:p></p> |
| |
| <h3>Where do you go from here?</h3> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The first |
| decision that will have to be made will be to decide if you want to build on |
| top of existing UML concepts or not.<span style='mso-spacerun:yes'> |
| </span>That is to say, do you intend on extending or restrict existing UML |
| concepts and meta-types, or not.<span style='mso-spacerun:yes'> </span>This |
| can be answered by analyzing the domain space of your DSL.<span |
| style='mso-spacerun:yes'> </span>If there is much overlap between the concepts |
| in UML and those within your DSL then favor extending UML.<span |
| style='mso-spacerun:yes'> </span>If there is little overlap then favor a MOF |
| based solution.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p style='margin-left:8.5pt;page-break-after:avoid'><!--[if gte vml 1]><v:shapetype |
| id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" |
| path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> |
| <v:stroke joinstyle="miter"/> |
| <v:formulas> |
| <v:f eqn="if lineDrawn pixelLineWidth 0"/> |
| <v:f eqn="sum @0 1 0"/> |
| <v:f eqn="sum 0 0 @1"/> |
| <v:f eqn="prod @2 1 2"/> |
| <v:f eqn="prod @3 21600 pixelWidth"/> |
| <v:f eqn="prod @3 21600 pixelHeight"/> |
| <v:f eqn="sum @0 0 1"/> |
| <v:f eqn="prod @6 1 2"/> |
| <v:f eqn="prod @7 21600 pixelWidth"/> |
| <v:f eqn="sum @8 21600 0"/> |
| <v:f eqn="prod @7 21600 pixelHeight"/> |
| <v:f eqn="sum @10 21600 0"/> |
| </v:formulas> |
| <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> |
| <o:lock v:ext="edit" aspectratio="t"/> |
| </v:shapetype><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:449.25pt; |
| height:137.25pt' o:bordertopcolor="this" o:borderleftcolor="this" |
| o:borderbottomcolor="this" o:borderrightcolor="this"> |
| <v:imagedata src="article_files/image001.jpg" o:title="venndiagram"/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=599 height=183 |
| src="article_files/image001.jpg" v:shapes="_x0000_i1027"><![endif]></p> |
| |
| <p class=MsoCaption>Figure <!--[if supportFields]><span style='mso-element: |
| field-begin'></span><span style='mso-spacerun:yes'> </span>SEQ Figure \* ARABIC |
| <span style='mso-element:field-separator'></span><![endif]--><span |
| style='mso-no-proof:yes'>1</span><!--[if supportFields]><span style='mso-element: |
| field-end'></span><![endif]-->:<span style='mso-spacerun:yes'> </span>UML |
| Extension vs. MOF based</p> |
| |
| <p><o:p> </o:p></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>An example |
| of MOF based vs. profile based approaches to developing a DSL is demonstrated with |
| the UML <a href="http://www.omg.org/docs/formal/05-07-07.pdf">testing profile</a>.<span |
| style='mso-spacerun:yes'> </span>In that specification, the same DSL is |
| developed using two different techniques.<span style='mso-spacerun:yes'> |
| </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><!--[if gte vml 1]><v:shape |
| id="_x0000_i1028" type="#_x0000_t75" style='width:45.75pt;height:9.75pt'> |
| <v:imagedata src="article_files/image006.gif" o:title="tryit"/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=61 height=13 |
| src="article_files/image006.gif" v:shapes="_x0000_i1028"><![endif]><span |
| style='mso-spacerun:yes'> </span>Have a look at the UML <a |
| href="http://www.omg.org/docs/formal/05-07-07.pdf">testing profile</a>.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>This |
| article focuses on extending concepts from UML.<span |
| style='mso-spacerun:yes'> </span>If you wish to take the MOF based approach, |
| you can stop reading here and have a look at the <span class=SpellE>OMGs</span> |
| MOF standard.<span style='mso-spacerun:yes'> </span>Although the preferred |
| approach in the modeling of languages involves using UML with customizations, it |
| should be noted that, there is great value in creation of custom languages in |
| specialized circumstances.<span style='mso-spacerun:yes'> </span>UML itself |
| is defined using MOF and there exist many other languages that are defined in |
| MOF terms.<span style='mso-spacerun:yes'> </span>In fact, the Eclipse |
| Modeling Framework (EMF), the component on which UML2 component is based, has |
| the ability to generate a Java implementation for working with MOF-defined |
| languages.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <h2><o:p> </o:p></h2> |
| |
| <h2>Techniques for extending UML</h2> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>You have |
| several options when it comes to extending/constraining UML in your quest to |
| create a DSL.<span style='mso-spacerun:yes'> </span>Choosing the correct |
| method is critical for the success of your project because you will have to |
| commit to your decision and invest time and effort addressing the hurdles associated |
| with each.<span style='mso-spacerun:yes'> </span>To that end, a general |
| description of each technique and then a table summarizing the features of each |
| approach will be provided. <o:p></o:p></span></p> |
| |
| <p><img border=0 width=64 height=15 id="_x0000_i1029" |
| src="../../../../images/tip.gif"><span style='mso-spacerun:yes'> </span>As you |
| continue to read about the techniques for extending UML, you should keep the |
| following in mind:<span style='mso-spacerun:yes'> </span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l7 level1 lfo12;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>As much as possible, you should |
| be favoring the lightweight approach or the use of profiles.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l7 level1 lfo12;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>As much as possible, you should |
| be leaning away from the use of middleweight extensions.<o:p></o:p></span></li> |
| </ul> |
| |
| <p style='margin-left:.25in'><o:p> </o:p></p> |
| |
| <h3><a name="_Featherweight_extension"></a>Featherweight extension</h3> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Featherweight |
| extensions involve the use of adding keywords.<span |
| style='mso-spacerun:yes'> </span>Keywords are reserved words that normally |
| appear as text annotations attached to a UML element.<span |
| style='mso-spacerun:yes'> </span><span style='mso-spacerun:yes'> </span>The |
| superstructure specification describes the use of keywords and maintains a list |
| of predefined keywords (see <a |
| href="http://www.omg.org/technology/documents/formal/uml.htm">Superstructure |
| Specification</a> Annex B).<span style='mso-spacerun:yes'> </span>Keywords |
| are always enclosed in guillemots which serve as visual cues to more readily |
| distinguish when a keyword is being used.<span style='mso-spacerun:yes'> |
| </span><o:p></o:p></span></p> |
| |
| <p><img border=0 width=64 height=15 id="_x0000_i1030" |
| src="../../../../images/tip.gif"><span |
| style='mso-spacerun:yes'> </span>Keywords are case sensitive.</p> |
| |
| <p><i style='mso-bidi-font-style:normal'><u>Example</u></i>: </p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The meta-<span |
| class=GramE>type<span style='mso-spacerun:yes'> </span><span class=SpellE><i>uml</i></span></span><span |
| class=SpellE><i>::Interface</i></span> has a similar appearance to <span |
| class=SpellE><i>uml::Class</i></span>.<span style='mso-spacerun:yes'> |
| </span>For this reason, the keyword <<interface>> is used to |
| distinguish interfaces from other classifiers.<o:p></o:p></span></p> |
| |
| <p style='margin-left:8.5pt;page-break-after:avoid'><span |
| style='mso-spacerun:yes'> </span><!--[if gte vml 1]><v:shape id="_x0000_i1031" |
| type="#_x0000_t75" style='width:81pt;height:51pt'> |
| <v:imagedata src="article_files/image014.png" o:title=""/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=108 height=68 |
| src="article_files/image007.jpg" v:shapes="_x0000_i1031"><![endif]></p> |
| |
| <p class=MsoCaption>Figure <!--[if supportFields]><span style='mso-element: |
| field-begin'></span><span style='mso-spacerun:yes'> </span>SEQ Figure \* ARABIC |
| <span style='mso-element:field-separator'></span><![endif]--><span |
| style='mso-no-proof:yes'>2</span><!--[if supportFields]><span style='mso-element: |
| field-end'></span><![endif]-->: Use of keywords on meta-type</p> |
| |
| <p><i style='mso-bidi-font-style:normal'><u>Example</u></i>: </p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In the |
| following example, it becomes immediately obvious that keywords are critical |
| for distinguishing between different types of relationships.<o:p></o:p></span></p> |
| |
| <p style='margin-left:8.5pt;page-break-after:avoid'><!--[if gte vml 1]><v:shape |
| id="_x0000_i1032" type="#_x0000_t75" style='width:215.25pt;height:221.25pt'> |
| <v:imagedata src="article_files/image010.png" o:title=""/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=287 height=295 |
| src="article_files/image005.jpg" v:shapes="_x0000_i1032"><![endif]></p> |
| |
| <p class=MsoCaption>Figure <!--[if supportFields]><span style='mso-element: |
| field-begin'></span><span style='mso-spacerun:yes'> </span>SEQ Figure \* ARABIC |
| <span style='mso-element:field-separator'></span><![endif]--><span |
| style='mso-no-proof:yes'>3</span><!--[if supportFields]><span style='mso-element: |
| field-end'></span><![endif]-->: Use of keyword on relationships</p> |
| |
| <p>Keywords are used for four different purposes:</p> |
| |
| <ol style='margin-top:0in' start=1 type=1> |
| <li class=MsoNormal style='mso-list:l38 level1 lfo15;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>To distinguish a particular UML |
| concept (meta-class) from others sharing the same general graphical form.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l38 level1 lfo15;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>To distinguish a particular |
| kind of relationship between UML concepts from other relationships sharing |
| the same graphical form. <o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l38 level1 lfo15;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>To specify the value of some |
| modifier attached to a UML concept (meta-attribute value).<span |
| style='mso-spacerun:yes'> </span>Thus the keyword <<<span |
| class=SpellE>singleExecution</span>>> appearing within an Activity |
| signifies that the <span class=SpellE>isSingleExecution</span> attribute |
| of the Activity is true.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l38 level1 lfo15;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>To indicate standard |
| stereotype.<span style='mso-spacerun:yes'> </span>For example the |
| <<<span class=SpellE>modelLibrary</span>>> keyword attached to |
| a package identify that the package contains a set of model elements |
| intended to be shared by multiple models.<o:p></o:p></span></li> |
| </ol> |
| |
| <p>Keywords created in this manner will appear in the labels of the item when |
| viewed with the existing UML editor.<span style='mso-spacerun:yes'> |
| </span>When keywords get created, they are added as an annotation as shown |
| below.<span style='mso-spacerun:yes'> </span></p> |
| |
| <p style='margin-left:8.5pt;page-break-after:avoid'><!--[if gte vml 1]><v:shape |
| id="_x0000_i1033" type="#_x0000_t75" style='width:588pt;height:62.25pt' |
| o:bordertopcolor="this" o:borderleftcolor="this" o:borderbottomcolor="this" |
| o:borderrightcolor="this"> |
| <v:imagedata src="article_files/image002.jpg" o:title="keyword"/> |
| <w:bordertop type="single" width="4" shadow="t"/> |
| <w:borderleft type="single" width="4" shadow="t"/> |
| <w:borderbottom type="single" width="4" shadow="t"/> |
| <w:borderright type="single" width="4" shadow="t"/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=788 height=87 |
| src="article_files/image003.jpg" v:shapes="_x0000_i1033"><![endif]></p> |
| |
| <p class=MsoCaption>Figure <!--[if supportFields]><span style='mso-element: |
| field-begin'></span><span style='mso-spacerun:yes'> </span>SEQ Figure \* ARABIC |
| <span style='mso-element:field-separator'></span><![endif]--><span |
| style='mso-no-proof:yes'>4</span><!--[if supportFields]><span style='mso-element: |
| field-end'></span><![endif]-->: Keywords in a model</p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>It is important |
| to note that the use of annotations in this manner is non-standard and |
| therefore not directly supported by the UML editor.<span |
| style='mso-spacerun:yes'> </span>If you decide to export your model with |
| keywords to XMI, the annotations would be moved into an XMI extension.<span |
| style='mso-spacerun:yes'> </span>Consumers of the XMI format could |
| conceivably continue to use your keywords if they know how to work with the |
| newly created XMI elements.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The UML2 |
| API does support the use a keywords through the API:<o:p></o:p></span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l13 level1 lfo18;tab-stops:list .5in'><span |
| class=SpellE><span style='font-size:10.0pt;font-family:Arial'>Element#addKeyword</span></span><span |
| style='font-size:10.0pt;font-family:Arial'>()<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l13 level1 lfo18;tab-stops:list .5in'><span |
| class=SpellE><span style='font-size:10.0pt;font-family:Arial'>Element#getKeyword</span></span><span |
| style='font-size:10.0pt;font-family:Arial'>()<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l13 level1 lfo18;tab-stops:list .5in'><span |
| class=SpellE><span style='font-size:10.0pt;font-family:Arial'>Element#removeKeyword</span></span><span |
| style='font-size:10.0pt;font-family:Arial'>()<o:p></o:p></span></li> |
| </ul> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The use of |
| keywords is somewhat limited in that one cannot attach constraints or add |
| properties to existing meta-types.<span style='mso-spacerun:yes'> |
| </span>Keywords are strictly used as a tag to visually distinguish similar |
| items.<span style='mso-spacerun:yes'> </span>Another downside to keywords is |
| that there is no formally defined concept of a dictionary of keywords.<span |
| style='mso-spacerun:yes'> </span>The implication of this is that if one |
| defines some keywords for a particular domain, he cannot directly share them |
| with others.<span style='mso-spacerun:yes'> </span>The set of appropriate |
| keywords would have to be agreed upon and applied by the end user.<span |
| style='mso-spacerun:yes'> </span>A means of consistently displaying keywords |
| would also have to be supported by the modeling tool you are using.<span |
| style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p><o:p> </o:p></p> |
| |
| <table class=MsoTableList1 border=1 cellspacing=0 cellpadding=0 |
| style='border-collapse:collapse;border:none;mso-border-top-alt:1.5pt; |
| mso-border-left-alt:.75pt;mso-border-bottom-alt:1.5pt;mso-border-right-alt: |
| .75pt;mso-border-color-alt:teal;mso-border-style-alt:solid;mso-yfti-tbllook: |
| 128;mso-padding-alt:0in 5.4pt 0in 5.4pt'> |
| <tr style='mso-yfti-irow:0'> |
| <td width=84 valign=top style='width:63.1pt;border-top:solid teal 1.5pt; |
| border-left:solid teal 1.0pt;border-bottom:none;border-right:none;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-left-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:64'><b style='mso-bidi-font-weight:normal'>Pros<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:solid teal 1.5pt; |
| border-left:none;border-bottom:none;border-right:solid teal 1.0pt;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l16 level1 lfo21;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Adding |
| keywords is trivial<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l16 level1 lfo21;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Great |
| to visually distinguish between similar looking items.<o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:10.0pt; |
| font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'> |
| <td width=84 valign=top style='width:63.1pt;border-top:none;border-left:solid teal 1.0pt; |
| border-bottom:solid teal 1.5pt;border-right:none;mso-border-left-alt:solid teal .75pt; |
| mso-border-bottom-alt:solid teal 1.5pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:128'><b style='mso-bidi-font-weight:normal'>Cons<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:none;border-left: |
| none;border-bottom:solid teal 1.5pt;border-right:solid teal 1.0pt;mso-border-bottom-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l21 level1 lfo24;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Limited |
| functionality.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l21 level1 lfo24;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>No |
| concept of dictionary of keywords to share common keywords.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l21 level1 lfo24;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>No |
| way to validate application of keywords.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l21 level1 lfo24;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Not |
| standardized or formally defined by superstructure specification.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l21 level1 lfo24;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>No |
| way to truly extend existing meta-types by adding attributes or |
| operations<o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:10.0pt; |
| font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| </table> |
| |
| <p><o:p> </o:p></p> |
| |
| <h3><a name="_Lightweight_extension"></a>Lightweight extension<span |
| style='font-size:10.0pt'><o:p></o:p></span></h3> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Lightweight |
| extensions involve using profiles.<span style='mso-spacerun:yes'> |
| </span>Profiles are described in detail in the <a |
| href="http://www.omg.org/technology/documents/formal/uml.htm">UML |
| Superstructure specification</a> chapter 18. <o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Profiles should |
| be your first instinctive choice when deciding to extend or customize UML.<span |
| style='mso-spacerun:yes'> </span>A profile defines limited extensions to a |
| reference meta-model with the purpose of adapting the meta-model to a specific |
| platform domain.<span style='mso-spacerun:yes'> </span>The primary extension |
| construct is the Stereotype, which is defined as part of a Profile.<span |
| style='mso-spacerun:yes'> </span>Stereotypes can be used to add:<span |
| style='mso-spacerun:yes'> </span>keywords, constraints, images, and properties |
| (tagged values) to model elements.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The profile |
| mechanism is not a first-class mechanism, that is to say, it does not allow for |
| specialization through inheritance of meta-types from the referenced |
| meta-model.<span style='mso-spacerun:yes'> </span>Rather, the intention of a |
| profile is to give a straight-forward mechanism for adapting an existing |
| meta-model with constructs that are specific to a particular domain.<span |
| style='mso-spacerun:yes'> </span>Each such adaptation is grouped in a |
| profile.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p style='margin-left:8.5pt;page-break-after:avoid'><!--[if gte vml 1]><v:shape |
| id="_x0000_i1034" type="#_x0000_t75" style='width:712.5pt;height:279.75pt' |
| o:ole=""> |
| <v:imagedata src="article_files/image012.png" o:title=""/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=950 height=373 |
| src="article_files/image013.jpg" v:shapes="_x0000_i1034"><![endif]><!--[if gte mso 9]><xml> |
| <o:OLEObject Type="Embed" ProgID="MSPhotoEd.3" ShapeID="_x0000_i1034" |
| DrawAspect="Content" ObjectID="_1275734745"> |
| </o:OLEObject> |
| </xml><![endif]--></p> |
| |
| <p class=MsoCaption>Figure <!--[if supportFields]><span style='mso-element: |
| field-begin'></span><span style='mso-spacerun:yes'> </span>SEQ Figure \* ARABIC |
| <span style='mso-element:field-separator'></span><![endif]--><span |
| style='mso-no-proof:yes'>5</span><!--[if supportFields]><span style='mso-element: |
| field-end'></span><![endif]-->: Profile as defined by UML meta-model</p> |
| |
| <p>Two new concepts have been introduced into the UML2 2.1 API.<span |
| style='mso-spacerun:yes'> </span>These concepts will be mentioned here but |
| will be explored in more detail in future articles.<span |
| style='mso-spacerun:yes'> </span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l12 level1 lfo27;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Static Profile Definition:<span |
| style='mso-spacerun:yes'> </span>Newly introduced in UML2 2.1 is the |
| ability to create statically defined profiles.<span |
| style='mso-spacerun:yes'> </span>Users now have the option to generate |
| code from their profile and provide implementations for operations and |
| derived features.<o:p></o:p></span></li> |
| </ul> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l12 level1 lfo27;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>OCL Integration:<span |
| style='mso-spacerun:yes'> </span>Users can specify invariant constraints |
| or operation bodies in OCL and have code generated from the expressions |
| entered in the UML model.<span style='mso-spacerun:yes'> |
| </span>Validation of constraints created on stereotypes is possible after |
| the stereotype has been applied.<o:p></o:p></span></li> |
| </ul> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:.25in'><span style='font-size:10.0pt; |
| font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Newly |
| introduced in UML 2.0 is the notion of strict application of a profile.<span |
| style='mso-spacerun:yes'> </span>This is a means of specifying the kinds of |
| meta-types that your DSL is concerned with.<span style='mso-spacerun:yes'> |
| </span>For example, say you were really only interested in Classes, Properties |
| and Operations but you only wanted to specify a stereotype for Class.<span |
| style='mso-spacerun:yes'> </span>You could create meta-class reference to |
| Property and Operation.<span style='mso-spacerun:yes'> </span>Then when |
| applying your profile, you could specify a strict application.<span |
| style='mso-spacerun:yes'> </span>UML editors should respect the strict |
| attribute of the profile application and remove all other UML concepts from |
| palettes etc and just leave those that your DSL is concerned with.<span |
| style='mso-spacerun:yes'> </span>This is a feature that may or may not be |
| supported by a given tool.<span style='mso-spacerun:yes'> </span>Without a |
| strict application of a profile, all other UML concepts would be available.<o:p></o:p></span></p> |
| |
| <p><o:p> </o:p></p> |
| |
| <table class=MsoTableList1 border=1 cellspacing=0 cellpadding=0 |
| style='border-collapse:collapse;border:none;mso-border-top-alt:1.5pt; |
| mso-border-left-alt:.75pt;mso-border-bottom-alt:1.5pt;mso-border-right-alt: |
| .75pt;mso-border-color-alt:teal;mso-border-style-alt:solid;mso-yfti-tbllook: |
| 128;mso-padding-alt:0in 5.4pt 0in 5.4pt'> |
| <tr style='mso-yfti-irow:0'> |
| <td width=84 valign=top style='width:63.1pt;border-top:solid teal 1.5pt; |
| border-left:solid teal 1.0pt;border-bottom:none;border-right:none;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-left-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:64'><b style='mso-bidi-font-weight:normal'>Pros<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:solid teal 1.5pt; |
| border-left:none;border-bottom:none;border-right:solid teal 1.0pt;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Easy |
| to create such extensions<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Well |
| described with documentation in Superstructure Specification<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Standard |
| means to define icons<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Well |
| defined display options.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Application |
| of profiles and how to use them is well defined.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Can |
| add structure<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Low |
| development cost<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Leverage |
| existing UML editors<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l11 level1 lfo31;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Ease |
| of deployment.<o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:10.0pt; |
| font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'> |
| <td width=84 valign=top style='width:63.1pt;border-top:none;border-left:solid teal 1.0pt; |
| border-bottom:solid teal 1.5pt;border-right:none;mso-border-left-alt:solid teal .75pt; |
| mso-border-bottom-alt:solid teal 1.5pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:128'><b style='mso-bidi-font-weight:normal'>Cons<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:none;border-left: |
| none;border-bottom:solid teal 1.5pt;border-right:solid teal 1.0pt;mso-border-bottom-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l34 level1 lfo34;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Cannot |
| specify behavior<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l34 level1 lfo34;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Only |
| possibly to add new constraints, not to remove constraints.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l34 level1 lfo34;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Clumsy |
| programmatic usage<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l34 level1 lfo34;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Cannot |
| modify existing structures<o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:10.0pt; |
| font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| </table> |
| |
| <p><o:p> </o:p></p> |
| |
| <h3><a name="_Hlt174419544"></a><a name="_Middleweight_extension"></a>Middleweight |
| extension</h3> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The |
| middleweight extension mechanism extends UML through specialization of UML |
| meta-types.<span style='mso-spacerun:yes'> </span>Middleweight extensions can |
| be considered a first class extension mechanism and as such expose advanced |
| building block concepts such as sub-setting and redefinition (concepts explored |
| later in this document).<o:p></o:p></span></p> |
| |
| <p>Middleweight extensions have two main components: </p> |
| |
| <ol style='margin-top:0in' start=1 type=1> |
| <li class=MsoNormal style='mso-list:l3 level1 lfo37;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Extend by referencing <span |
| class=SpellE><i>UML.metamodel.uml</i></span> (the merged UML <span |
| class=SpellE>metamodel</span>).<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l3 level1 lfo37;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>To that merged set of |
| meta-types, add your own domain specific types.<o:p></o:p></span></li> |
| </ol> |
| |
| <p>We make the distinction between middleweight and heavyweight based on what |
| gets extended.</p> |
| |
| <p>Even though middleweight extensions are initially easier to create (because |
| you omit the Language unit merge step in heavyweight extensions) middleweight |
| extensions are discouraged for two main reasons.<span |
| style='mso-spacerun:yes'> </span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l14 level1 lfo40;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>You create dependency on a |
| specific version of UML.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l14 level1 lfo40;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>You extend all of UML even if |
| you may only be interested in certain aspects of it.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l14 level1 lfo40;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Implementation classes in the |
| specialized meta-model reference internal UML implementation classes and |
| result in compiler warnings.<o:p></o:p></span></li> |
| </ul> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>If you |
| require the flexibility of defining behavior, sub-classing or redefining |
| existing collections, then you should favor <a href="#_Heavyweight_extension">heavyweight |
| extensions</a>.<span style='mso-spacerun:yes'> </span>If your DSL on the |
| other hand has much overlap with UML, you could consider using middleweight |
| extensions.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>It is |
| important to stress that when using such extensions,<span |
| style='mso-spacerun:yes'> </span>you will be creating a dependency on |
| open-source UML implementation and the internal .implementation classes.<span |
| style='mso-spacerun:yes'> </span>That is to say, if UML changes in some way, |
| your newly introduced model elements that extend them might also have to change |
| <o:p></o:p></span></p> |
| |
| <p><o:p> </o:p></p> |
| |
| <table class=MsoTableList1 border=1 cellspacing=0 cellpadding=0 |
| style='border-collapse:collapse;border:none;mso-border-top-alt:1.5pt; |
| mso-border-left-alt:.75pt;mso-border-bottom-alt:1.5pt;mso-border-right-alt: |
| .75pt;mso-border-color-alt:teal;mso-border-style-alt:solid;mso-yfti-tbllook: |
| 128;mso-padding-alt:0in 5.4pt 0in 5.4pt'> |
| <tr style='mso-yfti-irow:0'> |
| <td width=84 valign=top style='width:63.1pt;border-top:solid teal 1.5pt; |
| border-left:solid teal 1.0pt;border-bottom:none;border-right:none;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-left-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:64'><b style='mso-bidi-font-weight:normal'>Pros<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:solid teal 1.5pt; |
| border-left:none;border-bottom:none;border-right:solid teal 1.0pt;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l32 level1 lfo43;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Easier |
| than heavyweight to create initially.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l32 level1 lfo43;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Easy |
| for end user to use programmatically.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l32 level1 lfo43;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Can |
| add and modify behavior<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l32 level1 lfo43;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Can |
| add and modify structure<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l32 level1 lfo43;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Can |
| add and modify constraints<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l32 level1 lfo43;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>API |
| is domain specific<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l32 level1 lfo43;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>First |
| class extension mechanism<o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'> |
| <td width=84 valign=top style='width:63.1pt;border-top:none;border-left:solid teal 1.0pt; |
| border-bottom:solid teal 1.5pt;border-right:none;mso-border-left-alt:solid teal .75pt; |
| mso-border-bottom-alt:solid teal 1.5pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:128'><b style='mso-bidi-font-weight:normal'>Cons<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:none;border-left: |
| none;border-bottom:solid teal 1.5pt;border-right:solid teal 1.0pt;mso-border-bottom-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l17 level1 lfo46;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Creates |
| dependence on specific version of UML.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l17 level1 lfo46;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Difficult |
| to maintain especially if UML specification changes.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l17 level1 lfo46;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>High |
| development cost<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l17 level1 lfo46;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>File |
| format is non-standard<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l17 level1 lfo46;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>End users |
| must know about 2 factories for creating elements: One factory for |
| creating types from the extended meta-model and one defined by the |
| extension.</span><span style='font-family:Arial'><o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| </table> |
| |
| <p><o:p> </o:p></p> |
| |
| <h3><a name="_Heavyweight_extension"></a>Heavyweight extension</h3> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Heavyweight |
| extensions involve reuse by copy and merge instead of reuse by specializing |
| types from a referenced meta-model as with middleweight extensions.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Creating |
| heavyweight extensions involve 2 steps: <o:p></o:p></span></p> |
| |
| <ol style='margin-top:0in' start=1 type=1> |
| <li class=MsoNormal style='mso-list:l36 level1 lfo49;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Select the language units you |
| wish to extend and merge them. <span style='mso-spacerun:yes'> </span><o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l36 level1 lfo49;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>To that merged set of |
| meta-types, add your own domain specific types.<o:p></o:p></span></li> |
| </ol> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Although |
| the concept and terminology for heavyweight extension is not mentioned in the |
| official UML specification, the notion of using package merge to define languages |
| is mentioned and forms the bases for constructing UML itself.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>So why |
| exactly would you even consider a heavyweight extension?<span |
| style='mso-spacerun:yes'> </span>The simple answer is: ability to customize |
| and specify behavior.<span style='mso-spacerun:yes'> </span>With |
| heavyweight extensions you have access to advanced concepts such as sub-setting |
| and redefinition that are used to create UML itself.<span |
| style='mso-spacerun:yes'> </span>Support for these concepts is handled |
| through the customized UML code generator.<span style='mso-spacerun:yes'> |
| </span>The details of these concepts will be explored in a future article but |
| the basics are as follows:</span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Heavyweight |
| extensions are great if you want to allow users to work programmatically with |
| your code by presenting a very clean API or if you want to add or customize |
| behavior.<span style='mso-spacerun:yes'> </span>The downside to heavyweight |
| extension is that it is the most costly approach:<span |
| style='mso-spacerun:yes'> </span>it is the most difficult to develop and its |
| overall usefulness might be limited to those who have intimate knowledge of |
| your API and customizations.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Deploying |
| heavyweight extensions so that user may programmatically create instances of your |
| DSL involve deploying all the <span class=SpellE>plugins</span> involved as |
| opposed to a deploying a single profile as with lightweight extensions.<span |
| style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <table class=MsoTableList1 border=1 cellspacing=0 cellpadding=0 |
| style='border-collapse:collapse;border:none;mso-border-top-alt:1.5pt; |
| mso-border-left-alt:.75pt;mso-border-bottom-alt:1.5pt;mso-border-right-alt: |
| .75pt;mso-border-color-alt:teal;mso-border-style-alt:solid;mso-yfti-tbllook: |
| 128;mso-padding-alt:0in 5.4pt 0in 5.4pt'> |
| <tr style='mso-yfti-irow:0'> |
| <td width=84 valign=top style='width:63.1pt;border-top:solid teal 1.5pt; |
| border-left:solid teal 1.0pt;border-bottom:none;border-right:none;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-left-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:64'><b style='mso-bidi-font-weight:normal'>Pros<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:solid teal 1.5pt; |
| border-left:none;border-bottom:none;border-right:solid teal 1.0pt;mso-border-top-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;background:silver; |
| mso-shading:white;mso-pattern:solid silver;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Easy |
| for end users to use programmatically (only 1 meta-model in the end)<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Ability |
| to override or customize operations and behavior<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Selectively |
| reuse UML concepts as required.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Constraints |
| are enforced at compile time ( type safety )<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>API |
| is domain specific<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Can |
| add behavior/constraints/structure<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>Isolate |
| yourself from changes to UML meta-model (you merge a copy into your |
| meta-model)<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l1 level1 lfo52;tab-stops:list .5in; |
| mso-yfti-cnfc:64'><span style='font-size:10.0pt;font-family:Arial'>You |
| can stratify your own specialized meta-model for different levels of |
| abstraction and DSL concerns.<o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:64'><span style='font-size:10.0pt; |
| font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'> |
| <td width=84 valign=top style='width:63.1pt;border-top:none;border-left:solid teal 1.0pt; |
| border-bottom:solid teal 1.5pt;border-right:none;mso-border-left-alt:solid teal .75pt; |
| mso-border-bottom-alt:solid teal 1.5pt;padding:0in 5.4pt 0in 5.4pt'> |
| <p style='mso-yfti-cnfc:128'><b style='mso-bidi-font-weight:normal'>Cons<o:p></o:p></b></p> |
| </td> |
| <td width=756 valign=top style='width:567.0pt;border-top:none;border-left: |
| none;border-bottom:solid teal 1.5pt;border-right:solid teal 1.0pt;mso-border-bottom-alt: |
| solid teal 1.5pt;mso-border-right-alt:solid teal .75pt;padding:0in 5.4pt 0in 5.4pt'> |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l39 level1 lfo55;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Costly |
| development (more complex than profiles)<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l39 level1 lfo55;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Difficult |
| to develop such an extension <o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l39 level1 lfo55;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Difficult |
| to maintain (re-merge)<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l39 level1 lfo55;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Slightly |
| more difficult to deploy.<span style='mso-spacerun:yes'> |
| </span>Involves deploying all <span class=SpellE>plugins</span> |
| involved.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l39 level1 lfo55;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Cannot |
| modify existing behavior<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l39 level1 lfo55;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>File |
| format is non-standard<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l39 level1 lfo55;tab-stops:list .5in; |
| mso-yfti-cnfc:128'><span style='font-size:10.0pt;font-family:Arial'>Lose |
| interoperability with other UML based tools since we have a new |
| meta-model.<o:p></o:p></span></li> |
| </ul> |
| <p class=MsoNormal style='mso-yfti-cnfc:128'><span style='font-size:10.0pt; |
| font-family:Arial'><o:p> </o:p></span></p> |
| </td> |
| </tr> |
| </table> |
| |
| <p><o:p> </o:p></p> |
| |
| <h3>First Class extension concepts</h3> |
| |
| <h4>Subsets</h4> |
| |
| <p class=MsoNormal>The UML specification describes <span class=SpellE>subsetting</span> |
| in the following way: </p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><span |
| class=SpellE>Subsetting</span> represents the familiar set-theoretic concept. |
| It is applicable to the collections represented by association ends, not to the |
| association itself. It means that the <span class=SpellE>subsetting</span> |
| association end is a collection that is either equal to the collection that it |
| is <span class=SpellE>subsetting</span> or a proper subset of that collection. |
| (Proper <span class=SpellE>subsetting</span> implies that the superset is not |
| empty and that the subset has fewer members.) <span class=SpellE>Subsetting</span> |
| is a relationship in the domain of extensional semantics. <i>Specialization </i>is, |
| in contrast to <span class=SpellE>subsetting</span>, a relationship in the |
| domain of intentional semantics, which is to say it characterized the criteria |
| whereby membership in the collection is defined, not by the membership. One |
| classifier may specialize another by adding or redefining features; a set |
| cannot specialize another set. A naïve but popular and useful view has it that |
| as the classifier becomes more specialized, the extent of the collection(s) of |
| classified objects narrows. In the case of associations, <span class=SpellE>subsetting</span> |
| ends, according to this view, correlates positively with specializing the |
| association. This view falls down because it ignores the case of classifiers which, |
| for whatever reason, denote the empty set. Adding new criteria for membership |
| does not narrow the extent if the classifier already has a null denotation.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>A property |
| may be marked as the subset of another, as long as every element in the context |
| of the <span class=SpellE>subsetting</span> property conforms to the |
| corresponding element in the context of the <span class=SpellE>subsetted</span> |
| property.<span style='mso-spacerun:yes'> </span>The UML2 API and code |
| generator provide support for Java code to enforce subset constraints.<o:p></o:p></span></p> |
| |
| <p><span class=SpellE>Subsetting</span> comes in two basic flavors: </p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l6 level1 lfo58;tab-stops:list .5in'><b><span |
| style='font-size:10.0pt;font-family:Arial'>Derived subsets<o:p></o:p></span></b></li> |
| </ul> |
| |
| <p class=MsoNormal style='margin-left:25.5pt'><span style='font-size:10.0pt; |
| font-family:Arial'>If a property is a derived subset, then its value or values |
| can be computed from the value of one or more other properties.<span |
| style='mso-spacerun:yes'> </span>That is to say that the values exist in some |
| form somewhere else in the meta-model and that those values can be |
| computed.<span style='mso-spacerun:yes'> </span>Since the values for derived |
| subsets are calculated, users cannot add directly to such collections.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:.25in'><span |
| style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:8.5pt'><span |
| style='font-size:10.0pt;font-family:Arial'><img border=0 width=64 height=15 |
| id="_x0000_i1035" src="../../../../images/tip.gif">Derived properties are often |
| specified to be read-only.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:17.0pt'><i |
| style='mso-bidi-font-style:normal'><u><span style='font-size:10.0pt;font-family: |
| Arial'>Example:</span></u></i><span style='font-size:10.0pt;font-family:Arial'> |
| <o:p></o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:53.0pt'><span class=SpellE><i><span |
| style='font-size:10.0pt;font-family:Arial'>Package.nestedPackage</span></i></span><span |
| style='font-size:10.0pt;font-family:Arial'> is a derived subset of <span |
| class=SpellE><i>Package.packageableElement</i></span>.<span |
| style='mso-spacerun:yes'> </span>In this case derivation is based on some |
| aspect of the property, namely, the type.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l6 level1 lfo58;tab-stops:list .5in'><b><span |
| style='font-size:10.0pt;font-family:Arial'>Non-derived subsets<o:p></o:p></span></b></li> |
| </ul> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:.25in'><span |
| style='font-size:10.0pt;font-family:Arial'>Non-derived subsets also apply to properties |
| but such properties contain values that cannot be calculated directly from |
| existing features.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:.25in'><span |
| style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:8.5pt'><span |
| style='font-size:10.0pt;font-family:Arial'><img border=0 width=64 height=15 |
| id="_x0000_i1036" src="../../../../images/tip.gif"><span |
| style='mso-spacerun:yes'> </span>Non-derived subsets must be writable.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:8.5pt'><span |
| style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:8.5pt;text-indent:8.5pt'><i |
| style='mso-bidi-font-style:normal'><u><span style='font-size:10.0pt;font-family: |
| Arial'>Example:</span></u></i><span style='font-size:10.0pt;font-family:Arial'><span |
| style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal style='margin-left:.5in;text-indent:19.0pt'><span |
| class=SpellE><i><span style='font-size:10.0pt;font-family:Arial'>Operation::precondition</span></i></span><span |
| style='font-size:10.0pt;font-family:Arial'> subset <span class=SpellE><i>Namespace::ownedRule</i></span> |
| but must be populated explicitly.<span style='mso-spacerun:yes'> </span>Newly |
| added items to <span class=SpellE><i>Operation::precondition</i></span> also |
| get added to the <span class=SpellE><i>Namespace::ownedRule</i></span> |
| collection.<span style='mso-spacerun:yes'> </span>A precondition has a subset-superset |
| implementation meaning that if a constraint was added to the owned rule |
| collection that it would not be added to the precondition list.<span |
| style='mso-spacerun:yes'> </span>However, adding to the precondition |
| collection does mean that it gets added to the owned rule collection.<o:p></o:p></span></p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><o:p> </o:p></p> |
| |
| <h4>Redefinition</h4> |
| |
| <p class=MsoNormal>The UML specification defines redefinition in the following |
| way:</p> |
| |
| <p class=MsoNormal><i><span style='font-size:10.0pt;font-family:Arial'>Redefinition |
| </span></i><span style='font-size:10.0pt;font-family:Arial'>is a relationship |
| between features of classifiers within a specialization hierarchy. Redefinition |
| may be used to change the definition of a feature, and thereby introduce a |
| specialized classifier in place of the original featuring classifier, but this |
| usage is incidental. The difference in domain (that redefinition applies to |
| features) differentiates redefinition from specialization.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><o:p> </o:p></p> |
| |
| <p class=MsoNormal>More simply put, r<span style='font-size:10.0pt;font-family: |
| Arial'>edefinition is a way to narrow the scope of a property or to constrain |
| it.<span style='mso-spacerun:yes'> </span>If you wish to restrict what can be |
| added to an existing collection, you should use redefinition.<span |
| style='mso-spacerun:yes'> </span>In effect, redefinition replaces an existing |
| property.<span style='mso-spacerun:yes'> </span>You cannot widen the scope of |
| a property with redefinition.<span style='mso-spacerun:yes'> |
| </span>Redefinition only makes sense in the context of specialization.<span |
| style='mso-spacerun:yes'> </span>That is to say, for example, that a |
| redefining property must be owned by a <span class=SpellE><i>uml::Class</i></span> |
| that is a specialization of another <span class=SpellE><i>uml::Class</i></span> |
| which owns the redefined property. <o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Redefinition |
| can be used to narrow the type of a property by referring to a more specific |
| type.<span style='mso-spacerun:yes'> </span>Redefinition of features which are |
| lists of items replaces the entire list.<span style='mso-spacerun:yes'> |
| </span>That is, any items contributed via inheritance will be disregarded and |
| the redefined list will be recalculated.<span style='mso-spacerun:yes'> |
| </span>If you wish to contribute items to an existing list, you can use a |
| derived union. The name and visibility of a property are not required to match |
| those of any property it redefines.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>It should |
| be pointed out that the detailed semantics of redefinition vary for each |
| specialization of <span class=SpellE><i>RedefinableElement</i></span> in UML, |
| and that the name of a property which as been redefined does not have to match |
| the one redefining it.<o:p></o:p></span></p> |
| |
| <p><i style='mso-bidi-font-style:normal'><u>Example</u></i>: </p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In the |
| following example, <span class=SpellE><i>Class::superClass</i></span> redefines |
| <span class=SpellE><i>Classifier::general</i></span><i>.<span |
| style='mso-spacerun:yes'> </span></i>In this case, the name of the redefining |
| property has changed as well as the type!<o:p></o:p></span></p> |
| |
| <p style='margin-left:8.5pt;page-break-after:avoid'><!--[if gte vml 1]><v:shape |
| id="_x0000_i1037" type="#_x0000_t75" style='width:460.5pt;height:286.5pt'> |
| <v:imagedata src="article_files/image004.gif" o:title="Redefinition"/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=614 height=382 |
| src="article_files/image004.gif" v:shapes="_x0000_i1037"><![endif]></p> |
| |
| <p class=MsoCaption>Figure <!--[if supportFields]><span style='mso-element: |
| field-begin'></span><span style='mso-spacerun:yes'> </span>SEQ Figure \* ARABIC |
| <span style='mso-element:field-separator'></span><![endif]--><span |
| style='mso-no-proof:yes'>6</span><!--[if supportFields]><span style='mso-element: |
| field-end'></span><![endif]-->: Redefinition</p> |
| |
| <p><o:p> </o:p></p> |
| |
| <h4>Derived Unions</h4> |
| |
| <p class=MsoNormal>The UML specification defines derived unions in the |
| following way:</p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>A property |
| may be marked as being a derived union. This means that the collection of |
| values denoted by the property in some context is derived by being the strict |
| union of all of the values denoted, in the same context, by properties defined |
| to subset it. If the property has a multiplicity upper bound of 1, then this |
| means that the values of all the subsets must be null or the same.<o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-family:Arial'><o:p> </o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>More simply |
| put, derived unions indicate that a feature is the union of one or more |
| collections or scalar. Derived unions are analogous to abstract methods in |
| Java.<span style='mso-spacerun:yes'> </span>As with abstract methods, derived |
| unions really only make sense in the context of a concrete type defining what |
| is contributed.<span style='mso-spacerun:yes'> </span>Derived unions are |
| useful if you wish to indicate that a particular meta-type defines a feature |
| but that feature is to be defined within the context of other meta-types.<span |
| style='mso-spacerun:yes'> </span>Users of derived unions would create a |
| property which subsets the property marked as a derived union and then |
| contributes more objects to the collection.<span style='mso-spacerun:yes'> |
| </span>A derived union is typically applied to properties on abstract types |
| high up in the inheritance hierarchy.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p> </o:p></span></p> |
| |
| <ul style='margin-top:0in' type=disc> |
| <li class=MsoNormal style='mso-list:l6 level1 lfo58;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>A derived union is read |
| only.<span style='mso-spacerun:yes'> </span><o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l6 level1 lfo58;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>A derived union is derived.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l6 level1 lfo58;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>A derived union is a derived |
| subset but not vice versa necessarily.<o:p></o:p></span></li> |
| <li class=MsoNormal style='mso-list:l6 level1 lfo58;tab-stops:list .5in'><span |
| style='font-size:10.0pt;font-family:Arial'>Concrete types make derived |
| unions useful by contributing subsets.<o:p></o:p></span></li> |
| </ul> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><i |
| style='mso-bidi-font-style:normal'><u>Example</u></i>:</p> |
| |
| <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In this |
| example we see that <span class=SpellE><i>Element::ownedElement</i></span> is a |
| derived union.<span style='mso-spacerun:yes'> </span>Element contributes <span |
| class=SpellE><i>Element::ownedComment</i></span> to that collection.<span |
| style='mso-spacerun:yes'> </span>Package contributes <span class=SpellE><i>Package::ownedTemplateSignature</i></span> |
| and <span class=SpellE><i>Package::profileApplication</i></span> amongst |
| others.<o:p></o:p></span></p> |
| |
| <p><!--[if gte vml 1]><v:shape id="_x0000_i1038" type="#_x0000_t75" style='width:464.25pt; |
| height:461.25pt'> |
| <v:imagedata src="article_files/image008.png" o:title=""/> |
| </v:shape><![endif]--><![if !vml]><img border=0 width=619 height=615 |
| src="article_files/image009.jpg" v:shapes="_x0000_i1038"><![endif]></p> |
| |
| <h2>Option summary</h2> |
| |
| <p>If you have stuck with this document this far you have a sense that the |
| decision making process of how to extend UML is not straightforward or |
| simple.<span style='mso-spacerun:yes'> </span>The following is a table |
| summarizing the various options.</p> |
| |
| <p><o:p> </o:p></p> |
| |
| <table class=MsoTableSimple2 border=0 cellspacing=0 cellpadding=0 |
| style='border-collapse:collapse;mso-yfti-tbllook:160;mso-padding-alt:0in 5.4pt 0in 5.4pt'> |
| <tr style='mso-yfti-irow:-1;height:47.75pt'> |
| <td width=168 valign=top style='width:126.1pt;border:solid windowtext 1.0pt; |
| border-bottom:solid black 1.5pt;mso-border-alt:solid windowtext .5pt; |
| mso-border-bottom-alt:solid black 1.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:47.75pt'> |
| <p class=MsoNormal style='mso-yfti-cnfc:5'><b><o:p> </o:p></b></p> |
| <p style='mso-yfti-cnfc:5'><b><o:p> </o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;border:none;border-bottom:solid black 1.5pt; |
| mso-border-left-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:47.75pt'> |
| <p align=center style='text-align:center;mso-yfti-cnfc:1'><b><a |
| href="#_Featherweight_extension"><span style='font-weight:normal'>Featherweight</span></a> |
| <o:p></o:p></b></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;border:none;border-bottom:solid black 1.5pt; |
| background:white;padding:0in 5.4pt 0in 5.4pt;height:47.75pt'> |
| <p align=center style='text-align:center;mso-yfti-cnfc:1'><b><a |
| href="#_Lightweight_extension"><span style='font-weight:normal'>Lightweight</span></a><o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;border:none;border-bottom:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt;height:47.75pt'> |
| <p align=center style='text-align:center;mso-yfti-cnfc:1'><b><a |
| href="#_Middleweight_extension"><span style='font-weight:normal'>Middleweight</span></a><o:p></o:p></b></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;border:none;border-bottom:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt;height:47.75pt'> |
| <p align=center style='text-align:center;mso-yfti-cnfc:1'><b><a |
| href="#_Heavyweight_extension"><span style='font-weight:normal'>Heavyweight</span></a><o:p></o:p></b></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:0;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid windowtext 1.0pt; |
| mso-border-top-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt; |
| mso-border-right-alt:solid windowtext .5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Keyword support<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;border:none;mso-border-top-alt: |
| solid black 1.5pt;mso-border-left-alt:solid windowtext .5pt;background:#E6E6E6; |
| padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Simply used as a tag to highlight |
| certain characteristics</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Part of Stereotype definition in |
| Superstructure Specification.</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;border:none;mso-border-top-alt: |
| solid black 1.5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes*</p> |
| <p align=center style='text-align:center'>Not directly supported although can |
| be accomplished if implementer customizes display code.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;border:none;mso-border-top-alt: |
| solid black 1.5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes*</p> |
| <p align=center style='text-align:center'>Not directly supported although can |
| be accomplished if implementer customizes display code.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:1;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:white;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Icon support<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Profiles directly support applying |
| and displaying icons.</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes*</p> |
| <p align=center style='text-align:center'>Not directly supported although can |
| be accomplished if implementer customizes display code</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes*</p> |
| <p align=center style='text-align:center'>Not directly supported although can |
| be accomplished if implementer customizes display code.</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:2;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid windowtext 1.0pt; |
| mso-border-right-alt:solid windowtext .5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Restrict or constrain existing types<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;border:none;mso-border-left-alt: |
| solid windowtext .5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes <o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Add additional OCL |
| constraints.<span style='mso-spacerun:yes'> </span>Some OCL integration |
| support.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Add additional OCL |
| constraints.<span style='mso-spacerun:yes'> </span>Some OCL integration |
| support.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Add additional OCL |
| constraints.<span style='mso-spacerun:yes'> </span>Some OCL integration |
| support</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:3;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid windowtext 1.0pt; |
| mso-border-right-alt:solid windowtext .5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Extend existing types<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;border:none;mso-border-left-alt: |
| solid windowtext .5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Extend existing types through Stereotype |
| Generalization</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Extend existing types through |
| generalizations</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Extend existing types through |
| generalizations</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:4;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid windowtext 1.0pt; |
| mso-border-right-alt:solid windowtext .5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Add new types that do not extend an existing |
| type<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;border:none;mso-border-left-alt: |
| solid windowtext .5pt;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Stereotypes must be applied to some |
| existing UML concept to come into existence</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Create any type you want without |
| generalization and use freely.</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Create any type you want without |
| generalization and use freely.</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:5;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Remove existing type<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No</b> *</p> |
| <p align=center style='text-align:center'>You are applying your newly created |
| Stereotypes to the UML domain.</p> |
| <p align=center style='text-align:center'>Use of strict application of |
| profile.</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| <p align=center style='text-align:center'>All of UML pulled in.<span |
| style='mso-spacerun:yes'> </span>Your DSL extends all of UML.</p> |
| <p align=center style='text-align:center'>Simply extend <span class=SpellE>uml.metamodel.uml</span></p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Your DSL extension would extend |
| only the merged language units that you would be interested in.</p> |
| <p align=center style='text-align:center'>Development is complicated because |
| of this merge step.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:6;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:white;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Add new properties<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Apply Profile, apply Stereotype |
| that adds property. Use <span class=SpellE>setValue</span>() to get and set |
| property. </p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Getters and setters for newly added |
| properties are created automatically.</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Getters and setters for newly added |
| properties are created automatically.</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:7;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:white;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Remove existing properties<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No<o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No*</p> |
| <p align=center style='text-align:center'>Can only exclude entire types |
| depending on granularity of Language Unit.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:8;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:white;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Restrict/constrain existing properties<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>OCL constraints.</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Directly by use of Sub-setting and |
| Redefinition.<span style='mso-spacerun:yes'> </span>Indirectly by adding |
| additional constraints in which case code is generated.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Directly by use of Sub-setting and |
| Redefinition.<span style='mso-spacerun:yes'> </span>Indirectly by adding |
| additional constraints in which case code is generated.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:9;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Add new operations<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Not able to specify behavior in a |
| profile currently.<span style='mso-spacerun:yes'> </span>In the future, you |
| might be able to add behavior through OCL constraints.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>You can specify operations and |
| behavior.</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>You can specify operations and |
| behavior.</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:10;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Remove existing operations<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No<o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No*</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes*</p> |
| <p align=center style='text-align:center'>Since the merged language unit code |
| gets regenerated it is possible to completely customize.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:11;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Restrict/constrain existing operations<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>OCL constraints can be attached to |
| operations</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:12;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:white;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Reuse UML concepts<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Possible to customize exactly which |
| concepts to reuse by merging your own Language Units</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:13;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Restrict multiplicity<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:14;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Remove existing constraints<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No<o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:15;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Add new constraints<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Yes<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Add OCL constraints.<span |
| style='mso-spacerun:yes'> </span>Currently no runtime checks</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Add operations that directly |
| restrict operations.<span style='mso-spacerun:yes'> </span>Type safety at |
| compile time.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Add operations that directly |
| restrict operations.<span style='mso-spacerun:yes'> </span>Type safety at |
| compile time.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:16;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>First class extensibility<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No<o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E6E6E6;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:17;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Validation<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No<o:p></o:p></b></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Custom validation stubs are |
| automatically generated.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Custom validation stubs are |
| automatically generated.</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:18;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Programmatic usage<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Easy</p> |
| <p align=center style='text-align:center'>Simply apply tag.</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Awkward<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>*Programmatic usage covered in |
| future document</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Easy</p> |
| <p align=center style='text-align:center'>Concepts are straight forward and |
| familiar to developers.</p> |
| <p align=center style='text-align:center'>*Programmatic usage covered in |
| future document</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Easy</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:19;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Efficiency of running code<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Very efficient</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Not optimal</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Very efficient</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Very efficient</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:20;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Cost of development<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Low</p> |
| <p align=center style='text-align:center'>Trivial development</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Medium<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Extension technique is well defined |
| and documented.</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>High</p> |
| <p align=center style='text-align:center'>Developer must understand complex |
| concepts such as redefinition, <span class=SpellE>subsetting</span>, derived |
| unions</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Highest</p> |
| <p align=center style='text-align:center'>Must merge language units and |
| developer must understand complex concepts such as redefinition, <span |
| class=SpellE>subsetting</span>, derived unions</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:21;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Ability to evolve<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Easy</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Easy<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Just modify profile and reapply</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Difficult</p> |
| <p align=center style='text-align:center'>Regenerate code</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Difficult</p> |
| <p align=center style='text-align:center'>Regenerate code</p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:22;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Deploy so end users can work with<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>N/A</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:white;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>Easy<o:p></o:p></b></p> |
| <p align=center style='text-align:center'>Deploy profile, user must apply |
| profile and apply stereotype.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Easy</p> |
| <p align=center style='text-align:center'>Deploy <span class=SpellE>plugins</span></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;padding:0in 5.4pt 0in 5.4pt; |
| height:13.85pt'> |
| <p align=center style='text-align:center'>Easy</p> |
| <p align=center style='text-align:center'>Deploy <span class=SpellE>plugins</span></p> |
| </td> |
| </tr> |
| <tr style='mso-yfti-irow:23;mso-yfti-lastrow:yes;height:13.85pt'> |
| <td width=168 valign=top style='width:126.1pt;border:none;border-right:solid black 1.5pt; |
| background:#E0E0E0;padding:0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p style='mso-yfti-cnfc:4'><b>Dependency on UML implementation<o:p></o:p></b></p> |
| </td> |
| <td width=145 valign=top style='width:108.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No</p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'><b style='mso-bidi-font-weight: |
| normal'>No</b> *</p> |
| <p align=center style='text-align:center'>Unless the meta-type is removed |
| altogether your extension will be valid.</p> |
| </td> |
| <td width=205 valign=top style='width:153.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>Yes</p> |
| <p align=center style='text-align:center'>Generator model references <span |
| class=SpellE>uml.metamodel.uml</span> which causes dependency on a particular |
| version of UML2.<span style='mso-spacerun:yes'> </span>Depends on uml2 |
| implementation</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| <td width=191 valign=top style='width:143.5pt;background:#E0E0E0;padding: |
| 0in 5.4pt 0in 5.4pt;height:13.85pt'> |
| <p align=center style='text-align:center'>No *</p> |
| <p align=center style='text-align:center'>You will be dependent on your |
| merged model based on language units but you control that.</p> |
| <p align=center style='text-align:center'><o:p> </o:p></p> |
| </td> |
| </tr> |
| </table> |
| |
| <p><o:p> </o:p></p> |
| |
| <h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Conclusion</h2> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Congratulations! |
| Youve made it this far, so youve gone through the thought process of |
| selecting the extension technique that is right for you.<span |
| style='mso-spacerun:yes'> </span>Hopefully enough information has been provided |
| to enable you to decisively conclude the right approach for you.</p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>We |
| have explored some of the pros and cons of each type of extension as well as |
| provided a summary of all the techniques.<span style='mso-spacerun:yes'> |
| </span>Detailed information of how to create heavy-weight extensions will be |
| explored in more detail in future articles.</p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img |
| border=0 width=63 height=14 id="_x0000_i1039" src="../../../../images/tip.gif">The |
| main conclusion of this article is: The use of <a href="#_Hlt174419544">Middleweight |
| extensions</a> is discouraged and <a href="#_Lightweight_extension">Lightweight |
| extensions</a> should be your first instinct.<span style='mso-spacerun:yes'> |
| </span>Heavyweight extensions should be used in rare cases where much control |
| is required.</p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>For |
| more information on UML2, visit the <a href="http://www.eclipse.org/uml2">home |
| page</a> or join the <a href="news://news.eclipse.org/eclipse.modeling.mdt.uml2">newsgroup</a>.</p> |
| |
| <h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>References</h2> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>[1] |
| K. Hussey. Getting Started with UML2. International Business Machines Corp., |
| 2004, 2006.</p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>[2] |
| K. Hussey. Introduction to UML2 Profiles. International Business Machines |
| Corp., 2004, 2006.</p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>[3] |
| UML Testing Profile. Version 1.0, formal/05-07-07. OMG., July 2005.</p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><o:p> </o:p></p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><o:p> </o:p></p> |
| |
| <p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><span |
| style='font-size:7.5pt'>Java and all Java-based trademarks and logos are trademarks |
| or registered trademarks of Sun Microsystems, Inc. in the </span><st1:country-region><st1:place><span |
| style='font-size:7.5pt'>United States</span></st1:place></st1:country-region><span |
| style='font-size:7.5pt'>, other countries, or both.</span></p> |
| |
| </div> |
| |
| </body> |
| |
| </html> |