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:
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:
- Bug Reports
- Feature Requests
- FAQ Management
- 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.