<?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: Use Case Example With Business Rules</title>
	<atom:link href="http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/</link>
	<description>Software product success.</description>
	<lastBuildDate>Fri, 12 Mar 2010 01:42:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Use Case Basics: Keeping it Simple : Practical Analyst</title>
		<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/comment-page-1/#comment-527325</link>
		<dc:creator>Use Case Basics: Keeping it Simple : Practical Analyst</dc:creator>
		<pubDate>Fri, 02 Oct 2009 01:08:24 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/#comment-527325</guid>
		<description>[...] tech&#8221;, we can still end up with use cases that are bogged down with rules and constraints. Extracting rules from the use cases enables us to change the rules without having to change the use case. Who wants to update the use [...]</description>
		<content:encoded><![CDATA[<p>[...] tech&#8221;, we can still end up with use cases that are bogged down with rules and constraints. Extracting rules from the use cases enables us to change the rules without having to change the use case. Who wants to update the use [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/comment-page-1/#comment-270514</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Fri, 18 Jan 2008 01:31:21 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/#comment-270514</guid>
		<description>Linda,  thanks for commenting and welcome to Tyner Blain!  The last thing I would do is blow off your comments, and antiquated doesn&#039;t mean bad.

Einstein&#039;s general relativity theory, Newton&#039;s 2nd law, Euclidean geometry, and the mythical man-month are all &quot;antiquated&quot; ideas.  I feel sorry for anyone who discounts them.

You make a good point that process vs use case documentation is essentially the same information, from nearly the same point of view.  I accept your premise that they are equivalent for this discussion.

Also - the &quot;compound steps&quot; issue you identify - completely agree.  I stole the use case as an example, and I agree with you.  However, that&#039;s a tangential one.  On to the real question...

I differentiate business rules from requirements for the purpose of improving readability, to reduce the effort of maintaining documents in a world filled with constant change, and most importantly, to encourage the development team to implement them separately.  This separation of implementation provides the biggest bang for the buck, because it dramatically reduces the cost and time to change the way your business operates.

Given that premise, &#039;validate transaction details&#039; may include (since you&#039;re decomposing further) &#039;confirm that resident address is within 10 miles of ATM.&#039;  Yes, we who travel see that as a dramatic inconvenience.  Imagine that the ATM is in rural China, and as a mechanism of combating fraud and violence, the bank established a policy that prevents people from stealing the cards (or identities) of rural villagers in order to cash in at an ATM far away.  

That policy works fine for 99% of their customers, until the local economy and culture evolves to the point where more customers desire to have access to their cash while in the next village.  The bank changes the policy to allow a 20 mile range, in response to this customer demand.

The policy (a limitation, in this example) is orthogonal to the process - in other words, changing the policy doesn&#039;t change the way the process works, just the criterion about which the flow branches.

If the developers had implemented a complex location-inference approximation that works up to a distance of 15 miles, the cost of changing this policy could be very hard - intense development combined with software (or even firmware) updates to the ATM machines.  That would be bad.

If the developers had written code that says &quot;Check distance &lt;= X&quot; and then abstracted the value of X to a lookup table, then the cost of change would be much lower - just update the data (maybe even through a nightly update) without changing the software (logic).

Take this to the next level - so that the developers are only writing &quot;call all required validations&quot; into the code, with a separate database that says &quot;these validations are required (with the details of how each one is implemented)&quot;.  Now the bank can eliminate the policy, or add new ones, again - without updating the software.  This is a contrived example, but it demonstrates the power of the abstraction.

One distinction between rules and requirements is frequency of change.  The bank is much more likely to change the validation policies than it is to change the requirements.

One example of requirements would be around asking the user to enter transaction details.  The bank could have taken an approach where you insert the card and get 100 yuan.  No custom transactions, simple interface - just insert card and get money.  Need more money?  Do it again.  Need less?  Do it less frequently.

Hopefully, that addresses your question.  If not - build on this example or create another one, and let&#039;s dive in together.

Thanks again,
Scott</description>
		<content:encoded><![CDATA[<p>Linda,  thanks for commenting and welcome to Tyner Blain!  The last thing I would do is blow off your comments, and antiquated doesn&#8217;t mean bad.</p>
<p>Einstein&#8217;s general relativity theory, Newton&#8217;s 2nd law, Euclidean geometry, and the mythical man-month are all &#8220;antiquated&#8221; ideas.  I feel sorry for anyone who discounts them.</p>
<p>You make a good point that process vs use case documentation is essentially the same information, from nearly the same point of view.  I accept your premise that they are equivalent for this discussion.</p>
<p>Also &#8211; the &#8220;compound steps&#8221; issue you identify &#8211; completely agree.  I stole the use case as an example, and I agree with you.  However, that&#8217;s a tangential one.  On to the real question&#8230;</p>
<p>I differentiate business rules from requirements for the purpose of improving readability, to reduce the effort of maintaining documents in a world filled with constant change, and most importantly, to encourage the development team to implement them separately.  This separation of implementation provides the biggest bang for the buck, because it dramatically reduces the cost and time to change the way your business operates.</p>
<p>Given that premise, &#8216;validate transaction details&#8217; may include (since you&#8217;re decomposing further) &#8216;confirm that resident address is within 10 miles of ATM.&#8217;  Yes, we who travel see that as a dramatic inconvenience.  Imagine that the ATM is in rural China, and as a mechanism of combating fraud and violence, the bank established a policy that prevents people from stealing the cards (or identities) of rural villagers in order to cash in at an ATM far away.  </p>
<p>That policy works fine for 99% of their customers, until the local economy and culture evolves to the point where more customers desire to have access to their cash while in the next village.  The bank changes the policy to allow a 20 mile range, in response to this customer demand.</p>
<p>The policy (a limitation, in this example) is orthogonal to the process &#8211; in other words, changing the policy doesn&#8217;t change the way the process works, just the criterion about which the flow branches.</p>
<p>If the developers had implemented a complex location-inference approximation that works up to a distance of 15 miles, the cost of changing this policy could be very hard &#8211; intense development combined with software (or even firmware) updates to the ATM machines.  That would be bad.</p>
<p>If the developers had written code that says &#8220;Check distance <= X&#8221; and then abstracted the value of X to a lookup table, then the cost of change would be much lower &#8211; just update the data (maybe even through a nightly update) without changing the software (logic).</p>
<p>Take this to the next level &#8211; so that the developers are only writing &#8220;call all required validations&#8221; into the code, with a separate database that says &#8220;these validations are required (with the details of how each one is implemented)&#8221;.  Now the bank can eliminate the policy, or add new ones, again &#8211; without updating the software.  This is a contrived example, but it demonstrates the power of the abstraction.</p>
<p>One distinction between rules and requirements is frequency of change.  The bank is much more likely to change the validation policies than it is to change the requirements.</p>
<p>One example of requirements would be around asking the user to enter transaction details.  The bank could have taken an approach where you insert the card and get 100 yuan.  No custom transactions, simple interface &#8211; just insert card and get money.  Need more money?  Do it again.  Need less?  Do it less frequently.</p>
<p>Hopefully, that addresses your question.  If not &#8211; build on this example or create another one, and let&#8217;s dive in together.</p>
<p>Thanks again,<br />
Scott</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Linda</title>
		<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/comment-page-1/#comment-270468</link>
		<dc:creator>Linda</dc:creator>
		<pubDate>Thu, 17 Jan 2008 22:41:35 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/#comment-270468</guid>
		<description>I first learned about analysis when James Martin and Information Engineering was &#039;the&#039; thing.  Before you blow off my comments below as antiquated, I honestly do want to understand...

Creating an IE process decomposition for the use case above, anything connected with an &#039;and&#039; is two processes. Simple, basic rule. Therefore #2, #3, and #6 would each break down giving you not 6 but 9 processes to further decompose.  Obviously a process like &#039;User inserts her ATM card&#039; can not be further decomposed.  But a process like &#039;Validate Transaction Details&#039; clearly has more to it that needs to be understood, therefore I would further decompose that process.  

I think that either way you go - Use Case or Process Decomp - you ultimately have the same information - it is just depicted differently. 

With IE, a process called &#039;Finding Rules-Extraction Opportunities&#039; would not be necessary.  You just keep breaking a process down until you get to the &#039;Reach into your pocket and pull out your ATM card&#039; level.

so, my real question...  if you had an IE process model that was decomposed down to the detail level of defining exactly how to &#039;validate transaction details&#039;, how do you differentiate Requirements from Business Rules?</description>
		<content:encoded><![CDATA[<p>I first learned about analysis when James Martin and Information Engineering was &#8216;the&#8217; thing.  Before you blow off my comments below as antiquated, I honestly do want to understand&#8230;</p>
<p>Creating an IE process decomposition for the use case above, anything connected with an &#8216;and&#8217; is two processes. Simple, basic rule. Therefore #2, #3, and #6 would each break down giving you not 6 but 9 processes to further decompose.  Obviously a process like &#8216;User inserts her ATM card&#8217; can not be further decomposed.  But a process like &#8216;Validate Transaction Details&#8217; clearly has more to it that needs to be understood, therefore I would further decompose that process.  </p>
<p>I think that either way you go &#8211; Use Case or Process Decomp &#8211; you ultimately have the same information &#8211; it is just depicted differently. </p>
<p>With IE, a process called &#8216;Finding Rules-Extraction Opportunities&#8217; would not be necessary.  You just keep breaking a process down until you get to the &#8216;Reach into your pocket and pull out your ATM card&#8217; level.</p>
<p>so, my real question&#8230;  if you had an IE process model that was decomposed down to the detail level of defining exactly how to &#8216;validate transaction details&#8217;, how do you differentiate Requirements from Business Rules?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/comment-page-1/#comment-124540</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Mon, 23 Jul 2007 16:29:16 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/#comment-124540</guid>
		<description>Thanks Josh, for reading and commenting!

OO Documentation is definitely very handy.  I remember the first hyper-text documents back in the late 80&#039;s when I was in school - it was a mind-opening experience - sort of footnotes on steroids.  And wikipedia takes it to the next level.  There is still a challenge in making that work in printed documents, as well as offline docs - but it is definitely the way to go.

One challenge that comes from this sort of tracing is knowing when references become invalidated.  Consider a use case that depends upon (is linked to) a rule.  Imagine the rule is then updated.  We need to know that the use case is still valid (complete, consistent, etc.).  Some of that validation was &lt;i&gt;deferred&lt;/i&gt; to the rule as capturing the business rules.  

The use case relies upon that rule to maintain its validity, and the rule &lt;i&gt;may have been&lt;/i&gt; changed in a way that invalidates the use case.  A solvable problem, but still something that has to be addressed.</description>
		<content:encoded><![CDATA[<p>Thanks Josh, for reading and commenting!</p>
<p>OO Documentation is definitely very handy.  I remember the first hyper-text documents back in the late 80&#8217;s when I was in school &#8211; it was a mind-opening experience &#8211; sort of footnotes on steroids.  And wikipedia takes it to the next level.  There is still a challenge in making that work in printed documents, as well as offline docs &#8211; but it is definitely the way to go.</p>
<p>One challenge that comes from this sort of tracing is knowing when references become invalidated.  Consider a use case that depends upon (is linked to) a rule.  Imagine the rule is then updated.  We need to know that the use case is still valid (complete, consistent, etc.).  Some of that validation was <i>deferred</i> to the rule as capturing the business rules.  </p>
<p>The use case relies upon that rule to maintain its validity, and the rule <i>may have been</i> changed in a way that invalidates the use case.  A solvable problem, but still something that has to be addressed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh Milane</title>
		<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/comment-page-1/#comment-124361</link>
		<dc:creator>Josh Milane</dc:creator>
		<pubDate>Mon, 23 Jul 2007 01:58:07 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/#comment-124361</guid>
		<description>I very much like the idea of &quot;Barely Good Enough&quot; Use Cases, and would like to see all business rules referenced in an external document, in something that would look like Object-Oriented Documentation. This way, through iterations of documentation and hyperlinks, your docs are always accurate. 

I very much do not like it when Use Cases straitjacket the System. Hard coding business rules into Use Cases can be problematic, especially if the development team is using a new technology. While the business rules need to be adhered to, do we have to tell the developers HOW to implement them?

Nice post. 

Josh</description>
		<content:encoded><![CDATA[<p>I very much like the idea of &#8220;Barely Good Enough&#8221; Use Cases, and would like to see all business rules referenced in an external document, in something that would look like Object-Oriented Documentation. This way, through iterations of documentation and hyperlinks, your docs are always accurate. </p>
<p>I very much do not like it when Use Cases straitjacket the System. Hard coding business rules into Use Cases can be problematic, especially if the development team is using a new technology. While the business rules need to be adhered to, do we have to tell the developers HOW to implement them?</p>
<p>Nice post. </p>
<p>Josh</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Sehlhorst</title>
		<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/comment-page-1/#comment-123854</link>
		<dc:creator>Scott Sehlhorst</dc:creator>
		<pubDate>Sat, 21 Jul 2007 04:14:14 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/#comment-123854</guid>
		<description>I added a summary after your comment, Roger.  Thanks, as always, for helping everyone here with your inputs.

The hidden implicit rules you point out are definitely worth noting.  For example, a rule that constrains the sequence of steps is hard to capture when it is not explicitly called out.  Definitely food for thought.</description>
		<content:encoded><![CDATA[<p>I added a summary after your comment, Roger.  Thanks, as always, for helping everyone here with your inputs.</p>
<p>The hidden implicit rules you point out are definitely worth noting.  For example, a rule that constrains the sequence of steps is hard to capture when it is not explicitly called out.  Definitely food for thought.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger L. Cauvin</title>
		<link>http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/comment-page-1/#comment-122118</link>
		<dc:creator>Roger L. Cauvin</dc:creator>
		<pubDate>Tue, 17 Jul 2007 14:30:02 +0000</pubDate>
		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/16/use-case-example-with-business-rules/#comment-122118</guid>
		<description>It seems there are two kinds of opportunities to extract business rules from use cases.

The first kind is when the rule is embedded directly in the use case.  The very order of steps in the use case might constitute a business rule (e.g. validate card information before selecting a transaction).  Or a step in the use case might constitute a rule (e.g. if the card is identified as stolen, then notify the theft department).

The other kind of opportunity is when the use case contains actions that have rules underlying them.  Your examples focus on these kinds of opportunities.  You note, for example, that many possible business rules underly the &quot;Validates transaction details&quot; step of the use case.

One important thing to recognize is that the nonfunctional requirements surrounding the use case drive the business rules.  For instance, there are security and usability constraints on the Withdraw Cash use case.  The business rules must be such that these constraints will be satisfied as the user carries out the use case.  As I&#039;ve &lt;a href=&quot;http://cauvin.blogspot.com/2007/05/use-case-as-black-box.html&quot; rel=&quot;nofollow&quot;&gt;mentioned&lt;/a&gt;, the nonfunctional requirements can be expressed as preconditions and postconditions of the use case.</description>
		<content:encoded><![CDATA[<p>It seems there are two kinds of opportunities to extract business rules from use cases.</p>
<p>The first kind is when the rule is embedded directly in the use case.  The very order of steps in the use case might constitute a business rule (e.g. validate card information before selecting a transaction).  Or a step in the use case might constitute a rule (e.g. if the card is identified as stolen, then notify the theft department).</p>
<p>The other kind of opportunity is when the use case contains actions that have rules underlying them.  Your examples focus on these kinds of opportunities.  You note, for example, that many possible business rules underly the &#8220;Validates transaction details&#8221; step of the use case.</p>
<p>One important thing to recognize is that the nonfunctional requirements surrounding the use case drive the business rules.  For instance, there are security and usability constraints on the Withdraw Cash use case.  The business rules must be such that these constraints will be satisfied as the user carries out the use case.  As I&#8217;ve <a href="http://cauvin.blogspot.com/2007/05/use-case-as-black-box.html" rel="nofollow">mentioned</a>, the nonfunctional requirements can be expressed as preconditions and postconditions of the use case.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
