Lecture Notes for Extreme Programming
22 May 2001 - Introduction and Background
- software development
- how to solve problems using software
- individual techniques don't scale
- how do we solve really big problems
- why can't we solve problems using software
- projects over budget and schedule
- projects canceled
- projects delivering unsatisfactory products
- fixing bad products is worse
- enter software engineering - rationalized software development
- "rationalized" means many things
- engineering - formal methods, mathematical precision (sorta)
- management - measurement, modeling and control
- production - software factories and components
- the objectives are clear - produce satisfactory software products
predictably and reliably
- but how
- many answers - most involve planning, scheduling, and management
- eliminate the unpredictable, rigidly control what can't be eliminated
- but programming is the most unpredictable part
- therefore, suppress programming, rigidly control what can't be
suppressed
- complex, difficult, not well understood, much overhead
- prototyping - using software development to develop software
- throw-away prototyping - develop prototypes to explore options and
answer questions
- evolutionary prototyping - incrementally develop systems
- but
- throw-away prototyping is an adjunct to other, more standard
techniques
- evolutionary prototyping is still encumbered with planning,
scheduling, and management
- enter extreme programming - do programming to develop software
- like evolutionary prototyping without the encumberances
- still need planning, scheduling, and management
- cut out the intermediaries - the client and developers do itn
- you still need management - an open question; not considered further
- what about scale - ep is not intended for large (20+ person) projects
This page last modified on 22 May 2001.