<?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>cakebaker &#187; requirements</title>
	<atom:link href="http://cakebaker.42dh.com/tags/requirements/feed/" rel="self" type="application/rss+xml" />
	<link>http://cakebaker.42dh.com</link>
	<description>baking cakes with CakePHP</description>
	<lastBuildDate>Tue, 20 Dec 2011 15:29:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Given-When-Then</title>
		<link>http://cakebaker.42dh.com/2009/05/28/given-when-then/</link>
		<comments>http://cakebaker.42dh.com/2009/05/28/given-when-then/#comments</comments>
		<pubDate>Thu, 28 May 2009 13:15:13 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[bdd]]></category>
		<category><![CDATA[requirements]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/?p=1191</guid>
		<description><![CDATA[I&#8217;m currently doing my first steps with BDD (Behavior Driven Development) and Cucumber, a Ruby tool for doing BDD. What I like about BDD is the simple, but powerful concept of Given-When-Then for specifying scenarios. It is a concept you can also use without doing BDD to specify the requirements of your application. It simply [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently doing my first steps with <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD (Behavior Driven Development)</a> and <a href="http://cukes.info/">Cucumber</a>, a Ruby tool for doing BDD. </p>
<p>What I like about BDD is the simple, but powerful concept of Given-When-Then for specifying scenarios. It is a concept you can also use without doing BDD to specify the requirements of your application. </p>
<p>It simply defines the structure of how you write down the requirements in the form of scenarios (as a sidenote: in BDD, a scenario belongs to a feature. For example, a &#8220;Login&#8221; feature might consist of the scenarios &#8220;Login with username/password&#8221; and &#8220;Login with OpenID&#8221;):</p>
<pre>
<code>Given some initial context (the givens),
When an event occurs,
Then ensure some outcomes.</code>
</pre>
<p>(from <a href="http://dannorth.net/introducing-bdd">http://dannorth.net/introducing-bdd</a>)</p>
<p>&#8220;Given&#8221; defines the preconditions, &#8220;When&#8221; defines what happens, and &#8220;Then&#8221; defines the result of the scenario. Or in other words: &#8220;Given&#8221; describes the start state, and &#8220;When&#8221; the steps necessary to reach the accepting state (= &#8220;Then&#8221;). </p>
<p>A simple example of a &#8220;Publish new article&#8221; scenario might look like:</p>
<pre>
<code>Given I am logged in
When I write an article with the title "My article"
And I publish the article
Then I should see the message "Article published"
And the article "My article" should appear on the homepage</code>
</pre>
<p>The simplicity of this format makes it easy to discuss the requirements of your application. And thanks to tools like Cucumber you can even make such specifications executable, but that&#8217;s something for another post&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2009/05/28/given-when-then/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Baking a Cake &#8211; Requirements</title>
		<link>http://cakebaker.42dh.com/2007/02/09/baking-a-cake-requirements/</link>
		<comments>http://cakebaker.42dh.com/2007/02/09/baking-a-cake-requirements/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 18:03:30 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[baking a cake]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[use case]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/02/09/baking-a-cake-requirements/</guid>
		<description><![CDATA[In the previous post we got a first, vague impression of what we will build during this series: [...] to build an application which allows [...] to notify the users of [...] code snippets about updates. Now it is time to become more concrete and to define what our application is supposed to do. For [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://cakebaker.42dh.com/2007/02/08/baking-a-cake-the-start/">previous post</a> we got a first, vague impression of what we will build during this series:</p>
<blockquote><p>
[...] to build an application which allows [...] to notify the users of [...] code snippets about updates.
</p></blockquote>
<p>Now it is time to become more concrete and to define what our application is supposed to do. For this purpose I will write some stories/use cases. So here we go:</p>
<p><strong>Creating a project</strong>: The user choses to create a new project, enters the project information, and the system creates the project.</p>
<p><strong>Posting a message</strong>: The user selects a project and enters the message, which is then published by the system.</p>
<p><strong>Subscribing to a project</strong>: The user selects a project and subscribes to it, so that he gets all future messages of the selected project. </p>
<p><strong>Importing an external feed</strong>: The user enters the url of an external feed, so that he will get all messages provided by that feed.</p>
<p>There are more use cases like <strong>Unsubscribing from a project</strong>, but they are not that important at the moment.</p>
<p>So we can move on to identify the conceptual classes and draw the domain model. But that&#8217;s a task for tomorrow&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/02/09/baking-a-cake-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

