<?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: How to Design Software With Bad Requirements</title>
	<atom:link href="http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/</link>
	<description>&#34;Hello World&#34; - The SlickEdit Developer Blog</description>
	<lastBuildDate>Fri, 03 Sep 2010 02:00:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Sona</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-589</link>
		<dc:creator>Sona</dc:creator>
		<pubDate>Thu, 08 Jan 2009 10:06:45 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-589</guid>
		<description>Hi,
I have been part of a software engineering project once but in my internship, I have been given the complete responsibility of coming up with a software. I tried to draw some use-cases but they are too general. Can someone tell me exactly what all goes through your mind when you are making your use cases?
What all information makes you feel prepared to start making them?</description>
		<content:encoded><![CDATA[<p>Hi,<br />
I have been part of a software engineering project once but in my internship, I have been given the complete responsibility of coming up with a software. I tried to draw some use-cases but they are too general. Can someone tell me exactly what all goes through your mind when you are making your use cases?<br />
What all information makes you feel prepared to start making them?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dheerendra kapariya</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-587</link>
		<dc:creator>dheerendra kapariya</dc:creator>
		<pubDate>Tue, 30 Dec 2008 10:04:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-587</guid>
		<description>i want disine software</description>
		<content:encoded><![CDATA[<p>i want disine software</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adrian</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-73</link>
		<dc:creator>Adrian</dc:creator>
		<pubDate>Sun, 24 Jun 2007 06:41:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-73</guid>
		<description>Hi Scott!

This is a great blog entry! I work extensively with business analysts and systems analysts and I find that too often they do not question a bad requirement when they see one.

Questioning suspect requirements is a must.  Your tips to developers also apply business systems analysts.

I added a &lt;a href=&quot;http://analysis-manager.blogspot.com/2007/06/more-on-how-to-deal-with-bad.html&quot; title=&quot;link&quot; rel=&quot;nofollow&quot;&gt;link&lt;/a&gt; on my blog.

- Adrian</description>
		<content:encoded><![CDATA[<p>Hi Scott!</p>
<p>This is a great blog entry! I work extensively with business analysts and systems analysts and I find that too often they do not question a bad requirement when they see one.</p>
<p>Questioning suspect requirements is a must.  Your tips to developers also apply business systems analysts.</p>
<p>I added a <a href="http://analysis-manager.blogspot.com/2007/06/more-on-how-to-deal-with-bad.html" title="link" rel="nofollow">link</a> on my blog.</p>
<p>- Adrian</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: derick</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-70</link>
		<dc:creator>derick</dc:creator>
		<pubDate>Mon, 18 Jun 2007 09:43:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-70</guid>
		<description>Scott, this is an extremely interesting topic. Not only for small, but also huge organisations. I believe we all sit with the situations where the requirements that we get from our customers are very vaque. It is then the responsibility of the architects, business analysts, designers and developers (sometimes the same person in smaller organisations) to make something happen from this. I love your idea of isolating solutions, but it becomes very complex when you work in an integrated environment where &quot;stand-alones&quot; doesn&#039;t really exist. Maybe we can also considers some other alternatives like:
a. Breaking the unclear requirements into small bits (chunks). These chunks must make some sense or form an independant unit. Then each of these chunks must be designed seperately and prototyped and .. We must keep in mind that all the chunks together must contribute towards the orginal unclear requirements.
b. The reason for unclear requirements is sometimes a way to get alternatives. It implies that the customers wants to explore alternatives without saying it clearly, or the customers does not really knows what he/she wants, but they know they muts do something. In these cases it is essential that only this is addressed and that alternatives are provided without fully functional sofware. You will end up rework in any event.
c. Using archirectural tools to map your designs. This proves to be a very effective way to change and to indicate change.
d. Get agreement on the areas of the requirements that are no so unclear and complete that design and development. Then move on to the unclear bits by making lots of assumptions.
Any more ideas?</description>
		<content:encoded><![CDATA[<p>Scott, this is an extremely interesting topic. Not only for small, but also huge organisations. I believe we all sit with the situations where the requirements that we get from our customers are very vaque. It is then the responsibility of the architects, business analysts, designers and developers (sometimes the same person in smaller organisations) to make something happen from this. I love your idea of isolating solutions, but it becomes very complex when you work in an integrated environment where &#8220;stand-alones&#8221; doesn&#8217;t really exist. Maybe we can also considers some other alternatives like:<br />
a. Breaking the unclear requirements into small bits (chunks). These chunks must make some sense or form an independant unit. Then each of these chunks must be designed seperately and prototyped and .. We must keep in mind that all the chunks together must contribute towards the orginal unclear requirements.<br />
b. The reason for unclear requirements is sometimes a way to get alternatives. It implies that the customers wants to explore alternatives without saying it clearly, or the customers does not really knows what he/she wants, but they know they muts do something. In these cases it is essential that only this is addressed and that alternatives are provided without fully functional sofware. You will end up rework in any event.<br />
c. Using archirectural tools to map your designs. This proves to be a very effective way to change and to indicate change.<br />
d. Get agreement on the areas of the requirements that are no so unclear and complete that design and development. Then move on to the unclear bits by making lots of assumptions.<br />
Any more ideas?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott H</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-69</link>
		<dc:creator>Scott H</dc:creator>
		<pubDate>Fri, 15 Jun 2007 13:19:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-69</guid>
		<description>Thanks for the comments!

I completely agree, these are steps that should always be followed.  However, in my experience, it&#039;s rare that use case + design + prototype work happens up front, or even at all.  I think it happens even less when a developer or team thinks a requirement is a poor one.  Hopefully the article shows how to use those design tasks to your benefit when those types of requirements are set.</description>
		<content:encoded><![CDATA[<p>Thanks for the comments!</p>
<p>I completely agree, these are steps that should always be followed.  However, in my experience, it&#8217;s rare that use case + design + prototype work happens up front, or even at all.  I think it happens even less when a developer or team thinks a requirement is a poor one.  Hopefully the article shows how to use those design tasks to your benefit when those types of requirements are set.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sammy Larbi</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-68</link>
		<dc:creator>Sammy Larbi</dc:creator>
		<pubDate>Thu, 14 Jun 2007 23:42:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-68</guid>
		<description>Hi Scott, I like this advice.  But, don&#039;t you think most of it can (and is) how we should work on projects anyway?

You might not do detailed use case analysis, but certainly you&#039;d walk through how features should work.  You&#039;d often build some sort of prototype to see you got the requirement right, and quarantine sounds like the result of keeping coupling low and cohesion high.

In any case, I think it is sound advice not just for silly requirements (or what we think are silly requirements), but also apply fairly well to the general case as well.</description>
		<content:encoded><![CDATA[<p>Hi Scott, I like this advice.  But, don&#8217;t you think most of it can (and is) how we should work on projects anyway?</p>
<p>You might not do detailed use case analysis, but certainly you&#8217;d walk through how features should work.  You&#8217;d often build some sort of prototype to see you got the requirement right, and quarantine sounds like the result of keeping coupling low and cohesion high.</p>
<p>In any case, I think it is sound advice not just for silly requirements (or what we think are silly requirements), but also apply fairly well to the general case as well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nevil</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-64</link>
		<dc:creator>Nevil</dc:creator>
		<pubDate>Thu, 14 Jun 2007 16:16:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-64</guid>
		<description>Good read - linked.</description>
		<content:encoded><![CDATA[<p>Good read &#8211; linked.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott H</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-58</link>
		<dc:creator>Scott H</dc:creator>
		<pubDate>Wed, 13 Jun 2007 22:13:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-58</guid>
		<description>@ Shenpen: Point well taken.  My example was just that, an example.  Personally, I think that flat file polling is a crude method of inter-process communication.  However, this article wasn&#039;t written to call one thing crude and another thing elegant.   There are lots of areas where &quot;bad&quot; (and again, that&#039;s my own opinion) requirements can be set.  For instance, I worked on one project where the client preferred a console interface over a windowed interface because &quot;that&#039;s what their employees were used to.&quot;  And I saw his point, it would take a lot of time to train the employees to use the new interface, and they probably wouldn&#039;t be happy using it.  So it was a bad requirement in my mind, but a justifiable one.  So we wrote the application so that someday it could be plugged into a windowed front end.  That&#039;s what this article is about... not what&#039;s good and what&#039;s bad, but what to do when you sense a requirement with a high probability of change.

Thanks for the comments, I love talking about this stuff!</description>
		<content:encoded><![CDATA[<p>@ Shenpen: Point well taken.  My example was just that, an example.  Personally, I think that flat file polling is a crude method of inter-process communication.  However, this article wasn&#8217;t written to call one thing crude and another thing elegant.   There are lots of areas where &#8220;bad&#8221; (and again, that&#8217;s my own opinion) requirements can be set.  For instance, I worked on one project where the client preferred a console interface over a windowed interface because &#8220;that&#8217;s what their employees were used to.&#8221;  And I saw his point, it would take a lot of time to train the employees to use the new interface, and they probably wouldn&#8217;t be happy using it.  So it was a bad requirement in my mind, but a justifiable one.  So we wrote the application so that someday it could be plugged into a windowed front end.  That&#8217;s what this article is about&#8230; not what&#8217;s good and what&#8217;s bad, but what to do when you sense a requirement with a high probability of change.</p>
<p>Thanks for the comments, I love talking about this stuff!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shadowfiend</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-57</link>
		<dc:creator>Shadowfiend</dc:creator>
		<pubDate>Wed, 13 Jun 2007 21:52:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-57</guid>
		<description>I&#039;d guess the cringeworthiness of that is that the orders are better off being pushed to your application somehow (have the application act as a server, have the application integrate into the other as a library, whatever), rather than being dumped and relying on polling.</description>
		<content:encoded><![CDATA[<p>I&#8217;d guess the cringeworthiness of that is that the orders are better off being pushed to your application somehow (have the application act as a server, have the application integrate into the other as a library, whatever), rather than being dumped and relying on polling.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shenpen</title>
		<link>http://blog.slickedit.com/2007/06/how-to-design-software-with-bad-requirements/comment-page-1/#comment-56</link>
		<dc:creator>Shenpen</dc:creator>
		<pubDate>Wed, 13 Jun 2007 21:15:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.slickedit.com/?p=63#comment-56</guid>
		<description>I wonder what world are you living in... 

I&#039;ve just written an application within the latest release of the Navision ERP system that monitors a directory and imports flat files, which weren&#039;t created by some sort of legacy terminal app but a brand-new web-based product configurator written in .NET... 

Why should it make me cringe? An XML format would make the parsing code 5 times longer and more complicated than a simple TAB-separated file, and reading the files from a directory is a lot more simple than reading a web service... this took no more than a day, where the actual interface took no more than an hour, while an XML-based web service interface would have meant extra hours, maybe even extra days meaning extra $1000&#039;s of consulting because our rate is around $1500 a day. And all this for nothing. I don&#039;t think being a good developer means falling in to every trend like SOA... these ideas like SOA do have their uses, especially in large organizations and large distributed systems with loads and loads of data, but when we it&#039;s a small client, like, 200 records in 10 files a day, how would you rationalize the extra cost? Don&#039;t be so quick in labelling it as bad.</description>
		<content:encoded><![CDATA[<p>I wonder what world are you living in&#8230; </p>
<p>I&#8217;ve just written an application within the latest release of the Navision ERP system that monitors a directory and imports flat files, which weren&#8217;t created by some sort of legacy terminal app but a brand-new web-based product configurator written in .NET&#8230; </p>
<p>Why should it make me cringe? An XML format would make the parsing code 5 times longer and more complicated than a simple TAB-separated file, and reading the files from a directory is a lot more simple than reading a web service&#8230; this took no more than a day, where the actual interface took no more than an hour, while an XML-based web service interface would have meant extra hours, maybe even extra days meaning extra $1000&#8217;s of consulting because our rate is around $1500 a day. And all this for nothing. I don&#8217;t think being a good developer means falling in to every trend like SOA&#8230; these ideas like SOA do have their uses, especially in large organizations and large distributed systems with loads and loads of data, but when we it&#8217;s a small client, like, 200 records in 10 files a day, how would you rationalize the extra cost? Don&#8217;t be so quick in labelling it as bad.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
