<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-411632498922503609</id><updated>2024-08-28T06:38:03.020-05:00</updated><category term="UML"/><category term="Use Case"/><category term="Activity Diagram"/><category term="Actor"/><category term="Actors"/><category term="Class Diagram"/><category term="Diagrams"/><category term="Sequence Diagram"/><category term="State chart"/><category term="SysML"/><category term="Use Case Diagram"/><category term="Use Case Diagrams"/><title type='text'>Modeling Systems and Software</title><subtitle type='html'>Helpful UML and SysML modeling information for Systems Engineers and Software Engineers.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-2408737088194946655</id><published>2013-04-10T17:59:00.002-05:00</published><updated>2013-04-10T17:59:34.689-05:00</updated><title type='text'>More UML Associations - Composition</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;In addition to being directed or bidirectional, associations
may be aggregations or compositions. &amp;nbsp;These special classifications
provide more information about the association.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A solid diamond on the composing class’ side of the
association indicates composition, as indicated in the diagram.&amp;nbsp; If that diamond were hollow, the association
would be an aggregation.&amp;nbsp; The next
section contains more information about aggregations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwa6JAWZZof9MhyphenhyphenRJIZluFzW5pST2K-UWIt_RHGXrBGYsoHppmgsAridIJhzyS38YjbqaCODH75uKUrec7dx3-acUexrVDeADW54Hx4tdPxrOWFONwG4d2WXO3jVCS7DMUeGQM7wSuy82H/s1600/composition.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwa6JAWZZof9MhyphenhyphenRJIZluFzW5pST2K-UWIt_RHGXrBGYsoHppmgsAridIJhzyS38YjbqaCODH75uKUrec7dx3-acUexrVDeADW54Hx4tdPxrOWFONwG4d2WXO3jVCS7DMUeGQM7wSuy82H/s1600/composition.jpg&quot; height=&quot;91&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;line-height: 105%;&quot;&gt;In many books, you read that compositions create
containment.&amp;nbsp; The composing object
contains the composed object.&amp;nbsp; While this
description is true, it&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;doesn&#39;t&lt;/span&gt;&lt;span style=&quot;line-height: 105%;&quot;&gt;&amp;nbsp;help explain the composition relationship or
how to use it.&amp;nbsp; An alternative explanation
is that a composing object “has a” composed object, as in “TimeBasedDetector
has a Timer.”&amp;nbsp; &amp;nbsp;Now, this “has a” description also works for
aggregations.&amp;nbsp; So what is the difference
and is it important?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The basic difference between aggregations and compositions has
to do with where the objects are created.&amp;nbsp;
In an aggregation, the object is created elsewhere in the model.&amp;nbsp; The links between objects get set during a
post-instantiation/pre-runtime setup phase.&amp;nbsp;
For composition associations, the composed object creates and destroys
the composed objects.&amp;nbsp; It also must
configure the link relationships.&amp;nbsp;
Typically, one configures composition relations during instantiation, as
shown in the code snippet below.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;//##
class TimeBasedDetector &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;public
class TimeBasedDetector implements GenericDetector {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected int LastSensorValue;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected Timer itsTimer;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //## link itsTimer &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Constructors&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;
TimeBasedDetector() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initRelations();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Called by constructor to create the timer
composition and configure the links&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void initRelations() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itsTimer = newItsTimer();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Construct the timer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Timer newItsTimer() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itsTimer = new Timer();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itsTimer._setItsDetector(this);
//configures the Timer’s link to point here&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return itsTimer;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Configures the link &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void _setItsTimer(Timer p_Timer) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(itsTimer != null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
itsTimer.__setItsDetector(null);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __setItsTimer(p_Timer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //configures the link&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void __setItsTimer(Timer p_Timer) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itsTimer = p_Timer;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Destructor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //## operation ~TimeBasedDetector() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void finalize() throws Throwable
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cleanUpRelations();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //#[ operation ~TimeBasedDetector() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //#]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.finalize();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //called to delete the composed class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void cleanUpRelations() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deleteItsTimer();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //sets the links to null so that the trash
collection runs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void deleteItsTimer() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itsTimer.__setItsDetector(null);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; itsTimer=null;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 8pt; line-height: 105%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt; line-height: 105%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;When we look at aggregation relationships, we’ll see that
the construction/destruction of aggregated objects is not handled by the
aggregating object.&amp;nbsp; Therefore, the
difference between the two is very important for describing how the developers
build the code.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/2408737088194946655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/04/more-uml-associations-composition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/2408737088194946655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/2408737088194946655'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/04/more-uml-associations-composition.html' title='More UML Associations - Composition'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwa6JAWZZof9MhyphenhyphenRJIZluFzW5pST2K-UWIt_RHGXrBGYsoHppmgsAridIJhzyS38YjbqaCODH75uKUrec7dx3-acUexrVDeADW54Hx4tdPxrOWFONwG4d2WXO3jVCS7DMUeGQM7wSuy82H/s72-c/composition.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-3165548981067810986</id><published>2013-03-16T16:40:00.000-05:00</published><updated>2013-03-16T16:40:48.133-05:00</updated><title type='text'>System Engineering Tools Demo -- For University Students</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dytGN3HOdg9XCPLtnyCNTB1uCzFPqqNcZ1UWHj6dMMRijyEx-ARFFFjZt7eoTVZZhqHOsAJVpEfgxvwAZIiLQ&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
Here is a demo of Systems Engineering tools that I gave to university students today. &amp;nbsp;Ignore the date on the slides.&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#39; type=&#39;text/javascript&#39;%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-12173598-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I&#39;m not thrilled with the quality, so I will rework the video and post soon.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/3165548981067810986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/03/system-engineering-tools-demo-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3165548981067810986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3165548981067810986'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/03/system-engineering-tools-demo-for.html' title='System Engineering Tools Demo -- For University Students'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-6780071882915699830</id><published>2013-02-25T14:19:00.001-06:00</published><updated>2013-02-25T14:19:50.105-06:00</updated><title type='text'>Bidirectional and Directed Associations</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Associations allow classes to interact.&amp;nbsp; By interact, we mean calling an operation or
accessing data.&amp;nbsp; In code, pointers or
references implement associations in object oriented languages.&amp;nbsp; &amp;nbsp;&amp;nbsp;Functional
languages, such as C, use pointers or references when passing data, but only require
#include for accessing operations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Technically, the previous paragraph isn’t right, is it?&amp;nbsp; Associations don’t allow &lt;i&gt;classes&lt;/i&gt; to interact, they allow &lt;i&gt;objects&lt;/i&gt;
to interact.&amp;nbsp; UML Links instantiate
associations. &amp;nbsp;That is, an association
defines a generic pointer whereas a link defines a pointer to a specific object.&amp;nbsp; For simplicity sake, though, we’ll continue to discuss
this subject in terms of classes and associations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;In the previous diagram, the line between Sensor and
GenericDetector represents a bidirectional association.&amp;nbsp; That means that Sensor “knows” about (has a
pointer to) GenericDetector and GenericDetector knows about Sensor.&amp;nbsp; Sensor refers to GenericDetector with the
name itsDetector.&amp;nbsp; Similarly,
GenericDetector refers to Sensor as itsSensor. &amp;nbsp;So, an object of type GenericDetector could call the Sense operation of an object of type Sensor. &amp;nbsp;In C++, the code would look like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;itsSensor-&amp;gt;Sense();&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Most of the time, however, only one of the two classes involved
in the interaction needs a pointer to the other.&amp;nbsp; In fact, requiring bidirectional associations
is generally considered bad design because it makes the software harder to
reuse and to extend.&amp;nbsp; Instead, use
directed associations, as shown in the attached figure. &amp;nbsp;Here, Sensor can call Reset() or
ToggleValue(), but GenericDetector cannot call Sense.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_MI95QNe89mS1t6VPsuYZWf8ZMLTBvbfwClz86mPNLQOwOoVL0CZAdOB83CAPrFmuluECjDMbpMa1eovS8LZ4cb9iQdRXaWLNOrgwvBMIui8A6gKSAydWyHqYBlQuCkHq1R2HmHqSacr/s1600/DirectedAssociation.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_MI95QNe89mS1t6VPsuYZWf8ZMLTBvbfwClz86mPNLQOwOoVL0CZAdOB83CAPrFmuluECjDMbpMa1eovS8LZ4cb9iQdRXaWLNOrgwvBMIui8A6gKSAydWyHqYBlQuCkHq1R2HmHqSacr/s1600/DirectedAssociation.jpg&quot; height=&quot;236&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#39; type=&#39;text/javascript&#39;%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-12173598-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/6780071882915699830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/02/bidirectional-and-directed-associations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/6780071882915699830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/6780071882915699830'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/02/bidirectional-and-directed-associations.html' title='Bidirectional and Directed Associations'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6_MI95QNe89mS1t6VPsuYZWf8ZMLTBvbfwClz86mPNLQOwOoVL0CZAdOB83CAPrFmuluECjDMbpMa1eovS8LZ4cb9iQdRXaWLNOrgwvBMIui8A6gKSAydWyHqYBlQuCkHq1R2HmHqSacr/s72-c/DirectedAssociation.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-93365470797058434</id><published>2013-02-18T15:44:00.002-06:00</published><updated>2013-02-18T15:44:23.023-06:00</updated><title type='text'>Structure -- Class Diagrams</title><content type='html'>&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;The interesting thing about structural diagrams is
that they look very similar for both UML and SysML, but their interpretations
are different.&amp;nbsp;&amp;nbsp;Let’s start with UML Class diagrams because they are more
basic and easier to understand.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Class diagrams, such as the one here, show classes and
relationships among classes.&amp;nbsp;&amp;nbsp;In UML, classes are entities that
contain functionality (operations), data (attributes) and relations.&amp;nbsp; They are not necessarily language (code)
classes.&amp;nbsp; When working in a structured
language like C, I use UML to help define and allocate functions to files and
variables to structures.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Associations are general relationships between
classes. &amp;nbsp;They come is several flavors that we&#39;ll discuss here, but it
helps to understand the basics before we get into the subtleties of the metamodel.
&amp;nbsp;The easiest way to understand a relation is to understand how it gets
implemented in code. &amp;nbsp;For simplicity sake, I am going to use C++
terminology and syntax. &amp;nbsp;The design principles apply to object oriented
languages like Java, AND to functional languages like C.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;In UML, classes have two primary types of relations:&amp;nbsp;&amp;nbsp;a
class can have an association to another class and a class may be generalized from
another class.&amp;nbsp;&amp;nbsp;Associations are how classes know about each
other.&amp;nbsp; In C++, an association gets
implemented as a pointer or reference.&amp;nbsp; Generalizations
show an inheritance.&amp;nbsp; A class that
generalizes another (the child) has all of the attributes and operations of its
parent.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;More on each of these relationships in the next few
articles.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;The figure shows these two relations.&lt;/span&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZj4icnL_p0YG7qRAaWWMPk3GxgzKs6rlif-awC6bNKobhj6WOh1dnjAvlqzN_Mbkd-HNgYCOsAgBrfoEwoikbB4MZNiclvr1GOKDrrBsH2McmX89z4AEFF4rp7tKrn5-G3B9VuC5GVTk6/s1600/ClassDiagram.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZj4icnL_p0YG7qRAaWWMPk3GxgzKs6rlif-awC6bNKobhj6WOh1dnjAvlqzN_Mbkd-HNgYCOsAgBrfoEwoikbB4MZNiclvr1GOKDrrBsH2McmX89z4AEFF4rp7tKrn5-G3B9VuC5GVTk6/s1600/ClassDiagram.jpg&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#39; type=&#39;text/javascript&#39;%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-12173598-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/93365470797058434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/02/structure-class-diagrams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/93365470797058434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/93365470797058434'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2013/02/structure-class-diagrams.html' title='Structure -- Class Diagrams'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZj4icnL_p0YG7qRAaWWMPk3GxgzKs6rlif-awC6bNKobhj6WOh1dnjAvlqzN_Mbkd-HNgYCOsAgBrfoEwoikbB4MZNiclvr1GOKDrrBsH2McmX89z4AEFF4rp7tKrn5-G3B9VuC5GVTk6/s72-c/ClassDiagram.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-2538472303021812867</id><published>2012-05-10T21:24:00.000-05:00</published><updated>2012-05-10T21:24:21.402-05:00</updated><title type='text'>Adding Structure to Our Lives</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#39; type=&#39;text/javascript&#39;%3E%3C/script%3E&quot;));
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-12173598-1&quot;);
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;
UML and SysML classify diagrams as showing structure, interactions, or behavior.  Structural diagrams show the system&#39;s pieces and relationships among those parts.  Interaction diagrams show the communications among those pieces.  Behavioral diagrams specify how the pieces respond when they receive messages.  (Please note:  I used the term &quot;pieces&quot; specifically because it is not a UML or SysML term.  A piece could be a class, object, file, structure, block, or part)

Structure diagrams serve similar purposes in both UML and SysML, it with some important differences.  For Systems Engineers, the entities represent abstract concepts about a system&#39;s decomposition.  For software developers, the entities represent code that will be created (i.e., generated or handwritten) to implement the software application. 

The next few articles discuss structural diagrams.   </content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/2538472303021812867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2012/05/adding-structure-to-our-lives.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/2538472303021812867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/2538472303021812867'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2012/05/adding-structure-to-our-lives.html' title='Adding Structure to Our Lives'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-747508378365842361</id><published>2012-04-17T18:25:00.001-05:00</published><updated>2012-04-17T18:25:47.481-05:00</updated><title type='text'>Coding, designing, and modeling</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&quot;How can I do my design when I haven&#39;t written the (expletive deleted) code yet?&quot; a former colleague yelled quite irately as I passed by a manager&#39;s office.&amp;nbsp; Now I know Joe.&amp;nbsp; Yes, sometimes he would start out coding and end up with some useless methods and classes.&amp;nbsp; But Joe always had an idea of his code&#39;s basic structure.&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;What Joe &lt;em&gt;meant&lt;/em&gt; to say was that he could not write the detailed documentation of his design because he hadn&#39;t worked out all the details yet.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Unfortunately, many developers look at modeling the way Joe looked at design -- as a documentation step to be completed rather than something that helps the goal of producing properly executing code quickly and efficiently.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Modeling helps developers visualize the structure, interactions, and behavior of the system they are building (NB:&amp;nbsp; I used the plural because developers seldom work alone.&amp;nbsp; One must be able to communicate one&#39;s ideas;&amp;nbsp; more on that in another article).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;In fact, in a 2008 &lt;a href=&quot;http://www.ambysoft.com/surveys/modelingDocumentation2008.html&quot;&gt;survey by Scott Ambler&lt;/a&gt;&amp;nbsp;found that the vast majority of developers used high level diagrams.&amp;nbsp; From my own practice, I&#39;m assuming that the majority use class diagrams to define structure.&amp;nbsp;I&#39;ll bet that a fair number of developers use some variation of sequence diagrams when discussing interactions as well.&amp;nbsp; Here is my point:&amp;nbsp; If you are already using these two common diagrams, why not capture the artifacts in a tool rather than on a white board?&amp;nbsp; Doing so makes the artifacts reusable and captures the design rationale for the rest of the team (including reviewers and maintainers).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Bottom line:&amp;nbsp; if Joe had captured his thoughts in a model, he wouldn&#39;t have had the scream match with his boss.&amp;nbsp; He might even still be working there.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/747508378365842361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2012/04/coding-designing-and-modeling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/747508378365842361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/747508378365842361'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2012/04/coding-designing-and-modeling.html' title='Coding, designing, and modeling'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-6557064101144656104</id><published>2012-04-12T06:01:00.000-05:00</published><updated>2012-04-12T06:01:05.664-05:00</updated><title type='text'>Refining Use Cases with Activity Diagrams</title><content type='html'>&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;In a previous post, I discussed text based use case descriptions. This post discusses a graphical method:&amp;nbsp; activity diagrams.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Before discussing the advantages of refining use cases with activity diagrams, let&#39;s define activity diagrams.&amp;nbsp; One of my colleagues describes them as &quot;flow charts on steroids.&quot;&amp;nbsp; Activity diagrams show the possible sequences of activities and the flow of data between activities in a single view.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI_PfgcC-mdKrK3ON4-JGl9LPKD1_b2iZnNmih4QXH7rHVJgoEFvn-c-9CIUf_cs3PD6BAtYTjEqcyzd3dZXUxZ5Ut-TBdBi7aHeCARvvnZ_MXGoCgIKzMt5okkx6eYJlzOehCDDvNEiCf/s1600/ActivityDiagram.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;317&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI_PfgcC-mdKrK3ON4-JGl9LPKD1_b2iZnNmih4QXH7rHVJgoEFvn-c-9CIUf_cs3PD6BAtYTjEqcyzd3dZXUxZ5Ut-TBdBi7aHeCARvvnZ_MXGoCgIKzMt5okkx6eYJlzOehCDDvNEiCf/s320/ActivityDiagram.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;The rectangles with rounded corners represent activities.&amp;nbsp; In the software world, an activity would be implemented as a functions or method.&amp;nbsp; On this diagram, the dashed red lines represent the order&amp;nbsp; that the actions occur.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Unlike text, graphical activity diagrams are not open to interpretation.&amp;nbsp; Even people not trained in UML&#39;s or SysML&#39;s subtleties understand an activity diagrams flowchart-like structure.&amp;nbsp; Complicated concepts, including exception condition handling, become clear when viewed on a single page.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Note that you may use nested activity diagrams (not what they are called, we&#39;ll get to the proper name later) to describe complex actions.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&amp;nbsp;In summary, the advantages of using activity diagrams to refine use cases include:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Graphical representation is not open to interpretation the way text is&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Shows multiple paths (including exception conditions) in one view&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Complex actions may be further refined with other activity diagrams&amp;nbsp;&lt;/span&gt;&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#39; type=&#39;text/javascript&#39;%3E%3C/script%3E&quot;));
&lt;/script&gt;&lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-12173598-1&quot;);
pageTracker._trackPageview();
} catch(err) {}
&lt;/script&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/6557064101144656104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2012/04/refining-use-cases-with-activity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/6557064101144656104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/6557064101144656104'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2012/04/refining-use-cases-with-activity.html' title='Refining Use Cases with Activity Diagrams'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI_PfgcC-mdKrK3ON4-JGl9LPKD1_b2iZnNmih4QXH7rHVJgoEFvn-c-9CIUf_cs3PD6BAtYTjEqcyzd3dZXUxZ5Ut-TBdBi7aHeCARvvnZ_MXGoCgIKzMt5okkx6eYJlzOehCDDvNEiCf/s72-c/ActivityDiagram.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-946276631483582797</id><published>2011-07-11T10:31:00.000-05:00</published><updated>2011-07-11T10:31:24.601-05:00</updated><title type='text'>UML Hell Doesn&#39;t Exist.</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Recently,&amp;nbsp;customer gave me a paper that basically said that modeling is a mistake and that it takes too much time for the benefits.&amp;nbsp; The author states that UML is strictly an academic concept that has no place in the commercial world.&amp;nbsp; He states several problems including the model not representing the code and&amp;nbsp;modeling slowing down the development process.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Obviously, I disagree.&amp;nbsp; In fact, I disagree so strongly, that I&#39;m not going to give the link to the paper.&amp;nbsp; I will, however, share what I told my customer.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;True, modeling just for the sake of modeling provides little value.&amp;nbsp; It is entirely possible to model to such fine detail that the model misses its purpose.&amp;nbsp;&amp;nbsp;In the Systems Engineering realm, the purpose of the model is to specify &lt;strong&gt;&lt;em&gt;what&lt;/em&gt;&lt;/strong&gt; the system must do, not &lt;strong&gt;&lt;em&gt;how&lt;/em&gt;&lt;/strong&gt; the system does it.&amp;nbsp; Any modeling that describes how is a waste.&amp;nbsp; The advantages of Systems modeling are fewer missed exception conditions, fewer duplications of effort by multiple subsystems, better definition of the interfaces, and better understanding of the subsystems&#39; responsibilities.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;In the software realm, models show the desing --&amp;nbsp;how the system implements the requirements.&amp;nbsp; I am assuming, of course, that you see value in designing your system before you start coding.&amp;nbsp; Typically, designs include the software structure, class/file interactions, and function/method behavior necessary to build the software.&amp;nbsp;&amp;nbsp;A UML&amp;nbsp;model, therefore, includes the exact same information you are required to deliver in an SDD.&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family: Arial;&quot;&gt;In fact, you should generate your SDD directly from your model.&amp;nbsp; The advantages of software modeling include better understanding of&amp;nbsp; (by all stakeholders) of the system&#39;s functionality, better design reviews, better structural design, less time to develop code, and increased reusability.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;If you use the right tools,&amp;nbsp;modeling decreases&amp;nbsp;development time.&amp;nbsp; There are several tools on the market today that generate code directly from the model.&amp;nbsp; Now, the &quot;fitness&quot; of the code varies with the tool.&amp;nbsp; Some require you to make all changes directly in the tool;&amp;nbsp; the code is really not user editable.&amp;nbsp; Others, produce only &quot;code-frames,&quot; the header files and the method signatures.&amp;nbsp; I don&#39;t recommend using products like these.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Instead, find a product that generates full, production quality code directly from the model.&amp;nbsp; The code should be readable and editable with your favorite editor.&amp;nbsp; &lt;span style=&quot;font-family: Arial;&quot;&gt;Similarly, you should be able to use your tool to visualize existing code.&amp;nbsp; (email me and I&#39;ll give you the names of the tool I like)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The proof of the pudding is in the tasting, so rather than get in a war of words with the author of the other paper, I&#39;ll point to Dr. Jerry Krasner&#39;s paper &lt;a href=&quot;http://embeddedforecast.com/What_Do_You_Do_When_The_Horse_Youre_Riding_Drops_Dead_2.pdf&quot;&gt;What to do When the Horse You&#39;re Riding Drops Dead&lt;/a&gt;.&amp;nbsp; Dr. Krasner&#39;s research showed that organizations that model and generate the code from the model finish their projects on time and&amp;nbsp;hand code fewer lines of&amp;nbsp;code to accomplish the same task.&lt;br /&gt;
&lt;br /&gt;
I also add my own experiences.&amp;nbsp; I used to run a software development group that produced the machine control software for high speed mail sorting equipment.&amp;nbsp; My development team had 5-7 people.&amp;nbsp; We developed routinely developed more code, in less time, with fewer erros than groups of 15-20.&amp;nbsp;&amp;nbsp;The other teams&amp;nbsp;had to stop developmetn for&amp;nbsp;2 weeks a quarter to update documents.&amp;nbsp; I generated our documents while the team was at lunch.&lt;br /&gt;
&lt;br /&gt;
Bottom line:&amp;nbsp; UML helps real projects develop software faster and with fewer errors.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/946276631483582797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2011/07/uml-hell-doesnt-exist.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/946276631483582797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/946276631483582797'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2011/07/uml-hell-doesnt-exist.html' title='UML Hell Doesn&#39;t Exist.'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-5399569700127048748</id><published>2010-05-16T15:34:00.000-05:00</published><updated>2010-05-16T15:34:34.215-05:00</updated><title type='text'>Text-Based Use Case Template</title><content type='html'>&amp;nbsp;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;I promised a text based use case template some time ago, and now I&#39;m posting it.&amp;nbsp; This template is loosely based on the work by Alistair Couckburn&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0in;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
 {margin:0in;
 margin-bottom:.0001pt;
 text-align:center;
 mso-pagination:widow-orphan;
 font-size:16.0pt;
 mso-bidi-font-size:12.0pt;
 font-family:Arial;
 mso-fareast-font-family:&quot;Times New Roman&quot;;
 font-weight:bold;}
