Agile Software Development Frameworks
Agile Software Development Frameworks
Agile Software Development frameworks or methods are based on iterative and incremental development approaches. These frameworks build fast and ship often. Agile development models are best suited for projects where software requirements evolve or change with time. Agile models minimize the risk impact of changing project requirements. These models maximize the reuse of software architecture and design.
Traditional software development models like Waterfall Model do not refine the product based on requirement changes. Waterfall model ships the product only once after completion of all the phases.
Some of the Agile Software Development Frameworks are as follows:
- Scrum
- Extreme Programming(XP )
- Kanban
- Lean Software Development
- FDD (Feature Driven Development )
- DevOps
- Crystal
- DSDM Atern ( Dynamic Software Development Method )
- Unified Process
Scrum
The Scrum methodology is characterized by short timeboxed phases. Each timebox phase is called Sprint. Each sprint usually lasts for 2 – 4 weeks.
At the end of each sprint, a shippable product increment is completed, deployed, and shipped for the customer.
Kanban
Kanban is a Japanese word which means a ticket describing a task to do. Kanban is a tool for managing the flow of information or materials in a process. It is a tool to learn and manage an optimal flow of work within the process. Not having the materials when you need it, or having too much work in process (WIP) is a form of waste.
- Visualize Workflow
- Limit WIP
- Measure, Adapt and Improve
A Kanban board shows the current status of all the tasks to be done within the iteration. The tasks are represented by cards( traditionally with Post-It notes), and the statuses are presented by areas on the board separated by columns labeled as To Do, Doing, and Done. The Kanban board helps the team understand how they are doing well as well as what to do next. Kanban board makes the team self-directing.
Extreme Programming(XP)
XP is a form of Agile development that supports and emphasizes teamwork and collaborative team effort. The team self-organizes around the problem to solve it. XP support incremental system development and short development cycles. XP includes programming in pairs, handling changes in the requirements during system development.