<<< Previous speaker Next speaker >>>

Trackhost: Kevlin Henney, Independent Consultant

 Trackhost: Kevlin  Henney, Independent Consultant

Kevlin Henney is an independent consultant and trainer based in Bristol, UK. He has variously developed and delivered training courses, consultancy and software across a number of domains ever since getting involved in professional software development in the late 1980s.

Kevlin's work focuses on software architecture, patterns, development process and programming languages. He has been a columnist for various magazines and online publications, including The Register, Java Report and C++ Report. He is coauthor of two forthcoming volumes in the Pattern-Oriented Software Architecture series.

Presentation: "Introduction: Putting the Qualities into Architecture"

Track:   Qualities in Architecture

Time: Wednesday 10:15 - 10:45

Location: Fleming Room

Abstract: There is more to a software system than just its functionality. The software architecture of a system captures the significant design decisions that make the system what it is: how it runs, how it fails, how it is developed, how it unfolds over both runtime and development time. Many quality attributes surround and cut through the functional aspects of a software system, including security, performance, scalability, availability, modifiability and portability.

Password protected Download slides

Presentation: "Agile Architecture is not Fragile Architecture"

Track:   Agile Foundations

Time: Thursday 17:15 - 18:15

Location: Westminster Suite


Architecture is a heavy-weight activity, and the magic of Agile makes it unnecessary to bother with up-front design, right?

Wrong on two counts!

Today's Agile projects often find themselves stumbling through domain understanding during the first few iterations with low feature velocity: re-work is the order of the day. Many teams find themselves re-doing their software after a few iterations because the initial software foundations weren't strong enough to support maintainability and evolution beyond that point. Such changes outstrip any reasonable refactoring techniques, and while often labelled "refactoring" these restructurings are rarely behaviour-preserving and are indistinguishable from hacking. They are restructurings done with the insight and domain knowledge gleaned from the first few iterations. However, deferring the architectural focus to this stage is costly and negates most of the time-to-market advantages of Agile techniques.

In this session, agile pioneers and practitioners Cope and Kevlin underscore the importance of software architecture in an Agile context. Not only will they show its importance to maintainability, feature velocity, test development, GUI design, and organizational structuring, but they will describe how to do it. They will describe how to infuse just enough architecture into your first sprint to lay a foundation for both short-term success in test and GUI design, and long-term success in reduced maintenance cost and feature velocity -- all within the spirit and focus of the Agile manifesto.

Password protected Download slides

Tutorial: "Hands-on Agile Development Workshop"

Track:   Tutorial

Time: Tuesday 09:00 - 16:00

Location: To be announced


Agile development processes are intended to help developers avoid the problems of analysis paralysis, big up-front design, rushed testing and changing requirements. They treat analysis and design as continuous activities that start early in development but continue throughout, rather than as segregated phases divorced from other development activities.

Development is dynamically planned as incremental and iterative. Coding and testing are considered together and from an early stage in development. In particular, incremental design, continuous testing and responsive refactoring make up the programmer-facing discipline of Test-Driven Development (TDD). The goal of this workshop is to offer attendees hands-on experience of many of the practices involved in the construction phase of a lifecycle.

As its title suggests, this tutorial is actually a workshop! Attendees will learn about the development side of agile development by doing it. It is based on undertaking four rapid sprints of development, working on a clearly bounded and well-defined problem. The emphasis is on scope management, iteration planning, TDD in Java with JUnit, pair programming and other practices and principles drawn from agile approaches such as Extreme Programming, Scrum and Lean Software Development, with guidance and feedback both during and in between iterations. This promises to be a good learning experience and a good workout for any attendee!

Audience: Developers and architects with at least basic Java skills. Deep Java knowledge and TDD experience are not a prerequisite.

Notes: At least 50% attendees will be required to bring a laptop, so bringing a laptop as default is considered to be the best option. Laptops will need to have a common development environment installed, such as Eclipse, with JDK 5 and JUnit 3.8 or JUnit 4. Time management is important to the running of the workshop, so late arrivals may find that they miss out.