[ Workshops | Schedule | News | Location | Registration | Organization | Links | Contact Info | Home page ]



TUTORIAL 1.2: User Stories and the Planning Game


Ann Anderson, Chet Hendrickson, Ron Jeffries

This hands-on tutorial will familiarize participants with the aspects of XP that involve stories, estimation, and planning. Participants will gain experience in writing and explaining stories, assisting customers to produce stories, estimating stories for Release Planning, selecting and explaining stories for Iteration Planning, breaking down stories into tasks, and estimating tasks.
The tutorial will be valuable to both customer and developer team members, with about one customer per four developers to provide for a realistic experience. All participants will play roles on both customer side and developer side, to gain an appreciation for both roles.
XP teams may attend as a group, space permitting, and all participants are encouraged to bring real stories from their projects for discussion. We will be creating and working with new stories during the tutorial.
The tutorial will include sections on the key areas of XP that relate to stories, with approximately this agenda:



TUTORIAL 1.3: An Introduction to Unit Testing XP Style


Don Wells

Goals: This tutorial will introduce unit testing as practiced on an Extreme Programming project. Students will receive hands on experience with JUnit and test first programming. Basic topics and a few intermediate topics will be covered. Advanced topics are beyond the scope of this short tutorial. The primary focus is on understanding the philosophy behind unit testing in an XP context and breaking down misconceptions associated with test first coding.

Prerequisites: Moderate Java knowledge.
Students should bring a laptop computer with a Java environment they have used before. Students should load and test the JUnit testing framework prior to class. Students will work in pairs. Students can arrange to bring one laptop per two students if desired.

Outline:


Don Wells has over two decades of programming experience. He has built financial applications, military applications, expert systems, cockpit simulators, computer aided engineering (CAE) systems, web sites, and even published a video game. Don has been on projects ranging in size from 1 to 150 people. He has developed software to run on large corporate mainframes, all the way down to shrink-wrapped software for home computers, and everything in between. He has been experimenting with ad hoc software development methods for many years.
About 5 years ago he worked on the Chrysler Comprehensive Compensation project and then the VCAPS project. Now Don consults on applying Extreme Programming and blended ad hoc methodologies.



TUTORIAL 2.1: Extreme Programming for Beginners


Kent Beck

Level: Beginner
Duration: Full-day

Expected audience:
Programmers, although managers and customers will also benefit.

Required experience:
Have read Extreme Programming Explained

Abstract:
Kent and a special guest will lead the participants through the basics of programming extreme:

Some of the topic will be covered by demonstration, others by exercises. We will use JUnit as our example project. Our goal is not to cover any topic in depth, but rather touch on every activity that is part of the extreme programmer's daily life. At the end of the day, participants will not be extreme programmers, but they will be prepared to take their first steps.

The tutorial is primarily for programmers, although managers and customers will also benefit. Reading Extreme Programming Explained will prepare participants to get the most out of the day. Note, there will be no other prepared materials for the tutorial.




TUTORIAL 2.2: Refactoring Techniques


Martin Fowler

Level: Intermediate
Duration: Half-day

Expected audience:
Experienced developers, team leaders, software managers.

Required experience:
Object-Oriented software development experience.

Abstract:
Almost every expert in Object-Oriented Development stresses the importance of iterative development. As you proceed with the iterative development, you need to add function to the existing code base. If you are really lucky that code base is structured just right to support the new function while still preserving its design integrity. Of course most of the time we are not lucky, the code does not quite fit what we want to do. You could just add the function on top of the code base. But soon this leads to applying patch upon patch making your system more complex than it needs to be. This complexity leads to bugs, and cripples your productivity.

Refactoring is all about how you can avoid these problems by modifying your code in a controlled manner. Done well you can make far-reaching changes to an existing system quickly, and without introducing new bugs. You can even take a procedural body of code and refactor it into an effective object-oriented design. With refactoring as part of your development process you can keep your design clean, make it hard for bugs to breed and keeping your productivity high.

In this tutorial I'll show you an example of how a lump of poorly designed code can be put into good shape. In the process we'll see how refactoring works, demonstrate a handful of example refactorings, and discuss the key things you need to do to succeed.





TUTORIAL 2.3: No Stone Unturned, an introduction to test-driven development


Steve Freeman and Tim Mackinnon

Abstract

Writing effective unit tests is a skill that takes practice to do well but is at the core of Extreme Programming. During this tutorial we will demonstrate real examples that address situations many programmers find hard to test. We will also show how test-driven development improves the quality of the code produced. Finally, we will consider the practical boundaries of effective unit testing.

Benefits

