<?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>Finite Epiphany &#187; tdd</title>
	<atom:link href="http://finite.mikeandcorinne.com/tag/tdd/feed/" rel="self" type="application/rss+xml" />
	<link>http://finite.mikeandcorinne.com</link>
	<description>Mike&#039;s thoughts on programming and tech</description>
	<lastBuildDate>Fri, 05 Mar 2010 23:28:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Computer Science Research and Software Development(Engineering)</title>
		<link>http://finite.mikeandcorinne.com/2008/03/computer-science-research-and-software-developmentengineering/</link>
		<comments>http://finite.mikeandcorinne.com/2008/03/computer-science-research-and-software-developmentengineering/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 04:00:40 +0000</pubDate>
		<dc:creator>Mike Thomas</dc:creator>
				<category><![CDATA[software engineering]]></category>
		<category><![CDATA[academic reasearch]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[computer science research]]></category>
		<category><![CDATA[peer-reviewed research]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://www.mikeandcorinne.com/finite/?p=28</guid>
		<description><![CDATA[Some areas of computer science are well researched.  Think of computer graphics (SIGGRAPH), AI, or even programming languages - these areas are all well researched in the academic community.  Not only are they well researched but the reasearch being done in these areas provides great benefit to the industry. Software Development (or Engineering), however, is [...]]]></description>
			<content:encoded><![CDATA[<p>Some areas of computer science are well researched.  Think of computer graphics (<a href="http://www.siggraph.org/">SIGGRAPH</a>), <a href="http://www.jair.org/">AI</a>, or even <a href="http://www.sigplan.org/">programming languages </a>- these areas are all well researched in the academic community.  Not only are they well researched but the reasearch being done in these areas provides great benefit to the industry.</p>
<p>Software Development (or Engineering), however, is not.  The ACM has a special interest group dedicated to the study of Software Engineering but from what I have seen most the research that is conducted under this group is, to put it bluntly, irreveleant.  The problem is that software engineering can&#8217;t be isolated like a ray tracing algorithm can.  Software engineering is about people and processes and what works and what doesn&#8217;t work &#8211; none of which are easy to measure or test.</p>
<p>I am currently attempting to write a paper on Test-Driven Development and Behaviour-Driven development.  It is for my undergraduate senior seminar (a capstone class &#8211; kind of) and is supposed to be based on peer-reviewed research.  The problem is that the peer-reviewed research is lagging behind practice by several years.  There has been some scholarly research done on test-first software development (TDD) but not too much.  There has been some research done on specific aspects of software testing but again, not too much.</p>
<p>As easy as it would be to say &#8220;the academic institution has failed&#8221;, I can&#8217;t. I understand why little research has been done on TDD and why none has been done on BDD. <strong>It is hard. </strong></p>
<p>Imagine that you are a researcher who wants to see if BDD is &#8220;better than&#8221; TDD.  First define &#8220;better than&#8221; as reducing the number of defects in a released software system and reducing the amount of time to design and implement a software system.  To get a point of reference we will need to be able to measure how large a &#8220;software system&#8221; is.  While hard, this is doable software engineers have come up with all sorts of metrics &#8211; pick one (or an aggregate of a couple) and stick with it.  Next we need to find huge group of software development teams &#8211; some need to be using TDD and some need to be using BDD.  Before they all start projects we have to have them (or us) measure the size of the projects that they are about to start.  We need to judge their compitency using either TDD or BDD.  Then we have to follow all the teams throughout the development process observing how things go.  After the software is released we can measure how much time each project took.  We also need to start tracking software defects as the life of each software system goes on.</p>
<p>Once we gather all this data we can do some math and statistics and figure out which practice is better. Right?  Well&#8230; maybe.  The first issue is that in order for there to be any confidence in this study we would need to study hundereds if not thousands of software development teams in order to balance out the different sizes of projects, the different environments that they systems are being developed in, and the skill levels of the different teams. Then you have to take other things into consideration: Is there a bias against BDD since it is a newer methodology and the teams using it have less experience with it?  Is there a bias against TDD because more advanced and experienced teams will move to BDD quicker? Like I said, <strong>it is hard</strong>.  Measuring something as simple seeming as &#8220;is TDD or BDD more effective?&#8221; turns out to be an amazingly large undertaking.</p>
<p>There doesn&#8217;t seem to be an easy answer to this &#8211; hopefully academic research in the area of software engineering will progress but only time will tell.</p>
]]></content:encoded>
			<wfw:commentRss>http://finite.mikeandcorinne.com/2008/03/computer-science-research-and-software-developmentengineering/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
