<<< Previous speaker Next speaker >>>

Martin Fowler, Refactoring, Analysis Patterns

 Martin  Fowler, Refactoring, Analysis Patterns

I'm an author, speaker, consultant and general loud-mouth on software development.

I concentrate on designing enterprise software - looking at what makes a good design and what practices are needed to come up with good design. I've pioneered object-oriented technology, refactoring, patterns, agile methodologies, domain modeling, the Unified Modeling Language (UML), and Extreme Programming.

I'm the Chief Scientist at ThoughtWorks - an international application development company. I've written five books on software development: Analysis Patterns, UML Distilled (now in its 3rd edition), Refactoring, Planning Extreme Programming (with Kent Beck), and Patterns of Enterprise Application Architecture. I also write articles regularly on my site at Martin Fowler.

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"

Track:   Tutorial

Time: Monday 13:00 - 16:00

Location: To be announced


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

  1. state-based testing with JUnit
  2. interaction-based testing with JUnit and jMock
  3. 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.