Geeks With Blogs
Josh Reuben
It seems odd that in 2011 there is no such thing as a requirements capture language.
 
Martin Fowler describes this as the yawning crevice of doom in software - http://martinfowler.com/bliki/BusinessReadableDSL.html  , http://www.infoq.com/news/2008/08/Fowler-North-Crevasse-of-Doom
 
When I am building code it is ludicrous that I need to read a perpetually changing 50 page Word document or Excel spreadsheet, or worse a set of UML diagrams that are totally disconnected from reality.
We need a standardized language which is simple and unambiguous, human readable, editable and tool-able, that hooks into an entity dictionary, and that supports traceability. Even better would be something I could use as a loose set of constraints that I could compile against, but I am not interested in the complexity and unwieldiness of a Formal Specification language – I don’t need to run a theorem prover over my code.
 
so what are my options for requirements capture?
 
TFS Work Items – Create a parent Scenario work item which links to many task work items. Analysts need a tool to capture requirements, not a development or QA environment - can use TFS Excel or Project integration. Although a Scenario Work Item could be considered a requirement, and does provide tracability, the actual requirement text is not structured.
 
The IBM rational suite and Doors (http://www-142.ibm.com/software/products/us/en/subcategory/SW740 ), - essentially templated document managers with a content management tools (blah)
 
RavenFlow (http://www.ravenflow.com ) - uses NLP to parse a document and guess what UML to generate (innovative, but immature)
 
RQML (Requirements Markup Language)– it is essentially dead. See http://rambutan.sourceforge.net/index.html for an Indonesian university project built around it. I could find no working examples.
 
Drools - http://droolsdotnet.codehaus.org/ - an XML based syntax for Rete Rule Engine rules. I suppose part of the system could be captured as a rule engine, but there is more to requirments than this.
 
BDD (Given ... When ... Then) - at first glance, seems immature and Ruby centric. NGourd for C# (http://code.google.com/p/ngourd/ ) requires svn client to get source from github and compile , and then you run from command line - immature. Can you imagine a non-technical analyst writing requirements like this?
 
I was about to move on when I stumbled accross the BDD tool SpecFlow (http://specflow.org/home.aspx ) - See
and
 
SpecFlow is a VSIX that installs project templates and seems capable of generating BDD tests from .feature files.
 
 
So BDD to the rescue - My goal is to generate GWTs from TFS Work Items, and let SpecFlow do the rest.  I could see a simple markup syntax, with Regex input prefixes for guidance: E for Entity, A for Action, P for Property and V for Value:
 
I added an XML file to my scratchpad solution:
<Scenario>
	<Givens>
		<Given> the  [E:Account] [P:Status] is in [V:Credit]  </Given>
		<Given> the [E:Card] is [V:Valid] </Given>
		<Given> the [E:Dispenser] Has [P:Cash] </Given>
	</Givens>
	<Whens>
		<When> [E:Customer] [A:Request]s [P:Cash] </When>
	</Whens>
	<Thens>
		<Then>Ensure [E:Account] is [A:Debit]ed </Then>
		<Then>Ensure [E:Cash] is [A:Dispense]d </Then>
		<Then>Ensure [E:Card] is [A:Return]ed </Then>
	</Thens>
</Scenario>
 
I generated a schema from this using the Visual Studio XML > Create Schema menu:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="Scenario">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Givens">
					<xs:complexType>
						<xs:sequence>
							<xs:element maxOccurs="unbounded" name="Given" type="xs:string" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Whens">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="When" type="xs:string" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Thens">
					<xs:complexType>
						<xs:sequence>
							<xs:element maxOccurs="unbounded" name="Then" type="xs:string" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
In part 2 of this post I will look into:
  • a TFS Work Item Type (WIT) to contain this GWT data
  • an Editor Tool for analysts to add BDD Scenario WITs to TFS
  • a T4 for extracting data from GWT WITs and generating SpecFlow  .feature files   - so that SpecFlow can generate the tests (and using T4, possibly the Models)
Posted on Tuesday, April 5, 2011 7:12 PM TFS ALM | Back to top

Related Posts on Geeks With Blogs Matching Categories

Comments on this post: Requirements Capture Markup Language - Part 1: BDD WorkItem Editor?

# re: Requirements Capture Markup Language - Part 1: BDD WorkItem Editor?
Requesting Gravatar...
We are working on RCL (Requirements Capture Language) since 2008. Please join the working group if interested

http://grouper.ieee.org/groups/1805
Left by Anusheel on Sep 10, 2011 5:39 PM

# re: Requirements Capture Markup Language - Part 1: BDD WorkItem Editor?
Requesting Gravatar...
ReqIF seems to fill this purpose: http://www.omg.org/spec/ReqIF/1.0.1/

It's already supported by a good set of tools as well.
Left by Vadim P. on Oct 01, 2013 3:58 AM

# re: Requirements Capture Markup Language - Part 1: BDD WorkItem Editor?
Requesting Gravatar...
It is really significant to know and understand this process. - Mark Zokle
Left by Robert Nyers on Jan 05, 2017 8:43 AM

Your comment:
 (will show your gravatar)


Copyright © JoshReuben | Powered by: GeeksWithBlogs.net