Lecture Notes for Extreme Programming

22 May 2001 - Introduction and Background


  1. software development

    1. how to solve problems using software

      1. individual techniques don't scale

      2. how do we solve really big problems

    2. why can't we solve problems using software

      1. projects over budget and schedule

      2. projects canceled

      3. projects delivering unsatisfactory products

      4. fixing bad products is worse

  2. enter software engineering - rationalized software development

    1. "rationalized" means many things

      1. engineering - formal methods, mathematical precision (sorta)

      2. management - measurement, modeling and control

      3. production - software factories and components

    2. the objectives are clear - produce satisfactory software products predictably and reliably

      1. but how

    3. many answers - most involve planning, scheduling, and management

      1. eliminate the unpredictable, rigidly control what can't be eliminated

      2. but programming is the most unpredictable part

      3. therefore, suppress programming, rigidly control what can't be suppressed

      4. complex, difficult, not well understood, much overhead

    4. prototyping - using software development to develop software

      1. throw-away prototyping - develop prototypes to explore options and answer questions

      2. evolutionary prototyping - incrementally develop systems

      3. but

        1. throw-away prototyping is an adjunct to other, more standard techniques

        2. evolutionary prototyping is still encumbered with planning, scheduling, and management

  3. enter extreme programming - do programming to develop software

    1. like evolutionary prototyping without the encumberances

    2. still need planning, scheduling, and management

      1. cut out the intermediaries - the client and developers do itn

      2. you still need management - an open question; not considered further

    3. what about scale - ep is not intended for large (20+ person) projects


This page last modified on 22 May 2001.