Skip to content

Extreme Programming

INF4817 - Software Engineering, Software Engineering Methodologies


Extreme Programming

Part of the agile-type models.

Intense involvement of customers.

Involves pair-wise programming, constant code improvement.

Cycle

Select user stories for this release -> break down stories to tasks -> plan release -> develop/integrate/test software -> release software -> evaluate system -> select new user stories for next release.

Practices

  • Incremental planning - requirements are collected on story cards which are prioritised and broken down into dev tasks.
  • Small releases
  • Simple design - only design for the current requirements and no more
  • Test first development - automated unit test frameworks are created to test a new piece of functionality before the functionality is implemented
  • Refactoring - refactor often
  • Pair programming
  • Collective ownership
  • Continuous integration - as soon as work is done on a task, this is integrated into the larger code base and unit tested.
  • Sustainable pace - don't do tons of overtime as it effects the code quality.

Advantages

  • Lightweight methods suit small-medium sized projects
  • Produces good team cohesion
  • Iterative
  • Test based produces higher quality code

Disadvantages

  • Difficult to scale up to large projects where documentation is essential.
  • Needs experience and skill or it becomes a code-and-fix model.
  • Programming pair is costly.

See also