    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Rumbaugh's OMT - The method behind C++ Designer</title>
        <link>https://members.accu.org/index.php/articles/1337</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">Design of applications and programs + Overload Journal #1 - Apr 1993</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c67/">Design</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c78/">Overload</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c220/">01</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c67-220/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c67+220/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Rumbaugh's OMT - The method behind C++ Designer</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 30 April 1993 11:54:00 +01:00 or Fri, 30 April 1993 11:54:00 +01:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<h2>Introduction</h2>
<p>This article gives an overview of the Object Modelling Technique
(OMT), which is fully described in the book by Rumbaugh et al.
(Object-Oriented Modelling and Design, Prentice-Hall 1991).</p>
<p>OMT has been used as the basis for Select's new C++ Designer product.</p>
<h2>Why we chose OMT</h2>
<p>Prior to starting the C++ Designer development, we reviewed most of
the OO methods which were availa&shy;ble at the time, including Booch,
Coad-Yourdon and Shlaer-Mellor. In making our choice, we considered the
following factors:</p>
<ul>
  <li>The method should support all of the main OO se&shy;mantics -
i.e. inheritance (is a kind of), aggregation (is a part of) and
association (is related to)</li>
  <li>It must cover both analysis and design to a reasona&shy;ble
extent and give a smooth transition between the various stages of the
life-cycle - especially between the design phase and C++ code.</li>
  <li>It should provide support, or at least form a good basis for
providing support, for real-time as well as MIS systems.</li>
  <li>It should not be over complex.</li>
  <li>It should, where possible, use familiar techniques in order to
reduce the learning curve for users experi&shy;enced in structured
methods.</li>
  <li>It should be an open standard - i.e. it should be pub&shy;lished,
public and well known.</li>
  <li>The book in which the method is described should be readable and
reasonably complete and consistent.</li>
  <li>Training courses and consultancy should be availa&shy;ble on both
sides of the Atlantic from a variety of sources.</li>
  <li>Other CASE vendors should be supporting, or con&shy;sidering
support for, the method.</li>
</ul>
After a great deal of internal and external debate, we finally settled
on OMT:<br>
<ul>
  <li>The combination of the object, dynamic and function&shy;al models
gives OMT the ability to support many dif&shy;ferent kinds of
applications, including real-time systems (although the authors don't
make any claims for this area). In addition, the transition between
analy&shy;sis and design is smooth and fairly well defined.</li>
  <li>OMT is based on Yourdon, but with a strong object-oriented bias.
This means that the learning curve is relatively small for the large
number of developers who are already trained in Yourdon and other
similar methods.</li>
  <li>The book by Rumbaugh et al is reasonably clear and complete. Some
aspects, especially those relating to integration between the three
models are not present&shy;ed very consistently, but such criticisms
can be lev&shy;elled at most software engineering books.</li>
  <li>OMT is supported by several training and consultan&shy;cy
organisations in both Europe and the US. This is ex&shy;tremely
important for vendors of low-cost CASE tools, since it removes the risk
of customers feeling that they are entirely dependent upon the
developer of the tool.</li>
  <li>OMT was developed in the General Electric Re&shy;search and
Development Center, New York and has been used for some time in that
environment. In the UK, companies such as Object Designers Ltd have
been using OMT as the basis for their OO develop&shy;ments over the
last two years. In addition, we have found several major clients who
are starting OMT pilot projects (e.g. British Aerospace and Serco).<br>
  </li>
