In this series
Introducing devtracks
devtracks aims to deliver software development videos focusing mainly on the open source .net space. The videos are a combination of software development presentations and tutorials which are already freely available but scattered around the net on various sites. devtracks aims to bring much of this content under one site.
Ubiquitous language
"With a UBIQUITOUS LANGUAGE, the model is not a design artifact. It becomes integral to everything the developers and domain experts do to together. The LANGUAGE carries knowledge in a dynamic form. Discussion in the LANGUAGE brings to life the meaning behind the diagram and code."
Eric Evans
Eric Evans
Lets define our ubiquitous language for devtracks; devtracks will use the language of software development conferences:
A software development conference has:
- Session - a single presentation/tutorial
- Track - a topic/category relating to software development; contains multiple sessions
- Speaker - delivers a session
Stories
Lets start our story creation process by defining the stories and their conditions of acceptance.
When writing your conditions of acceptance; ensure you limit the number of domains in a single scenario in order to avoid writing brittle tests.
Read this article by Dan North: Whose domain is it anyway?
Where to start? A Walking Skeleton
Over the years I have seen a few different approaches to getting a project up and running. I have recently settled on the idea of a 'Walking Skeleton'.
"A Walking Skeleton is a tiny implementation of the system that performs a small end-to-end function."
Alistair Cockburn
Alistair Cockburn
The idea of a walking skeleton is to select the simplest story available and implement this from the 'outside-in' using BDD. Our simplest story is: 'Navigate to Homepage'. We will drive out this feature putting in place various bits and pieces as we go:
- Create an ASP.Net MVC 3 empty solution
- Setup folder structures/projects if required
- Tool selection; see list below; NuGet has made this rather simple:
- Specflow and Selenium infrastructure
- Bootstrap StructureMap
- Setup StructureMap registry
- Source control setup with Git
What comes first BDD or DDD? Well; if you are a single developer or a pair; this is not an issue; with a very simple domain model use BDD to drive out the domain; its probable you will not need a domain model; some simple DTOs/Information Holders will suffice. If you are more than a single pair? with a complex domain model; you run the danger of duplicating effort when driving out the domain model; so keeping things as agile as possible; consider the following:
- Some minimal up-front design; drive out the model on paper first
- Schedule the execution of stories so that you minimise duplication of effort
- Introduce dependencies on a story that will drive out an aggregate root
Iteration 1
Lets Begin!
Thanks. This might help me to start out, which I think is the most difficult part, especially with TDD/BDD.
ReplyDeleteJust what to include in the walking skeleton? Should we try to touch (and therefore think about) as much of the infrastructure as we can? It needs to be end-to-end, right?