Martin Fowler

<bigwig> service: jaoo BIO:
For over ten years now I've helped corporations use object technology to build business information systems. During this time I've built business object models using several design techniques and programming languages. Along the way I've written several books and appeared at quite a few software development conferences.

For nearly all of this time I've worked as an independent consultant. In March 2000 I returned to a regular paycheck by joining ThoughtWorks, a company that does consulting and development of business systems. I've consulted with them for a while and have found them to be a great company. They are giving me a lot of leeway to do the things I like to do - the writing, conferences appearances etc. Although I'll spend a lot of time on their projects, I still have freedom to do other consulting work as well, so do get in touch if you have a particularly interesting project that you might like to involve me in.

A few years ago I wrote a book on Analysis Patterns. Analysis patterns are those repetitive ideas that I have come across in the business (domain) modeling that I have done during my career. As such they bring together the important areas of patterns and business object development. I also wrote (with Kendall Scott) a second book: UML Distilled . It's a concise overview (under half an inch!) of the notation, semantics, and an iterative development process. It won a Software Development Productivity award in 1998 and is now available in a second edition. Last year I wrote Refactoring: how to alter the design of existing software in a controlled and rapid manner. My most recent book is Planning Extreme Programming which I wrote with Kent Beck.

I've been a regular speaker at object technology conferences including OOPSLA, Software Development, and ECOOP, where I have given tutorials on analysis and design methods, the UML, Refactoring, lightweight processes, and Analysis Patterns. I'm a content advisor for Software Development West and on the program committee for XP 2001. This year I'll be starting the design column for IEEE Software.

Information System Architecture Patterns

Information Systems now have become the lifeblood of organizations around the world: providing access to corporate data and automating business processes. Over the decades the technology has changed: mainframes and green screens gave way to wimp client servers and relational databases which are giving way to Internet enabled web front ends and XML messaging. Over these years we've learned a few things about the way in which these kinds of systems should be constructed. We know that it's wise to use a layered architecture, but also that the choice of layers depends upon many things in the nature of the system. We've learned how to tie object-oriented domain models to databases, but again there are choices and trade offs.

In this tutorial I'll describe a series of patterns to help us make sense of the architectural options we have and the rationale behind these options. We'll look at basic principles and patterns in distributed IS design, layering patterns, object-relational mapping, session state, and web server organization. The patterns are focused on the kinds of systems that are currently under construction.

Tutorial, Planning Adaptive Projects
Half day, Thursday 13 September

Most software projects I've come across are very poorly planned. They often have a very impressive chart on the wall describing a plan; but that plan so out of sync with reality that it is more dangerous than useful. The painful truth is that many projects these days are faced with changing requirements, where even half way through a release cycle you still aren't sure what needs to go in the product. In such situations many principles of project planning are undermined, and if this isn't recognized a planning falls apart.

Despite the uncertainties, adaptive projects must be planned and can be controlled. In this tutorial we'll look at simple yet effective technique that can be used to do that. The core of the ideas are based on the planning approach of XP (Extreme Programming) as described in Planning Extreme Programming. However we'll take the techniques and extend the ideas to cover a broader range of adaptive processes to allow the planning approaches to fit in with processes such as Crystal and RUP.

The talk will cover the purpose of planning and the basic principles of XP style planning: four variables, project velocity, yesterday's weather, and division into release and iteration plans. With release planning we'll look at how requirements are chunked up into features (stories), the relationship between features and use cases, how features are estimated, how features are allocated to iterations. In iteration planning we'll look at the break down of features into tasks, allocation of tasks to people, sizing of tasks, and how an iteration is tracked. We'll look at scaling the planning process while sticking to the underlying values, based on experiences running larger projects and global multi-site development.


Information System Architecture Patterns (Best Practise, Software Design & Architecture)
Martin Fowler, ThoughtWorks
Wednesday [10:30 - 12:00] Tutorial Room

Slides from this presentation

Next speaker Pil