<?xml version="1.0" encoding="iso-8859-2"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Fractured Bloughtsuml | Fractured Bloughts</title>
	<atom:link href="http://fracturedbloughts.rolandhesz.com/tag/uml/feed/" rel="self" type="application/rss+xml" />
	<link>http://fracturedbloughts.rolandhesz.com</link>
	<description>Musings about work and life</description>
	<lastBuildDate>Mon, 10 May 2010 19:52:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19827</generator>
		<item>
		<title>Some thoughts on the UML Sequence Diagram</title>
		<link>http://fracturedbloughts.rolandhesz.com/2009/08/25/some-thoughts-on-the-uml-sequence-diagram/</link>
		<comments>http://fracturedbloughts.rolandhesz.com/2009/08/25/some-thoughts-on-the-uml-sequence-diagram/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 17:31:22 +0000</pubDate>
		<dc:creator>Roland Hesz</dc:creator>
				<category><![CDATA[Popular]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[asynchronous messages]]></category>
		<category><![CDATA[sequence diagram]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://fracturedbloughts.heszroland.hu/?p=617</guid>
		<description><![CDATA[Earlier this year I had an interesting talk about sequence diagrams. The topic was asynchronous messages and how UML models them. As I find the topic interesting, I thought I will write a bit about that. So how does UML models asynchronous messages, and how can you tell from a sequence diagram if a message...]]></description>
			<content:encoded><![CDATA[<p>Earlier this year I had an interesting talk about <a class="zem_slink" title="Sequence diagram" rel="wikipedia" href="http://en.wikipedia.org/wiki/Sequence_diagram">sequence diagrams</a>. The topic was <a class="zem_slink" title="Asynchrony" rel="wikipedia" href="http://en.wikipedia.org/wiki/Asynchrony">asynchronous</a> messages and how <a class="zem_slink" title="Unified Modeling Language" rel="wikipedia" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a> models them. As I find the topic interesting, I thought I will write a bit about that.</p>
<p>So how does UML models asynchronous messages, and how can you tell from a sequence diagram if a message is asynchronous? During the talk there were four signs mention that shows that a call is asynchronous:</p>
<ol>
<li>There are dashed arrows showing the return calls.</li>
<li>The activity boxes are not continuous on the main lifeline</li>
<li>The arrowhead is not filled for the asynchronous message</li>
<li>The asynchronous message is not horizontal but diagonal.</li>
</ol>
<p>My favourite one is the diagonal message, and I first I intended to write only about that, but then I thought better and decided to write bout all four statements above.</p>
<p>I will show you which ones are false statements, and why the last one &#8211; which was called simply nonsense &#8211; is actually true.</p>
<p><span id="more-617"></span></p>
<p><strong>1) There are dashed arrows showing the return calls.</strong></p>
<p>Well, asynchronous messages definitely have return calls. But so does synchronous messages. The UML specification does not restrict the use of return call to either of them. So having return calls on your diagram is not an indicator of whether the call is asynchronous or synchronous .</p>
<p style="text-align: center"><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207returncall-2.png"><img class="aligncenter" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207returncall-2.png" border="0" alt="returncall" width="333" height="237" /></a></p>
<p style="text-align: center;"><em>UML Superstructure Specification, v2.1.2 page 472 Figure 14.11</em></p>
<p><strong>2) The activity is not continuous on the lifeline of the called or the calling object</strong></p>
<p>That can be true. Or not. It actually does not show with 100% certainity if it&#8217;s a synchronous or asynchronous flow.<br />
The activity can go on and off for a couple of reasons.</p>
<p>a) On the called object&#8217;s lifeline it goes off after a return call (whether shown or not)</p>
<p style="text-align: center"><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-1.png"><img class="aligncenter" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-1.png" border="0" alt="activityonoff_1" width="362" height="223" /></a></p>
<p>b) When you do a callback from an asynchronous call</p>
<p style="text-align: center"><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-3.png"><img class="aligncenter" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-3.png" border="0" alt="activityonoff_3" width="367" height="192" /></a></p>
<p>c) When you do a callback from a synchronous call with an explicit End Source Activation on the original synchronous call</p>
<p style="text-align: center"><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-4.png"><img class="aligncenter" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-4.png" border="0" alt="activityonoff_4" width="370" height="196" /></a></p>
<p><strong>NOTE:</strong> Ok, this is a <a class="zem_slink" title="Red herring (narrative)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Red_herring_%28narrative%29">red herring</a>. It only seems to be a synchronous message, and the only reason you can do this is because the CASE tool allows you to do stupid things. This is an asynchronous call despite the misleading arrowhead. Now, can you tell me if the guy who drew this diagram was doing it deliberately to mess with the reader, or wanted to create an asynchronous message and did not bother with the correct arrow heads, or tried to be clever, and this is a synchronous message and wants to get a point through in an awkward way, or simply does not understand the whole synchronous/asynchronous business? No? Thought so.</p>
<p>So this one you can discard, bad use of the modeling tool / notation is simply that.</p>
<p>d) On the calling object&#8217;s lifeline the activity rectangle gets disrupted when you start a new message group<a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-2.png"><img class="aligncenter" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207activityonoff-2.png" border="0" alt="activityonoff_2" width="362" height="235" /></a></p>
<p>You have to take into consideration that although it is not a good practice &#8211; at least in my opinion &#8211; nothing on Earth prevents or forbids you from displaying more than one flow on one diagram, and that can mess up the activity rectangles even more.</p>
<p><strong>On the activity rectangle</strong></p>
<p>This activity rectangle thing, where we state that the object is &#8220;active&#8221; or &#8220;inactive&#8221; based on the presence of the rectangle, is not well handled. For one thing in the UML specification they are called: ExecutionOccurences (that name is telling a bit more about the meaning of it). The other thing is, if you think about the rectangle as an indicator of whether an object is active or not, then why does a callback from an asynchronous call disrupts the activeness of the object? The object does not become less active when he receives a call back.</p>
<blockquote><p><strong>Notation</strong></p>
<p>ExecutionOccurences are represented as thin rectangles (grey or white) on the lifeline (see &#8220;Lifeline (from BasicInteractions, Fragments)&#8221; on page 490).<br />
We may also represent an ExecutionSpecification by a wider labeled rectangle, where the label usually identifies the action that was executed. An example of this can be seen in Figure 14.13 on page 475.<br />
For ExecutionSpecifications that refer to atomic actions such as reading attributes of a Signal (conveyed by the Message),  the Action symbol may be associated with the reception OccurrenceSpecification with a line in order to emphasize that the whole Action is associated with only one OccurrenceSpecification (and start and finish associations refer to the very  same OccurrenceSpecification).</p>
<p>Overlapping execution occurrences on the same lifeline are represented by overlapping rectangles as shown in Figure  14.15</p>
<p><em>UML Superstructure Specification, v2.1.2 page 479</em></p>
<p><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207occurence.png"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207occurence.png" border="0" alt="occurence" width="566" height="205" /></a></p></blockquote>
<p>If you think about it as an Execution Occurence, and not whether the Object is active or not, it will make more sense.</p>
<p><strong>3) The arrowhead is not filled</strong></p>
<p>Actually that&#8217;s the only way to show an asynchronous message according to the UML Superstructure specification.</p>
<blockquote><p><strong>Notation</strong><br />
A message is shown as a line from the sender message end to the receiver message end. The line must be such that every line fragment is either horizontal or downwards when traversed from send event to receive event. The send and receive  events may both be on the same lifeline. The form of the line or arrowhead reflects properties of the message:</p>
<ul>
<li>Asynchronous Messages have an open arrow head.</li>
<li>Synchronous Messages typically represent operation calls and are shown with a filled arrow head.</li>
<li>The reply message from a method has a dashed line.</li>
</ul>
<p><em>UML Superstructure Specification, v2.1.2 page 493</em></p></blockquote>
<p style="text-align: center"><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207arrows.png"><img class="aligncenter" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207arrows.png" border="0" alt="arrows" width="401" height="344" /></a></p>
<p>A quick note: some books and CASE tools use the half-stick arrowhead to differentiate the asynchronous messages &#8211; an open arrowhead with the bottom half missing -, because for a time that was the UML specification. But even then, the asynchronous message is shown by a different arrowhead than the synchronous message.</p>
<p>Sadly, on big diagrams printed on small papers that&#8217;s not too easy to read &#8211; <a href="http://www.informit.com/articles/article.aspx?p=169507&amp;seqNum=3">Martin Fowler proposes the us of the half-stick arrowhead</a>, stating that the filled/open distinction is too subtle. I am not sure that the half-stick arrowhead will solve this, but definitely was a bigger difference than the current one.</p>
<p><strong>4) The message is not horizontal but diagonal.</strong></p>
<p>It seems weird, doesn&#8217;t it? An asynchronous message &#8220;does not cause the invoking operation to halt execution while it awaits the return of control.&#8221; That means it can take it&#8217;s own sweet time to execute and that means it is not neccessarily an instantaneous call. So, we can define how long it can take to execute and return a result for example &#8211; i.e. timeout.</p>
<p>As the lifeline of an object in a sequence diagram represents time, the simple fact that an asynchronous message have 5 seconds to start, or 5 seconds to execute, can be shown by a diagonal message line &#8211; plus we write the Duration and Timing constraints &#8211; as it happens that&#8217;s the way you show it in UML.</p>
<p style="text-align: center"><a href="http://fracturedbloughts.rolandhesz.comu/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207timing.png"><img class="aligncenter" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207timing.png" border="0" alt="timing" width="381" height="222" /></a></p>
<p>Of course most of the time we don&#8217;t apply timing constraints on a message. But it is good to know that there is a possibility to do that. So you can say, that for simplicity&#8217;s sake an asynchronous message is diagonal except when the set of timing constraints is empty. Then it&#8217;s a diagonal with an angle of 0 degrees.</p>
<p>{ Don&#8217;t do that. It&#8217;s pointless and just shows you always wanted to be a theoretical mathematician, and failed for a good reason ;) }</p>
<p>And if we are talking about time, there are a few other possibilities according to the UML specifications.</p>
<blockquote>
<p style="text-align: center;"><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207timing-2.png"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/windowslivewritersomethoughtsontheumlsequencediagram-12207timing-2.png" border="0" alt="timing_2" width="410" height="220" /></a></p>
<p style="text-align: center;"><em>Figure 14.26 &#8211; Sequence Diagram with time and timing concepts</em><strong></strong></p>
<p style="text-align: left;">The Sequence Diagram in Figure 14.26 shows how time and timing notation may be applied to describe time observation  and timing constraints. The :User sends a message Code and its duration is measured. The :ACSystem will send two  messages back to the :User. CardOut is constrained to last between 0 and 13 time units. Furthermore the interval between  the sending of Code and the reception of OK is constrained to last between d and 3*d where d is the measured duration  of the Code signal. We also notice the observation of the time point t at the sending of OK and how this is used to  constrain the time point of the reception of CardOut.</p>
<p><em>UML Superstructure Specification, v2.1.2 page 513</em></p></blockquote>
<p>We can define the timing interval for the message, and we can define Observation timing and duration for the message &#8211; useful in the case of time sensitive systems, and contrary to what some people maintaint, that there is no possibility to define time related behaviour in the UML, there is a few ways to show that.</p>
<p>That was it. All my first thoughts on the sequence diagramme and the asynchronous message notations. I had an inclination to cut it into two separate posts, but in the end, I think it&#8217;s complete this way.</p>
<p>As always, any criticism, comment, question or idea on what I have left out, or what should I delve into a bit more, or mistakes I made are welcome.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.slideshare.net/stevenl/phoenix-session-5-architecture-without-big-design-up-front-garibay">PHX Session #5 : Architecture Without Big Design Up Front (Garibay)</a> (slideshare.net)</li>
<li class="zemanta-article-ul-li"><a href="http://www.slideshare.net/vilaltajo/tradposterworkshopmds">UML &amp; SCRUM Workshop</a> (slideshare.net)</li>
<li class="zemanta-article-ul-li"><a href="http://modeling-languages.com/blog/content/usability-uml-tools-should-beat-pencil-and-paper-alternative">Usability of UML tools should beat the &#8220;pencil and paper&#8221; alternative</a> (modeling-languages.com)</li>
<li class="zemanta-article-ul-li"><a href="http://modeling-languages.com/blog/content/omg-trying-improve-interoperability-umlmofxmi-based-tools">OMG is trying to improve the interoperability of UML/MOF/XMI-based tools</a> (modeling-languages.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/26f66656-b98a-4be3-96ff-28433489d5f5/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=26f66656-b98a-4be3-96ff-28433489d5f5" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution paragraph-reblog"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://fracturedbloughts.rolandhesz.com/2009/08/25/some-thoughts-on-the-uml-sequence-diagram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Some thoughts on the UML]]></series:name>
	</item>
		<item>
		<title>Requirements and Use Cases &#8211; part II</title>
		<link>http://fracturedbloughts.rolandhesz.com/2009/02/18/requirements-and-use-cases-part-ii/</link>
		<comments>http://fracturedbloughts.rolandhesz.com/2009/02/18/requirements-and-use-cases-part-ii/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 20:16:31 +0000</pubDate>
		<dc:creator>Roland Hesz</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[alistair cockburn]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://fracturedbloughts.heszroland.hu/?p=626</guid>
		<description><![CDATA[This is the second part of the Requirements and Use Cases post, and continues right where I finished with that one. In the first part I laid down some basic thoughts about requirements as I see them, and this post builds on that. If you did not read it, please do that first. 2. Use...]]></description>
			<content:encoded><![CDATA[<p>This is the second part of the <a href="http://fracturedbloughts.rolandhesz.com/2009/02/18/requirements-and-use-cases/">Requirements and Use Cases post</a>, and continues right where I finished with that one. In the first part I laid down some basic thoughts about requirements as I see them, and this post builds on that. If you did not read it, please do that first.</p>
<h3>2. Use Cases</h3>
<p>Use cases are an interesting part of the <a class="zem_slink" title="Unified Modeling Language" rel="wikipedia" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a>. They predate the UML by years and for me they are a bit &#8220;sticking out&#8221;. The actual UML notation while can give a nice diagram does not really provide much information, most of that info is in the textual description of the Use Case &#8211; which is the actual hard part of the Use Case business.</p>
<p>People like the &#8220;potatos&#8221; nonetheless, they look easy, a stick-man here, a potato there, connect them with arrows, and we have a new requirement, lets go code. Yes, I did it too when I started to use them. Unfortunately, while the resulting diagrams would have made nice posters if I only put them in a frame, the practical value was zero. So here is a few common mistakes I met in the last few years.</p>
<p>1. the potatoes and stick men are the focus of the Use Case model, and the textual part is almost completely ignored &#8211; a really useful and thorough book is <a class="zem_slink" title="Alistair Cockburn" rel="wikipedia" href="http://en.wikipedia.org/wiki/Alistair_Cockburn">Alistair Cockburn</a>&#8216;s <a href="http://www.amazon.com/gp/product/0201702258?ie=UTF8&amp;tag=ahelyremedene-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0201702258">Writing Effective Use Cases</a><img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" src="http://www.assoc-amazon.com/e/ir?t=ahelyremedene-20&amp;l=as2&amp;o=1&amp;a=0201702258" border="0" alt="" width="1" height="1" />.</p>
<p>2. the Use Case model is used as a process flow, with one potato for every step in the process, and &lt;&lt;precedes&gt;&gt; and &lt;&lt;invokes&gt;&gt; associations, or simple associate arrows guiding you through the whole flow. This is evident, how much info does a bubble with a one line description of a 25 step long process give?</p>
<p style="text-align: center;"><a href="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/processusecaseflowdiagraml.bmp"><img class="aligncenter" src="http://fracturedbloughts.rolandhesz.com/wp-content/uploads/2009/02/processusecaseflowdiagram_small.bmp" alt="" /></a><br />
<span style="font-size: 0.8em;">Real life example. Sorry.</span></p>
<p>3. the Use Case model is used for the wrong requirements.<br />
4. the Use Case model is used in the wrong phase of the project.</p>
<p>The 1) and 2) are evident, I would talk about the last two points, 3) and 4).
</p>
<h3>3. The Use Case model is used for the wrong requirements</h3>
<p>So here we can tie the different requirement types with the Use Case model. If we look at either Wiegers&#8217;or the BABOK requirement types, we can see that there are only a few kinds of requirements that can be modeled with Use Cases.<br />
The first thing that is evident that Business Requirements cannot be modeled with Use Cases. Neither can Quality of Service Requirements, Assumptions and constraints and Implementation requirements be modeled with Use Cases &#8211; or, if you go with Wiegers&#8217;grouping, no Business Rule, Quality Attribute, External Interface or Constraint can be modeled.<br />
With a quick note that the existence of External Interfaces can be implied by Actors representing external systems.<br />
The only requirements that can be modeled with Use Cases are the User requirements, and part of the Functional Requirements. A Use Case called &#8220;Recovering User Data within 2 seconds&#8221; is not exactly a Use Case.</p>
<h3>4. the Use Case model is used in the wrong phase of the project.</h3>
<p>As Business Requirements cannot be modeled with Use Cases, and Business Requirements are on the top of the chain &#8211; they are the very first requirements to discover &#8211; it is evident that the &#8220;start requirement gathering by drawing a Use Case model&#8221; approach is wrong.<br />
And still, I have met it a few times &#8211; what is more worrying though is that it does not mean that Use Cases are used to model the Business Requirements. It simply means that Business Requirements are skipped.<br />
As a result we don&#8217;t really know why we started the project apart from a hazy &#8220;we need a new system&#8221;, what is the exact goal to achieve, and how to measure if we are there.<br />
What we will know is that there are a lot of functional requirements, an ever growing list, and we will finish the project if every single one of them is implemented.</p>
<p>It is not the fault of the Use Case, or the UML or such, but if the first requirement we see is a Use Case and it is called &#8220;Reserve Hotelroom&#8221; then we should suspect that maybe a few steps and requirements are already missing.</p>
<div class="zemanta-related">
<h5 class="zemanta-related-title">Related articles by Zemanta</h5>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://woork.blogspot.com/2009/02/interesting-resources-to-learn-object.html">Interesting Resources to learn Object Oriented Design</a> (woork.blogspot.com)</li>
<li class="zemanta-article-ul-li"><a href="http://business-project-management.suite101.com/article.cfm/manage_project_requirements_analysis_and_design">Manage Project Requirements Analysis and Design</a> (business-project-management.suite101.com)</li>
<li class="zemanta-article-ul-li"><a href="http://devlicio.us/blogs/casey/archive/2009/02/16/ddd-aggregates-and-aggregate-roots.aspx">DDD: Aggregates and Aggregate Roots</a> (devlicio.us)</li>
<li class="zemanta-article-ul-li"><a href="http://fishbowl.pastiche.org/2009/02/15/have_you_ever/">Have you ever&#8230;</a> (fishbowl.pastiche.org)</li>
<li class="zemanta-article-ul-li"><a href="http://badiaries.blogspot.com/2007/07/many-modes-of-business-analyst.html">The many modes of a Business Analyst</a> (badiaries.blogspot.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.tekkie.ro/methodology/should-my-company-use-scrum/">Should my company use Scrum?</a> (tekkie.ro)</li>
<li class="zemanta-article-ul-li"><a href="http://tc.eserver.org/33772.html">Model Driven Architecture: Feasibility or Fallacy?</a> (tc.eserver.org)</li>
</ul>
</div>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/ff55a2fe-225d-4399-aa7a-0a8c2d5196f8/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=ff55a2fe-225d-4399-aa7a-0a8c2d5196f8" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution paragraph-reblog"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://fracturedbloughts.rolandhesz.com/2009/02/18/requirements-and-use-cases-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Some thoughts on the UML]]></series:name>
	</item>
		<item>
		<title>Requirements and Use Cases</title>
		<link>http://fracturedbloughts.rolandhesz.com/2009/02/18/requirements-and-use-cases/</link>
		<comments>http://fracturedbloughts.rolandhesz.com/2009/02/18/requirements-and-use-cases/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 11:55:41 +0000</pubDate>
		<dc:creator>Roland Hesz</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[babok]]></category>
		<category><![CDATA[business requirements]]></category>
		<category><![CDATA[karl e wiegers]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[system requirements]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[use case]]></category>

		<guid isPermaLink="false">http://fracturedbloughts.heszroland.hu/?p=621</guid>
		<description><![CDATA[1. On the Requirements The first topic I want to get a go with is the use of Use Cases. But, before I start on the use cases I would like to clear up some basics about the requirements. I&#8217;ve met a lot of people for who there is only one kind of requirement: business...]]></description>
			<content:encoded><![CDATA[<h3>1. On the Requirements</h3>
<p>The first topic I want to get a go with is the use of <a href="http://en.wikipedia.org/wiki/Use_case">Use Cases</a>. But, before I start on the use cases I would like to clear up some basics about the requirements.<br />
I&#8217;ve met a lot of people for who there is only one kind of requirement: business requirements, every single one conforms to the same theoretical and well defined structure and can be documented in the same template.<br />
I personally think that it is an oversimplification of the whole thing, and I think it usually means that:</p>
<ol>
<li>half of the requirements are missing</li>
<li>a lot of different things are not recognized as requirements</li>
</ol>
<p>I think that there are different kinds of requirements, with different goals and as it happens with different documentation needs -<br />
I usually go with the Business Requirement, Functional Requirement, Functional Requirement distinctions and for me it works pretty well -, and in the literature about requirements there are different groupings and types listed. I will just look at two sources now, but I think those two are enough to prove this statement.</p>
<p>In <a href="http://www.processimpact.com/bio.shtml">Karl E. Wiegers</a>: <a href="http://www.amazon.com/gp/product/0735618798?ie=UTF8&amp;tag=ahelyremedene-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0735618798">Software Requirements, Second Edition</a><img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" src="http://www.assoc-amazon.com/e/ir?t=ahelyremedene-20&amp;l=as2&amp;o=1&amp;a=0735618798" border="0" alt="" width="1" height="1" /> the requirements are grouped as follow:</p>
<ul>
<li><strong>Business Requirements</strong>: Business requirements describe why the organization is implementing the system &#8211; the objectives the organization hopes to achieve.</li>
<li><strong>User Requirements</strong>: describe the user goals or tasks that the users must be able to perform with the product.</li>
<li><strong>System Requirements</strong>: describes the top-level requirements for a product that contains multiple subsystems.</li>
<li><strong>Functional Requirements</strong>: specify the software functionality that the developer must build into the product to enable users to accomplish their tasks.</li>
<li><strong>Business Rules</strong>: include corporate policies, government regulations, industry standards, accounting practices and computational algorithms.</li>
<li><strong>Quality Attributes</strong>: desired characteristics like usability, portability, integrity,efficiency, and robustness.</li>
<li><strong>External Interfaces</strong>: describe external interfaces between the system and the outside world.</li>
<li><strong>Constraints</strong>: restrictions concerning the development, restricting the choices available to the developer for design and construction of the product.</li>
</ul>
<p>The <a href="http://www.theiiba.org/AM/Template.cfm?Section=Body_of_Knowledge&amp;Template=/CM/HTMLDisplay.cfm&amp;ContentID=4465">Business Analysis Body of Knowledge (BABOK)</a> lists the following types of requirements:</p>
<ul>
<li><strong>Business Requirements</strong>: are higher-level statements of the goals, objectives, or needs of the enterprise. They describe such things as the reasons why a project is initiated, the things that the project will achieve, and the metrics which will be used to measure its success.</li>
<li><strong>User Requirements</strong>: are statements of the needs of a particular stakeholder or class of stakeholders. They describe the needs that a given stakeholder has and how that stakeholder will interact with a solution. User Requirements serve as a bridge between Business Requirements and the various classes of solution requirements.</li>
<li><strong>Functional</strong> <strong>Requirements</strong>: describe the behavior and information that the solution will manage. They describe capabilities the system will be able to perform in terms of behaviors or operations-a specific system action or response.</li>
<li><strong>Quality of Service Requirements</strong>: capture conditions that do not directly relate to the behavior or functionality of the solution, but rather describe environmental conditions under which the solution must remain effective or qualities that the systems must have. They are also known as non-functional or supplementary requirements.</li>
<li><strong>Assumptions and constraints</strong>: identify aspects of the problem domain that are not functional requirements of a solution, and will limit or impact the design of the solution.</li>
<li><strong>Implementation requirements</strong>: describe capabilities that the solution must have in order to facilitate transition from the current state of the enterprise to the desired future state, but that will not be needed once that transition is complete.</li>
</ul>
<p>The groupings overlap in several places, and are the results of long years of experience &#8211; in the case of BABOK long years of many people&#8217;s experience &#8211; so I think that it can be accepted that there is a real need for separating the different kind of requirements. Especially if you ever want to take the <a href="http://certification.about.com/od/certificationsbytopic/p/cbap.htm">CBAP Exam</a>, because that uses the BABOK as the course material.</p>
<p>But if we accept that there are different kind of requirements, with different goals, levels and content, then we have to admit that they need different documentation, different way to model and present them, and that they can not really be put in the same template.</p>
<p>That&#8217;s enough about laying down the basic assumptions about requirements, that I will use in the rest of the post, and we can move to the use cases.</p>
<div class="zemanta-related">
<h5 class="zemanta-related-title">Related articles by Zemanta</h5>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://woork.blogspot.com/2009/02/interesting-resources-to-learn-object.html">Interesting Resources to learn Object Oriented Design</a> (woork.blogspot.com)</li>
<li class="zemanta-article-ul-li"><a href="http://business-project-management.suite101.com/article.cfm/manage_project_requirements_analysis_and_design">Manage Project Requirements Analysis and Design</a> (business-project-management.suite101.com)</li>
<li class="zemanta-article-ul-li"><a href="http://devlicio.us/blogs/casey/archive/2009/02/16/ddd-aggregates-and-aggregate-roots.aspx">DDD: Aggregates and Aggregate Roots</a> (devlicio.us)</li>
<li class="zemanta-article-ul-li"><a href="http://fishbowl.pastiche.org/2009/02/15/have_you_ever/">Have you ever&#8230;</a> (fishbowl.pastiche.org)</li>
<li class="zemanta-article-ul-li"><a href="http://badiaries.blogspot.com/2007/07/many-modes-of-business-analyst.html">The many modes of a Business Analyst</a> (badiaries.blogspot.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.tekkie.ro/methodology/should-my-company-use-scrum/">Should my company use Scrum?</a> (tekkie.ro)</li>
<li class="zemanta-article-ul-li"><a href="http://tc.eserver.org/33772.html">Model Driven Architecture: Feasibility or Fallacy?</a> (tc.eserver.org)</li>
</ul>
</div>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/ff55a2fe-225d-4399-aa7a-0a8c2d5196f8/"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=ff55a2fe-225d-4399-aa7a-0a8c2d5196f8" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://fracturedbloughts.rolandhesz.com/2009/02/18/requirements-and-use-cases/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<series:name><![CDATA[Some thoughts on the UML]]></series:name>
	</item>
		<item>
		<title>Some thoughts on the UML&#8230;</title>
		<link>http://fracturedbloughts.rolandhesz.com/2009/02/10/some-thoughts-on-the-uml/</link>
		<comments>http://fracturedbloughts.rolandhesz.com/2009/02/10/some-thoughts-on-the-uml/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 19:23:29 +0000</pubDate>
		<dc:creator>Roland Hesz</dc:creator>
				<category><![CDATA[Series]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://fracturedbloughts.heszroland.hu/?p=618</guid>
		<description><![CDATA[When I first met UML &#8211; way back in school, in 1999 &#8211; I instantly liked it. It looked cool, it was new and it went pretty well with Java &#8211; which was new too. Until then and for a long time after that programming was taught with Clipper, Turbo Pascal and such, Java was...]]></description>
			<content:encoded><![CDATA[<p>When I first met UML &#8211; way back in school, in 1999 &#8211; I instantly liked it. It looked cool, it was new and it went pretty well with Java &#8211; which was new too. Until then and for a long time after that programming was taught with Clipper, Turbo Pascal and such, Java was not that popular until, if I remember well, 2002. In 2001 I read the Gang of Four book the first time, and dived into patterns. Not too effectively of course, and definitely not using it right at all, but we all start somewhere, I think.</p>
<p>Since then I tried to educate myself, keeping up with the new stuff &#8211; which means buying a lot of books from amazon, and reading the interweb s. Hungarian publishers are not &#8211; or at least were not &#8211;  too mad about this technology stuff, except when it comes to programming languages. The Gang of Four Design Pattern book took 9 years to publish here in Hungarian. But I digress.</p>
<p>I try to stay up to date, and try to make people improve where ever I go &#8211; especially with the &#8220;before coding&#8221; phases of the project, requirement gathering, design, etc. And then I like tools too. That&#8217;s why when Yanic asked if I would do a review of his <a href="http://tracemodeler.com">Trace Modeler</a> application I instantly said yes. And will publish the review the next week. But in the meantime I had a sudden idea &#8211; if I have this blog, why not write about UML an it&#8217;s use as I see it? I am reviewing a modeling tool that uses UML notations, so I could go a bit into the notation parts too. At the least, there will be some content on the blog. At the most some people get ideas.</p>
<p>It&#8217;s my blog, I work with UML, so noone can prevent me doing that. In the next couple of weeks &#8211; or, considering my writing speed, months &#8211; I will run a series of posts about UML and related stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://fracturedbloughts.rolandhesz.com/2009/02/10/some-thoughts-on-the-uml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Some thoughts on the UML]]></series:name>
	</item>
	</channel>
</rss>

