Executable design requirements in Cucumber

A fundamental issue in design is that designers must interact with clients in formulating design requirements. It is difficult to come up with a means of expressing design requirements that is both comprehensive, capable of expressing creative ideas and aspirations, and is of use during the entire design and implementation process. This knowledge representation must enable and encourage participation from a diverse community of stakeholders, all with different concerns, expertise and frames of reference. Successful design projects are ones in which diverse concerns are integrated at an early stage.

It is also important that design requirements are testable throughout the design process, such that the following questions are managed: ‘Are we designing the things that we started out designing?‘ and ‘Is what we are designing fulfilling the requirements that we assembled over the course of the project?’ In complex design projects it is extremely easy to ‘lose the plot.’

Recently, I discovered a software development tool called Cucumber, which is scenario-based software for the computer language Ruby. Cucumber enables you to write software specifications in a format that is quite close to natural English and then guides you step-by-step as you implement your software. Once parts of a scenario are satisfied, then it tells you what feature you need to work on next. Therefore, Cucumber is a design and specification environment, but also a work-flow generator as well a testing framework. This combination of aspects appears to make it very powerful.

Cucumber encourages interactions between stakeholders, since the design specifications can actually be read (and possibly written) by those without technical backgrounds. This, I think, is enormously helpful. Not only that, but these testable specifications (the holy grail for many types of design process) stick around the entire design life-style. Cucumber helps right at the earliest stages of a design process, where ideas are free-flowing and ill-defined, but it also helps at the end of implementation stage where the integration of disparate parts may be more the issue. It encourages an agile process in which design and implementation are better integrated. You become less afraid to add new features or design ideas late in the game because the cost of integrating new ideas with things that work becomes manageable.

Design is not only a technical exercise, but is also a creative one in which stories or scenarios, which express our hopes and desires for a brighter future, must be created, refined and managed–in a collaborative setting. Cucumber is an exciting step towards that goal.

This entry was posted in Design, Software. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>