CSC223 2004F, Class 14: Exterme Programming (1) Admin: * No quiz! (Would have been "What is the purpose of the driving story" or "What are the four values?") * Questions on homework? Note you will present your designs a week from today. * ACM Brochures * Math/CS lunch (every Monday, Cowles) * Missing: Petersen * Questions on reading? Overview: * Context: Kinds of programs. * Context: Heavyweight models, generalized * Beck's rhetorical strategy? * Introduction to XP /Context: Kinds of Programs/ * We don't talk about "real world" program development at Grinnell (at least not much) * Different kinds of models: * General-purpose programs (Word processors, Spreadsheets, Macro recordes, etc.) * Special-purpose programs (niche programs): Designed for a specific market or problem, but will be sold to many people (Medical billing software, Lawyer's accounting software and time-recording software) * Custom software: Build for one customer according to his/her specifications * An awful lot of proramming is custom or niche software /Context: How to develop software?/ * Most traditional method: Anarchy * Alternate traditional method: Super-programmer * Traditional methods: Waterfall (heavyweight) * Many parts * Analysis * Specification * Design * Implementation * Testing * Release * Each part completed before the next part is started * Benefits? * Customer gets what (s)he/it originally contracted for * The "large scope" view helps avoid conflicts in integration * Coding should be straightforward * All questions are answered by the specification document * Drawbacks? * Seems like some steps could be integrated * Customers change requirements * Long time to release * False sense of progress (you do sometimes have to backtrack) * Danger of unpredicted problem at a later stage requiring signficant reworking of earlier stage * Prediction can be hard * Testing tends to slip /Beck et al. present an alternative: Lightweight programming/ * Small steps * Lots of feedback between stages * XP is *a* lightweight programming strategy; there are others * Who is Beck's audience? (Who are Beck's audiences?) * Professional programmers * Want evidence that it works * Want to know the impact on their lives * Are likely to think "Yeah, this is good, it's what I do anyway" * Managers of programmers * Want evidence that it works * Does it address the problems we have with our current development strategy? * "It's what the programmers want to do; it must be wrong." * Business managers: Non-technical * Can I read it in less than an hour? * Opponents of XP say "it's an attempt to call hacking software design" * What rhetorical strategies does he use to address these audiences? * Claimed overall rhetorical structure for book: * Part one: Analysis/Specification "The Problem"; Demonstrate that traditional software design has problems * Criteria for evaluating solutions * Part two: Design "The Solution"; Show that XP solves this problem. * Part three: Implementation "The Implementation"; How to do XP * Testing left to after release * Part one does discuss problems, part two does discuss solutions, part three does discuss implementation * However, he inserts aspects of the solution in part one, and aspects of the implementation in parts one and two * Tell stories (show that he relates; show successes) * "Layers": Lay out basic ideas and then look in depth at each one ("Tell 'em what you're going to say, say it, and tell 'em what you said) * Repetition and extension: He starts with one "raw material" and gradually adds to it /Following that Rhetorical Structure/ * The driving metaphor * "Change is the only constant" * You can't just point your car and go; you need to adjust regularly * You drive through lots of small tweaks rather than big adjustments * Why does/should this metaphor apply to software? The customer is the road. * Four values for programmers and teams * Communication * Simplicity * Feedback * Courage: Willingness to take risks * What other values might be important? * Flexibility (implicit in communication, feedback, and courage) * "Write good code": Correctness (implicit in simplicity) * Teamwork (implicit at the deepest level) * WARNING! XP has not been formally verified (as far as I know) * WARNING! XP does not necessarily work for other kinds of development (those outside of software) * DETOUR: The Waterfall model is a traditional engineering model. Coming wednesday * These values "suggest" particular principles * XP is a set of practices which align well with these principles