<?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>Allan Lykke Christensen &#187; Software engineering</title>
	<atom:link href="http://blogs.i2m.dk/allan/category/software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.i2m.dk/allan</link>
	<description>On Software</description>
	<lastBuildDate>Tue, 06 Sep 2011 10:49:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Open Source vs. Commercial Software</title>
		<link>http://blogs.i2m.dk/allan/2008/10/28/open-source-vs-commercial-software/</link>
		<comments>http://blogs.i2m.dk/allan/2008/10/28/open-source-vs-commercial-software/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 20:21:00 +0000</pubDate>
		<dc:creator>Allan Lykke Christensen</dc:creator>
				<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[Commercial]]></category>
		<category><![CDATA[Open source]]></category>

		<guid isPermaLink="false">http://blogs.i2m.dk/allan/?p=31</guid>
		<description><![CDATA[Today I stumbled upon the following article about Open Source vs Commercial Software. It&#8217;s quite entertaining and shows many of the pros and cons for both open source and commercial software licensing. http://www.isitedesign.com/insight/08_07/open-source-versus-commercial-web-software.cfm Enjoy!]]></description>
			<content:encoded><![CDATA[<p>Today I stumbled upon the following article about Open Source vs Commercial Software. It&#8217;s quite entertaining and shows many of the pros and cons for both open source and commercial software licensing.</p>
<p><a target="_blank" href="http://www.isitedesign.com/insight/08_07/open-source-versus-commercial-web-software.cfm">http://www.isitedesign.com/insight/08_07/open-source-versus-commercial-web-software.cfm</a></p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.i2m.dk/allan/2008/10/28/open-source-vs-commercial-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Requirement Points in Software Engineering</title>
		<link>http://blogs.i2m.dk/allan/2006/06/16/requirement-points-in-software-engineering/</link>
		<comments>http://blogs.i2m.dk/allan/2006/06/16/requirement-points-in-software-engineering/#comments</comments>
		<pubDate>Fri, 16 Jun 2006 21:41:00 +0000</pubDate>
		<dc:creator>Allan Lykke Christensen</dc:creator>
				<category><![CDATA[Software engineering]]></category>

		<guid isPermaLink="false">http://blogs.i2m.dk/allan/?p=3</guid>
		<description><![CDATA[This post describes how I use requirement points (or story points as they are called in eXtreme Programming) to manage the time aspect of software projects. My use of requirement points are very similar, if not identical, to the way they are used in eXtreme Programming. The reason why I have decided to write about [...]]]></description>
			<content:encoded><![CDATA[<p>This post describes how I use requirement points (or story points as they are called in eXtreme Programming) to manage the time aspect of software projects.</p>
<p>My use of requirement points are very similar, if not identical, to the way they are used in eXtreme Programming. The reason why I have decided to write about requirement points aside from eXtreme Programming is because I find them useful no matter what process/methodology/framework is used for developing software.</p>
<p>To enhance the explanation of requirement points I will use a recent project I worked on as a case study. However, I’ll start by defining the theory and then apply it to the case study in a later post.</p>
<p><strong>Theory</strong><br /><strong></strong><br /><strong>What is a requirement point?</strong><br />A requirement point is an arbitrary number that signifies a certain amount of work needed to satisfy a requirement.</p>
<p><strong>The Process</strong><br />Below is a simplified process outlining the phases where the requirement points come to play</p>
<p><a href="http://photos1.blogger.com/blogger/6143/2955/1600/simplified-process.3.jpg"><img border="0" src="http://photos1.blogger.com/blogger/6143/2955/200/simplified-process.2.jpg" /></a></p>
<p><strong>1.0 Initial Estimation</strong><br /><em></em><br /><em><u>Step 1.1) Baseline</u></em><br /><em><u></u></em><br />We need to baseline the requirement point to some initial value. There are a number of techniques for doing this. Here are a few techniques that I find useful:
<ol> 
<li>Time-based<br />Assume that a single point is equivalent to given time span, e.g. 1 hour, 1 day, 1 week, or 1 month.</li>
<p> 
<li>Scope-based<br />Assume that a single point is equivalent to a certain amount of work, e.g. 1 point equal to a basic C/R/U/D implementation for an entity).</li>
<p></ol>
<p>The technique used depends on your personal preference. Many professionals refrain from using the time-based technique as its meaning keeps changing throughout the project as you will see later. However if you work with a customer that requires immediate time estimates the time-based technique can provide you with an initial estimate.</p>
<p><u><em>Step 1.2) Estimate Requirements</em></u></p>
<p>Using requirement points estimate all known requirements.</p>
<p>A rule of thumb in project management is to always breakdown work into smaller chunks that are easier to estimate. Each requirement may therefore have to be broken down into smaller tasks.</p>
<p><em><u>Step 1.3) Determine initial project velocity</u></em></p>
<p>The project velocity is the number of requirement points that can be implemented in one customer iteration. If you use the time-based technique to baseline the requirements point then the initial project velocity could be the number of hours or days that make up the duration of a customer iteration. The duration of a customer iteration is often recommended to be no longer than three weeks.</p>
<p><u><em>Step 1.4) Determine the velocity of each project member</em></u></p>
<p>Determine how many requirements points each project member is expected to complete each customer iteration. To avoid causing problems among the project members you may want to start all project members at the same level.</p>
<p><strong>2. Iteration Planning</strong></p>
<p><u><em>Step 2.1) Determine project velocity</em></u></p>
<p>Once again the project velocity is determined, but this time the focus is on the duration of the current iteration. If some members are not available full time, or public holidays are coming up, this will reduce the project velocity. You can reduce the project velocity using basic maths, e.g. if a project member is only available for half the iteration, you would remove half the velocity of the member.</p>
<p><u><em>Step 2.2) Requirements Selection</em></u></p>
<p>It is the customer or business representative’s responsibility to select estimated requirements worth the current project velocity. This will make up the iteration plan.</p>
<p><u><em>Step 2.3) Requirements Acceptance</em></u></p>
<p>I could also have called this step “Requirements Delegation”, but there is a theory that says that for project members to be truly effective they have to select their own work, so rather than implying that the project manager delegates the requirements selected from Step 2.1, it is instead implied that project members pick and accept the requirements they would like to implement. Project members pick requirements worth their personal velocity.</p>
<p><strong>3. Implementation</strong></p>
<p><u><em>Step 3.1) Tracking</em></u></p>
<p>While the project members are implementing the selected requirements they keep track of how many requirement points they complete. If a project member completes all the requirements he has accepted he will be able to pick more requirements from the pool of requirements (preferably the ones of high customer importance).</p>
<p><strong>4. Evaluation</strong></p>
<p><u><em>Step 4.1) Re-calculate project member velocity</em></u></p>
<p>The project member velocity is re-calculated by adding up all the requirement points he has managed to complete. In that way his personal velocity will go up if he has managed to complete more than he accepted, or down if he fell behind. This new velocity is important in that it will constitute the amount of requirements the project member is allowed to accept in the next iteration.</p>
<p><u><em>Step 4.2) Re-calculate project velocity</em></u></p>
<p>The velocity of all project members is summed up and determines how much progress was made in that iteration and how much effort is required to finish the remaining requirements. When the project velocity has been calculated the burn down chart is updated.</p>
<p><a href="http://photos1.blogger.com/blogger/6143/2955/1600/burn_down_chart.3.jpg"><img border="0" src="http://photos1.blogger.com/blogger/6143/2955/200/burn_down_chart.0.jpg" /></a></p>
<p>Note: The burn down chart is a graphical representation of the history of the project velocity. The chart can also be made for each individual project member.</p>
<p><u><em>Step 4.3) Customer Evaluation</em></u></p>
<p>The customer evaluates the system and decides if the development should go on or halt. If the customer decides to continue with the development the process jumps back to Iteration planning.</p>
<p><strong>Conclusion</strong></p>
<p>Using requirement points is simply and does not require you to follow eXtreme programming or any other specific methodology. It will require you to estimate requirements and keep track of how many points you complete, the benefits however are enormous as you will always be able to get a clear view of how much effort are remaining and how well you are performing. Furthermore it allows for auto-correction of project members with inaccurate estimation skills by providing them with a personal velocity based on their previous performance.</p>
<p><strong>References</strong></p>
<p><strong>Fowler 2000</strong>, <em>Planning Extreme Programming</em>, 1st Edition, Addison Wesley<br /><strong>Beck 2005</strong>, <em>Extreme Programming Explained</em>, 2nd Edition, Addison Wesley</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.i2m.dk/allan/2006/06/16/requirement-points-in-software-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