@page Section1
 {size:8.5in 11.0in;
 margin:1.0in 1.25in 1.0in 1.25in;
 mso-header-margin:.5in;
 mso-footer-margin:.5in;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
--&gt;
&lt;/style&gt;  &lt;br /&gt;
&lt;style&gt;
&lt;!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
 {mso-style-parent:&quot;&quot;;
 margin:0in;
 margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:&quot;Times New Roman&quot;;
 mso-fareast-font-family:&quot;Times New Roman&quot;;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
 {margin:0in;
 margin-bottom:.0001pt;
 text-align:center;
 mso-pagination:widow-orphan;
 font-size:16.0pt;
 mso-bidi-font-size:12.0pt;
 font-family:Arial;
 mso-fareast-font-family:&quot;Times New Roman&quot;;
 font-weight:bold;}
@page Section1
 {size:8.5in 11.0in;
 margin:1.0in 1.25in 1.0in 1.25in;
 mso-header-margin:.5in;
 mso-footer-margin:.5in;
 mso-paper-source:0;}
div.Section1
 {page:Section1;}
--&gt;
&lt;/style&gt;  &lt;br /&gt;
&lt;div class=&quot;MsoTitle&quot;&gt;&lt;project&gt; &amp;nbsp;Use Case Description&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/project&gt;&lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: medium none;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;border: 1pt solid windowtext; padding: 0in 5.4pt; width: 113.4pt;&quot; valign=&quot;top&quot; width=&quot;189&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Use Case:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: windowtext windowtext windowtext -moz-use-text-color; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 329.4pt;&quot; valign=&quot;top&quot; width=&quot;549&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 113.4pt;&quot; valign=&quot;top&quot; width=&quot;189&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Version: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 329.4pt;&quot; valign=&quot;top&quot; width=&quot;549&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;1.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 113.4pt;&quot; valign=&quot;top&quot; width=&quot;189&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Description:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 329.4pt;&quot; valign=&quot;top&quot; width=&quot;549&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 113.4pt;&quot; valign=&quot;top&quot; width=&quot;189&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Scope:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 329.4pt;&quot; valign=&quot;top&quot; width=&quot;549&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 113.4pt;&quot; valign=&quot;top&quot; width=&quot;189&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Level:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 329.4pt;&quot; valign=&quot;top&quot; width=&quot;549&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 113.4pt;&quot; valign=&quot;top&quot; width=&quot;189&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Primary Actor(s):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 329.4pt;&quot; valign=&quot;top&quot; width=&quot;549&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 113.4pt;&quot; valign=&quot;top&quot; width=&quot;189&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Trigger:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 329.4pt;&quot; valign=&quot;top&quot; width=&quot;549&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Assumptions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: medium none;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;border: 1pt solid windowtext; padding: 0in 5.4pt; width: 149.4pt;&quot; valign=&quot;top&quot; width=&quot;249&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Preconditions:&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: windowtext windowtext windowtext -moz-use-text-color; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 293.4pt;&quot; valign=&quot;top&quot; width=&quot;489&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 149.4pt;&quot; valign=&quot;top&quot; width=&quot;249&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Success End Condition:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 293.4pt;&quot; valign=&quot;top&quot; width=&quot;489&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 0in 5.4pt; width: 149.4pt;&quot; valign=&quot;top&quot; width=&quot;249&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Failed End Condition:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 293.4pt;&quot; valign=&quot;top&quot; width=&quot;489&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;height: 42.7pt;&quot;&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext; border-style: none solid solid; border-width: medium 1pt 1pt; height: 42.7pt; padding: 0in 5.4pt; width: 149.4pt;&quot; valign=&quot;top&quot; width=&quot;249&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Assumptions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-style: none solid solid none; border-width: medium 1pt 1pt medium; height: 42.7pt; padding: 0in 5.4pt; width: 293.4pt;&quot; valign=&quot;top&quot; width=&quot;489&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Main Scenario:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Exception Scenarios: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Extensions: &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Other Information:&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;The first thing you will want to do is make it your own by customizing the template to meet your organization.&amp;nbsp; For example, I found that the version number was not valuable because we used a configuration management system to maintain the documents.&amp;nbsp; Therefore, the most recent copy was at the tip of the archive -- a much simpler solution.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Next, you need to create some &quot;Use Case Standards.&quot;&amp;nbsp; In my organizations, we number the main flow steps.&amp;nbsp; When an exception occurs, we put &lt;exception x=&quot;&quot;&gt;, where x is the number of the exception, at the end of the main flow step.&amp;nbsp; Each item in the Exception Scenario part begins with EXCEPTION x.&amp;nbsp; We keep the exception conditions and main flows together by following this practice.&lt;/exception&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Next time, using Activity Diagrams to Describe Use Cases&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
Ivar gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#39; type=&#39;text/javascript&#39;%3E%3C/script%3E&quot;));
&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-12173598-1&quot;);
pageTracker._trackPageview();
} catch(err) {}
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
Ivar gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src=&#39;&quot; + gaJsHost + &quot;google-analytics.com/ga.js&#39; type=&#39;text/javascript&#39;%3E%3C/script%3E&quot;));
&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;&gt;
try {
var pageTracker = _gat._getTracker(&quot;UA-12173598-1&quot;);
pageTracker._trackPageview();
} catch(err) {}
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/5399569700127048748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2010/05/text-based-use-case-template.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/5399569700127048748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/5399569700127048748'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2010/05/text-based-use-case-template.html' title='Text-Based Use Case Template'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-3384938541963263479</id><published>2009-12-22T17:52:00.001-06:00</published><updated>2009-12-23T11:38:26.578-06:00</updated><title type='text'>Use Cases - Overview</title><content type='html'>&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Use Cases cause a lot of confusion for many people new to UML and SysML.&amp;nbsp; The OMG UML Infrastructure specification calls Use Cases &quot;a means for specifying required usages of a system. Typically, they are used to capture the requirements of a system, that is, what a system is supposed to do.&quot;&lt;/span&gt; &lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;(OMG Unified Modeling Language (OMG UML) Superstructure, V2.1.2, p. 585)&lt;/span&gt;.&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp; This definition seems a bit academic, so let me try to bring some practical world experience.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Let&#39;s be clear:&amp;nbsp; Use Cases &lt;i&gt;ARE &lt;/i&gt;requirements.&amp;nbsp; They provide much more than simple &lt;i&gt;shall&lt;/i&gt; statements, however.&amp;nbsp; From a Systems Engineering perspective, think of about the problem space this way: a Request for Proposal or Statement of Work provides the requirements for any competitor&#39;s solution, but your Use Cases explain &lt;i&gt;your organization&#39;s&lt;/i&gt; specific solution.&amp;nbsp; They list the capabilities of the system.&amp;nbsp; You will use the descriptions to allocate functionality to different parts of the system.&amp;nbsp; Taken together, the Use Cases described your proposal.&lt;/span&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp; Each of the functional &lt;i&gt;shall &lt;/i&gt;statement requirements should trace from a Use Case. &lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Since Use Cases detail the system requirements, they tell &lt;i&gt;what &lt;/i&gt;the system will do, not &lt;i&gt;how &lt;/i&gt;the system will do it. Use Cases do not show functional decomposition, nor do they specify how to write the code.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Another confusing aspect of use cases are the relationships &amp;laquo extends &amp;raquo and &amp;laquo includes &amp;raquo .&amp;nbsp; I am not going to spend much time describing these here because it is an academic argument. &amp;nbsp; Whether you show a capability as &amp;laquo extends &amp;raquo or &amp;laquo includes &amp;raquo is almost irrelevant.&amp;nbsp; Either way, you will need to detail the additional Use Case.&amp;nbsp; Therefore, I only use &amp;laquo includes &amp;raquo ; and then I only use it when multiple Use Cases require the exact same capability.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;A Use Case&#39;s meat exists in its description.&amp;nbsp; The description shows, step by step, what the system does to implement a capability.&amp;nbsp; It shows the response to external stimuli (Actors).&amp;nbsp; As important, a Use Case description shows the exception conditions when the normal flow of events does not happen.&amp;nbsp; These discussions of exception handling show the real power of Use Cases.&amp;nbsp; They force the engineers, both Systems and Software, to think about the exception conditions up front.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;In the next two sections, we will discuss different methods for detailing Use Cases.&amp;nbsp; The first method uses text.&amp;nbsp; The second uses and Activity Diagram. &lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/3384938541963263479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/use-cases-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3384938541963263479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3384938541963263479'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/use-cases-overview.html' title='Use Cases - Overview'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-395099051052154402</id><published>2009-12-19T12:04:00.000-06:00</published><updated>2009-12-19T12:04:57.151-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SysML"/><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><title type='text'>Why Model</title><content type='html'>&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;The model specifies what a system does and how it does it.&amp;nbsp; Logically, therefore, one starts modeling by deciding what the system is going to do.&amp;nbsp; In traditional, document-driven development, one starts with a Request for Proposal (RFP) or Statement of Work (SOW), writes a proposal or System Specification Design Document (SSDD), writes the System Requirements Specification (SRS), and finally writes a System Design Document (SDD).&amp;nbsp; This methodology has worked for the last 50 years and I&#39;m not suggesting that modeling should replace it.&amp;nbsp; For one reason, many contracts require text deliverables.&amp;nbsp; Rather, modeling augments this process.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Text is a very poor way for engineers to communicate.&amp;nbsp; For the most part, engineers are visual people.&amp;nbsp; If I were to ask you to go to whiteboard and describe the system you are currently working on, odds are pretty good that you will not write a bunch of paragraphs.&amp;nbsp; You will draw some circles and boxes and maybe some arrows to describe the flow.&amp;nbsp; In fact, the main reason we text documents to communicate is because computers come with keyboards.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Another problem with text is that words have different meanings in different industries and different parts of the country.&amp;nbsp; Take the word &quot;fixing.&quot;&amp;nbsp; It might mean repairing.&amp;nbsp; Or, especially around the holidays, it might refer to side dishes.&amp;nbsp; Here in Fort Worth, Texas, it means you are getting ready to do something.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Not only do words have shadow meanings, but not all of our coworkers are native English speakers.&amp;nbsp; We may work with colleagues overseas.&amp;nbsp; More likely, at least one team member grew up speaking a language other than English.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Another problem with text-based requirements is how we were all taught to write.&amp;nbsp; Each of us had a high school English teacher, for me it was Miss Feage, who said &quot;vary you sentence structure&quot; and &quot;use descriptive verb.&quot; While this advice applies when writing the Great American Novel, it does not apply when writing the Great American Requirements Specification.&amp;nbsp; For a requirements specification, we expect &lt;i&gt;&quot;subject &lt;/i&gt;&lt;b&gt;shall &lt;/b&gt;&lt;i&gt;requirement&lt;/i&gt;.&quot;&amp;nbsp; Unfortunately, I have yet to see a customer document written in this format.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Building specifications in UML and SysML avoid all of these problems.&amp;nbsp; UML and SysML are graphical languages.&amp;nbsp; Engineers and Computer Scientists relate better to diagrams than to text.&amp;nbsp; Furthermore, the graphics help engineers see the part of the system under consideration in a single view.&amp;nbsp; This view helps them identify missing exception conditions and inconsistencies.&amp;nbsp; &lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;UML and SysML have very distinct syntax.&amp;nbsp; This syntax is designed to specify structure, interaction, and behavior in a distinct manner that, if used properly, is not open to misinterpretation.&amp;nbsp; And when it comes time to generate the deliverable documents, the better modeling tools support generating the documents directly from the model.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Bottom line:&amp;nbsp; modeling is more natural than text, will help you avoid and identify errors earlier, and still lets you follow your existing processes.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/395099051052154402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/why-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/395099051052154402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/395099051052154402'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/why-model.html' title='Why Model'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-3224290569652008350</id><published>2009-12-19T11:11:00.000-06:00</published><updated>2009-12-19T11:11:20.571-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actors"/><category scheme="http://www.blogger.com/atom/ns#" term="Use Case Diagrams"/><title type='text'>Use Case Diagrams, Actors and Associations</title><content type='html'>&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Let&#39;s talk a little more about actors.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Actors represent something outside the system that either affects the system or the system affects.&amp;nbsp; The significance here is that an actor is &lt;i&gt;outside &lt;/i&gt;of the system.&amp;nbsp; You are not going to build it.&amp;nbsp; You are not going to model its behavior.&amp;nbsp; Even though UML and SysML use stick figures to show actors on diagrams, all actors are not people.&amp;nbsp; Actors may represent people (for example, the user) or they may represent hardware (a sensor or an effector) or they may represent another subsystem.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Any of you who have attended any of my classes know that I am about to get on my soap box now.&amp;nbsp; Hard engineering disciplines (electrical, mechanical, chemical, civil) will never take Systems and Software engineers seriously as long as we use these silly indicators and cutesy terms (e.g., fuzzy logic).&amp;nbsp; Therefore, if you are going to show use case diagrams to your colleagues or customers who are not fluent in UML/SysML, change the picture of the actor to what it represents in the real world (a tank, a letter carrier, the physical actuator).&amp;nbsp; Better modeling tools let you make this substitution (if yours does not, contact me and I&#39;ll put you in touch with a sales guy).&amp;nbsp; OK, now I&#39;ll step off my soapbox and go back to the discussion.&lt;/span&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt; &lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;When developing systems, actors represent anything you are not getting paid for.&amp;nbsp; In an IT system, the actor may represent the server -- or better, an application running the server.&amp;nbsp; In an aircraft flight control system, use an actor to represent the pilot (not the stick because it is part of the aircraft and generally falls under the auspices of the flight control subsystem), the inertial navigation system (it is not part of flight controls), and the surfaces (when you execute the model, you want to confirm they are moving the correct direction).&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;When developing software, use cases represent a single feature of the code (more on this when we discuss Use Cases and the Development Process).&amp;nbsp; In these cases, the actor represents the other parts of the code that interact with that feature.&amp;nbsp; Let me clarify.&amp;nbsp; A reusable machine control framework includes the concept of generic inputs and outputs.&amp;nbsp; No matter how the physical hardware works, the application interfaces with I/O using the same (virtual) calls.&amp;nbsp; The use case Read_Discrete_Inputs has an association with a Client actor.&amp;nbsp; This actor represents any part of the code that requires a discrete input.&amp;nbsp; By definition, the Client is internal to the &lt;i&gt;system&lt;/i&gt;, but it is external to the &lt;i&gt;feature&lt;/i&gt;.&amp;nbsp; Therefore, as far as Read_Discrete_Inputs is concerned, Client is external.&amp;nbsp; In other words, your point of view determines internal versus external.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Associations show the virtual connections between actors and use cases.&amp;nbsp; They indicate which use cases an actor affects and which actor the use case affects.&amp;nbsp; Most, but not all, use cases have associations with actors.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Associations provide another purpose when reviewing the model.&amp;nbsp; They indicate the potential interfaces.&amp;nbsp; Specifically, the association between a User actor and use case indicates that the system requires some form of user interface -- a GUI, a push button, a retinal scanner.&amp;nbsp; It forces the Systems Engineer to think about what may be missing from the overall specification.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;One last point, in the early days of the UML, we showed associations as arrows.&amp;nbsp; These arrows caused misunderstandings and provided little additional information.&amp;nbsp; Therefore, I recommend that you show the associations without arrowheads.&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/3224290569652008350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/use-case-diagrams-actors-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3224290569652008350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3224290569652008350'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/use-case-diagrams-actors-and.html' title='Use Case Diagrams, Actors and Associations'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-1864218814917022118</id><published>2009-12-18T17:01:00.003-06:00</published><updated>2009-12-18T17:09:11.115-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Actor"/><category scheme="http://www.blogger.com/atom/ns#" term="Use Case"/><category scheme="http://www.blogger.com/atom/ns#" term="Use Case Diagram"/><title type='text'>Use Case Diagrams</title><content type='html'>&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;For years, I did not see the point of Use Case diagrams.&amp;nbsp; They were just a bunch of bubbles with stick figures that listed the capabilities of the system.&amp;nbsp; The Use Case descriptions held the real value.&amp;nbsp; They described what the system was supposed to do.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;A colleague of mine, Dr. Peter Hoffmann, changed my opinion.&amp;nbsp; Peter preaches that the we should think of the Use Case diagram the way we think of a table of contents of a book.&amp;nbsp; It gives a quick and concise way to show a system&#39;s capabilities -- think section 3.3.1 of an IEEE specification.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;A common question&amp;nbsp; many customers ask about Use Case diagrams is where does one draw the boundary.&amp;nbsp; I answer that how one displays Use Cases on a Use Case diagram is a function of the model&#39;s purpose and the modeler&#39;s perspective.&amp;nbsp; Let me explain.&amp;nbsp; For Systems Engineers, the boundary box represents everything that you bill to the customer.&amp;nbsp; Therefore, if you are delivering computer equipment, include it inside the boundary and show the actor as the User.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggAHtTkDFPkPdxFhIY2DldSF0NqtVQ6VAT0deL-c9Pp313QmiB_nMCScSmFpNZeFBhkJUUPMToijkaGoyGUvYYX6E1v5_R8WfTKkG7v12_UsAPwar1Q96E4rnjSHLsteA2yYfM8cBuSS-8/s1600-h/SystemsUseCaseDiag.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggAHtTkDFPkPdxFhIY2DldSF0NqtVQ6VAT0deL-c9Pp313QmiB_nMCScSmFpNZeFBhkJUUPMToijkaGoyGUvYYX6E1v5_R8WfTKkG7v12_UsAPwar1Q96E4rnjSHLsteA2yYfM8cBuSS-8/s320/SystemsUseCaseDiag.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;For Software Engineers, show the boundary at the edge of your work focus.&amp;nbsp; In other words, if your part of the code interfaces with an API, web service, firmware or physical hardware, show these as actors.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOjNmLLslfnuA3xX2F0TRDSriLYXpw1sn1mbn7gMCDiuWX_Rc5Nf2uRFIODuqxIb8279ag3RXF9Kl7lC_UvK7pTYq0IxszqjTUIrT75nrngZp0EeMI3xYuDePFeSV38cyez6JrpnTt-bJC/s1600-h/SoftwareUseCaseDiag.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOjNmLLslfnuA3xX2F0TRDSriLYXpw1sn1mbn7gMCDiuWX_Rc5Nf2uRFIODuqxIb8279ag3RXF9Kl7lC_UvK7pTYq0IxszqjTUIrT75nrngZp0EeMI3xYuDePFeSV38cyez6JrpnTt-bJC/s320/SoftwareUseCaseDiag.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Another common question is how to show the Use Case description.&amp;nbsp; Again, my answer is to consider your audience.&amp;nbsp; Use Case description are a great way to share your understanding of the system with the stakeholders.&amp;nbsp; For one project I worked for the United States Postal Service, I gave Use Cases to the head technician so that he could confirm that the machine worked the way I understood it to work.&amp;nbsp; He was very comfortable with ladder logic, so I gave him Activity Diagrams.&amp;nbsp; For another project, the stakeholder was a marketing/sales exec.&amp;nbsp; He was more comfortable with a text description.&amp;nbsp; Both methods worked well for the intended audience.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/1864218814917022118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/use-case-diagrams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/1864218814917022118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/1864218814917022118'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/use-case-diagrams.html' title='Use Case Diagrams'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggAHtTkDFPkPdxFhIY2DldSF0NqtVQ6VAT0deL-c9Pp313QmiB_nMCScSmFpNZeFBhkJUUPMToijkaGoyGUvYYX6E1v5_R8WfTKkG7v12_UsAPwar1Q96E4rnjSHLsteA2yYfM8cBuSS-8/s72-c/SystemsUseCaseDiag.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-5852191630729877453</id><published>2009-12-17T16:11:00.001-06:00</published><updated>2009-12-19T09:54:34.484-06:00</updated><title type='text'>UML and SysML Diagrams -- an Overview</title><content type='html'>&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;UML and SysML diagrams fall into three categories: &amp;nbsp; architectural, interaction, and behavioral.&amp;nbsp; Architectural diagrams show the structure of the elements of the model.&amp;nbsp; Systems Engineers using SysML use Block Definition Diagrams, Internal Block Diagrams to show a system&#39;s architecture.&amp;nbsp; Software engineers use class and object diagrams to show the software structure.&amp;nbsp; Both use package diagrams.&amp;nbsp; Though not discussed by here, Deployment Diagrams and Component Diagrams also show the the structure and full under the Architectural Diagram classification.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Interaction diagrams show how model elements communicate.&amp;nbsp; They include communication and sequence diagrams.&amp;nbsp; Of the two, I strongly prefer sequence diagrams because they are easier to understand.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Behavioral diagrams show what the model elements do when they receive communications.&amp;nbsp; Use Case diagrams, Activity diagrams, State Charts, and timing diagrams show the system&#39;s and the software&#39;s behavior.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Both UML and SysML are visual languages that use diagrams to show views of the model.&amp;nbsp; But remember that the diagrams are &lt;i&gt;views&lt;/i&gt;, they are not the model. &amp;nbsp; &lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/5852191630729877453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/uml-and-sysml-diagrams-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/5852191630729877453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/5852191630729877453'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/uml-and-sysml-diagrams-overview.html' title='UML and SysML Diagrams -- an Overview'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-411632498922503609.post-3429558086085322592</id><published>2009-12-17T09:17:00.000-06:00</published><updated>2009-12-17T09:28:59.078-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Activity Diagram"/><category scheme="http://www.blogger.com/atom/ns#" term="Class Diagram"/><category scheme="http://www.blogger.com/atom/ns#" term="Diagrams"/><category scheme="http://www.blogger.com/atom/ns#" term="Sequence Diagram"/><category scheme="http://www.blogger.com/atom/ns#" term="State chart"/><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><category scheme="http://www.blogger.com/atom/ns#" term="Use Case"/><title type='text'>The Most Important Diagrams</title><content type='html'>&lt;span style=&quot;font-family:arial;&quot;&gt;The other day, a customer asked what I thought were the most important diagrams when creating a UML model.  Organizations new to modeling often ask the same question, so I&#39;m going to spend the next few days answering it.&lt;br /&gt;&lt;br /&gt;Always remember that the purpose of modeling is to help one understand the system.  &lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;Both the UML and SysML are full of diagrams and subtleties that make the languages richer and more expressive, but only if the readers understand the full content.  In my practice, I see developers with all levels of experience and comprehension of the UML.  As one would expect, the vast majority are somewhere in the middle.  They know the diagrams they use frequently very well and are less well versed in those they seldom use.&lt;br /&gt;&lt;br /&gt;Use the diagrams most people understand:  Use Case Diagrams, Activity Diagrams, Sequence Diagrams, and State Charts.&lt;br /&gt;&lt;br /&gt;In the next few posts, I will describe each of these diagrams and how I use them.&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://modelingsystemsandsoftware.blogspot.com/feeds/3429558086085322592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/most-important-diagrams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3429558086085322592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/411632498922503609/posts/default/3429558086085322592'/><link rel='alternate' type='text/html' href='http://modelingsystemsandsoftware.blogspot.com/2009/12/most-important-diagrams.html' title='The Most Important Diagrams'/><author><name>Jeffrey R. Cohen, P.E.</name><uri>http://www.blogger.com/profile/02446658738233542016</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>