This tutorial will
  • improve attendees understanding of how to write meaningful and effective unit tests.
  • demonstrate, live, test-driven development and pair-programming
  • cover topics that many people find difficult when writing unit tests.
  • Audience

    The session is intended for working programmers who are interested in writing effective unit tests. They should be familiar with Java and, preferably, standard libraries such as JDBC and servlets. The tutorial has a bias towards web development, but the techniques it covers are applicable elsewhere.

    Schedule

    This is a 3 hour tutorial.
  • 10 mins: Introduction and welcome.
  • 5 mins: Contribute to the Box Of Fears
  • 30 mins: Demonstration I: a gentle introduction to test-driven development
  • 5 mins: Summary of basic techniques
  • 30 mins: Demonstration II: writing a simple servlet test-first
  • 5 mins: Summary of techniques for event-based systems
  • 15 mins: Break
  • 25 mins: Demonstration III: testing database-backed persistence
  • 5 mins: Summary of techniques for third-party libraries
  • 30 mins: Pot-pourri: further topics.
  • 30 mins: Open the Box of Fears and discussion
  • Process

    After an introduction and welcome, we will ask every participant to contribute a card to our Box of Fears. These cards will describe something that they believe is difficult, or even impossible, to unit test.

    For our demonstrations, we will pair-program a working example, using the unit-testing techniques we wish to highlight. Following the canonical Beck/Cunningham tradition, we will pair with volunteers from the audience.

    Over the course of the tutorial, we will develop a simple end-to-end web application with persistent data. This will show three areas of unit-testing: a general introduction to test-driven development, event-driven with servlets, server libraries with jdbc. After each demonstration, we will summarise the techniques that we have just used. To give some variety, the introductory demonstration will be a file processing utility in Python.

    The pot-pourri section will cover topics such as testing generated server pages, testing within application servers, and writing test web clients.

    At the end of the tutorial, we will hold a discussion during which we will open the Box of Fears and consider whether we have addressed the issue on the cards.

    History

    This tutorial is based on the collective experience of the London XP community, as described in our paper in last year's conference, and on-going discussions over the year. We will be giving a shorter version of the tutorial at OT 2001 in Oxford and expect to run it at several companies in London.

    Steve Freeman

    I am a Principal Consultant at Big Blue Steel Tiger, where I develop e-commerce solutions. I am also responsible for helping to move Big Blue Steel Tiger towards Extreme Programming. Prior to this, I ran the largest XP project in the UK at Lombard Risk Systems. I have degrees in Statistics and Music, and a PhD in computer science from Cambridge University. I have written software for research labs, shrink-wrap and bespoke systems.

    Tim Mackinnon

    I am Head of Software Development at Connextra, a web technology company founded on XP principles. Before this I worked at Dashboards, a software consultancy, where I introduced the first XP project in the UK and was a founder member of www.xpdeveloper.com. I also worked for some years at OTI, developing shrink-wrap software in Smalltalk. I have a BCS from Carleton University.




    TUTORIAL 2.4: Extreme Options: the Economics of Flexibility


    John Favaro


    "Flexibility can be considered an option." - Nobel Prize in Economics lecture, 1997

    In Extreme Programming Explained it is suggested that the economic value of flexible processes might be best analyzed by the application of a relatively new approach known as real options. This approach takes a perspective that the value of an asset lies not only in the amount of revenue explicitly generated, but also in the options it creates for flexible decision-making in the future. The tutorial covers traditional methods of valuation, option pricing theory, the application to real-world projects, and implications for management under uncertainty.

    INTENDED AUDIENCE

    All those interested in obtaining an overview of an emerging discipline for the economic and strategic analysis of information technology projects, particularly managers and project planners. The material is intended to be self-contained, with no requirements for previous experience in economic theory.

    TUTORIAL OUTLINE

    Introduction: Strategic Options in IT processes

    Net Present Value and Valuation

    Beyond NPV: Option Pricing Theory

    Real Options and the Value of Flexible Processes

    Implications for Management of Projects

    John Favaro is an independent consultant based in Pisa, Italy. John was General Chair of the Sixth International Conference on Software Reuse in June 2000. He is European co-chair of the IEEE Technical Subcommittee on Reuse. Recently he has published articles on principles of strategy and valuation for IT investment, including "Value-Based Software Reuse Investment" in the special issue on reuse of Annals of Software Engineering 1998, the article that became the basis for the material on options in Extreme Programming Explained. He has degrees in Computer Science from Berkeley and Yale.




    TUTORIAL 2.5: Refactoring to Patterns


    Joshua Kerievsky


    Level: Intermediate
    Duration: Half-day

    Required experience:
    Attendees will be expected to understand Java and have basic exposure to Design Patterns.

    Aim:
    While Software Patterns are undeniably powerful design aids, many programmers tend to overuse them, prematurely introduce them, or implement them in unnecessarily heavyweight ways. Refactoring to Patterns encourages a simpler, more disciplined approach to using Patterns, based on the philosophy of eXtreme Programming. Using this approach, programmers wait for the right time to refactor a Pattern into a system and do so using the simplest possible Pattern implementations.

    In this tutorial, we will examine 5 Design Patterns and 5 cases where we might refactor these Patterns into Java code. During the process, we will investigate when it makes sense to refactor to a Pattern, and what are simple implementations of each Pattern we add.

    Presenter:
    Joshua Kerievsky is a consultant, programmer and founder of Industrial Logic, Inc. He splits his time between mentoring and coaching XP projects and designing and teaching Industrial Logic's workshops, including
    The eXtreme Programming Workshop.




    TUTORIAL 2.6: Advanced eXtreme Programming testing techniques


    Joseph Pelrine and Jens Uwe Pipka

    How much testing is enough? Too little? Too much? What do developers need to test?
    The available eXtreme Programming literature differentiates between unit testing and functional testing, and gives unit testing during development a (well-deserved and much-needed) high priority, but fails to address a number of other important aspects of developer testing: GUI testing, performance testing, and packaging/delivery testing, for example.
    This tutorial will illustrate new techniques such as implementing “skins” for JUnit and SUnit, defining test resources for managing items which remain active over a series of tests (e.g. database connections), and automating or integrating various other tests into JUnit and SUnit.

    The tutorial will be only partly lecture-based. You are encouraged to present problems (and possible solutions) encountered in your work, which the group will address and attempt to solve. We'd like to give out some diff files for SUnit and JUnit, some TestCase extensions, etc., and either do a few proposed tasks, or sit down and see if we can help each other solve some of our testing problems.
    In order to do this, we'd like to ask you (if possible) to bring along your laptop with floppy drive, your favorite flavor of Smalltalk or Java, SUnit or JUnit, a power cable or fresh batteries, and other related stuff that you think you might need. Also, bring along some enthusiasm and "looking-for-fun" attitude, and we're sure to have a ball.

    Joseph Pelrine is an expert Smalltalk programmer with over 12 years extensive OT experience and has worked with Kent Beck, the originator of XP, for a number of years. A former columnist for the Smalltalk Report and noted international speaker, he is currently a senior consultant with Daedalos Consulting in Switzerland. He is coauthor of the book Mastering ENVY/Developer, recently published by Cambridge University Press.

    Jens Uwe Pipka is a researcher and consultant at Daedalos Consulting, Germany. He has a deep expertise in numerous programming languages, specializing in Java and Smalltalk. His specific interest lies on component software technology and software evolution in object-oriented systems. Mr. Pipka's focus on lightweight processes is based on his experience in developing object-oriented applications for several companies.



    TUTORIAL 2.7: Writing User Stories


    Granville Miller

    Creating good user stories is essential to a successful XP software project. User stories are so critical because they represent units of functionality in the project. These units are used for planning, testing, and most of all, showing progress in a project. As a result, they are vital to starting the project, keeping it alive, and demonstrating the intended functionality has been delivered.

    We describe the principles that can used to guide the development of good user stories. We also discuss how user stories can be utilized to plan and test a project. We'll look at some innovative, yet practical techniques for getting the most out of your user stories on larger XP projects. Finally, we look at the requirements capturing techniques employed by other agile processes, Feature Driven Development and Crystal. These processes utilize features and use cases, respectively, instead of user stories to drive software development. We discuss the pros and cons of features and use cases in an agile process world.

    This tutorial is interactive and will stress learning by working with actual user stories. We will write a few user stories and plan a project to illustrate some of new techniques. Finally, we will compare the effort required to write user stories against that of writing features or use cases.

    This is a half day tutorial for intermediate to advanced XPers.

    Content Outline:

    Granville Miller
    TogetherSoft Inc.

    rmiller@togethersoft.com

    Granville has 14 years of experience in the object-oriented community. He is a co-author of Advanced Use Case Modeling series (see www.advancedusecases.com). He has presented tutorials at conferences such as OOPSLA, Object Expo, and Smalltalk Solutions. He has been writing articles for industry and academic forums for nearly 10 years. Additionally, he was one of the original developers of IBM's VisualAge product. His "hands-on" approach to object-oriented programming has been the result of his work with companies that range from start-ups in the very early stages to the most established software giants.






    [ Call for Papers | Schedule | Registration | Location | Contact Info | Home page ]