Tutorial Chairs: Geoff and Emily Bache
T01:Working Effectively with Legacy Code

Learn how to get code under test to change it deterministically and safely

Michael Feathers

Test Driven Development and Refactoring are powerful tools in the XP/Agile arsenal. With them you can add new code to systems and make existing code more maintainable. However, refactoring code without having tests in place can be hazardous.

This tutorial presents a collection of dependency breaking and test writing techniques that can be used to get existing code safely under test for refactoring. These techniques can be used in conjunction with Test Driven Development to breathe new life into large existing code bases.

Who should attend:
Attendees should be developers with a working knowledge of UML, experience with significant amounts of legacy code, and familiarity with Java or C++ syntax. At the tutorial, attendees will learn how to identify good test points within their applications, how to break dependencies well enough get portions of legacy code under test, and how to write tests to support refactoring and additional development. The exercises will be in Java. Attendees will be expected to bring a laptop with an installed version of the Sun Java JDK version 1.4 or later. Exercise packets will be distributed to attendees via email prior to the class

Michael Feathers, Object Mentor, has been involved in the XP/Agile community since is inception. While designing biomedical instrumentation software in the late 1990s, he met several of the members of the Chrysler C3 team at a conference and was persuaded by them to try XP practices. Subsequently, he joined Object Mentor where he has transitioned over eight teams to XP. Michael first became interested in legacy code problems when he noticed that the first teams he transitioned to XP had significant problems moving beyond the quality problems their legacy code bases presented. Since then he has concentrated on learning and developing techniques which aid this transition.

T02:Expressing Business Rules

Learn how to express business rules as tests, with a focus on expressing the business domain with brevity and clarity

Rick Mugridge

Learn how to express business rules as tests, with a focus on expressing the business domain with clarity and brevity.
Learn how to focus on understanding and communicating the domain with concrete examples, formulating a ubiquitous language in the process

Writing Customer tests is usually complicated by several factors: The business domain needs to be understood, and often needs to be clarified. Tests need to evolve to help this understanding evolve. Emphasis is often placed too early on the testing aspects, rather than on expressing the business domain (business objects, rules and constraints) as clearly as possible. The tests often make premature commitments to details of the application being developed, or are not written until those details are known.
This tutorial will give you active experience, through focussed exercises in small groups, in expressing business rules with clarity as Customer tests. You’ll see that such tests evolve as the whole team’s understanding of the business needs and the system evolve. You’ll learn to identify smells in tests and learn how to refactor them.

Who should attend:
Customers, business analysts, project managers, testers, programmers.
This tutorial is suitable for those with little experience with Customer tests, right through to those who want to refine and advance their techniques. It is as relevant to programmers as it is to others in a project team, given the central role of the ubiquitous language in communicating about the business domain

Rick Mugridge is the author, with Ward Cunningham, of Fit for Developing Software, Prentice-Hall, 2005. He developed the FitLibrary as he explored ways of expressing business rules well under change. He has been teaching, coaching and researching into agile software development for some years. Rick ran tutorials on Acceptance testing using Fit at XP2004, ADC2004 and XPAU2004. He runs his own consulting company, Rimu Research, and teaches agility to software engineering students at the University of Auckland, NZ.

T03:Agile User Experience Design

Agile Requirements Using User Experience Design

Jeff Patton

This tutorial has been cancelled!

T04:Test Driven User Interfaces

Techniques to support unit-testing and TDD of user interfaces.

Charlie Poole

Certain kinds of code have a reputation of being quite difficult to test. One of the most frequently cited examples is testing of user interfaces – particularly GUIs. .

This tutorial will begin with a quick review of the principles of unit-testing and test-driven development but will then drill down to the issues surrounding user interface testing. We’ll look at design issues, identification of what needs to be tested, how test-driven development can be applied to the UI and specific testing techniques for GUIs.
The tutorial will include both presentation and hands on exercises. Participants are encouraged to bring laptops for use in the exercises. We will arrange pairing for those without a laptop. Class examples will be presented in C# and Java, but the exercises may be done in other languages if desired.

Three hours ( half day )

This tutorial is aimed at programmers and project leaders who want to apply Test-Driven Development to the user interface. This includes both those with significant TDD experience, who need to develop testable user interfaces, and those who are just adopting TDD.

Topics covered will include:

A brief review of unit testing practices and test-first development, and of the facilities of standard unit-testing frameworks, to get us all on the same page.
A series of motivating examples showing why UI testing seems to be difficult.
T06:Introduction to Lean Software Development

Practical approaches for applying lean principles to software development.

Mary Poppendieck, Tom Poppendieck

Long feedback loops are the biggest cause of waste in software development. They are the reason why well over 50% of all newly developed software is seldom or never used. Long feedback loops are the cause of seriously delayed projects, unmanageable software defect counts, and code bases that calcify because of their complexity.
Lean Software Development is all about shortening information feedback loops in the software development process and creating flow. The result is increased speed and quality along with lower cost. If this sounds unlikely, consider that in manufacturing, operations, and logistics, lean processes routinely deliver the highest speed, highest quality and lowest cost in extremely competitive environments. This tutorial will show you how to apply the principles that underlay lean manufacturing, lean logistics and lean product development to software development.

