Day 1: Overview, Planning
& Designing
q
XP Overview
XP is a disciplined approach to software development. It was created
in response to re-evaluating past software development practices and
elevates those that reduce the cost of creating software. It takes commonsense
principals to extreme levels and by doing so, creates very efficient,
flexible and short development cycles.
o
What is XP?
o
When to use XP?
o
Why another software methodology?
q
Planning
Planning is where any software project begins life. XP uses
the principal of “User Stories”, which are expressions by
the customers about things that the systems needs to do
for them. Release planning takes these stories to estimate
the number of programming weeks to implement it. Project
velocity is determined by how many stories can be implemented
before a given date.
o
User stories
o
Release planning
o
Frequent small releases
o
Measuring “Project Velocity”
o
Iterative development
o
Iteration planning
o
Cross training and moving people around
o
Standing up instead of sitting down during meetings
o
If XP breaks, fix it!
q
Designing
One of the key XP design principals is to always do the simplest thing
that will work. Using CRC cards to design the system will enable the
team to appreciate object technology, and will allow the entire team
to contribute in the design process. One of the important disciplines
during the design process is to keep the system uncluttered by focusing
on what is scheduled for today, and turn away potential enhancements
that tend to creep into the schedule. Developers will need to constantly
refactor throughout the project cycle to keep the design as simple as
possible.
o
Keep it simple
o
Choose a system metaphor
o
CRC design
o
“Spike Solutions”
o
Keeping out early excess functionality
o
Aggressive refactoring
Day 2: Coding, Testing,
& XP Cycle Lab
q
Coding
The customer is needed throughout the project, preferably onsite. They
are the expert, and all phases of an XP project require constant communication
to ensure that the project meets their user stories. The coding principals
are often the most “shocking” to developers because they require strict
adherence to defined coding standards and pair programming, or the practice
of having two developers working on one computer. Pair programming produces
much higher quality code, because as one person types, the other is
constantly reviewing the code and making strategic recommendations.
Another XP principal that often comes as a surprise is that everyone
owns all of the code, any developer can change any line of code to add
functionality, refactor or fix problems – no one person becomes a bottle
neck for changes. Team spirit and motivation are key to an efficient
XP project, as such team members are required to work only 40 hours
per week – no overtime!
o
The customer is always available
o
Coding standards
o
Test first
o
Two people, one computer = pair programming
o
Sequential integration
o
Integrate often
o
Collective code ownership
o
Make it work, make it work right, then make it fast –
save optimizations till last.
o
Good news, no overtime!
q
Testing
Rigorous testing throughout the project is one of the cornerstones
to a successful XP effort. All but the most trivial of code is required
to have tests before it can be released to the project. Aggressive testing
ensures code stability and constant forward momentum for the project.
o
Create test cases first
o
All code must have tests.
o
All code must pass all tests before it can be released.
o
Every reported bug has a corresponding test
o
Acceptance testing from user stories
q
XP Development cycle review
Experience a mini-XP project and all of the practices from the vantage
point of a team member working day-by-day, and iteration-by-iteration.
See how the principals work for a simples project, what roles are played,
and the benefits of XP in action.
o
Release-by-release
o
Iteration-by-iteration
o
Day-by-day
Labs
Each section
will have a short, hands-on lab exercise to reinforce the XP principals
and practices introduced by that section. The course will end with a
more in-depth lab that takes students through a mini-XP project day-by-day
and iteration-by-iteration, so they can experience the lifecycle in
its entirety.
Days 3 and 4: Workshop
The workshop
builds upon the exercises from the first two days. Each workshop is
individually tailored around the client's project.
|