blob: 3be418f52473912c93007c2253680e2a5ab6a910 [file] [log] [blame]
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=PowerPoint.Slide>
<meta name=Generator content="Microsoft PowerPoint 10">
<link id=Main-File rel=Main-File
href="../EclipseCon2008_Tutorial_Creating_Robust_Scalable_DSL_with_UML.html">
<link rel=Preview href=preview.wmf>
<meta name=Robots content=NoIndex>
<script src=script.js></script><script><!--
if( !(IsWin("PPTOtl")||IsWin("PPTNav")||IsWin("PPTOtlNav")) )
{
obj = GetObj("Main-File")
parent.location.href=obj.href
}
var gOtlHiliteClr="#ffffff",gOtlNormalClr="#000000",gOtlActiveClr="#ffff00",gSelected="",gTxtState=false,gChildEntryTable=new Array()
function Load()
{
if( IsWin("PPTOtl" ) ){ LoadOtl(); parent.gOtlLoaded=true; return }
if( g_supportsPPTHTML ) {
if( IsWin("PPTNav" ) ){ LoadNav("NavObj",UpdNav); parent.gNavLoaded=true; return }
if( IsWin("PPTOtlNav" ) ){ LoadNav("OtlNavObj",UpdOtlNav); parent.gOtlNavLoaded=true; return }
}
}
function Upd(){ if( IsWin("PPTNav") ) LoadNav("NavObj",UpdNav) }
function LoadNav( oId,UpdFunc )
{
document.ondragstart=CancelDrag
document.onselectstart=CancelDrag
document.body.style.margin=2
UpdFunc()
obj=document.all.item(oId)
obj.style.display="block"
obj.style.visibility="visible"
document.bgColor="threedface"
if( parent.frames["PPTNts"] )
notesBtn.style.display = ""
if( parent.gHasNarration )
nb_voiceBorder.style.display = ""
}
function LoadOtl()
{
var otl=GetObj("OtlObj")
otl.style.display="block"
otl.style.visibility="visible"
if( gOtlActiveClr == "" ) gOtlActiveClr=document.linkColor
if( gOtlHiliteClr == "" ) gOtlHiliteClr=document.fgColor
if( gOtlNormalClr == "" )
gOtlNormalClr=document.bgColor
else
document.bgColor=gOtlNormalClr
InitArray()
if( ObjExists( parent.gCurSld ) ) {
ChangeState( parent.gCurSld,gOtlNormalClr,gOtlHiliteClr )
gSelected=parent.gCurSld
}
else gSelected = -1
UpdOtl()
}
function UpdOtl(){ UpdIdx(parent.gCurSld) }
function UpdIdx( idx )
{
if( gSelected != idx ) {
if( gSelected > 0 )
ChangeState( gSelected,gOtlHiliteClr,gOtlNormalClr )
if( ObjExists( idx ) ) {
gSelected = idx
ChangeState( gSelected,gOtlNormalClr,gOtlHiliteClr )
}
else gSelected = -1
}
if( gTxtState != parent.gOtlTxtExp ) {
state = "block"
if( !parent.gOtlTxtExp )
state="none"
for(ii=0; ii<gChildEntryTable.length; ii++) {
obj=gChildEntryTable[ii];
if( obj.id == null ) continue;
if( obj.id.indexOf("PPTC") >= 0 )
obj.style.display=state;
}
gTxtState=parent.gOtlTxtExp
if( ObjExists( gSelected ) )
ChangeState( gSelected,gOtlNormalClr,gOtlHiliteClr )
}
}
function InitArray()
{
count=0
var list=GetTags(document,"DIV");
for(ii=0; ii<list.length; ii++) {
obj=list.item(ii)
if( obj.id == null ) continue
if( obj.id.indexOf("PPTC") >= 0 )
gChildEntryTable[count++]=obj
}
}
function ChangeState( idx,fgColor,bgColor )
{
obj=GetObj("PPTL"+idx)
obj.style.color=fgColor
obj=GetObj("PPTP"+idx)
obj.style.backgroundColor=bgColor
}
function ChgClr( o,clr ){ if( o.id != "PPTL"+gSelected ) o.style.color=clr }
function Over( src ){ ChgClr(GetLink(src),gOtlActiveClr) }
function Out( src ){ ChgClr(GetLink(src),gOtlHiliteClr) }
function Follow(src){ window.location.href = GetLink(src).href; }
function ObjExists( ii ) { obj=GetObj("PPTP"+ii ); return( obj ) }
function GoToSld( href ){ UpdIdx(parent.GetSldNum(href)); parent.GoToSld( href ) }
function CancelDrag(){ window.event.cancelBubble=true;window.event.returnValue=false}
function GetLink(src)
{
if(src.tagName=="A") return src
else return GetTags(src,"A").item(0)
}
function UpdNav()
{
txt = "<center>";
if( parent.GetHrefObj( parent.gCurSld ).mOrigVis == 1 )
txt += "Slide " + parent.GetCurSldNum() + " of " + parent.GetNumSlds()
else
txt += "Hidden Slide"
txt += "</center>";
nav_text.innerHTML = txt;
if( !parent.HasPrevSld() )
gBtnArr["nb_prev"].Enabled(0)
else
gBtnArr["nb_prev"].Enabled(1)
if( !parent.HasNextSld() )
gBtnArr["nb_next"].Enabled(0)
else
gBtnArr["nb_next"].Enabled(1)
gBtnArr["nb_nts"].SetEnabled()
gBtnArr["nb_nts"].SetFlag( parent.gHasNts )
gBtnArr["nb_sldshw"].Enabled(1)
gBtnArr["nb_voice"].Enabled(1)
}
function UpdOtlNav()
{
gBtnArr["nb_otl"].SetEnabled();
if( parent.gOtlOpen )
gBtnArr["nb_otlTxt"].Enabled( true );
else
document.all.item("nb_otlTxtBorder").style.visibility = "hidden";
}
//--></script>
<style>
<!--.PTxt
{position:relative;
width:100%;
margin-top:5px;
padding-left:2px;
font-weight:bold;}
.CTxt
{position:relative;
width:100%;
margin-top:5px;}
a
{color:white;
text-decoration:none;}
ul
{color:white;
margin-bottom:0px;
margin-left:20px;}
.sldNum
{margin-top:5px;
color:white;}
.button
{position:absolute;
width:32px;
height:20px;
border-style:solid;
border-width:1px;
border-color:threedface;}
-->
</style>
</head>
<body onload="Load()" style='margin:2px'>
<div id=NavObj onload="Load()" onmouseover="BtnOnOver()"
onmousedown="BtnOnDown()" onmouseout="BtnOnOut()" onmouseup="BtnOnUp()"
onkeypress="_KPH()" style='display:none;visibility:hidden'>
<table id="notesBtn" style='position:absolute;display:none;width:70px' align=left cellpadding=0
cellspacing=0>
<td nowrap>
<div id="nb_ntsElem" align=center style='position:relative;padding:3px;
font-family:Arial;color:buttontext;font-size:9pt'><img src="notes_flag.gif"
border=0 id="notes_flag" style='display:none'><span
style='mso-spacerun:yes'>  </span>Notes</div>
<div title="Show/Hide Notes" id="nb_nts" style='position:absolute;top:0%;
left:0%;width:100%;height:100%'></div>
</td>
</table>
<table style='position:relative;width:70px' align=right cellpadding=0 cellspacing=0>
<td nowrap>
<div id="nb_sldshwText" title="Full
Screen Slide Show" align=center style='position:relative;margin-left:20px;padding:3px;
font-family:Arial;color:buttontext;font-size:9pt;cursor:default'>Slide
Show</div>
<div id="nb_sldshwBorder" title="Full Screen Slide Show" style='position:absolute;top:0%;left:0%;width:100%;height:20px'>
<div style='position:absolute;clip:rect(0px, 18px, 18px, 0px)'><img
src="buttons.gif" id="nb_sldshw" style='position:relative;left:-254px'></div>
</div>
</td>
<td>
<div id="nb_voiceBorder" style='display:none;position:absolute;top:0;left:-40px;
width:20px;height:20px'>
<div style='position:absolute;clip:rect(0px, 18px, 18px, 0px)'><img
src="buttons.gif" id="nb_voice" title="Pause/Play Narration" style='position:
relative;left:-290px'></div>
</div>
</td>
</table>
<table style='position:relative' align=center cellpadding=0 cellspacing=0>
<td nowrap>
<div id="nb_prevBorder" class=button style='left:-30px'>
<div style='position:absolute;clip:rect(0px, 30px, 18px, 0px)'><img
src="buttons.gif" id="nb_prev" title="Previous Slide" style='position:relative;
left:0px'></div>
</div>
<span id="nav_text" style='position:relative;top:3px;width:100px;font-family:
Arial;color:buttontext;font-size:9pt'></span>
<div id="nb_nextBorder" class=button>
<div style='position:absolute;clip:rect(0px, 30px, 18px, 0px)'><img
src="buttons.gif" id="nb_next" title="Next Slide" style='position:relative;
left:-90px'></div>
</div>
</td>
</table>
</div>
<div id=OtlNavObj onload="Load()" onmouseover="BtnOnOver()"
onmousedown="BtnOnDown()" onmouseout="BtnOnOut()" onmouseup="BtnOnUp()"
onkeypress="_KPH()" style='display:none;visibility:hidden'>
<table style='position:relative;width:70px' align=left cellpadding=0 cellspacing=0>
<td nowrap><div title="Show/Hide
Outline" id="nb_otl"
style='position:absolute;top:0%;left:0%;width:100%;height:100%;cursor:default'>
<div id="nb_otlElem" align=center style='position:relative;padding:3px;font-family:Arial;
color:buttontext;font-size:9pt'>Outline</div></div>
</td>
</table>
<table style='position:relative' align=center cellpadding=0 cellspacing=0>
<td>
<div style='position:absolute;left:-18px;width:24px;height:20px;border-style:
solid;border-width:1px;border-color:threedface' id="nb_otlTxtBorder">
<div style='position:absolute;clip:rect(0px, 22px, 18px, 0px)'><img
src=buttons.gif id="nb_otlTxt" title="Expand/Collapse Outline"
style='position:relative;left:-157px'></div>
</div>
</td>
</table>
</div>
<div id=OtlObj style='display:none;visibility:hidden;'>
<table width="100%" style='font-family:Arial;font-size:9pt'>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>1</font></div>
</td>
<td width="100%">
<div id=PPTP1 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0001.html');" id=PPTL1>Creating Robust
Scalable DSLs with UML</a></font></div>
<div id=PPTC1 class=CTxt style='display:none'><font size=2>
<ul>
<li>Tutorial</li>
<li>(172)</li>
<br>
<br>
<li>James Bruck,</li>
<li>Christian Damus</li>
<li>IBM Rational Software</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>2</font></div>
</td>
<td>
<div id=PPTP2 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0060.html');" id=PPTL2>Agenda</a></font></div>
<div id=PPTC2 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Advanced Concepts</li>
<ul>
<li>Subsetting</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>3</font></div>
</td>
<td>
<div id=PPTP3 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0061.html');" id=PPTL3>Introduction – What is
a DSL?</a></font></div>
<div id=PPTC3 class=CTxt style='display:none'><font size=2>
<ul>
<li>DSL stands for “Domain Specific Language”.</li>
<br>
<br>
<li>A DSL is created specifically to solve problems in a particular domain.</li>
<ul>
<li>A language designed to be useful for a specific task.</li>
<br>
<br>
</ul>
<li>UML® is a general purpose modeling language.</li>
<ul>
<li>Large and very expressive.</li>
<li>UML 1.x was sometimes criticized for being too large, UML 2.x adds even
more concepts.</li>
<ul>
<br>
<br>
</ul>
</ul>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>4</font></div>
</td>
<td>
<div id=PPTP4 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0091.html');" id=PPTL4>Introduction – Why
extend UML?</a></font></div>
<div id=PPTC4 class=CTxt style='display:none'><font size=2>
<ul>
<li>A common end-goal of those wishing to extend UML is to leverage existing
tools and conventions defined by UML while making modeling easier for
the end user.</li>
<br>
<br>
<ul>
<li>Give a terminology that is adapted to a particular domain.</li>
<li>Give a different notation for already existing symbols</li>
<li>Add semantics that do not exist in the meta-model.</li>
<li>Add constraints that restrict the way you use the meta-model.</li>
<li>Add information that can be used when transforming a model to another
model or code.</li>
<ul>
<br>
<br>
</ul>
</ul>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>5</font></div>
</td>
<td>
<div id=PPTP5 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0092.html');" id=PPTL5>Introduction –
Understanding the Options</a></font></div>
<div id=PPTC5 class=CTxt style='display:none'><font size=2>
<ul>
<li>Need to know:</li>
<ul>
<li>The types of customizations you wish to create.</li>
<ul>
<li>Add/remove behavior</li>
<li>Add/remove properties</li>
<li>Add/remove constraints</li>
</ul>
<li>How the extended meta-model is intended to be used.</li>
<ul>
<li>How will end user create instances of new meta-types and meta-types
from the extended meta-model.</li>
</ul>
<li>How much overlap exists between new domain and extended domain.</li>
</ul>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>6</font></div>
</td>
<td>
<div id=PPTP6 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0093.html');" id=PPTL6>Agenda</a></font></div>
<div id=PPTC6 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Advanced Concepts</li>
<ul>
<li>Subsets</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>7</font></div>
</td>
<td>
<div id=PPTP7 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0136.html');" id=PPTL7>Exploring Extension
Mechanisms - Featherweight</a></font></div>
<div id=PPTC7 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>8</font></div>
</td>
<td>
<div id=PPTP8 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0137.html');" id=PPTL8>Exploring Extension
Mechanisms - Featherweight</a></font></div>
<div id=PPTC8 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>9</font></div>
</td>
<td>
<div id=PPTP9 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0138.html');" id=PPTL9>Exploring Extension
Mechanisms - Featherweight</a></font></div>
<div id=PPTC9 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>10</font></div>
</td>
<td>
<div id=PPTP10 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0095.html');" id=PPTL10>Exploring Extension
Mechanisms - Featherweight</a></font></div>
<div id=PPTC10 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>11</font></div>
</td>
<td>
<div id=PPTP11 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0133.html');" id=PPTL11>Agenda</a></font></div>
<div id=PPTC11 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Advanced Concepts</li>
<ul>
<li>Subsets</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>12</font></div>
</td>
<td>
<div id=PPTP12 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0067.html');" id=PPTL12>Exploring Extension
Mechanisms - Lightweight</a></font></div>
<div id=PPTC12 class=CTxt style='display:none'><font size=2>
<ul>
<li>A profile defines a limited extension to a reference meta-model.</li>
<br>
<br>
<li>Primary extension construct is the Stereotype.</li>
<br>
<br>
<li>Stereotypes can be used to add:</li>
<ul>
<li>Keywords</li>
<li>Constraints</li>
<li>Images</li>
<li>Properties</li>
<li>Behavior</li>
<br>
<br>
</ul>
<li>Profile applications can be used to restrict the meta-types that can be
used in the profiled package.</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>13</font></div>
</td>
<td>
<div id=PPTP13 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0125.html');" id=PPTL13>Exploring Extension
Mechanisms - Lightweight</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>14</font></div>
</td>
<td>
<div id=PPTP14 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0097.html');" id=PPTL14>Exploring Extension
Mechanisms - Lightweight</a></font></div>
<div id=PPTC14 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>15</font></div>
</td>
<td>
<div id=PPTP15 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0123.html');" id=PPTL15>Exercise 1 –
Lightweight Extension</a></font></div>
<div id=PPTC15 class=CTxt style='display:none'><font size=2>
<ul>
<li>Objectives:</li>
<ul>
<li>Learning how to describe domain specific constructs with a profile.</li>
<li>Explore Static Profile Definition.</li>
<ul>
<li>Generate Java™ API for the profile.</li>
<li>Register the generated profile to make it available at run-time.</li>
</ul>
<li>Work with your profile.</li>
<ul>
<li>Apply and use the profile in a UML model.</li>
</ul>
<br>
</ul>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>16</font></div>
</td>
<td>
<div id=PPTP16 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0124.html');" id=PPTL16>Exercise 1 –<span
style='mso-spacerun:yes'>  </span>Lightweight Extension</a></font></div>
<div id=PPTC16 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<ul>
<br>
</ul>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>17</font></div>
</td>
<td>
<div id=PPTP17 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0139.html');" id=PPTL17>Exercise 1 –<span
style='mso-spacerun:yes'>  </span>Lightweight Extension</a></font></div>
<div id=PPTC17 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<ul>
<br>
</ul>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>18</font></div>
</td>
<td>
<div id=PPTP18 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0131.html');" id=PPTL18>Agenda</a></font></div>
<div id=PPTC18 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Advanced Concepts</li>
<ul>
<li>Subsets</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>19</font></div>
</td>
<td>
<div id=PPTP19 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0068.html');" id=PPTL19>Exploring Extension
Mechanisms - Middleweight</a></font></div>
<div id=PPTC19 class=CTxt style='display:none'><font size=2>
<ul>
<li>Extension by specialization of UML meta-classes.</li>
<ul>
<li>Extend by specializing types within UML.metamodel.uml (the merged UML
meta-model)</li>
<br>
<br>
</ul>
<li>Creating dependencies on a specific version of UML.</li>
<br>
<br>
<li>Implementation classes in the specialized meta-model reference internal
UML implementation classes (compiler warnings)</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>20</font></div>
</td>
<td>
<div id=PPTP20 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0098.html');" id=PPTL20>Exploring Extension
Mechanisms - Middleweight</a></font></div>
<div id=PPTC20 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>21</font></div>
</td>
<td>
<div id=PPTP21 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0132.html');" id=PPTL21>Agenda</a></font></div>
<div id=PPTC21 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Advanced Concepts</li>
<ul>
<li>Subsets</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>22</font></div>
</td>
<td>
<div id=PPTP22 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0072.html');" id=PPTL22>Exploring Extension
Mechanisms – Heavyweight</a></font></div>
<div id=PPTC22 class=CTxt style='display:none'><font size=2>
<ul>
<li>Reuse by copy instead of reuse by extension as middleweight.</li>
<br>
<br>
<li>Heavyweight extensions involve 2 steps</li>
<ul>
<li>Select the language units you wish to extend and merge.</li>
<li>Add your own domain specific types.</li>
<br>
<br>
</ul>
<li>Merging packages forms the basis for constructing UML itself.</li>
<br>
<br>
<li>Have access to all concepts used to create UML</li>
<ul>
<li>Subset</li>
<li>Redefinition</li>
<li>Derived unions</li>
</ul>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>23</font></div>
</td>
<td>
<div id=PPTP23 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0099.html');" id=PPTL23>Exploring Extension
Mechanisms – Heavyweight</a></font></div>
<div id=PPTC23 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>24</font></div>
</td>
<td>
<div id=PPTP24 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0100.html');" id=PPTL24>Agenda</a></font></div>
<div id=PPTC24 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Deciding which Technique to Use</li>
<li>Advanced Concepts</li>
<ul>
<li>Subsets</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>25</font></div>
</td>
<td>
<div id=PPTP25 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0080.html');" id=PPTL25>Advanced Concepts –
Subsets</a></font></div>
<div id=PPTC25 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>26</font></div>
</td>
<td>
<div id=PPTP26 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0118.html');" id=PPTL26>Advanced Concepts –
Subsets - Derived</a></font></div>
<div id=PPTC26 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>27</font></div>
</td>
<td>
<div id=PPTP27 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0119.html');" id=PPTL27>Advanced Concepts –
Subsets – Non-Derived</a></font></div>
<div id=PPTC27 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>28</font></div>
</td>
<td>
<div id=PPTP28 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0081.html');" id=PPTL28>Advanced Concepts –
Derived unions</a></font></div>
<div id=PPTC28 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>29</font></div>
</td>
<td>
<div id=PPTP29 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0120.html');" id=PPTL29>Advanced Concepts –
Derived unions</a></font></div>
<div id=PPTC29 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>30</font></div>
</td>
<td>
<div id=PPTP30 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0121.html');" id=PPTL30>Derived unions:
Example</a></font></div>
<div id=PPTC30 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>31</font></div>
</td>
<td>
<div id=PPTP31 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0082.html');" id=PPTL31>Advanced Concepts –
Redefinition</a></font></div>
<div id=PPTC31 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>32</font></div>
</td>
<td>
<div id=PPTP32 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0122.html');" id=PPTL32>Advanced Concepts –
Redefinition</a></font></div>
<div id=PPTC32 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>33</font></div>
</td>
<td>
<div id=PPTP33 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0117.html');" id=PPTL33>Advanced Concepts –
Redefinition: Example</a></font></div>
<div id=PPTC33 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>34</font></div>
</td>
<td>
<div id=PPTP34 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0101.html');" id=PPTL34>Exercise 2 – Creating
Middleweight Extension</a></font></div>
<div id=PPTC34 class=CTxt style='display:none'><font size=2>
<ul>
<li>Objectives:</li>
<ul>
<li>Explore subsets.</li>
<li>Explore extending UML using specialization.</li>
<li>Explore code generator options.</li>
</ul>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>35</font></div>
</td>
<td>
<div id=PPTP35 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0128.html');" id=PPTL35>Exercise 2 – Creating
Middleweight Extension</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>36</font></div>
</td>
<td>
<div id=PPTP36 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0140.html');" id=PPTL36>Exercise 2 – Creating
Middleweight Extension</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>37</font></div>
</td>
<td>
<div id=PPTP37 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0102.html');" id=PPTL37>Agenda</a></font></div>
<div id=PPTC37 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Deciding which Technique to Use</li>
<li>Advanced Concepts</li>
<ul>
<li>Subsetting</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>38</font></div>
</td>
<td>
<div id=PPTP38 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0108.html');" id=PPTL38>Package Merge</a></font></div>
<div id=PPTC38 class=CTxt style='display:none'><font size=2>
<ul>
<li>A directed relationship between two packages which indicates that the
contents are to be combined.</li>
<br>
<br>
<li>This mechanism should be used when elements defined in different
packages are intended to represent the same concept.</li>
<br>
<br>
<li>By selecting which increments to merge, it is possible to obtain a
custom definition of a concept.</li>
<br>
<br>
<li>Package merge allows modeling concepts defined in one package to be
extended with new features.</li>
<br>
<br>
<li>UML itself is a merge of a large number of packages.</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>39</font></div>
</td>
<td>
<div id=PPTP39 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0115.html');" id=PPTL39>Package Merge</a></font></div>
<div id=PPTC39 class=CTxt style='display:none'><font size=2>
<ul>
<li>Package merge allows modeling concepts defined at one level to be
extended with new features.</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>40</font></div>
</td>
<td>
<div id=PPTP40 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0116.html');" id=PPTL40>Package Merge -
Example</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>41</font></div>
</td>
<td>
<div id=PPTP41 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0086.html');" id=PPTL41>Language Units</a></font></div>
<div id=PPTC41 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>42</font></div>
</td>
<td>
<div id=PPTP42 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0135.html');" id=PPTL42>Language Units and
Compliance Levels</a></font></div>
<div id=PPTC42 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>43</font></div>
</td>
<td>
<div id=PPTP43 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0087.html');" id=PPTL43>Compliance Levels – L0</a></font></div>
<div id=PPTC43 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>44</font></div>
</td>
<td>
<div id=PPTP44 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0088.html');" id=PPTL44>Compliance Levels – L1</a></font></div>
<div id=PPTC44 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>45</font></div>
</td>
<td>
<div id=PPTP45 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0109.html');" id=PPTL45>Compliance Levels – L2</a></font></div>
<div id=PPTC45 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>46</font></div>
</td>
<td>
<div id=PPTP46 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0110.html');" id=PPTL46>Compliance Levels – L3</a></font></div>
<div id=PPTC46 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>47</font></div>
</td>
<td>
<div id=PPTP47 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0104.html');" id=PPTL47>Exercise 3 – Creating
Heavyweight Extension</a></font></div>
<div id=PPTC47 class=CTxt style='display:none'><font size=2>
<ul>
<li>Objectives:</li>
<ul>
<li>Explore Package Merge.</li>
<li>Explore working with your extension (generating an editor).</li>
<br>
<br>
</ul>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>48</font></div>
</td>
<td>
<div id=PPTP48 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0106.html');" id=PPTL48>Exercise 3 – Creating
Heavyweight Extension</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>49</font></div>
</td>
<td>
<div id=PPTP49 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0129.html');" id=PPTL49>Exercise 3 – Creating
Heavyweight Extension</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>50</font></div>
</td>
<td>
<div id=PPTP50 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0141.html');" id=PPTL50>Exercise 3 – Creating
Heavyweight Extension</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>51</font></div>
</td>
<td>
<div id=PPTP51 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0130.html');" id=PPTL51>Exercise 3 – Creating
Heavyweight Extension</a></font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>52</font></div>
</td>
<td>
<div id=PPTP52 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0103.html');" id=PPTL52>Agenda</a></font></div>
<div id=PPTC52 class=CTxt style='display:none'><font size=2>
<ul>
<li>Introduction</li>
<li>Exploring Extension Mechanisms</li>
<ul>
<li>Featherweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Deciding which Technique to Use</li>
<li>Advanced Concepts</li>
<ul>
<li>Subsets</li>
<li>Derived Unions</li>
<li>Redefinition</li>
</ul>
<li>Meta-model Decomposition</li>
<ul>
<li>Package Merge</li>
<li>Language Units</li>
<li>Compliance Levels</li>
</ul>
<li>Summary</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>53</font></div>
</td>
<td>
<div id=PPTP53 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0069.html');" id=PPTL53>Summary</a></font></div>
<div id=PPTC53 class=CTxt style='display:none'><font size=2>
<ul>
<li>Four basic techniques.</li>
<ul>
<li>Flyweight</li>
<li>Lightweight</li>
<li>Middleweight</li>
<li>Heavyweight</li>
</ul>
<li>Favor “lightweight” extension (use of profiles).</li>
<ul>
<li>A practical solution for most applications.</li>
<br>
<br>
</ul>
<br>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>54</font></div>
</td>
<td>
<div id=PPTP54 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0057.html');" id=PPTL54>&quot;Thank You!&quot;</a></font></div>
<div id=PPTC54 class=CTxt style='display:none'><font size=2>
<ul>
<li>Thank You!</li>
</ul>
</font></div>
</td>
</tr>
<tr onmouseover="Over(this)" onmouseout="Out(this)" onclick="Follow(this)"
style='cursor:hand'>
<td align=right valign=top>
<div class=sldNum><font size=2>55</font></div>
</td>
<td>
<div id=PPTP55 class=PTxt><font size=2><a
href="javascript:GoToSld('slide0059.html');" id=PPTL55>Legal Notices</a></font></div>
<div id=PPTC55 class=CTxt style='display:none'><font size=2>
<ul>
<br>
<li>Copyright © IBM Corp., 2007-2008.<span style='mso-spacerun:yes'> 
</span>All rights reserved.<span style='mso-spacerun:yes'> 
</span>Source code in this presentation is made available under the EPL,
v1.0; remainder of the presentation is licensed under Creative Commons
Att. Nc Nd 2.5 license.</li>
<br>
<br>
<li>IBM and the IBM logo are trademarks or registered trademarks of IBM
Corporation in the United States, other countries, or both.</li>
<br>
<br>
<li>Rational and the Rational logo are trademarks or registered trademarks
of International Business Corporation in the United States, other
countries, or both.</li>
<br>
<br>
<li>UML, Unified Modeling Language, and MOF are trademarks or registered
trademarks of Object Management Group, Inc.</li>
<br>
<br>
<li>Java and all Java-based trademarks, among others, are trademarks or
registered trademarks of Sun Microsystems in the United States, other
countries, or both</li>
<br>
<br>
<li>Eclipse and the Eclipse logo are trademarks of the Eclipse Foundation,
Inc.</li>
<br>
<br>
<li>Other company, product, and service names may be trademarks or service
marks of others.</li>
<br>
<br>
<li>THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR
INFORMATIONAL PURPOSES ONLY.<span style='mso-spacerun:yes'> 
</span>WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY
OF THE INFORMATION, IT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES
ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH
INFORMATION.<span style='mso-spacerun:yes'>  </span>ANY INFORMATION
CONCERNING IBM’S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM
WITHOUT NOTICE.</li>
<br>
<br>
<br>
</ul>
</font></div>
</td>
</tr>
</table>
</div>
</body>
</html>