CS 458 - Week 3 Lecture 1 - 2017-09-05 * focusing on the variety of Agile methodology called Extreme Programming * project starts with short user stories, <-- the list of user stories CHANGES throughout project * also help create empathy between user and developer; * an XP attitude: extreme customer involvement * an operational, deliverable product results from each short iteration; (the client then can use that iteration, get a better idea of what user stories they hope will be implemented next, maybe which they no longer want, maybe additional ones they'd like added...) * during the iteration... * development is done by pairs, using pair programming * test-infected development * unit tests are written BEFORE the code is written * acceptance tests are also written BEFORE the code is written * code is not (supposed) to be added to the iteration unless it passes all unit tests * frequent or even continuous integration * simple designs ("do the simplest thing that could possibly work") that are REFACTORED as needed * refactoring: changing WORKING code to "improve" it in some way (contrast this with "debugging" - changing code that has exhibited a FAILURE, seeking to remove one or more FAULTS, or bugs, in that code) * the XP practices are meant to be SYNERGISTIC, stronger when used together; * some more XP philosophy: * must have rapid system development * must have extreme customer involvement * must be extreme in avoiding defects * must not be afraid to change code -- "embrace change" * must have extreme involvement of coders -- everyone "owns" ALL of the code (shared code ownership) * did I mention coding standards, also? * must be extremely respectful of people and their personal, social, and psychological needs (!) * YAGNI - "You Aren't Going to Need It" * jargon that accompanies the goal of simple design * some more practices considered to be under the XP banner: * 40-hour work week * pair-programming * short iterations * coding standards * test-infected development * stand-up meeting * refactoring * collective code ownership * continuous integration * simple design * the planning game * choose 2 of these 3: fast, cheap, or good * on-site customer * system metaphor * spike solutions ...more discussion of these, esp. user stories, on Thursday;