XP Approach to Design
I just attended the XP Forum that the JCSE holds every month. Topic this time around was XP Approach to Design by Morkel Theunissen, which I was very interested in as this is a problem I have experienced a couple of times... especially when trying to explain to management.
A couple of interesting ideas arose out of the conversations that followed, and numerous debates on the topic. Some people believed that you shouldn't even decide on the architecture at all before starting to develop, e.g. web/smart client, etc. I disagree with this, when you go and see the client, or get some form of user requirements, things like performance, scalability, offline availability, etc will come up which will steer you into a direction. And even though there is not such a formal design as in traditional development, when you see the requirements, you already start to think of ways to implement it, so in essence you are starting to think about a design. (Which you can always refactor as you go along)
In the project I'm working on currently we decided not to follow a strict XP approach, but rather combined aspects from XP and FDD, where FDD brings a bit more formality to the process. In a quick summary, our process is as follows:
- Gathering User Requirements: The outcome of the process is a list of features.
- Design and documentation: Our documentation consist of a central repository where developers update documents with all information sourced, programming tasks and timelines per feature.
- Development and Testing, which includes iteration planning, unit tests, coding, refactoring and code reviews.
- Deployment: After each iteration.
This is our first agile project and so far it is working very well, except for our customer who isn't always as available as one would have liked on a project like this...
To find out more about the XP Forum, contact Fazel Mayet (fazel at psybergate dot com). This forum has just been listed as the first XP group in Africa.
Article by Martin Fowler which has been quoted a couple of times during the discussion: Is Design Dead?