I'm an unashamed modelling fanatic - but in the last few years it's become a topic I'm almost afraid to mention. Why ? Well in the fad focused industry that is IT, modelling (with tools) has become deeply unfashionable. There has been a lot of misunderstanding about why modelling with tools is useful, not least because agile is often misinterpreted as anti-tool ( ofcourse it's not, you still use compilers, editors, src control, continuous integration tools etc). So where does modelling fit, in an iterative/agile world and why do I think it's starting to become popular again?
Well firstly, I tend to think of two broad uses of models -
Modelling for communication and collaboration, and modelling for specification (i.e. Code generation ). Now it's the former that is absolutely vital - even in agile/iterative development.
One of the benefits of agile is that you produce working software regularly - but while this guarantees that the code works, it's still the first version - like the draft of a document. So the question is how do you make the software as good as it can be - so that it delights users - rather than just satisfying a spec ? Well the answer, just like improving the first draft of a document , is that you need to communicate how the software will work, and then collaborate on that with your colleagues to improve it.
Obviously you could write the code, peer review it, and then change it - however this introduces rework and waste. So a better approach is to produce a high level model ( not a detailed specification )showing the key information, not too much detail, but enough information to enable someone to understand the high level approach and offer suggestions for improvement. This kind of modelling takes a few hours - so very possible in a short iteration project - yet still allows for others to comment and suggest improvements before the code is written - resulting in improved software that delights users.
"Im an agilist, and I do agile modelling on a whiteboard" I hear you cry. And if you're in a small colocated team this works perfectly, and exemplifies what I'm talking about. However in my experience, as teams scale and become distributed, they tend to forget about modelling altogether - rather than focusing on it more.
So why now ?? And why do I think modelling is coming back into fashion? Well according to Gartner agile is going though the valley of despair on the hype curve - and in my experience more and more organisations are starting to look at modelling as a possible approach to improve their software delivery.
Secondly the tools around modelling have improved significantly in recent years, transforming modelling tools from single user desktop tools, to collaborative team tools. This is vital as it simplifies modelling as a team, reviewing and commenting - making it possible for this to be very lean and to minimise waste.
So perhaps modelling isn't such an anachronism after all. And given the current trends towards distributing agile, then modelling for collaboration will, I think, become critical for successful projects.