<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Bits 'n Widgets - DSL</title>
    <link>http://bitsnwidgets.com/</link>
    <description>&amp;nbsp;&amp;nbsp;Thoughts on real-world, practical, common-sense approaches to Agile software development using Scrum and XP</description>
    <language>en-us</language>
    <copyright>John E. Boal</copyright>
    <lastBuildDate>Fri, 14 Mar 2008 20:19:07 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>webmaster@bitsnwidgets.com</managingEditor>
    <webMaster>webmaster@bitsnwidgets.com</webMaster>
    <item>
      <trackback:ping>http://bitsnwidgets.com/Trackback.aspx?guid=de5bf9ad-211c-4f27-965f-2df7c3959678</trackback:ping>
      <pingback:server>http://bitsnwidgets.com/pingback.aspx</pingback:server>
      <pingback:target>http://bitsnwidgets.com/PermaLink,guid,de5bf9ad-211c-4f27-965f-2df7c3959678.aspx</pingback:target>
      <dc:creator>John Boal</dc:creator>
      <wfw:comment>http://bitsnwidgets.com/CommentView,guid,de5bf9ad-211c-4f27-965f-2df7c3959678.aspx</wfw:comment>
      <wfw:commentRss>http://bitsnwidgets.com/SyndicationService.asmx/GetEntryCommentsRss?guid=de5bf9ad-211c-4f27-965f-2df7c3959678</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>BDD, ATDD, UTDD, DSL's ... when will it all end...
</div>
        <div> 
</div>
        <div>The drive toward business-driven testing has never been stronger. Developers
are seemingly now finding a higher and higher bar when it comes to customers' expectations
of quality and features. Our tools are getting better, and we can deliver more software,
faster. But, our methodologies haven't necessarily changed enough to satisfy today's
customer expectations.
</div>
        <div> 
</div>
        <div>Enter Business-Driven Design...
</div>
        <div> 
</div>
        <div>Business driven design is a concept that enables us to take business requirements
and current priorities and turn them into a software design through Acceptance Test-Driven
Development. The business requirements that drive the need for the software are
turned into specific criteria that allow the business to decide what the criteria
are that will allow them to use a feature and have it meet their business need.
Rather than the old-school way of gathering requirements, and having a requirements
document and a functional specification, we now turn to individual small criteria
that decide if the software is acceptable to meet the need. Some of the criteria map
directly from functional requirements, and others may not have been captured in a
traditional requirements gathering and specifying model.
</div>
        <div> 
