Presentation: "Modifiability: Or is there Design in Agility?"
Track:
Qualities in Architecture
Time:
Wednesday 11:00 - 12:00
Location:
Fleming Room
Abstract: Many people assume that agile methods mean an absence of design. "Want to be fast - just dive in and code it!" Yet most of the advocates of agile methods are also advocates of putting a lot of attention to design. Design still happens in agile projects, but it shifts from an up-front phase to a continual evolution. Design decisions should be left to the last responsible moment, but some design decisions do need to be made at the start of a project. To explore these subtleties I'll be leading a handful of ThoughtWorks architects through a discussion of design in an agile context, tapping the experience that they have learned through many years of leading our development work. (Our featured architects are: Ian Cartwright, Erik Doernenburg, David Farley, Fred George and Dan North.)
Presentation: "Keynote: The Yawning Crevasse of Doom"
Time:
Thursday 18:30 - 19:15
Location:
Fleming Room
Abstract: At technical conferences we talk a lot about technologies to develop and
maintain software. In our view, however, the most significant factor in
software development is the quality of the communication between those
who develop software and those who benefit by the software (users and/or customers). As a result it's important to look at the topics of this and similar conferences and consider how they help us bridge this crevasse.
Presentation: "Keynote Panel"
Time:
Friday 17:15 - 18:45
Location:
Fleming Room
Abstract: TBA
Tutorial: "Test-Driven Development"
Time:
Monday 13:00 - 16:00
Location:
To be announced
Abstract:
This tutorial demonstrates the development of a small example application using test-driven development and related technologies. The system will comprise a handful of Java classes that exemplify typical components found in enterprise applications, including domain objects and a service layer. The tutorial is structured into three 'iterations' which cover
- state-based testing with JUnit
- interaction-based testing with JUnit and jMock
- deployment in lightweight containers such as PicoContainer and Spring.
The iterations not only introduce the concepts but also provide room for the discussion of trade-offs and edge cases, e.g. how to deal with testing private methods and when not to use dynamic mocks but fake objects.
Attendees gain an understanding of how proper use of test-driven development fosters good design; through decoupling and interface discovery for example. Attendees will also gather a nice catalogue of the most commonly used patterns used in conjunction with test-driven development.