<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>knowledgescape&#187; software development</title>
	<atom:link href="http://knowledgescape.co.uk/tag/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://knowledgescape.co.uk</link>
	<description>preserving the knowledge</description>
	<lastBuildDate>Wed, 27 Jul 2011 06:02:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Speaking the same language</title>
		<link>http://knowledgescape.co.uk/2010/09/speaking-the-same-language/</link>
		<comments>http://knowledgescape.co.uk/2010/09/speaking-the-same-language/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 07:59:45 +0000</pubDate>
		<dc:creator>Kathy Bragg</dc:creator>
				<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[soft skills]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://knowledgescape.co.uk/?p=212</guid>
		<description><![CDATA[One of the first things I do when starting a new project, or meeting a new client, is to compile a glossary of terms. Each industry has its own jargon, and each business probably has its own spin on that, and a set of short-cuts to concepts that may only make sense once you understand [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>One of the first things I do when starting a new project, or meeting a new client, is to compile a glossary of terms.</p>
<p>Each industry has its own jargon, and each business probably has its own spin on that, and a set of short-cuts to concepts that may only make sense once you understand the business thoroughly.</p>
<p>Knowing these verbal shortcuts, and using the right language to use can make all the difference when you are getting to know users and starting the collaboration process. Knowing the right words marks you as part of the tribe, one of the initiated. The user can relax and know that they don&#8217;t have to start from basics, that they can get straight on with the part that interests them.</p>
<p>It&#8217;s important to check your understanding as soon as possible, as a misunderstanding that is left unchecked, can lead to a serious loss of confidence later on. I&#8217;ve seen a project stumble almost fatally because a word was used that was not recognised as being part of the authorised lexicon.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://knowledgescape.co.uk/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://knowledgescape.co.uk/2010/09/speaking-the-same-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The semantics of requirements</title>
		<link>http://knowledgescape.co.uk/2010/07/the-semantics-of-requirements/</link>
		<comments>http://knowledgescape.co.uk/2010/07/the-semantics-of-requirements/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 09:25:29 +0000</pubDate>
		<dc:creator>Kathy Bragg</dc:creator>
				<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://knowledgescape.co.uk/?p=203</guid>
		<description><![CDATA[So how do you work out what you really need? There are as many answers to that question as there are practitioners of the subtle art of requirements gathering. I think it&#8217;s important to employ common sense and not adhere to a purely academic approach here. Ultimately you are dealing with software for people, and [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>So how do you work out what you really need?</p>
<p>There are as many answers to that question as there are practitioners of the subtle art of requirements gathering. I think it&#8217;s important to employ common sense and not adhere to a purely academic approach here. Ultimately you are dealing with software for people, and people don&#8217;t always behave rationally. And seldom do they read the books that tell you how requirements elicitation should be performed.</p>
<p>So I take a practical approach. I start by trying to work out where the boundaries of the system will be, and who will be joining in the game. Even if the parties are not interested in participating, I still like to be able to see all the moving parts and work out what I think the potential impact will be on these parts.</p>
<p>I&#8217;m not arrogant enough to believe that you can entirely predict the behaviour of real people when faced with a new set of processes and procedures, so I like to take it right back to basics and take the end users and other stakeholders with me.</p>
<p>I start by writing down everything anyone tells me, and who told me it and when. From this, i assemble a list of assertions about the world, which I call TRUTHS. These are things that must be true of the new system e.g. &#8216;a User must be able to locate an item of inventory on a shelf&#8217;. I&#8217;m not calling them requirements at this stage as this hasn&#8217;t been tested yet. Once I have a set of TRUTHS, these must be tested by the stakeholders to see if they are indeed TRUE. My definition of TRUE encompasses the idea of being always true for the given problem domain. If your business changes and stops keeping inventory, you have changed the problem domain and will have a new set of requirements to satisfy.</p>
<p>TRUTHS do not include such things as &#8216;we must send x letter withing 4 days&#8217; as this is not always going to be true. This is a POLICY. This is a rule devised by the business to control how something is done, not the things that must be done. POLICY-type requirements can and will change. Pressure on staff may mean that 4 days is not possible, and the POLICY changes to 5 days. But you will always need to be able to locate that item of inventory.</p>
<p>Also in the mix are a type of externally-introduced POLICY that I call a LAW. This is where legislation or possibly even laws of physics determine what the system must do. I make the distinction between POLICY and LAW to show which items come within the control of the commissioners and which don&#8217;t. Sometimes the distinction can be hard to make, if your POLICY is as a direct result of compliance with legislation. I use inheritance to express where a POLICY is connected to a LAW (and therefore subject to change if the legal basis for it changes).</p>
<p>Once you&#8217;ve established all the things that must be true of the finished system, everything else is probably a WISH. This is not to say that these are optional, frivolous or should be discarded without consideration. It will be many of the WISHes that make the difference between a perceived failure, and a resounding success.</p>
<p>I think it&#8217;s important to get the stakeholders thinking about the semantics of their requirements, because it&#8217;s important to consider *why* something is a requirement, especially when trying to prioritise. If you don&#8217;t know why a system should do something, how do you know that it should?</p>
<p>A side effect of this process is that people begin to really question what they do and why they do it, which can only be a good thing.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://knowledgescape.co.uk/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://knowledgescape.co.uk/2010/07/the-semantics-of-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When is a requirement not a requirement?</title>
		<link>http://knowledgescape.co.uk/2010/05/when-is-a-requirement-not-a-requirement/</link>
		<comments>http://knowledgescape.co.uk/2010/05/when-is-a-requirement-not-a-requirement/#comments</comments>
		<pubDate>Mon, 17 May 2010 14:51:10 +0000</pubDate>
		<dc:creator>Kathy Bragg</dc:creator>
				<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://knowledgescape.co.uk/?p=197</guid>
		<description><![CDATA[Commissioning software is *hard*. Lots of people have lots of potentially conflicting ideas and opinions; you might have a legacy system that does almost what your users want, but not quite; you might want to make use of a new technology, or introduce more automation into the process to drive greater efficiency. How do you [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Commissioning software is *hard*. Lots of people have lots of potentially conflicting ideas and opinions; you might have a legacy system that does almost what your users want, but not quite; you might want to make use of a new technology, or introduce more automation into the process to drive greater efficiency. How do you take all of these inputs and turn them into a watertight expression of your needs that someone might fulfil them for you? And how can you be sure that requirements expressed at the beginning of a lengthy project will still define the ultimate solution that your business will need?</p>
<p>The short answer is, you can&#8217;t hope to.</p>
<p>There are many reasons why this can&#8217;t happen, but the most striking one for me is that of elapsing time. If you express your needs perfectly on day one, by day two a new requirement may have occurred to you. By day three your competitor has made a move that you need to counter, by day four there is a new piece of legislation that you need to comply with etc etc. I exaggerate, of course, but not by much. This is why, with the best will in the world, and the most intelligent people determining the requirements, the requirements for the software at the point of delivery may no longer resemble the requirements at the start of the project. Importantly, this is no-one&#8217;s fault. But it does leave you with software that is not fit for your new purpose, and that is everyone&#8217;s problem.</p>
<p>To me, requirements need to be living things. They need to have a birth, they must have parents (originators), they must be examined at regular intervals to make sure they are still healthy, and sometimes they must die and be replaced by new requirements. A requirement that does not meet these rules, is not a true requirement, as it cannot be justified. So if your requirements are just sentences adrift in time and space, can you be sure they are truly requirements?</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://knowledgescape.co.uk/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://knowledgescape.co.uk/2010/05/when-is-a-requirement-not-a-requirement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The importance of continuity</title>
		<link>http://knowledgescape.co.uk/2009/04/the-importance-of-continuity/</link>
		<comments>http://knowledgescape.co.uk/2009/04/the-importance-of-continuity/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 07:40:15 +0000</pubDate>
		<dc:creator>Kathy Bragg</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://knowledgescape.co.uk/?p=148</guid>
		<description><![CDATA[For the last three years, I have been working on a project to bring together all the disparate systems we employ here, to simplify the task of the user and to try and ensure that when someone is off, another person can pick up the threads. Oh, the system was supposed to do much much [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>For the last three years, I have been working on a project to bring together all the disparate systems we employ here, to simplify the task of the user and to try and ensure that when someone is off, another person can pick up the threads. Oh, the system was supposed to do much much more than this, but out of all the features I had planned, the documenting and recording of what was happening in a Case was the most important to me.</p>
<p>As usual, I put myself in the position of having to do the job, and I really really dislike not having enough information to hand to do a job. I don&#8217;t like not knowing what the previous person has done or agreed or been discussing. I don&#8217;t like having to wade in without the full picture, exposing myself and the company to unnecessary risk. I then put myself in the shoes of the actual customer, and decided that this stance I was taking would vastly benefit them too. No-one likes to have to explain themselves over and over and over, to different people, none of whom have the foggiest about my situation or what has been promised me.</p>
<p>But in order to improve people&#8217;s recording of this information, you have to provide a measurable benefit to the recorder. When you are busy, it is often difficult to make time to write down the minutiae of a discussion, and of course <em>you</em> will remember all the details, so what&#8217;s the point?</p>
<p>As a developer, I see people&#8217;s faces become stony when you start talking about &#8216;typing up notes&#8217; or &#8216;logging calls&#8217;: &#8220;I simply don&#8217;t have time to do that.&#8221; So what I try to do is to work out how I can save them time in other places, or make it easy and natural to record more information. If you can create that email in the application, and have it save back to the notes, attached to the addressee and the case, that achieves <em>my</em> objective, and theirs. Little things like that can make all the difference to the perceived success of your application.</p>
<p>I&#8217;m in a slightly unusual position here in that I&#8217;m the systems analyst as well as the developer. I&#8217;m not just writing the code, I&#8217;m trying to change the world (for my users at least!). The two roles do conflict at times. With my user advocate hat on, I want the best from the user experience, I want the application to be a delight and to solve all the niggly interface problems that grind away at your morale (never underestimate the cost to your business of unusable or badly-written software). But the developer has a deadline, the developer has to provide all these features in an often unreasonable timescale. Functionality has to come before delight. In this crossfire, is where projects get abandoned.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://knowledgescape.co.uk/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>

<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://knowledgescape.co.uk/2009/04/the-importance-of-continuity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

