Return to Home Page
      Blog     Consulting     Seminars     Calendar     Books     CD-ROMS     Newsletter     About     FAQ      Search
 

Extreme Design: Patterns/XP Practicum

Taught by Bruce Eckel & Dave Bartlett

Not currently scheduled


prac·ti·cum
n. A school or college course, especially one in a specialized field of study, that is designed to give students supervised practical application of previously studied theory: advanced practicums in teaching reading.

[German Praktikum, from Late Latin prcticum, neuter of prcticus, practical; see practical.]


Concept

In the best writing workshops I have taken, we write for a period, then read our work to the class. In the Objects & Patterns seminar, we've found that we get the most requests for more projects, because people get tremendous value out of the design project. (See here for testimonials about the effectiveness of that class).

In this workshop, we have combined these ideas into an intensive design experience that exercises your previous learning and exposes you to new ideas from other people in the class.

This seminar is not language-specific; it is open to persons with backgrounds in object-oriented programming and design. The goal is to generate (and share) designs rather than to write code.


How it works

At 8 am each day (after coffee & food at Camp4Coffee, around the corner), we will organize you into a new team (this way, you work with the maximum number of other attendees during the week). The design problem for the day (see below) is presented, and the team spends the morning working on a design. The "customer-coaches" (Bruce & Dave) circulate among the teams offering insights.

Our presentation of the design problem will include:

  • The system and interactions.
  • Common problems and the patterns that may help in solving them.
  • Portability constraints and patterns to help solve them.
  • The breadth of design alternatives and how not to be overwhelmed by them.

In Crested Butte, the morning session is followed by an extended afternoon break for lunch and an (optional) group hike lead by Bruce & Dave. Some people may choose to continue working during this period.

In the afternoon (starting at 4:30), each team will present their approach to the solution. We will ask questions and converse about the solution choices and possible alternative approaches. This will not be about "right and wrong" solutions, but instead about examining decisions made based on real or imagined constraints. Your team may want to continue your discussion over dinner and/or at one of the local bars (everything is within easy walking distance in Crested Butte).

The "deliverables" for each project are:

  • Use cases (user stories in the parlance of Extreme Programming(XP))
  • The plan:
    • Use cases implemented in the initial iteration and second iteraton
    • Critical components that require special/up front investigation
  • The design:
    • UML diagrams
    • Points of flexibility (where you see change happening)
    • Design patterns applied to facilitate that change

A strong emphasis will be placed on practicality and in applying the Extreme XP principles of:

  • Do the simplest thing that could possibly work

  • You're not going to need it

The next day, you'll do it again. As the week passes, you'll get better and faster at evaluating the situation and making design decisions.

There will be a welcome barbeque Sunday evening, and a last-evening barbeque on Thursday evening, both at the park area behind the Crested Butte Center for the Arts.


The Design Projects

We are open to suggestions for other projects.


Day 1: A Shared Calendar and Bulletin Board

This project will explore many web and e-commerce collaboration issues including public and private items. Your goal is to design a single calendar system that allows individuals to keep their own (private) events while staying in synch with the global events added to the calendar.

Some use cases might be:

  • User reads and manipulates his/her own calendar.
  • Development team shares agenda information by using a group scheduling program to more efficiently schedule their time.
  • Professor allows students to schedule a time slot during his office hours.
  • Movie theatre publishes its schedule so that prospective customers can easily access it.
  • An arts center organizes events more effectively by booking time with its members and sponsors.
  • A user misses an appointment; the apointment automatically moves forward to the next avaliable time slot.


Day 2: Seminar Registration System

This registration system will continue working within the e-commerce application space presented in the shared calendar. Once a seminar is scheduled, people or groups will want to register to attend. This system must effectively manage that registration process. Objects that are manipulated by this system include the seminar, event location, attendees, instructors, and payment.

Use cases include:

  • Store information about a registrant, generate an invoice. Apply discounts.
  • "Tickle" registrant or administrative assistant with periodic emails until registration is complete.
  • Different seminar locales have different registration requirements (for example, release forms in one location, Hotel reservations in another).
  • Seminar date and location will determine a maximum group size.
  • Number of registrants may determine room number the seminar will be held in.
  • Send seminar leader weekly notices of attendance numbers.
  • Apply a Go/No-Go date and breakeven number to the seminar. Cancel seminar if the number of attendees does not meet the breakeven requirement.
  • Other issues that you will think of as you design the system.


Day 3: Self-Organizing Conference

