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.