Agile
Frameworks & Methodologies
- Scrum
- Extreme Programming (XP)
- Lean
- Kanban
- RUP (Rational Unified Process)
- Crystal
- DSDM (Dynamics Systems Development Method)
- FDD (Feature Driven Development)
Extreme Programming (XP)
- XP includes some management elements but emphasizes echnical practices more and is therefore more of an agile engineering methodology.
- In XP, the “customer” works very closely with the development team to define an prioritize granular units of functionality referred to as “user stories”.
- The development team estimates, plans, and delivers user stories in the form of working, tested software on an iteration by iteration basis (typically every 1-3 weeks).
- Values
- Simplicity (do only what is needed)
- Communication (everyone is part of the team; face-to-face and daily communication)
- Feedback (early delivery; make any needed changes)
- Respect (every team member deserves respect)
- Courage (tell the truth; plan to succeed)
Lean
- Lean is an iterative agile methodology which owes much of its principles and practices to the Lean Manufacturing approach also known as ‘just-in-time production’, and pioneered by Toyota.
- 7 Principles
- Eliminating waste
- Amplifying learning
- Deciding as late as possible
- Delivering as fast as possible
- Empowering the team
- Building integrity in
- Seeing the whole
Kanban
- Kanban is an agile methodology for managing the creation of products with an emphasis on continual delivery while not overburdening the team.
- Underlying mechanism for managing the production line can be applied on software development.
Feature requests -> Software development pipeline -> Improved software
- 3 basic practices
- Visualize what you do today (workflow): seeing all the items in context of each other can be very informative
- Limit the amount of work in progress (WIP): this helps balancing the flow-based approach so teams don’t start and commit to too much work at once
- Enhance flow: when something is finished, the next highest thing from the backlog pulled into play
Scrum
Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.
Scrum is:
- Lightweight
- Simple to understand
- Difficult to master