July 2007
M T W T F S S
« Jun   Aug »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
Chris Donnan

Create Your Badge

Chris Donnan : Programming – Brooklyn Style

software, trading, family, fun

Esper provides Complex Event Processing for BEA WebLogic Event Server

Nice work. EsperTech’s open-source Esper software provides Complex Event Processing for BEA WebLogic(R) Event Server

You go Thomas B. Congrats!

Chris


You can leave a response, or trackback from your own site.



NUnit.Behave, NBehave, DSLs, Fluent Interfaces – and other popular gibber jabber

User Stories for requirements 

Go read this right now: What’s in a Story?

We/ I am using user stories as the primary format for product backlog items, features  .. er … requirements. It is hard – but good. I have more or less done this for some time.

I have been looking at some of the tools from the BDD community lately. I am a huge TDD guy. I am sure many of my collegues wish I was a bit less so - I am the preacher in my current firm – it is part of my role to get folks doin’ that thing (hard by the way). In any case – I have been looking @ both NUnit.Behave the past few days, as well as NBehave – 2 different frameworks for a sort of story driven development. I wil still admit I am not 100% sold on the BDD pitch – but these tools do seem to ring with me.

You start with a story and some acceptance cases (from Introducing BDD):

Story:

As an Account Holder
I want to withdraw cash from an ATM
So that I can get money when the bank is closed

Acceptance Cases:

Scenario 1:

Account has sufficient funds
Given the account balance is $100
 And the card is valid
 And the machine contains enough money
When the Account Holder requests $20
Then the ATM should dispense $20
 And the account balance should be $80
 And the card should be returned

Then you codify these acceptance cases so you can verify when your story is satisfied.

…but now an aside on …

DSLs (Domain Specific Languages)

DSLs are another current “hot topic”. The dynamic language folks – especially the ruby ones have done a great job of making software where the code looks more and more like english.

..and now an aside on…

Fluent Interfaces 

Fluent interfaces enable a DSL feel in a “heavy” language like C# or java (as opposed to ruby or python). There has been a rash of fluent interface madness for some months now – everyone is talkin’ about ‘em. I admit I was an early skeptic - too many dots scares me and makes me think of LoD violations. When I started to “get it” a bit and see fluent interfaces as a DSL-ish thing – it clicked some more.

Dave Larabee has a recent and much ref’d article Ordered Fluidness from a week or 2 ago – this is a good deeper read.

Back to NUnit.Behave and NBehave

As I mentioned above – the gist of these tools is to enable you to code your storys and acceptance critera for your stories.

Lets look at this in a ruby – pretty close to a real DSL it looks:

ruby.png

 

Now look at how the Fluent Interface lets C# look sort of like a DSL in NUnit.Behave:

From here (More Fluent Interfaces for NUnit.Behave )

nunitbehave.png

While some of the _ in the methods is a bit ugly- moreover that is pretty nice. This is a work in progress it seems – but it seems be on the right path.

RBehave is a little more “classy” – not so DSL-ish. After installing the current (also very early on) RBehave – it just seems to lack the DSL feel that the former has. In stead of doing that Fluent Interface thingy – you have to make a bunch of disconnected classes that tie together to do the same thing – it is just more difficult to follow… For now – I will track along both projects – but it seems NUnit.Behave is headed 100% in the right direction.

Enough babble – more later – I am off to prep for Gabe’s 5th birthday party today – FUN!

Chris


You can leave a response, or trackback from your own site.