<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Uncovering Requirements With UML Class Diagrams Part 5</title>
	<atom:link href="http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/</link>
	<description>Software product success.</description>
	<lastBuildDate>Thu, 18 Mar 2010 20:39:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Gil Rooke</title>
		<link>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/comment-page-1/#comment-494299</link>
		<dc:creator>Gil Rooke</dc:creator>
		<pubDate>Thu, 14 May 2009 10:05:12 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/#comment-494299</guid>
		<description>Going back to your first paper of this series, I see the comment that you have NOT defined class diagrams, but ER diagrams instead.

With my addition, you ARE producing class diagrams. This is what  I meant by &#039;Complete&#039; classes.
Gil</description>
		<content:encoded><![CDATA[<p>Going back to your first paper of this series, I see the comment that you have NOT defined class diagrams, but ER diagrams instead.</p>
<p>With my addition, you ARE producing class diagrams. This is what  I meant by &#8216;Complete&#8217; classes.<br />
Gil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gil Rooke</title>
		<link>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/comment-page-1/#comment-494298</link>
		<dc:creator>Gil Rooke</dc:creator>
		<pubDate>Thu, 14 May 2009 10:00:26 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/#comment-494298</guid>
		<description>Firstly let me congratulate you on one of the best sets of articles on this topic that I have seen. However, you have stopped one step short of perfection.

Most sites I go to, the use cases are large, complex and unreadable. 
    The business sign them off having only commenting on syntax and having ignored the semantics.  
    The Analysts feel the need to write requirements documents, because the requirements are all jumbled. At best, they insist on activity diagrams to outline them.
    The developers have sometimes refused to use work with them. 
    The test teams almost start again in building test scenarios.

Use cases should describe the actor-system interaction, NOT the functionality. &#039;What&#039;but NOT &#039;How&#039;. This gives them a simplified pattern of 
    Actor does ...
    System does ...
    Actor does ...
    System does ... etc

The more common pattern by far is 
    Actor does ...
    System does ...
    System does ...
    System does ...
    System does ...
    Actor does ...
    System does ...
    System does ...
    System does ...
    Actor does ...etc

Examination of a sequence diagram shows that the first &#039;System does ....&#039; could simply call procedures on other classes to achieve the system functionality. Then the subsequent &#039;System does ...&#039; clauses appear as procedures (methods) in their appropriate classes.

This is a &#039;win-win&#039; situation for all concerned:

    - The use case reverts to its proper pattern, which is then usually very much shorter with an even greater reduction in the number of alternate paths.
 
    - The functional sequences appear in the context of the class that they are sensibly associated with. As these were the most complex parts of bloated use case, they benefit a lot in being described within the context of a static class or two. Alternate paths, become other calls, each to a procedure that does just one thing, and that thing is described in context.

    - This is NOT design!!! All we are doing is writing down algorithms or workflows that the business demands. If they are NOT this, then they should never appear in any of the analysis documents. They are as much business requirements as the attributes and association rules you have already described.

    - It makes for better Business Classes (or Domain Classes if you prefer), because they are mote complete. They do NOT have some relevant steps outlined in some use case (or may be outlined repeatedly in all the use cases that use that class).

    - Once you have the class completely definedthe classes as fully independant items, it is then possible to insist that their influence on the development classes is kept visible. This then keeps the code as a working model of the business process being captured. The better this is, the longer the life of the code plus a number of more short term goals.

Hope this helps,
Gil</description>
		<content:encoded><![CDATA[<p>Firstly let me congratulate you on one of the best sets of articles on this topic that I have seen. However, you have stopped one step short of perfection.</p>
<p>Most sites I go to, the use cases are large, complex and unreadable.<br />
    The business sign them off having only commenting on syntax and having ignored the semantics.<br />
    The Analysts feel the need to write requirements documents, because the requirements are all jumbled. At best, they insist on activity diagrams to outline them.<br />
    The developers have sometimes refused to use work with them.<br />
    The test teams almost start again in building test scenarios.</p>
<p>Use cases should describe the actor-system interaction, NOT the functionality. &#8216;What&#8217;but NOT &#8216;How&#8217;. This gives them a simplified pattern of<br />
    Actor does &#8230;<br />
    System does &#8230;<br />
    Actor does &#8230;<br />
    System does &#8230; etc</p>
<p>The more common pattern by far is<br />
    Actor does &#8230;<br />
    System does &#8230;<br />
    System does &#8230;<br />
    System does &#8230;<br />
    System does &#8230;<br />
    Actor does &#8230;<br />
    System does &#8230;<br />
    System does &#8230;<br />
    System does &#8230;<br />
    Actor does &#8230;etc</p>
<p>Examination of a sequence diagram shows that the first &#8216;System does &#8230;.&#8217; could simply call procedures on other classes to achieve the system functionality. Then the subsequent &#8216;System does &#8230;&#8217; clauses appear as procedures (methods) in their appropriate classes.</p>
<p>This is a &#8216;win-win&#8217; situation for all concerned:</p>
<p>    &#8211; The use case reverts to its proper pattern, which is then usually very much shorter with an even greater reduction in the number of alternate paths.</p>
<p>    &#8211; The functional sequences appear in the context of the class that they are sensibly associated with. As these were the most complex parts of bloated use case, they benefit a lot in being described within the context of a static class or two. Alternate paths, become other calls, each to a procedure that does just one thing, and that thing is described in context.</p>
<p>    &#8211; This is NOT design!!! All we are doing is writing down algorithms or workflows that the business demands. If they are NOT this, then they should never appear in any of the analysis documents. They are as much business requirements as the attributes and association rules you have already described.</p>
<p>    &#8211; It makes for better Business Classes (or Domain Classes if you prefer), because they are mote complete. They do NOT have some relevant steps outlined in some use case (or may be outlined repeatedly in all the use cases that use that class).</p>
<p>    &#8211; Once you have the class completely definedthe classes as fully independant items, it is then possible to insist that their influence on the development classes is kept visible. This then keeps the code as a working model of the business process being captured. The better this is, the longer the life of the code plus a number of more short term goals.</p>
<p>Hope this helps,<br />
Gil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/comment-page-1/#comment-332743</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Thu, 20 Mar 2008 14:19:58 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/#comment-332743</guid>
		<description>Thanks Jakyra!

My goal was to take one of the most powerful, but inaccessible tools I know - class diagramming, and make it accessible to 10x as many people.  Ambler&#039;s articles are great, but you really need a pretty technical background to consume them immediately.

Hopefully this series provides people with enough content, at the right speed, to make them effective with class diagrams, thus improving their ability to uncover hidden requirements (the hard part of requirements analysis).</description>
		<content:encoded><![CDATA[<p>Thanks Jakyra!</p>
<p>My goal was to take one of the most powerful, but inaccessible tools I know &#8211; class diagramming, and make it accessible to 10x as many people.  Ambler&#8217;s articles are great, but you really need a pretty technical background to consume them immediately.</p>
<p>Hopefully this series provides people with enough content, at the right speed, to make them effective with class diagrams, thus improving their ability to uncover hidden requirements (the hard part of requirements analysis).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jakyra</title>
		<link>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/comment-page-1/#comment-332719</link>
		<dc:creator>jakyra</dc:creator>
		<pubDate>Thu, 20 Mar 2008 13:05:41 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/#comment-332719</guid>
		<description>Thanks for this. It&#039;s been incredibly helpful.</description>
		<content:encoded><![CDATA[<p>Thanks for this. It&#8217;s been incredibly helpful.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
