Extreme Programming (XP) is a methodology for producing programs that satisfy the customer's requirements as to functionality, timeliness and budget. It is one of a number of new ?agile? methodologies that look at each of the things that the software engineering gurus have been telling us to do, and focus on those that actually deliver value to the customer.
The core values of XP are Communication, Feedback, Simplicity and Courage. From these values XP derives a number of principles, such as ?Humanity? and ?Mutual Benefit?, which in turn drive the day-to-day practices of a programming team, such as ?Continuous Integration? and ?Test-First Programming?.
This course combines lectures and exercises designed to help students master the values, principles and practices of Extreme Programming with a practicum that gives students the experience of working as a member of an XP team on a customer project, while using the practices and living the values.
Working knowledge of Object-Oriented programming and the Java programming language. This course is open to professional programmers, computer science graduate students, and undergraduates with junior standing or above.
minimum of 6
maximum of 24
Andrew P. Black, Professor, Portland State University
black@cs.pdx.edu
503 725 2411
James Shore, Principal, Titanium I.T.
jshore@titanium-it.com
503-267-5490
Andrew Black has been teaching and conducting research on how to make programming easier since 1981. He has worked in product development groups and in industrial laboratories as well as in academic departments. Since 2004 he has been a professor at Portland State University.
James Shore is one of the most experienced Extreme Programming coaches in the Portland area. He has been leading teams in agile development since 1999 and has operated as an independent consultant since 2001. In 2005, the Agile Alliance awarded him the inaugural Gordon Pask Award for Contributions to Agile Practice. This is the most significant award given by the agile community.
Extreme Programming Explained, Second Edition, by Kent Beck (Required) | |
Refactoring by Martin Fowler (Required) |
One of the following books on Test-driven development:
Test Driven Development by Example by Kent Beck (Recommended) or
JUnit Recipies by J. B. Rainsberger, or
TDD: A Practical Guide by Dave Astels
Planning XP1: planning game, small releases XP2: real customer involvement, slack, stories, weekly cycle, quarterly cycle Other: Requirements funnel (see http://www.jamesshore.com/Presentations/Beyond%20Story%20Cards.html)
Managing Code XP1: collective ownership, coding standards XP2: ten-minute build, continuous integration, single code base Other: revision control
Working Together XP1: pair programming, on-site customer, metaphor XP2: sit together, pair programming, whole team, team continuity Other: stand-up meetings
Testing: (Michael Feather's Unit Testing Rules), Test Driven Development, five design skills
Developing: XP1: metaphor, simple design, testing, refactoring XP2: test-first, incremental design, shared code, code & test
Other: exploratory testing, Marick's Agile Testing Directions, FIT
Delivering Software XP1: (none) XP2: daily deployment, incremental deployment, pay-per-use, negotiated-scope contracts Other: (none)
Thinking XP1: 40-hour week XP2: energized work, root-cause analysis, informative workspace
Other: retrospectives
Key:
XP1 = found in XP Explained 1st Edition
XP2 = found in XP Explained 2nd Edition
Other = not in XP Explained but worth mentioning
The primary tools will be the Java Programming Language and the Eclipse IDE. Students are expected to be familiar with the principles of Object-oriented programming, in Java or in another O-O language, and to be able to program in Java.