Cover by yurtgc548


									Adoption of XP in web
application projects

                   Mark Striebeck
                   Engineering Director
                   VA Software Corp.

                   May 12, 2004
Case: Rewriting SourceForge in J2EE

 SourceForge Enterprise Edition is commercial version of
 ~ 500,000 LOC
 50 man years development
 Initial plan – Phased approach:
    Prototype (Q2/2002)
    Framework requirements (Q3/2002)
    Framework implementation (Q4/2002 – Q1/2003)
    Application requirements (Q4/2002 – Q1/2003)
    Application implementation (Q2/2003 – Q4/2003)

 Roadblock: Product Management could not deliver
 application requirements in time (End 2002)
 Alternative: Iterative Method – XP
Adopting XP: The Cortez Method

               “Burn the boats”
The Cortez Method

 Do not try to keep legacy processes and
 documents alive
   Monolithic requirement documents
   Big design documents (which are outdated
   the day after development starts)
   Code reviews
   Written testing scripts and extensive manual
   tests after development
 XP’s 12 practices address all these but in
 a very different way – TRUST!

 XP will slow down coding BUT accelerate
 Advantages of XP are NOT seen upfront
 but down the road (higher quality, no
 integration phase, redesigns possible)
Process Challenges

 The XP process seems counterintuitive and
 conflicts with traditional Software Development
   Onsite / fulltime customer
   User Story based requirements
   Test-Driven development (acceptance tests upfront!)
   Pair programming
   Constant Acceptance Testing

 Difficult to get used to – needs constant
 Don’t try to fix XP process by avoiding XP
Technical Challenges

 Continuous Integration
 Automated Tests
 Constant (merciless) Refactoring
Technical Challenges – Web-based

 HTML applications are not build from OO toolkits
 Separate presentation logic from business logic
 in presentation layer
    Use CSS excessively
    Create or use templating framework
 Need testing framework that only tests logic but
 not presentation

Build tools
    Ant                       (
    CruiseControl             (
    Tinderbox                 (

Testing tools
   Cactus                     (
   JUnit                      (
   JWebUnit                   (
   HttpUnit                   (

Interesting Knowledge Sources
    Continuous Integration
    Wards Wiki                (
    XP Mailing List           (

To top