Scrum is simple; it consists of six time boxes (one of which is optional), three roles, and three ‘official’ artifacts. A sprint, the first of the six time boxes, is an iteration defined by a fixed start and end date; it is kicked off by sprint planning and concluded by the sprint review and retrospective. The […]
The various Agile methodologies share much of the same philosophy, as well as many of the same characteristics and practices. But from an implementation standpoint, each has its own recipe of practices, terminology, and tactics. Below are some of the major flavors/contenders of agile software development methodology:
Scrum is an agile framework for developing, delivering, and sustaining complex products, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing, and advanced technologies.
Scrum offers an alternative to conventional project management practices. With the dynamics of business constantly evolving, management techniques have to evolve as well.
In Scrum methodology, the “Product Owner” works closely with the team to identify and prioritize requirements/features in the form of a “Product Backlog”. With priorities driven by the Product Owner, cross-functional teams estimate and sign-up to deliver “potentially shippable increments” of software during successive Sprints, typically lasting 30 days. Once a Sprint’s Product Backlog is committed, no additional functionality can be added to the Sprint except by the team. Once a Sprint has been delivered, the Product Backlog is analyzed and reprioritized, if necessary, and the next set of functionality is selected for the next Sprint.
Learn more about Scrum @ The Scrum Crash Course
Learn about the responsibilities of a Scrum Master @ The Scrum Master’s Responsibilities
Lean and Kanban Software Development
Lean Software Development is an iterative agile development methodology developed by Mary and Tom Poppendieck. Lean Software Development owes much of its principles and practices to the Lean Enterprise movement, and the practices of companies like Toyota. Lean Software Development emphasizes on delivering Value to the customer and the mechanisms that deliver that Value.
The main principles of Lean methodology include:
- Eliminating Waste
- Amplifying Learning
- Deciding as Late as Possible
- Delivering as Fast as Possible
- Empowering the Team
- Building Integrity In
- Seeing the Whole
Lean methodology eliminates waste through practices such as selecting only the truly valuable features for a system, prioritizing those selected, and delivering them in small batches. It emphasizes the speed and efficiency of development workflow and relies on rapid and reliable feedback between programmers and customers.
The Kanban Method is used by organizations to manage the creation of products with an emphasis on continual delivery while not overburdening the development team. Like other agile flavors, Kanban is a process designed to help teams work together more effectively.
Kanban is based on 3 basic principles:
- Visualize what you do today (workflow): seeing all the items in the context of each other can be very informative
- Limit the amount of work in progress (WIP): this helps balance 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 is pulled into play
Extreme Programming (XP)
Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team. XP is the most specific of the agile frameworks regarding appropriate engineering practices for software development. XP, originally described by Kent Beck, has emerged as one of the most popular and controversial agile methodologies.
In XP, the “Customer” works very closely with the development team to define and prioritize granular units of functionality referred to as “User Stories”. The development team estimates, plans, and delivers the highest priority user stories in the form of working, tested software on an iteration-by-iteration basis. In order to maximize productivity, the practices provide a supportive, lightweight framework to guide a team and ensure high-quality software.
XP is based on four simple values :
The Twelve supporting practices:
- Planning Game
- Small Releases
- Customer Acceptance Tests
- Simple Design
- Pair Programming
- Test-Driven Development
- Continuous Integration
- Collective Code Ownership
- Coding Standards
- Sustainable Pace
Alistair Cockburn is the originator of Crystal. The Crystal methodology is one of the most lightweight, adaptable approaches to software development. Crystal is actually comprised of a family of agile methodologies such as Crystal Clear, Crystal Yellow, Crystal Orange, and others, whose unique characteristics are driven by several factors such as team size, system criticality, and project priorities. This Crystal family addresses the realization that each project may require a slightly tailored set of policies, practices, and processes in order to meet the project ‘s unique characteristics. Several of the key tenets of Crystal include teamwork, communication, and simplicity, as well as a reflection to frequently adjust and improve the process. Like other agile process methodologies, Crystal promotes early, frequent delivery of working software, high user involvement, adaptability, and the removal of bureaucracy or distractions.
Dynamic Systems Development Method (DSDM)
Back in 1994, out of the need to provide an industry-standard project delivery framework, DSDM was developed which at the time was called Rapid Application Development (RAD). RAD was extremely popular in the ’90s but it grew in a very unstructured manner resulting in the creation of the DSDM Consortium. The goal of the DSDM Consortium was to devise and promote a common industry framework for rapid software delivery. DSDM is based on nine key principles that primarily revolve around business needs/value, active user involvement, empowered teams, frequent delivery, integrated testing, and stakeholder collaboration. DSDM specifically calls out “fitness for business purpose” as the primary criteria for delivery and acceptance of a system, focusing on the useful 80% of the system that can be deployed in 20% of the time.
Requirements are baselined at a high level early in the project. Rework is built into the process, and all development changes must be reversible. Requirements are planned and delivered in short, fixed-length time-boxes also referred to as iterations.
All critical work must be completed in a DSDM project. It is also important that not every requirement in a project or time-box is considered critical. Within each time-box, less critical items are included so that if necessary, they can be removed to keep from impacting higher priority requirements on the schedule.
Feature-Driven Development (FDD)
The feature driven development was originally developed and articulated by Jeff De Luca, with contributions by M.A. Rajashima, Lim Bak Wee, Paul Szego, Jon Kern and Stephen Palmer. FDD begins with establishing an overall model shape. It then continues with a series of two-week “design by feature, build by feature” iterations. Features are small, “useful in the eyes of the client” results.
FDD emphasizes feature delivery using the following eight practices:
- Domain Object Modeling
- Developing by Feature
- Component/Class Ownership
- Feature Teams
- Configuration Management
- Regular Builds
- Visibility of progress and results
FDD recommends specific programmer practices such as “Regular Builds” and “Component/Class Ownership”. FDD’s proponents claim that it scales more straightforwardly than other approaches, and is better suited to larger teams. Unlike other agile methods, FDD describes specific, very short phases of work, which are to be accomplished separately per feature. These include Domain Walkthrough, Design, Design Inspection, Code, Code Inspection, and Promote to Build.
You might be interested in the following courses:
Course Category: Development Methodologies
A ScrumMaster must have a deep understanding of the Scrum framework. The job of a scrum master is to help the customer and the team to work very closely ensure expected deliveries. Scrum Master facilitates the team members to reflect upon ways that they can improve their day-to-day communication and processes. It is the responsibility […]
Agile Methodology refers to the software development methodology that is centered around the idea of iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The various Agile Methodologies share much of the same philosophy, many of the same characteristics and practices. But from an implementation standpoint, each of these methodologies has […]