There are many scrum methodologies under a giant agile umbrella. These methodologies all share the same philosophy and practices. In this post we explore some of the more popular agile software development methodologies. Each of these is unique and helpful to software development projects of all shapes and sizes.
Lean Software Development
Lean software development is a flavor of agile that takes practices from the Lean Enterprise movement. This methodology is used by large corporations such as Toyota. This methodology centers around providing value to the client and on the value stream that delivers value. The primary principles behind this methodology include eliminating waste, making decisions as late as possible, delivering the product as fast as possible, and empowering the team.
Kanban
Kanban is used to manage software development with the main emphasis on continuous delivery while not overworking the software developers. Much like scrum this methodology is designed to help development teams work together efficiently and effectively. Kanban is based on visualization, limiting the amount of work in progress, and enhancing workflow. This methodology endorses continuous team collaboration and ongoing learning and improving through the most efficient team workflow.
Extreme Programming
This methodology has become controversial as it takes a disciplined approach to delivering quality products fast and continuous. This involves the customer delivering feedback fast and often, continuous software testing, planning, and close teamwork. This methodology aims to deliver software frequently usually within a 1 to 3 week period. While this methodology has morphed slightly from its original values it is based upon simplicity, frequent communication, feedback, and courage.
Feature Driven Development
This flavor of agile methodology is model driven with short iterations. This methodology requires teams to begin with establishing an overall model. Like Extreme Programming, this model focuses on frequent software delivery with series of two week design-by-nature and build-by-feature repetitions. The features developed in this methodology are designed with an “eye of the client” thought process. The development process behind this methodology is focused on eight practices that include: domain object modeling, feature teams, inspections, component/class ownership, developing by feature, feature teams, inspections, regular builds, visibility of progress and results, and configuration management.
Dynamic Systems Development Method (DSDM)
This methodology emerged from the Rapid Application Development project delivery framework which was popular in the early 1990s. DSDM is based on nine main principles that revolve around a business’ needs and values, user involvement, empowered teams, testing, stakeholder feedback, and frequent delivery. Requirements in this methodology are set in a baseline early in the project. The need to redo work is built into the process and all changes in development are reversible. Requirements are planned and sent to the customer in short fixed length time periods also known as iterations.
Crystal
This agile methodology is the lightest simplest approach to software development. Crystal consists of its own sub methodologies called Clear, Yellow, Orange, and several others each unique in their own way. Each of these are driven by different factors such as system criticality, priority, and team size. This methodology is great for small development teams. The Crystal methodology family addresses the fact that every project might require specific tailored policies, practices, and processes to meet the software development project’s distinctive features.