<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jak Charlton - Insane World : development</title><link>http://devlicio.us/blogs/casey/archive/tags/development/default.aspx</link><description>Tags: development</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Avoiding Prescriptive Requirements</title><link>http://devlicio.us/blogs/casey/archive/2012/02/09/avoiding-prescriptive-requirements.aspx</link><pubDate>Thu, 09 Feb 2012 03:50:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:69485</guid><dc:creator>Jak Charlton</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/casey/rsscomments.aspx?PostID=69485</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/casey/commentapi.aspx?PostID=69485</wfw:comment><comments>http://devlicio.us/blogs/casey/archive/2012/02/09/avoiding-prescriptive-requirements.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Core Requirements&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;Requirements &lt;/strong&gt;should be given as
the &lt;strong&gt;Core Requirement&lt;/strong&gt;, and avoid the common pitfall of providing &lt;strong&gt;Prescriptive
Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;As an example, a core requirement in an insurance system may be:&lt;/p&gt;
&lt;p style="padding-left:30px;" class="MsoNormal"&gt;&lt;strong&gt;&lt;span&gt;As a user of the Broker system, I want to create a Settlement Batch of Eligible Documents across Insurance Policies&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;This is eminently testable, is
clear and unambiguous, and has real business value, and it meets the general &lt;strong&gt;INVEST&lt;/strong&gt;
principle of good user stories (which is also a good maxim for any form of
requirements):&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is &lt;strong&gt;Independent&lt;/strong&gt;
of other stories&lt;/li&gt;
&lt;li&gt;It is easily &lt;strong&gt;Negotiated&lt;/strong&gt;
as to priority and value&lt;/li&gt;
&lt;li&gt;It has real business
&lt;strong&gt;Value&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;It is small enough
to easily &lt;strong&gt;Estimate&lt;/strong&gt; with some degree of certainty&lt;/li&gt;
&lt;li&gt;It is of an
appropriate &lt;strong&gt;Size&lt;/strong&gt; for easy estimation, planning and prioritisation&lt;/li&gt;
&lt;li&gt;It is able to be &lt;strong&gt;Tested&lt;/strong&gt;
both manually and in an automated fashion with clear and unambiguous pass or
fail criteria, you can either do it or not&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The stated requirement is not
prescriptive, it does not specify how the user triggers this action, what data
they need to provide, how they select the documents, nor does it specify what a &amp;quot;user of the Broker System&amp;quot; is within this context, nor what a Settlement Batch is, nor what an Eligible Document is. This
means the requirement can be documented very early on, with little analysis
work needed, allowing very quick comparison with other requirements, and very
quick verification from the business as to the validity of the story.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Later this placeholder can be
expanded in discussions between the technical teams and the business to include
the actual definitions and scenarios that define its acceptance criteria:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraph"&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The user must
have the &amp;ldquo;Batch Creation&amp;rdquo; permission&lt;/li&gt;
&lt;li&gt;Eligible Documents are those which are awaiting Settlement&lt;/li&gt;
&lt;li&gt;A Settlement Batch is a group of Documents that will be dealt with together by the Claims Settlement system, so as to save managing on an individual policy level&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;This would lead to a requirement
with maybe a dozen test scenarios giving all the variations of user and
statuses that would allow or not allow the story to pass the test. All of these
stories and scenarios are now easily tested with automated and repeatable
testing.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;At this point it would probably
be obvious where within the UI this functionality should surface, and the
design of the UI interaction can be worked out. This UI work is actually a very
specific development skill within its own right - there is significant complexity in
designing UI interactions that mirror both the technical system and the user&amp;rsquo;s
mental model.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Through all of these steps, the
original core requirement has not been changed, though its implementation and
business logic may have evolved, changed and adapted to line up with other
functionality.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Good requirements are merely a
placeholder for a later conversation. Their level of completeness or accuracy
only dictates your certainty in implementing them accurately and efficiently,
but does not preclude moving forwards, and does not hold development up waiting
on &amp;ldquo;complete requirements&amp;rdquo;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;As granularity increases, so
does complexity required to understand, verify and implement, but oddly so does
instability. By starting with core stories, you maintain a fairly stable set of
requirements, and only deal with complexity when you need to, and suffer the
instability only on individual scenarios.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;Which brings us neatly to
development&lt;/span&gt;&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;It is fairly well established
now that development must be iterative within short cycles to increase its
chance of being successful. Early feedback and revision saves massive amounts
of time and effort correcting incorrect assumptions and poor translation.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;The sooner a story enters
development, the sooner a basic version of it can be demonstrated to business
users, to verify against their assumptions, the faster it can be revised and
the more accurately it will reflect the actual requirements. In addition it
will expose underlying technical constraints and limitations earlier on.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=69485" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/casey/archive/tags/Rants/default.aspx">Rants</category><category domain="http://devlicio.us/blogs/casey/archive/tags/development/default.aspx">development</category><category domain="http://devlicio.us/blogs/casey/archive/tags/requirements/default.aspx">requirements</category></item></channel></rss>