<?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 1</title>
	<atom:link href="http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/</link>
	<description>Software product success.</description>
	<lastBuildDate>Tue, 22 May 2012 20:46:27 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>By: Roger L. Cauvin</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-/#comment-826640</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Sun, 06 Nov 2011 22:12:30 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-826640</guid>
		<description>@Anon, it is certainly okay to show classes or concepts with no explicit attributes in a class or static structure diagram.  In fact, most of my conceptual models contain no methods and few, if any, attributes.  When we are modeling the concepts in a domain, we typically care most about the concepts and their interrelationships, and we are not making decisions about the methods and attributes that actual software classes might contain.  But even the classes in design class diagrams need not show attributes.</description>
		<content:encoded><![CDATA[<p>@Anon, it is certainly okay to show classes or concepts with no explicit attributes in a class or static structure diagram.  In fact, most of my conceptual models contain no methods and few, if any, attributes.  When we are modeling the concepts in a domain, we typically care most about the concepts and their interrelationships, and we are not making decisions about the methods and attributes that actual software classes might contain.  But even the classes in design class diagrams need not show attributes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gil Rooke</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-826619</link>
		<dc:creator>Gil Rooke</dc:creator>
		<pubDate>Sun, 06 Nov 2011 20:24:25 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-826619</guid>
		<description>I still think these blogs are first class. I also still feel that you have to be careful providing full UML to the business. I constantly meet prohibitions against this; some people hate it.

Following this theme, I draw a &#039;Domain Diagram&#039; as a &#039;logical class diagram; in the entity modelling sense. The domain diagram only contains .&#039;Business Objects&#039;. which are classes that the CEO or lead business people will understand. Again, within a class, I may simplify the details, again to make it readable by the business; not just by Business Analysts, but by non technical managers and artisans. The Domain Diagram is drawn with one objective, and that is to encapsulate the Business Rules. There are 5 types of Business Rule:
     1. Constraints on Classes
     2. Constraints on Attributes
     3. Pre-conditions on operations
     4. Post-conditions on operations.
     5. Constraints on the links between business objects.

I also draw use cases, but these more or less avoid the Business Rules. These describe what the user wants of the system, They are also restricted to simple concepts:
     1. User (Actor)
     2. Goal
     3. Precondition
     4. Trigger
     5. Post Condition
     6. Scenario (User-System interface - almost as a protocol - user does, system does. 

Business Rules have a many to many association with most use cases, so sepparating them reduces many redundant use case steps. It also allows auto-matic testing, at two levels, so that when the use case is tested, it is known that the Business Rules already working. 

Then analysis of the system falls down to two stages:
     1. Have we covered everything that the user wnats to do (needs)
     2. Have we covered all the business object contraints and rules the the Business requires, on top of the use cases. 

For more detail, see my blog on the Wesite (blog) address attached. This shows how to use this approach in agile projects.</description>
		<content:encoded><![CDATA[<p>I still think these blogs are first class. I also still feel that you have to be careful providing full UML to the business. I constantly meet prohibitions against this; some people hate it.</p>
<p>Following this theme, I draw a &#8216;Domain Diagram&#8217; as a &#8216;logical class diagram; in the entity modelling sense. The domain diagram only contains .&#8217;Business Objects&#8217;. which are classes that the CEO or lead business people will understand. Again, within a class, I may simplify the details, again to make it readable by the business; not just by Business Analysts, but by non technical managers and artisans. The Domain Diagram is drawn with one objective, and that is to encapsulate the Business Rules. There are 5 types of Business Rule:<br />
     1. Constraints on Classes<br />
     2. Constraints on Attributes<br />
     3. Pre-conditions on operations<br />
     4. Post-conditions on operations.<br />
     5. Constraints on the links between business objects.</p>
<p>I also draw use cases, but these more or less avoid the Business Rules. These describe what the user wants of the system, They are also restricted to simple concepts:<br />
     1. User (Actor)<br />
     2. Goal<br />
     3. Precondition<br />
     4. Trigger<br />
     5. Post Condition<br />
     6. Scenario (User-System interface &#8211; almost as a protocol &#8211; user does, system does. </p>
<p>Business Rules have a many to many association with most use cases, so sepparating them reduces many redundant use case steps. It also allows auto-matic testing, at two levels, so that when the use case is tested, it is known that the Business Rules already working. </p>
<p>Then analysis of the system falls down to two stages:<br />
     1. Have we covered everything that the user wnats to do (needs)<br />
     2. Have we covered all the business object contraints and rules the the Business requires, on top of the use cases. </p>
<p>For more detail, see my blog on the Wesite (blog) address attached. This shows how to use this approach in agile projects.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anon</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-826547</link>
		<dc:creator>Anon</dc:creator>
		<pubDate>Sun, 06 Nov 2011 15:19:56 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-826547</guid>
		<description>In a class diagram if a class doesn&#039;t have any attributes which are relevant to a case study, is it permissible to have no attributes in a class, with only operations? Please answer</description>
		<content:encoded><![CDATA[<p>In a class diagram if a class doesn&#8217;t have any attributes which are relevant to a case study, is it permissible to have no attributes in a class, with only operations? Please answer</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gil Rooke</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-494302</link>
		<dc:creator>Gil Rooke</dc:creator>
		<pubDate>Thu, 14 May 2009 10:49:18 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-494302</guid>
		<description>I always seem to have second thoughts. A quick re-read of what you say shows that you believe that the class diagrams help explain the documents.  I think that is wrong. They are part of the essential business model. Having the complete model, use cases and classes does help explain bad documentation, I agree. But producing proper documentation in the first place is quicker, simpler, less confusing etc.

Gil

PS On the previous reply, I didn&#039;t tick the box that notifies me of followup comments by email. Can you help here please?</description>
		<content:encoded><![CDATA[<p>I always seem to have second thoughts. A quick re-read of what you say shows that you believe that the class diagrams help explain the documents.  I think that is wrong. They are part of the essential business model. Having the complete model, use cases and classes does help explain bad documentation, I agree. But producing proper documentation in the first place is quicker, simpler, less confusing etc.</p>
<p>Gil</p>
<p>PS On the previous reply, I didn&#8217;t tick the box that notifies me of followup comments by email. Can you help here please?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gil Rooke</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-494301</link>
		<dc:creator>Gil Rooke</dc:creator>
		<pubDate>Thu, 14 May 2009 10:42:38 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-494301</guid>
		<description>Again; congratulations on an excellent paper. 
My comments of your paper 5 cover the discussion on classes vs ERD.

I have one reservation. The title is &#039;Uncovering Requirements with UML class diagrams&#039;.   

The articles give a very clear of what Classes are and how to draw and interpret them. However, this is all syntax of classes. It would have better been called &#039;How to work with UML class diagrams when you begin Uncovering Requirements&#039;. 

There are a number of key semantic concepts that you clearly missed. 

    -  A computer system should model the business that it lives in as closely as possible. Then it is more maintainable. If the users think about changes, they will often reject the big ones before asking, because they sound too complicated. If the match between business and system is bad, they may have thrown out an very simple change, without even bothering to ask. At the other end of the scale, they will fight furiously to get what is a very simple business change, even when it has been explained that the system can NOT ever support that feature without a complete rewrite.

    - The class model is always morer static than the dynamic use case model. Hence, there is a stable base to use when discussing future changes to the system. It usually restricts most of the changes to just a rewrite of a use case or two and possibly an extra feature on a couple of classes. This is why, it is even more important for the classes to be a close map to the business; yet BPMN deals with only the identification and understanding of what are essentially use cases.

I like to start my business model of a system, with a class or object model of the &#039;Mission Statement&#039; for the proposed project. It is usually stated in terms of 4 or 5 classes and some activity that they want to involve them in. This activity is then either embyonic use cases or procedures on these classes. Use cases when defined, will be implemented as application controllers, which if you think of sequence diagrams, call procedures on the classes. 

So the whole mission statement can be mapped with surprising detail, for a first step, as a class diagram, with links (associations) laying out the roads that they use cases must follow. With NO controllers (use cases) identified at this stage, the busness classes will appear to link to objects that are real people; these are embryonic actors. Again, it does NOT matter whether we have just classes, or distinguish instances of classes, like identifiable people in class staff; this will sort itself very rapidly as the classes get more clearly defined.

However, the first diagram we draw can actually capture a simple view of the whole of the project to a level that the business should have really clear. 

If we start with process diagrams or use cases, you may already be ahead of the business&#039; thinking. Even if they have thought this through a bit, I will bet that ir is more liekly to change that the simple class diagram.

Now we are beginning to &#039;Uncover Requirements&#039;. Dont forget that a few requirements lie in the goals and branch points to alternative paths in use cases. However, the classes should hold a lot more:
    - invariants on the class
    - constraints on the attributes
    - pre-conditions on the procedures
    - post conditions on the procedures, if the algorithm to be used is dictated by the business
    - constraints on the associations; multiplicity, optionality, qualifiers and other constraints.

Having both use cases and classes shows where the rules fit in and gives their context. The diagrams can provide a good &#039;Requirements List&#039; in pictorial form (worth a thousand words and al&#039; that!)

Gil</description>
		<content:encoded><![CDATA[<p>Again; congratulations on an excellent paper.<br />
My comments of your paper 5 cover the discussion on classes vs ERD.</p>
<p>I have one reservation. The title is &#8216;Uncovering Requirements with UML class diagrams&#8217;.   </p>
<p>The articles give a very clear of what Classes are and how to draw and interpret them. However, this is all syntax of classes. It would have better been called &#8216;How to work with UML class diagrams when you begin Uncovering Requirements&#8217;. </p>
<p>There are a number of key semantic concepts that you clearly missed. </p>
<p>    &#8211;  A computer system should model the business that it lives in as closely as possible. Then it is more maintainable. If the users think about changes, they will often reject the big ones before asking, because they sound too complicated. If the match between business and system is bad, they may have thrown out an very simple change, without even bothering to ask. At the other end of the scale, they will fight furiously to get what is a very simple business change, even when it has been explained that the system can NOT ever support that feature without a complete rewrite.</p>
<p>    &#8211; The class model is always morer static than the dynamic use case model. Hence, there is a stable base to use when discussing future changes to the system. It usually restricts most of the changes to just a rewrite of a use case or two and possibly an extra feature on a couple of classes. This is why, it is even more important for the classes to be a close map to the business; yet BPMN deals with only the identification and understanding of what are essentially use cases.</p>
<p>I like to start my business model of a system, with a class or object model of the &#8216;Mission Statement&#8217; for the proposed project. It is usually stated in terms of 4 or 5 classes and some activity that they want to involve them in. This activity is then either embyonic use cases or procedures on these classes. Use cases when defined, will be implemented as application controllers, which if you think of sequence diagrams, call procedures on the classes. </p>
<p>So the whole mission statement can be mapped with surprising detail, for a first step, as a class diagram, with links (associations) laying out the roads that they use cases must follow. With NO controllers (use cases) identified at this stage, the busness classes will appear to link to objects that are real people; these are embryonic actors. Again, it does NOT matter whether we have just classes, or distinguish instances of classes, like identifiable people in class staff; this will sort itself very rapidly as the classes get more clearly defined.</p>
<p>However, the first diagram we draw can actually capture a simple view of the whole of the project to a level that the business should have really clear. </p>
<p>If we start with process diagrams or use cases, you may already be ahead of the business&#8217; thinking. Even if they have thought this through a bit, I will bet that ir is more liekly to change that the simple class diagram.</p>
<p>Now we are beginning to &#8216;Uncover Requirements&#8217;. Dont forget that a few requirements lie in the goals and branch points to alternative paths in use cases. However, the classes should hold a lot more:<br />
    &#8211; invariants on the class<br />
    &#8211; constraints on the attributes<br />
    &#8211; pre-conditions on the procedures<br />
    &#8211; post conditions on the procedures, if the algorithm to be used is dictated by the business<br />
    &#8211; constraints on the associations; multiplicity, optionality, qualifiers and other constraints.</p>
<p>Having both use cases and classes shows where the rules fit in and gives their context. The diagrams can provide a good &#8216;Requirements List&#8217; in pictorial form (worth a thousand words and al&#8217; that!)</p>
<p>Gil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Leprachaun</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-381421</link>
		<dc:creator>The Leprachaun</dc:creator>
		<pubDate>Mon, 02 Jun 2008 01:54:26 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-381421</guid>
		<description>Man - this is a long way round and almost impossible to scale.

Just think, how long would it take you to teach this to 1000 business users?

My guess is that you would not only fail to get the concept accross, but that you would spend your life supporting the user population and never achieve a best practice library for the business.

Have a look at the video on my web site - www.processmaster.com

It puts everything you are doing above into a simple tool, which can be learned in a short video - and uses BPMN, which is the most suitable stencil for normal people.

And the model can be converted over to UML (or any other model) with an adaptor if needed.

You are an expert, and you do know your stuff, but educating people in this way only works for people with basic expertise - you have to go for a media solution if this is to be taken to the masses..............even a bad video is better than a good document.</description>
		<content:encoded><![CDATA[<p>Man &#8211; this is a long way round and almost impossible to scale.</p>
<p>Just think, how long would it take you to teach this to 1000 business users?</p>
<p>My guess is that you would not only fail to get the concept accross, but that you would spend your life supporting the user population and never achieve a best practice library for the business.</p>
<p>Have a look at the video on my web site &#8211; <a href="http://www.processmaster.com" rel="nofollow">http://www.processmaster.com</a></p>
<p>It puts everything you are doing above into a simple tool, which can be learned in a short video &#8211; and uses BPMN, which is the most suitable stencil for normal people.</p>
<p>And the model can be converted over to UML (or any other model) with an adaptor if needed.</p>
<p>You are an expert, and you do know your stuff, but educating people in this way only works for people with basic expertise &#8211; you have to go for a media solution if this is to be taken to the masses&#8230;&#8230;&#8230;&#8230;..even a bad video is better than a good document.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: EmPowerTec UML and modeling blog &#187; Blog Archive &#187; Is UML alive and well?</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-374949</link>
		<dc:creator>EmPowerTec UML and modeling blog &#187; Blog Archive &#187; Is UML alive and well?</dc:creator>
		<pubDate>Wed, 21 May 2008 19:36:51 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-374949</guid>
		<description>[...] addition, the UML is also used to capture requirements in analysis models, something that can&#8217;t be done in [...]</description>
		<content:encoded><![CDATA[<p>[...] addition, the UML is also used to capture requirements in analysis models, something that can&#8217;t be done in [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-324587</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Sun, 09 Mar 2008 03:43:35 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-324587</guid>
		<description>Hey David, thanks (twice) for responding.

In my particular example, they have a &quot;bad ER model&quot; in my opinion as a technologist, because they developed a schema that does not &quot;closely enough&quot; (my opinion) reflect the concepts in play.  I would have designed it differently.  I can also see, in conversations with them about future unanticipated (but predictable) uses, that they will have to do more work to support those needs.

Reviewing a logical model of how they represent data did not provide me with insights into the uses or interpretation of the data.  It provided me with insight into how their implementation was done.

I don&#039;t necessarily disagree with you about models created for the purpose of design and implementation.  I subscribe to the &quot;many models&quot; school, and will happily draw whatever makes the most sense in a specific situation.

I&#039;ve been having success over the last year in using fact models to drive teams to common use of terms and language.  And I&#039;ve had success for several years in using class diagrams to validate an understanding of the domain with subject matter experts.  

I&#039;ve also seen the same thing you have, with people running screaming.  :)

I do not believe that a class diagram &quot;stands alone&quot; but I have found it to be consistently effective when collaborating and &quot;talking to&quot; a diagram with SMEs.

There is one exception to that.  I have included snippets of class diagrams within requirements documents to illustrate points.  For example, I might show a small diagram that highlights the relationships between a sales order, an order item, and a product.  This makes it much easier to express, for example, a requirement for distributing (or allocating) a discount to an order across the order items (for revenue recognition purposes).</description>
		<content:encoded><![CDATA[<p>Hey David, thanks (twice) for responding.</p>
<p>In my particular example, they have a &#8220;bad ER model&#8221; in my opinion as a technologist, because they developed a schema that does not &#8220;closely enough&#8221; (my opinion) reflect the concepts in play.  I would have designed it differently.  I can also see, in conversations with them about future unanticipated (but predictable) uses, that they will have to do more work to support those needs.</p>
<p>Reviewing a logical model of how they represent data did not provide me with insights into the uses or interpretation of the data.  It provided me with insight into how their implementation was done.</p>
<p>I don&#8217;t necessarily disagree with you about models created for the purpose of design and implementation.  I subscribe to the &#8220;many models&#8221; school, and will happily draw whatever makes the most sense in a specific situation.</p>
<p>I&#8217;ve been having success over the last year in using fact models to drive teams to common use of terms and language.  And I&#8217;ve had success for several years in using class diagrams to validate an understanding of the domain with subject matter experts.  </p>
<p>I&#8217;ve also seen the same thing you have, with people running screaming.  :)</p>
<p>I do not believe that a class diagram &#8220;stands alone&#8221; but I have found it to be consistently effective when collaborating and &#8220;talking to&#8221; a diagram with SMEs.</p>
<p>There is one exception to that.  I have included snippets of class diagrams within requirements documents to illustrate points.  For example, I might show a small diagram that highlights the relationships between a sales order, an order item, and a product.  This makes it much easier to express, for example, a requirement for distributing (or allocating) a discount to an order across the order items (for revenue recognition purposes).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Wright</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-324566</link>
		<dc:creator>David Wright</dc:creator>
		<pubDate>Sun, 09 Mar 2008 01:30:29 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-324566</guid>
		<description>Scott, just saw your comment...

You can certainly produce a bad ER model; or is it a generalized meta-model the vendor uses? That is handy when you can support different clients&#039; business without having to change the model.

...but I will take this as an answer I could expect; if class diagrams work better with the involved business people, then that is the best reason to use them. I know other people who run screaming from either type of model, but love Process Models, so you have to use what works best.</description>
		<content:encoded><![CDATA[<p>Scott, just saw your comment&#8230;</p>
<p>You can certainly produce a bad ER model; or is it a generalized meta-model the vendor uses? That is handy when you can support different clients&#8217; business without having to change the model.</p>
<p>&#8230;but I will take this as an answer I could expect; if class diagrams work better with the involved business people, then that is the best reason to use them. I know other people who run screaming from either type of model, but love Process Models, so you have to use what works best.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Wright</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-324560</link>
		<dc:creator>David Wright</dc:creator>
		<pubDate>Sun, 09 Mar 2008 00:56:54 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-324560</guid>
		<description>OK, you can but why?  And I think you can define entity using the word concept, and vice-versa.

I am just saying ER diagrams are good for data, and UML is good for the software that uses the data, and people should know that. In that case, I still want to hear a good reason to use UML for data requirements over ER diagrams, other than that you can...</description>
		<content:encoded><![CDATA[<p>OK, you can but why?  And I think you can define entity using the word concept, and vice-versa.</p>
<p>I am just saying ER diagrams are good for data, and UML is good for the software that uses the data, and people should know that. In that case, I still want to hear a good reason to use UML for data requirements over ER diagrams, other than that you can&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-324545</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Sat, 08 Mar 2008 23:06:29 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-324545</guid>
		<description>Thanks guys, both for continued participation here and for the healthy debate!

Dave - in addition to Roger&#039;s citation of Wikipedia, here&#039;s how Scott Ambler teases the two notions apart:

&lt;blockquote&gt;
From the point of view of an object-oriented developer data modeling is conceptually similar to class modeling. With data modeling you identify entity types whereas with class modeling you identify classes.  Data attributes are assigned to entity types just as you would assign attributes and operations to classes.  There are associations between entities, similar to the associations between classes – relationships, inheritance, composition, and aggregation are all applicable concepts in data modeling.

Traditional data modeling is different from class modeling because it focuses solely on data – class models allow you to explore both the behavior and data aspects of your domain, with a data model you can only explore data issues.
&lt;cite&gt;&lt;a href=&quot;http://www.agiledata.org/essays/dataModeling101.html&quot; rel=&quot;nofollow&quot;&gt;Data Modeling 101&lt;/a&gt;, Scott Ambler&lt;/cite&gt;
&lt;/blockquote&gt;

Personally, I feel that there is an important distinction between &quot;What I&#039;m trying to represent&quot; and &quot;how I&#039;m going to represent it.&quot;  As an OO programmer, I expect significant overlap between the two, but not perfect alignment in all cases.  Even though you are making a distinction between the logical and the physical data models, they are still both representations of &quot;what&quot; and not representations of &quot;why.&quot;

When using a class diagram (or, as Roger points out - a static structure diagram) for analysis, you are building a conceptual model.  As Ambler also points out in his article, these can be created either before or instead of a logical data model.

I&#039;m working with a COTS (customized off-the-shelf) software vendor right now who&#039;s LDM does not at all represent the conceptual view of the business.  This will end up being a source of additional expense for the vendor (and their clients) over time.  Regardless, my current role is to validate an understanding of what the business needs - and I&#039;m using class diagrams.  The vendor is capable of translating the business view into his implementation view.  The business should not be expected to translate in the opposite direction.  Both the business and the vendor can utilize this class diagram to do that.  Only the vendor would be able to use their logical data model.

That&#039;s a long winded way of saying I prefer the class diagram to an ER diagram because I want to explicitly separate &quot;This is what we need&quot; from &quot;Here&#039;s how we provide it.&quot;</description>
		<content:encoded><![CDATA[<p>Thanks guys, both for continued participation here and for the healthy debate!</p>
<p>Dave &#8211; in addition to Roger&#8217;s citation of Wikipedia, here&#8217;s how Scott Ambler teases the two notions apart:</p>
<blockquote><p>
From the point of view of an object-oriented developer data modeling is conceptually similar to class modeling. With data modeling you identify entity types whereas with class modeling you identify classes.  Data attributes are assigned to entity types just as you would assign attributes and operations to classes.  There are associations between entities, similar to the associations between classes – relationships, inheritance, composition, and aggregation are all applicable concepts in data modeling.</p>
<p>Traditional data modeling is different from class modeling because it focuses solely on data – class models allow you to explore both the behavior and data aspects of your domain, with a data model you can only explore data issues.<br />
<cite><a href="http://www.agiledata.org/essays/dataModeling101.html" rel="nofollow">Data Modeling 101</a>, Scott Ambler</cite>
</p></blockquote>
<p>Personally, I feel that there is an important distinction between &#8220;What I&#8217;m trying to represent&#8221; and &#8220;how I&#8217;m going to represent it.&#8221;  As an OO programmer, I expect significant overlap between the two, but not perfect alignment in all cases.  Even though you are making a distinction between the logical and the physical data models, they are still both representations of &#8220;what&#8221; and not representations of &#8220;why.&#8221;</p>
<p>When using a class diagram (or, as Roger points out &#8211; a static structure diagram) for analysis, you are building a conceptual model.  As Ambler also points out in his article, these can be created either before or instead of a logical data model.</p>
<p>I&#8217;m working with a COTS (customized off-the-shelf) software vendor right now who&#8217;s LDM does not at all represent the conceptual view of the business.  This will end up being a source of additional expense for the vendor (and their clients) over time.  Regardless, my current role is to validate an understanding of what the business needs &#8211; and I&#8217;m using class diagrams.  The vendor is capable of translating the business view into his implementation view.  The business should not be expected to translate in the opposite direction.  Both the business and the vendor can utilize this class diagram to do that.  Only the vendor would be able to use their logical data model.</p>
<p>That&#8217;s a long winded way of saying I prefer the class diagram to an ER diagram because I want to explicitly separate &#8220;This is what we need&#8221; from &#8220;Here&#8217;s how we provide it.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger L. Cauvin</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-324208</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Sat, 08 Mar 2008 13:45:32 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-324208</guid>
		<description>Dave, you can use either kind of diagram to model concepts and their associations.

Wikipedia states:

&quot;An Entity-relationship model is used in modern database software engineering to illustrate the logical structure of a database.&quot;

Yet, as you wrote, you can model concepts, not just database entities, in an ERD.

Similarly, though developers use class diagrams to model software classes, you can model concepts in a class diagram.

By the way, UML has shifted from calling them &quot;class diagrams&quot; to calling them &quot;static structure diagrams&quot;, precisely because they are useful for modeling more than just classes.  Concepts and associations are certainly a form of static structure.</description>
		<content:encoded><![CDATA[<p>Dave, you can use either kind of diagram to model concepts and their associations.</p>
<p>Wikipedia states:</p>
<p>&#8220;An Entity-relationship model is used in modern database software engineering to illustrate the logical structure of a database.&#8221;</p>
<p>Yet, as you wrote, you can model concepts, not just database entities, in an ERD.</p>
<p>Similarly, though developers use class diagrams to model software classes, you can model concepts in a class diagram.</p>
<p>By the way, UML has shifted from calling them &#8220;class diagrams&#8221; to calling them &#8220;static structure diagrams&#8221;, precisely because they are useful for modeling more than just classes.  Concepts and associations are certainly a form of static structure.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave Wright</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-323962</link>
		<dc:creator>Dave Wright</dc:creator>
		<pubDate>Sat, 08 Mar 2008 06:07:17 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-323962</guid>
		<description>C&#039;mon people, these aren&#039;t UML Classes, they are entities of a Logical ER Data Model.

UML is great for for modeling component/OO software. Software does stuff, so a Class without operations is just simply incomplete. If you want to model data at rest, use a data model, and augment it with business rules.

(I know, I know, some people will say they prefer Class diagrams over ER diagrams when modeling data, but I have never heard a good reason why...any one got one?)</description>
		<content:encoded><![CDATA[<p>C&#8217;mon people, these aren&#8217;t UML Classes, they are entities of a Logical ER Data Model.</p>
<p>UML is great for for modeling component/OO software. Software does stuff, so a Class without operations is just simply incomplete. If you want to model data at rest, use a data model, and augment it with business rules.</p>
<p>(I know, I know, some people will say they prefer Class diagrams over ER diagrams when modeling data, but I have never heard a good reason why&#8230;any one got one?)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger L. Cauvin</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-323583</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Fri, 07 Mar 2008 14:15:34 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-323583</guid>
		<description>In the first edition of &lt;i&gt;Applying UML and Patterns&lt;/i&gt;, Craig Larman calls these diagrams &lt;a href=&quot;http://cauvin.blogspot.com/2006/11/conceptual-models.html&quot; rel=&quot;nofollow&quot;&gt;&quot;conceptual models&quot;&lt;/a&gt;.  A couple of guidelines from Larman:

&quot;If in doubt, make it a separate concept.&quot; - In other words, prefer concepts over attributes.

&quot;It is better to overspecify a conceptual model with lots of fine-grained concepts than to underspecify it.&quot; - When there are &quot;implied&quot; concepts, explicitly model them.

Another important thing to recognize is that conceptual models are an &lt;a href=&quot;http://cauvin.blogspot.com/2006/11/explication.html&quot; rel=&quot;nofollow&quot;&gt;explication&lt;/a&gt; tool.</description>
		<content:encoded><![CDATA[<p>In the first edition of <i>Applying UML and Patterns</i>, Craig Larman calls these diagrams <a href="http://cauvin.blogspot.com/2006/11/conceptual-models.html" rel="nofollow">&#8220;conceptual models&#8221;</a>.  A couple of guidelines from Larman:</p>
<p>&#8220;If in doubt, make it a separate concept.&#8221; &#8211; In other words, prefer concepts over attributes.</p>
<p>&#8220;It is better to overspecify a conceptual model with lots of fine-grained concepts than to underspecify it.&#8221; &#8211; When there are &#8220;implied&#8221; concepts, explicitly model them.</p>
<p>Another important thing to recognize is that conceptual models are an <a href="http://cauvin.blogspot.com/2006/11/explication.html" rel="nofollow">explication</a> tool.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luís Sérgio Oliveira</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/comment-page-1/#comment-323378</link>
		<dc:creator>Luís Sérgio Oliveira</dc:creator>
		<pubDate>Fri, 07 Mar 2008 09:40:34 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comment-323378</guid>
		<description>I think this post of yours is very relevant. Sometimes we should cross the psychological barrier that only a subset of UML diagrams should be meant for customer consumption.

In relation to the beginning of the post, I recall the idea of literal modelling and the book &quot;Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML&quot; by Jim Arlow and Ila Neustadt. They convey the idea of literal modelling and use it throughout the book to describe the business archetypes.

They also note that even a person who does not know the formality of UML will understand most of the diagrams if these have descriptive text. It sure is a powerful form of communication.</description>
		<content:encoded><![CDATA[<p>I think this post of yours is very relevant. Sometimes we should cross the psychological barrier that only a subset of UML diagrams should be meant for customer consumption.</p>
<p>In relation to the beginning of the post, I recall the idea of literal modelling and the book &#8220;Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML&#8221; by Jim Arlow and Ila Neustadt. They convey the idea of literal modelling and use it throughout the book to describe the business archetypes.</p>
<p>They also note that even a person who does not know the formality of UML will understand most of the diagrams if these have descriptive text. It sure is a powerful form of communication.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

