Now that we've embarked on "ICL-lite" as an "extreme programming" project I'd like to make a few comments. First, I'm trying to contain my enthusiasm for this project while sharing the enthusiasm that I'm experiencing coming from you. Not only am I looking forward to a successful outcome, but I'm also anticipating having fun with you all along the way. :-) We seem to have started out well. We have a good combination of skills and, I hope, our complementary interests will propel us across the rough spots. Having started well I'd like to be sure we stay "real". Our complementary interests may be subject to stresses that, if we can anticipate them, may be turned to our advantage. Perhaps the most obvious potential for divergence is in how we deal with the do-it-now vs do-it-right dilemma. Compromises will need to be made to strike a good balance. By declaring this an XP project we are implicitly suggesting how we are going achieve the needed balance in a dynamic and constructive way. Still, XP is intended to achieve do-it-right by accomplishing a lot of do-it-now. And it does this with a set of techniques that involve significant, if perhaps somewhat "unorthodox", disciplines. While we are not working in the context of a commercial enterprise and, at this point, we are our own clients, there are specific activities that we might want to consider undertaking. Communication is crucial to XP. This is typically achieved by the closeness of the participants; to the extent of requiring paired programmers to share a workstation in some cases. We're not that close. But we must establish and maintain close communication. I suggest we establish an email list - we can call it ICL-XP (or whatever) - and use it often and without reservation. The intent is to use it like we were working in the same room and just blurt out whatever comes to mind about the project. Running use cases (what I've been calling scenarios) and assembling class cards (what we've been calling interface definitions) are also important activities. In a business situation we'd put in at least a full day (probably more) doing this to launch the project, and then iterate this often as the project progresses. Our weekly meetings are good, but it is going to be a challenge to thoroughly run the use cases and assemble effective class cards with such short, spaced interaction without getting frustrated and resorting to ad hoc hacking. The email newsletter below (sans advertising) raises and addresses the kinds of issues we face. It is specifically targeted towards people involved in XP projects and promotes "Agile Modeling" as a means to achieve the necessary balance by using techniques that have been shown to be effective. Our scale, of course, is much smaller, but the issues are essentially the same. And the techniques work just as well when adapted to our scale. I think that we are already doing some of the things, in our own fashion, that Agile Modeling and XP call for. Perhaps you'll see things here (including amongst the numerous references that Scott Ambler offers) that you think would be worth using in our project. It's good to be working with you! BC -------- Original Message -------- Subject: SD's Agile Modeling: Setting the Record Straight--Modeling and XP Date: Fri, 30 Nov 2001 16:00:00 -0700 > From: Agile Modeling <agilemodeling@softwaredevelopment.email-publisher.com> To: castalia@azstarnet.com November 2001 Setting the Record Straight: Modeling and XP Welcome to the Agile Modeling newsletter, edited by Software Development Senior Contributing Editor Scott Ambler. This monthly e-mail newsletter is a free service for subscribers to Software Development magazine and SD Online. Setting the Record Straight about Modeling and XP >From what I gather based on conversations on the Agile Modeling (AM) mailing list ( http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGK2a9GNF8b/ ), there are several common misconceptions about modeling on an Extreme Programming (XP) project. They often result from secondhand knowledge of XP; questionable sources of information regarding XP; difficulty seeing beyond the current environment, or an assumption that the word "extreme" implies no modeling or no documentation at all. In this column, I plan to set the record straight. Modeling Is Part of XP User stories are a fundamental aspect of XP, and artifacts such as Class Responsibility Collaborator (CRC) cards are common to XP efforts. As reminders to discuss requirements with your project stakeholders, user stories provide a high-level overview of system requirements. They're also used as a primary input into estimating and scheduling, and they drive the development of acceptance test cases. CRC cards are employed to explore structure, perhaps for conceptual modeling to understand the problem domain, or for design to work through your software's structure. User stories and CRC cards are both models, so modeling is clearly a part of XP. Whenever user stories and CRC cards aren't the best option, XP developers will also create sketches, often on a whiteboard or a piece of paper. In his pioneering XP tome, Extreme Programming Explained: Embrace Change (Addison-Wesley, 2000), Kent Beck includes hand-drawn sketches of class diagrams and other free-form diagrams. Documentation Happens Documentation is also an important part of XP. Ron Jeffries, in his recent essay, "Essential XP: Documentation" (see link below), offers the following advice: "Outside your Extreme Programming project, you will probably need documentation: by all means, write it. Inside your project, there is so much verbal communication that you may need very little else. Trust yourselves to know the difference." This statement has several interesting implications. First and foremost, the XP community recognizes that documentation should be produced for people external to your team--people whom AM would term "project stakeholders." Second, it points out that verbal communication among team members reduces the need for documentation within the team--because communication is facilitated by the close proximity of XP team members, as well as by other XP practices, such as pair programming and collective ownership. Third, however, it recognizes that sometimes teams do require internal documentation. This is consistent with the advice presented in Jeffries, Anderson and Hendrickson's Extreme Programming Installed (Addison-Wesley, 2001), in which the authors suggest that important communications with your project stakeholders can be captured as additional documentation attached to the index card with the relevant user story on it. Fourth, it suggests that XP team members should know when documentation is required--and act accordingly. In an XP project, documentation is a business, not a technical decision. This is consistent with the AM philosophy (see "Be Realistic About the UML"--link below), as summarized in October's Agile Modeling newsletter. Jeffries says it best: "If there is a need for a document, the customer should request the document in the same way that she would request a feature: with a story card. The team will estimate the cost of the document, and the customer may schedule it in any iteration she wishes." ("Essential XP: Documentation," 2001) The final word? If you need documentation, go ahead and write it. XP and the UML? Two interesting questions regarding XP and the UML should be addressed: 1. Can you use UML with XP? Yes. You can apply the artifacts of the UML--activity diagrams, class diagrams, collaboration diagrams, component diagrams, deployment diagrams, sequence diagrams, statechart diagrams and use case diagrams--in an XP approach to development. 2. How do you use UML with XP? Minimally, you should apply AM's practice of Applying the Right Artifact(s) and use UML artifacts on your XP project only where appropriate. Ideally, you should apply all of the principles and practices of AM when doing so. Wait a minute. One of AM's principles is Multiple Models, which suggests that your intellectual toolkit must possess modeling skills pertaining to a wide variety of artifacts. Yes, the artifacts of the UML are a good start, but unfortunately, the UML is not sufficient for the real-world needs of business application developers, although we are lucky to have far more than the artifacts of the UML at our disposal (see "Artifacts for Agile Modeling: The UML and Beyond"--link below). The problem, then? If the UML is not sufficient for the development of business applications, and if you're trying to develop such an application following the XP methodology, perhaps "How do you use UML with XP?" is the wrong question. Instead, try asking, "How do you model on an XP project?"(see "Agile Modeling and Extreme Programming"--link below.) *********************************************** References and Recommended Resources: The Agile Modeling Home Page, Scott W. Ambler. http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGK4a9GNF8b/ This site describes the current state of the art for the Agile Modeling methodology. "Agile Documentation," Scott W. Ambler. http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGK5a9GNF8b/ This essay explores critical issues in effective document creation, including valid and invalid reasons for creating documentation, what "agile documentation" and "traveling light" really mean, and how can you make this advice work for you in practice. "Agile Modeling and Extreme Programming (XP)," Scott W. Ambler. http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGK6a9GNF8b/ This essay describes how to apply AM practices effectively on an XP project. "Be Realistic About the UML," Scott W. Ambler. http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGK7a9GNF8b/ Although the UML does describe an important subset of what you do need, it's not yet sufficient for business application development--and while Executable UML (xUML) sounds good, it may not live up to its promise. "Artifacts for Agile Modeling: The UML and Beyond," Scott W. Ambler. http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGK8a9GNF8b/ This essay presents a list of candidate modeling techniques, including the artifacts defined by the UML as well as structured modeling techniques such as data models and data flow diagrams (DFDs) and essential modeling techniques. Agile Modeling: Effective Practices for Extreme Programming and the Unified Process, Scott W. Ambler http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGK9a9GNF8b/ This book, to be published in February 2002, is the first ever written about the AM methodology. Extreme Programming Explained: Embrace Change, Kent Beck (Addison-Wesley, 1999). http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGLaa9GNF8b/ This is the seminal XP book, describing its principles, practices and philosophies. It's a must-read for anyone interested in XP. "For Use: The Web Site for Practitioners of Usage-Centered Design," Larry Constantine and Lucy Lockwood. http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGLba9GNF8b/ This Web site is a forum for professionals interested in software and Web usability, user interface design, user role models, use cases and task modeling, content and navigation models, user interface architecture and usability inspections. Extreme Programming Installed, Ron Jeffries, Ann Anderson and Chet Hendrickson (Addison-Wesley, 2000). http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGLca9GNF8b/ This book describes how to apply XP within your project team. "Essential XP: Documentation," Ron Jeffries. http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGLda9GNF8b/ This essay, written by one of the leading XPerts in the industry, describes important philosophies and practices for effective documentation practices on XP projects. *********************************************** GET THE MAGAZINE If you are a professional software developer, you may qualify for a free subscription. Find out more at http://click.softwaredevelopment.email-publisher.com/maaaeBraaQGLfa9GNF8b/ FEEDBACK AND PROBLEMS Send letters to the editor to aweber@cmp.com. Send technical questions or problems to webmaster@sdmagazine.com. AGILE MODELING is a monthly newsletter brought to you by CMP Media LLC, publisher of Software Development magazine. Copyright 2001 CMP Media LLC