</div>
        <div>Domain-Specific Languages (DSL's) are key to success in Acceptance Test-Driven
Development. DSL's give us a way to communicate with the customer and domain experts
in their terms. When we capture criteria in this manner, it becomes quite clear to
those with domain knowledge, what is meant and what is desired. There is no need for
a "translator" between the customer and the developers (this used to be called "Business
Analyst"). The developers model the code in terms of the language the customer
already uses. This mechanism leads to better communication, better encapsulation,
and better object-oriented development.
</div>
        <div> 
</div>
        <div>Acceptance Test-Driven Development [ATDD] gives us a mechanism to use DSL's and
direct customer involvement in making sure the software we deliver meets the needs.
When we take the criteria and turn them into automated acceptance tests, it is far
easier for the customers to see that they are getting what they asked for. It's also
easier for the developers to have a target to shoot for, and have a goal to meet.
This way, they are more focused on delivering a specific unit of functionality that
the customer needs rather than (as so often happens) some "new feature"
that they thought might be useful.
</div>
        <div> 
</div>
        <div>Much care needs to be put into the way that acceptance criteria are gathered
and then automated. If there is something that is missed, it could critically affect
the design. This is an opportunity for customers and developers to collaborate and
get it right. The customer needs to understand that if it isn't on the acceptance
criteria list, it isn't going to be in the software... Performance criteria, interoperability
with other systems, and other criteria like these are often missed. Customers should
have many opportunities to review and re-review the criteria before they are approved.
Even still, sometimes things are missed. This is why it is important for the customer
to be involved at all stages of the development process. The customer shouldn't just
be involved in the criteria gathering, then come back later for their product. If
things are missed, they will likely become apparent and turn up in daily work. If
the customer is there to be consulted, decisions can be made about how to integrate
missed criteria, and how to capture these better in the future.
</div>
        <div> 
</div>
        <div>Business-Driven Design is a business-centric, collaborative, agile mechanism
for delivering quality software to today's demanding customer.
</div>
        <img width="0" height="0" src="http://bitsnwidgets.com/aggbug.ashx?id=de5bf9ad-211c-4f27-965f-2df7c3959678" />
      </body>
      <title>BDD, ATDD, DSL's - It's not your father's TDD anymore...</title>
      <guid isPermaLink="false">http://bitsnwidgets.com/PermaLink,guid,de5bf9ad-211c-4f27-965f-2df7c3959678.aspx</guid>
      <link>http://BitsNWidgets.com/2008/03/14/BDDATDDDSLsItsNotYourFathersTDDAnymore.aspx</link>
      <pubDate>Fri, 14 Mar 2008 20:19:07 GMT</pubDate>
      <description>&lt;div&gt;BDD, ATDD, UTDD, DSL's ... when will it all end...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;The drive toward business-driven testing has never been stronger. Developers
are seemingly now finding a higher and higher bar when it comes to customers' expectations
of quality and features. Our tools are getting better, and we can deliver more software,
faster. But, our methodologies haven't necessarily changed enough to satisfy today's
customer expectations.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Enter Business-Driven Design...
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Business&amp;nbsp;driven design is a concept that enables us to take business requirements
and current priorities and turn them into a software design through Acceptance Test-Driven
Development. The business requirements that drive the need for the software&amp;nbsp;are
turned into specific criteria that allow the business to decide what the criteria
are that will allow them to use&amp;nbsp;a feature and have it meet their business need.
Rather than the old-school way of gathering requirements, and having a requirements
document and a functional specification, we now turn to individual small criteria
that decide if the software is acceptable to meet the need. Some of the criteria map
directly from functional requirements, and others may not have been captured in a
traditional requirements gathering and specifying model.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Domain-Specific Languages (DSL's) are key to success in Acceptance Test-Driven
Development. DSL's give us a way to communicate with the customer and domain experts
in their terms. When we capture criteria in this manner, it becomes quite clear to
those with domain knowledge, what is meant and what is desired. There is no need for
a "translator" between the customer and the developers (this used to be called "Business
Analyst"). The developers model the code in terms of&amp;nbsp;the language the customer
already uses. This mechanism leads to better communication, better encapsulation,
and better object-oriented development.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Acceptance Test-Driven Development [ATDD] gives us a mechanism to use DSL's and
direct customer involvement in making sure the software we deliver meets the needs.
When we take the criteria and turn them into automated acceptance tests, it is far
easier for the customers to see that they are getting what they asked for. It's also
easier for the developers to have a target to shoot for, and have a goal to meet.
This way, they are more focused on delivering a specific unit of functionality that
the customer needs&amp;nbsp;rather than (as so often happens)&amp;nbsp;some "new feature"
that they thought might be useful.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Much care needs to be put into the way that acceptance criteria are gathered
and then automated. If there is something that is missed, it could critically affect
the design. This is an opportunity for customers and developers to collaborate and
get it right. The customer needs to understand that if it isn't on the acceptance
criteria list, it isn't going to be in the software... Performance criteria, interoperability
with other systems, and other criteria like these are often missed. Customers should
have many opportunities to review and re-review the criteria before they are approved.
Even still, sometimes things are missed. This is why it is important for the customer
to be involved at all stages of the development process. The customer shouldn't just
be involved in the criteria gathering, then come back later for their product. If
things are missed, they will likely become apparent and turn up in daily work. If
the customer is there to be consulted, decisions can be made about how to integrate
missed criteria, and how to capture these better in the future.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Business-Driven Design is a business-centric, collaborative, agile mechanism
for delivering quality software to today's demanding customer.
&lt;/div&gt;
&lt;img width="0" height="0" src="http://bitsnwidgets.com/aggbug.ashx?id=de5bf9ad-211c-4f27-965f-2df7c3959678" /&gt;</description>
      <comments>http://bitsnwidgets.com/CommentView,guid,de5bf9ad-211c-4f27-965f-2df7c3959678.aspx</comments>
      <category>testing</category>
      <category>DSL</category>
      <category>TDD</category>
    </item>
  </channel>
</rss>