Submitter: Hubert Matthews
Session time: 1 hour
Session type: 15 mins introduction/lecture on modelling, 45 mins audience participation modelling with me drawing on the whiteboard very quickly!
Room requirements: projector + whiteboard and pens that work. No need for audience laptops.
Audience: Developers or business analysts wanting to understand how to create good domain models quickly. Assumes basic knowledge of OO (classes, associations, aggregations) and simple database (tables, primary and foreign keys).
Benefits to be gained: Ability to create domain models much more quickly and link them to business processes. Understanding of where business rules and application logic fit in.
Previously given related session: ACCU Conference 2009 (PDF of slides). The proposed talk is more interactive than this ACCU session, which presented more of the theory (lecture-style rather than interactive format). This is meant to be a fast-paced session with an emphasis on creating domain models rather than exploring the theory. Interactivity will be high.
Modelling a system has fallen out of fashion. People think it's slow, involves lots of big-up-front-design and inhibits agility. This talk seeks to show that lightweight modelling speeds up design and development by providing essential structure and guidance. It also avoids later refactoring and uncertainty as the system grows.
The need for the return of modelling is increasing because of the takeup of frameworks such as Ruby on Rails, Grails and similar ORM-based systems as well as the emphasis on domain-driven design. Lightweight modelling provides a clear way to link user stories to the design of the domain objects as well as links to the business process and especially business rules and so-called "application logic".
This interactive talk will start with a short introduction followed by demonstrating "speed modelling" by building a large number of example models drawn from a wide range, including some from applications suggested by the audience.
Why is this talk important? Because agility is highest when you get things right the first time through, where possible, and growing a solution. Eric Evans' book on domain-driven design has three examples of "breakthrough" refactorings that could have been easily avoided if lightweight modelling had been used. This talk will show how to find the correct model quickly. A quote from one attendee at one of my modelling courses: "You've just done in five minutes what it took us six months to work out". The session would involve a lot of practical examples of models, including those suggested by members of the audience. Another quote from a similar (but more theoretical) talk at the ACCU Conference this year: "The talk was, to my surprise, probably the most enjoyable talk I went to at the conference" (published in ACCU Overload magazine).