As global competitiveness comes to the software development industry, the search is on for a better way to create first-class software rapidly, repeatedly, and reliably. Lean initiatives in manufacturing, logistics, and services have led to dramatic improvements in cost, quality and delivery time; can they do the same for software development? The short answer is “Absolutely!”

Of the many methods that have arisen to improve software development, Lean is emerging as one that is grounded in decades of work understanding how to make processes better. Lean thinking focuses on giving customers what they want, when and where the want it, without a wasted motion or wasted minute.

This one day workshop provides an introduction to applying lean principles such as Value, Learning, Flow, Integrity, Respect, and Perspective to software development.

You will learn how to:

Develop a value stream map for a software development organization and what to do once you have the map.
Assess the state of the basic disciplines which determine your software development process capability.
Create a financial model for a software development project and use it to make optimal tradeoff decisions.
Organize a visual workplace so that everyone knows the most important thing to do next without being told.
Design a decision-making process which simultaneously delivers high speed, high quality and low cost.
Course Description
This workshop is about 75% lecture and 25% small group work on case studies. After each topic is presented, attendees apply the concept to a real project of someone in the group. The format provides an introduction to strategies for applying the seven lean principles of:

Eliminate Waste
Amplify Learning
Delay Commitment
Deliver Fast
Build Integrity In
Empower the Team
See the Whole
In addition, practical implementation techniques are covered, including:

Creating and using value stream maps
Key metrics
Assessing your process capability
Using financial calculations to make optimal decisions
Who Should Attend
This program is designed for senior software development practitioners, team leads and managers who are considering lean software development for their organizations. It will be particularly useful to those who are looking for tools and practices that they can put to use.
T07:XP/Agile Overview

Get an overview of Agile software development practices and how those practices are implemented in XP.

Robert C. Martin

In this session Robert Martin describes the essential principles and patterns of XP/Agile methods, and how they fit into a development organization.

The talk begins with a history and overview of iterative and agile methods, comparing and contrasting these methods to waterfall. The talk continues with an in-depth discussion of agile planning and the individual practices of XP and Agile development. Then begin two critical TDD demonstrations. The first demonstrates Test First Design using unit tests and JUnit. The second demonstrates Acceptance Tests using FitNesse. The talk concludes with a description of several real projects that have used XP. Robert talks about the things they did right, the things they did wrong, and what they did to fix them.

T08:Transitioning to XP:real world advice from the front

A beginners course in how to become and XP change agent for your own organization

Michael Hill

This tutorial focuses on a practical real-world approach to adopting and adapting the XP stance.

Featuring explicit guidance for would-be change agents at every level of an existing organization, we include sections on the period before XP, the rollout itself, and the early days of the change, as well as a discussion of special challenges like large organizations and distributed teams. In the last six years, Mike Hill has helped over 25 teams transition to the XP stance, and witnessed hundreds more. The class is open to all comers: Anyone who wants to foment a transition to the XP stance in their own company can benefit from Mike’s guidance.

T09:The courage to communicate:collaborative team skills for XP/Agile teams

Experience and practice group and interpersonal collaboration skills that create the optimum environment for XP/Agile team success

Diana Larsen

In their highly collaborative work environments, XP and other Agile teams deal with many interactions within the team and project community. These interactions highlight the benefit of a solid grounding, not only in technical development skills, but also in interpersonal and collaborative team skills. The values of XP – Communication, Courage, Simplicity and Feedback – emphasize the need for these team skills as well. In this highly interactive tutorial, we’ll discuss three team and interpersonal collaboration skills critical for team success: team decision-making, focused listening and interpersonal feedback – seeking it, giving it, and receiving it. We’ll also explore activities and approaches to support and encourage team members as they develop more effective collaboration skills

In this highly interactive tutorial, we’ll discuss three team and interpersonal collaboration skills critical for team success: team decision-making, focused listening and interpersonal feedback – seeking it, giving it, and receiving it. We’ll also explore activities and approaches to support and encourage team members as they develop more effective collaboration skills.

Who should attend:
Experienced XP and Agile practitioners with a variety of roles on the team – project managers, coaches, scrum masters, business analysts, customer proxies, testers, senior developers – and anyone who steps into a leadership role on an XP/Agile team

Diana Larsen, FutureWorks Consulting, is identified as a standard-setting consultant by clients, an exceptional facilitator by colleagues and the “best boss ever” by former employees. Diana partners with leaders of software development projects to strengthen their ability to create and maintain culture, manage change and improve project performance. As a specialist in the human side of software development, she has over 15 years of experience in supporting effective interaction, planning and review, as well as managing projects. Diana speaks at conferences and authors articles on topics affecting project teams, team leadership and organizational change. She serves on the Agile Alliance Board of Directors, is a partner in FutureWorks Consulting, and is a team performance and facilitation expert with Cutter Consortium.

T10:The XP Geography: Mapping Your Next Step

A Guide to Planning Your Journey

Kent Beck

We will explore the primary practices of XP in detail using mind mapping exercises. You will examine your needs and find practices to address them. We will discuss the change process, how to reach agreement on goals and principles, how to implement new practices and how to sustain them. You will make a plan to share with your team and set up incentives for accountability. This tutorial will be interactive and involve many colored felt pens