In this project designers will extend the previous two projects with the Self-Organizing Conference, which is an Internet-based way to build and manage a conference by distributing the work of building the brochure to the conference speakers, and the work of choosing the best/most desirable presentations to the conference attendees, thus relegating the role of "conference organizer" to the web server. Each conference in the system will have location resources that would include rooms, projectors, and available time slots. Conference instructors would register the events (courses/seminars/panel discussions) they wish to present, along with web pages describing the events, and then the conference attendees would register for each event they wish to attend. Each event would be given a room and location. More popular events would need a larger room and should not clash with other popular events.


Day 4: Product User Feedback System

The goal of this design project is to layout an application that will aid in managing the XP (Extreme Programming) process when you don't or can't have an on-site customer. (In XP, the on-site customer is someone who is a real customer of the system and will actually use the system in production. This person should be readily available to the development team to answer questions, resolve disputes, and set small-scale priorities.) For example, this system could manage:
  1. Bug Reports
  2. Feature Requests
  3. FAQ Management
  4. Documentation requests

In particular, "Feature Requests" need prioritization, so that customers can vote on their favorite features to put into the next iteration.


Friday Grab-Bag

On Friday, your team can choose your own project, or you can make one up or bring one from work and "sell" the idea to the other team members.


Workflow Management

Design a system that flexibly handles the workflow for hiring an employee. Some of the tasks include:

  • Making the connection or referral - track how the candidate became interested in the company Acceptance of resume and storage
  • Initial contact
  • Schedule phone screening
  • Primary evaluation of candidate
  • Acceptance of candidate application and storage
  • Candidate testing and results storage
  • In-Person interviews
  • Secondary evaluation and accept/rejection
  • Candidate correspondence and storage
All of this information must be handled in a flexible workflow that aids the Human Resource personnel, interviewers and candidate in collaboration and communication. The system should help coordinate the processing of the candidate, paperwork and forms. It should be flexible enough to allow each candidate and collaborator to move through the process with a minimum of rules and requirements such as specific document formats, testing methods or formats, type of communication phone, email, personal or instant messaging.


Email Anti-Spamming System

A subject that is familiar and dear to everyone. Based on ideas Bill had in Prague.

Design a system that reliably locks out spam with minimal annoyance to friends and customers. This system would work with an 'sender' list to match emails to known senders. The senders would be known as 'friendly' thereby letting the email pass through, 'spammers' to have the email deleted, or 'unknown'. Unknown senders would receive an auto reply to which they must respond to be automatically added to the 'friendly' portion of the sender list.


Request Dispatcher

Consists of a front wall of web servers that handle requests, and middleware servers to perform processing. The majority of requests are handled right at the "front wall." Every once in a while, a request must get processed, at which point it falls through to the middleware servers. The processing is done, data is retrieved or updated and the results are sent back up to the front line web servers.

This design is widely used for sites that need scalability. Provides modularity, fault tolerance - all that good stuff.

Design issues: Do you actually change the data on the front end servers (via callbacks), or flag things as dirty, or does the front-end do a check on the back end every time, what is the granularity of the dirty flags, etc.


Or Bring or Invent Your Own Project...


How to Prepare

1. You should have object-oriented design and implementation experience with an object-oriented programming language, such as Java, C++, Smalltalk, or Python.

This is not a programming workshop. The "deliverables" will be the plans, designs and diagrams that you present, not code (other than pseudocode, which may be appropriate in places).

2. Buy and read the following books, and bring them to the seminar

  • Planning Extreme Programming, by Beck & Fowler (Addison-Wesley 2001). [Amazon Link] A small book, easy and fun to read. Introduces the ideas of XP and how to stay clear on a project design.

  • If you're not already comfortable with UML, read chapters 1-5 of UML Distilled by Martin Fowler (Addison-Wesley, 1999) [Amazon Link].

  • Design Patterns (Gamma, et al, Addison-Wesley 1995). [Amazon Link] There's also a CD version. You should read the first 2 chapters, and bring the book or CD with you for reference.

  • Pattern-Oriented Software Architecture: A System of Patterns, by Buschmann et al. (Wiley, 1996). [Amazon Link] Bring Volume 1 with you for reference.

3. Set up your notebook computer with the following software

  • A UML Diagramming tool. We recommend JVision, which is available as a free download with 15-day trial. We will have a special class version available during the class, so don't worry about whether your trial download expires -- download it and get used to using it as soon as you have time.

    If you already have your own UML diagramming tool that you're comfortable with, that's fine too.

Search     Home     WebLog     Consulting     Seminars     Calendar     Books     CD-ROMS     Newsletter     About     Contact     Site Design     Server Maintenance     Powered by Zope
©2007 MindView, Inc.