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.
Download slides
Presentation: "Agile Architecture is not Fragile Architecture"
Time:
Thursday 17:15 - 18:15
Location:
Westminster Suite
Abstract:
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.
Download slides
Tutorial: "Hands-on Agile Development Workshop"
Time:
Tuesday 09:00 - 16:00
Location:
To be announced
Abstract:
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.