EXTREME PROGRAMMING FROM A CMM PERSPECTIVE
Mark C. Paulk, Software Engineering Institute

What is Extreme Programming (XP)?

  • XP is an "agile methodology" - a set of specific practices
  • Effective use in small, colocated teams (less than 10 members)
  • Repeatedly changing requirements through interactive short cycles
  • 4 basic activities: 1)Coding 2)Testing 3)Listening and 4)Designing
  • 4 Dynamic values:
    1)Constant Communication with clients and team members
    2)Simplicity - minimalistic solutions - focus on highest-priority and most valuable parts
    3)Rapid feedback - unit and functional testing
    4)Courage - dealing with problems proactively

  • Consist of 12 basic elements:
    1)Planning Game - combine business and technical estimates to plan next release's scope
    2)Small Release - release a small part of the System every 2-week cycle
    3)Metaphor - a simple, shared story on the overall System
    4)Simple Design
    5)Testing - must run flawlessly for ever small release
    6)Refactoring - restructuring to remove duplications, improve communications, simplify and add flexiblity
    7)Pair Programming - programmers work in pair
    8)Collective Ownership - everyone owns the System code
    9)Continuous Integration - integrate and build the System many times daily
    10)40-hour weeks - work only 40-hours per week
    11)On-site Customer - full-time actual user on the team
    12)Coding Standards - constant standard throughout the code

    What is Software Capability Maturity Model (SW-CMM)?

  • Model for building organization capability
  • 5-level model
  • Focus on good engineering and management issues and on systematic process improvement priorities

    How XP can help achieve SW-CMM goals?

  • Applying XP in CMM.
    XP Satisfaction of CMM Key Process Areas
    CMM Level KPA Purpose Satisfaction Method
    1.Initial
    Not Available
    2.RepeatedRequirements Management Common Understanding between client and team Largely constant feedback from client; on-site customer
    SW Project Planning Reasonable planing Largely Planning Game - plan early; Small Release - incremental lifecycle
    SW project tracking and oversight Adequate visibility into actual progress Largely "Big Visual Chart"; Project Velocity; Small Releases
    SW subcontract management Efficient and qualified subcontractors
    Not addressed
    SW Quality Assurance Management & Product Visibility Partially Pair-Programming - Peer pressure leads to conformance to standards
    SW Configuration Mgmt Maintain SW integrity throughout development Partially Collective Ownership; Small Releases; Continuous Integration
    3.DefinedOrganization Process Focus Organization responsiblity to improve overall SW process capabilities Partially Focus on the team instead of organization
    Organization Process definition Maintain usable set of SW processes Partially XP-related sources eg. books, journals, websites, etc
    Training Programme Developing individual's skills and knowledge
    Not addressed
    Integrated SW Mgmt Integration of SW engineering and mgmt activities
    Not addressed
    SW Product Engineering Use well-defined SW eng process to make SW consistant Largely metaphor; simple design; refactoring; standard coding; unit and functional testing
    Intergroup Coordination Active participation within team to satisfy client's needs Largely onsite customer; pair-programming
    Peer Reviews Identify defects early Largely Pair-programming
    4.ManagedQuantitative Process Mgmt Quantitatively control SW performance
    Not Addressed
    SW Quality Managementt Achieve specific quality goals
    Not Addressed
    5.OptimizingDefect Prevention Identify and prevent defects Partially Pair-programming; Rapid feedback
    Technology of Change Mgmt Introduce new technologies in an orderly manner
    Not Addressed
    Process Change Mgmt Improve SW quality and productivity, decrease product-development time
    Not Addressed

    Cons of XP in CMM

  • XP doesn't establish the concept of "institutionalization" - culture of doing things, which is crucial for CMM
  • For large projects, a good architecture "philosophy" is important, but this is not provided in XP as it is meant for small teams and projects
  • XP is not suitable for multi-disciplinary projects as it aims at software-only projects
  • XP's lack of design documentation and de-emphasis on architecture is risky

    Conclusion
    The SW-CMM and XP are complementary. The SW-CMM tells the organization WHAT to do in general terms, while the XP tells the organization HOW to implement the model. Organizations should capture good XP and CMM values while incorporating some common-sense while developing the System. By doing so, the two methods can create synergy, particularly in conjunction with other good engineering and management practices.