<<< Previous speaker next speaker >>>

Martin Fowler, ThoughtWorks

 Martin  Fowler

Martin Fowler is an author, speaker, consultant and general loud-mouth on software development.

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

He's the Chief Scientist at ThoughtWorks - an international application development company, and has 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: "Enterprise Patterns"

Time: Thursday 13:00 - 13:45

Location: Ballroom Le Grand 3

Abstract: One of the challenges of our profession is how to capture and communicate the art of software design (or architecture if you prefer a more pretentious word). I like to use the notion of patterns, as developed by the software patterns community since the early 1990's. I'll talk about the role patterns can play in Enterprise Software, and touch lightly on the patterns I've written up both in my book and ongoing on martinfowler.com

Presentation: "Enterprise Systems panel"

Time: Thursday 16:30 - 17:15

Location: Ballroom Le Grand 3

Presentation: "Keynote - Simplicity in Design"

Time: Thursday 17:30 - 18:30

Location: Ballroom Le Grand 3

Abstract: The problems we are looking to solve with software are becoming increasingly harder and more complex, but how do we best deal with this complexity? Martin and Erik will argue that the answer is simplicity. More than twenty years ago Fred Brooks identified accidential complexity, that is complexity that is not inherent in the problem but is caused by the approach we have chosen, as the only area left where significant gains in productivity could be made. So, if we manage to achieve simplicty in design and approach we can successfully tackle the real complexity of the problem we are solving. What we have seen, though, is that it is anything but easy to achieve simplicity. All too often we end up with designs that are either too simplistic or too complicated. The real skill in designing software lies in finding a good middle ground.

Workshop: "Test Driven Development"

Time: Wednesday 09:00 - 16:00

Location: Concorde

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

  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. The implementation will make use of the Dependency Injection pattern and the last iteration examines how this is supported by lightweight containers.

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.