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;