</ul>
<h2>OMT Overview</h2>
<p>OMT uses three integrated models to describe a sys&shy;tem; the
object, dynamic and functional models. Only the first of these is
supported by C++ Designer, how&shy;ever Select will be adding a full
OMT toolkit to their range later this year.</p>
<h3>The Object Model</h3>
<p>The object model is central to the method and uses a diagram which
is similar to the ERDs used in Yourdon. Classes and their attributes
and operations are shown, together with relationships between classes.
The rela&shy;tionships which can be drawn include inheritance,
aggregation and association. The modelling syntax is rich enough to
represent the majority of 00 constructs in com&shy;mon use.</p>
<p>The diagram shows the symbol for a class in OMT notation. The
attributes and operations correspond to C++ data and function members.</p>
<p><table class="sidebartable"><tr><td>
<img style="width: 304px; height: 164px;"
 alt="Symbols for a class in OMT notation"
 src="/content/images/journals/ol01/RumbaughsOMTTheMethodBehindC++Designer1.png">
 </td></tr></table></p>
<p>Here we are illustrating single inheritance. The land and water
vehicle classes are sub&shy;classes of vehicle.</p>
<p><table class="sidebartable"><tr><td>
<img style="width: 400px; height: 201px;"
 alt="Single inheritence in OMT"
 src="/content/images/journals/ol01/RumbaughsOMTTheMethodBehindC++Designer2.png"></td></tr></table></p>
<p>Now we've added multiple inheritance by introducing an amphibious
vehicle.</p>
<p><table class="sidebartable"><tr><td>
<img style="width: 500px; height: 268px;"
 alt="Mulitple inheritence in OMT"
 src="/content/images/journals/ol01/RumbaughsOMTTheMethodBehindC++Designer3.png"> </td></tr></table></p>
<p>The diamond symbol is used to show aggregation or 'part-of
rela&shy;tionships</p>
<p><table class="sidebartable"><tr><td>
<img style="width: 150px; height: 356px;" alt="Arrgregation in OMT"
 src="/content/images/journals/ol01/RumbaughsOMTTheMethodBehindC++Designer4.png">. </td></tr></table></p>
<p><table class="sidebartable"><tr><td>
<img style="width: 664px; height: 291px;"
 alt="Petrol station control system design in OMT"
 src="/content/images/journals/ol01/RumbaughsOMTTheMethodBehindC++Designer5.png"> </td></tr></table></p>
The above diagram shows how the notation would be used for the design
of a petrol station control system. Note that we have also used the
association notation (e.g. between the CONSOLE and the PUMP), which is
similar to a rela&shy;tionship in entity-relationship notations.
<h3>The Dynamic Model</h3>
<p>The dynamic model consists of a state transition diagram (STD) for
each of the classes in the object model.</p>
<p>The STD notation is that defined by Harel (1987), which allows for
decomposable states. This is richer and more pow&shy;erful than that
commonly used in Yourdon.</p>
<p><table class="sidebartable"><tr><td>
<img style="width: 400px; height: 334px;"
 alt="The dynamic model in OMT"
 src="/content/images/journals/ol01/RumbaughsOMTTheMethodBehindC++Designer6.png"> </td></tr></table></p>
<h3>The Functional Model</h3>
<p>The functional model uses a hierarchy of data flow diagrams (DFDs)
in a similar fashion to the Yourdon method. However, the DFDs are not
very well integrated with the object and dynamic models and it is
difficult to imagine many projects making extensive use of the
functional model.</p>
<p>Some aspects of the functional model are, however, quite useful. For
example, the context diagram is vital for defin&shy;ing the scope of
the system. Also, it may be possible to strengthen the real-time
aspects of the method by introducing the concept of a processor and
task model using DFDs.</p>
<p><table class="sidebartable"><tr><td>
<img style="width: 500px; height: 258px;"
 alt="The functional model in OMT"
 src="/content/images/journals/ol01/RumbaughsOMTTheMethodBehindC++Designer7.png"> </td></tr></table></p>
<h2>Summary</h2>
<p>OMT is a very useful, expressive object-oriented analysis and design
method. The object model allows a smooth transition from analysis,
through design, to code - especially when systems are implemented in an
OO language such as C++. The dynamic model is very useful for
illustrating the way in which the system responds to events. However,
the functional model must be used with great care in order to avoid
distorting the structure of the final application.</p></p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
