There are various agile Scrum methodologies that work and share the same philosophy; this also includes the very same characteristics and practices. However, when it comes to implementation, it is a different case all together as each methodology uses its own rules of practices, tactics not to forget terminologies. Below is a brief summary of the main agile software development methodology contenders:
Agile Scrum Methodology
Agile technology comes in many forms and one of them is the Scrum. It is a lightweight version of agile project management framework that comprises a broader sense of applicability used for the management and control iterative and incremental projects of all types.
Over the last decade, Scrum has gradually increased in popularity among the agile software developers; this could be attributed to its ease of use, high and proven productivity plus the technology’s ability to wrapper for different engineering practices.
The person who discovered scrum methodology is also very helpful and he works hand in hand with the team of developers to identify and make the right priorities to the system’s functionality (The Product Backlog).
This product backlog comes with a list of features that include bug fixes and a number of other non-functional requirements that are needed to execute a software system that can deliver results.
The moment a Sprint’s Product Backlog is booked and committed, additional functionalities are no longer allowed but can only be done by the team. From there, the Sprint is delivered to the user and the Product Backlog thoroughly analyzed and reprioritized. Once all is done, the process of setting the functionality for the next Sprint is chosen.
Scrum methodology has the ability to work in a team of up to 800+ participants. This explains the reason it has become the preferred choice for many large organizations.
Lean and Kanban Software Development
Lean Software Development is an iterative agile methodology originally and it borrows hugely from the principles and practices of the Lean Enterprise movement, and other large corporation like the car maker giant, Toyota. Lean’s main object is to deliver exceptional value to their customers which they successfully do through the efficiency of the “Value Stream. This is the mechanisms that they use to deliver that Value. Lean methodology works on these principles:
- Getting rid of Waste
- Improving on learning
- Making last minute decisions
- Delivering as fast as possible
- Equipping the team
- Building Integrity In the team
- Helping the team think outside the box
Lean methodology assists users in getting rid of waste by selecting only the highly valuable features for a system, this process prioritizes what was selected, and delivers it in small manageable batches. Its main emphasis is on the speed and efficiency of development workflow. This methodology also relies heavily on rapid and reliable feedback between programmers and their clients. They tap into the idea of a work product that is being “pulled” through a customer request.
Lean methodology also focuses on decision-making level plus the ability of individuals as well as small team. The reason behind this could be due to the fact that research done indicates this is a faster and more efficient way of achieving the intended results as compared to the hierarchical flow of control.
Lean also pays a lot of attention to the efficiency of use in team resources. They try to ensure that every one is as productive as possible. Most of the methodology’s activity is centered on the concurrent work and the small possible intra-team workflow dependencies. They strongly recommend all automated unit tests to be written the same time with the code.
The Kanban Method
This is another useful technology that is used by companies to manage the creation of products. Their main emphasis is on continuous delivery while lessening the burden of the development team. It works more or less like Scrum.
Kanban’s methodology is based on 3 basic principles:
One of the most notable principles of this methodology is limiting the amount of work in progress (WIP): this goes a long way in assisting the users strike a balance in the flow-based approach. This way, the team involved only commits to a certain amount of time at any given time.
The other principle is in enhancing the work flow: for example, every time one activity is completed, the next large activity from the backlog is pulled into play.
Kanban is ideal in promoting continuous team work and it also encourages active, ongoing learning while at the same time improving the productivity by defining the best possible team workflow.
Extreme Programming (XP)
Commonly known as XP, this technology has emerged as a popular but controversial type of agile methodology. Its use involves a highly disciplined approach that ensures delivery of high-quality software.
The software provides not only efficient customer involvement, but its use provides businesses with rapid feedback loops, ability to get continuous testing, continuous planning as well as close teamwork which are all beneficial in delivering effective working software.
The XP has gradually evolved but its original concepts that include simplicity, feedback; communication and courage are still the guiding force in this software. It also has a number of supporting practices which are:
- Collective Code Ownership
- Planning Game
- Sustainable Pace
- Customer Acceptance Tests
- Simple Design
- Test-Driven Development
- Continuous Integration
- Pair Programming
- Coding Standards
- Small Releases
The good thing about XP is the fact that during development, the customer is deeply involved so as to come up with the most preferred units of functionality (technically known as “User Stories”). The developers come up with a rough estimate of the duration it would take and the most suitable plan after which it delivers the highest priority user stories.
The Crystal methodology is among the most lightweight and adaptable approaches in any software development. Crystal works in different scenarios and it could be Crystal Clear, Crystal Orange, Crystal Yellow among many others. Most of their unique characteristics include features like the team size, project priorities and system criticality,
It is this software’s characteristics that bring the reality that each project requires its own tailored set of policies and individual practices for it to meet the project‘s unique characteristics.
A good crystal methodology should contain teamwork, simplicity and communication in addition to frequent adjustment to improve the process. Just like is the common case with other types of agile process methodologies, crystal believes in early promotion, regular delivery of working software, easy adaptability and a friendly user approach.
Dynamic Systems Development Method (DSDM)
This dates back to 1994 and it emerged due to constant need to provide the industry with a standard project delivery framework. This framework was known as Rapid Application Development (RAD) back then.
Although RAD was quiet popular in the early 90‘s, its approach to software delivery was not very well structured. This led to the creation of the DSDM Consortium that was convened in 1994. Its main goal was to devise and promote a common industry framework that would work well with rapid software delivery.
Over 20 years down the line, the DSDM methodology has grown and rapidly matured and users can now enjoy a comprehensive foundation that they can use to plan, manage, execute, and scale agile process as well as iterative software development projects.
There are about nine major principles that make up the DSDM technology. Most of these principles revolve around business needs or values and they are excellent when it comes to, active user involvement and empowered teams. If you are looking for, frequent delivery, integrated testing not forgetting stakeholder collaboration, DSDM is the way to go.
When developing this type of software, all the requirements are closely looked into early in the project. The developers build the rework procedure into the process so that it can be a little easier to make any changes that may arise.
DSDM Software’s require a well-planned execution and they must be delivered in short, fixed-length time-boxes which are also known as iteration. DSDM projects are categorized using the MoSCoW rule which stands for:
M – Must have requirements
S – Should have if at all possible
C – Could have but not critical
W – Won‘t have this time, but potentially later
The most important step with this software is to remember that all the important work should be completed in a DSDM project. In addition, not every single requirement of a project/time-box can be considered critical. It is common to find less critical items listed in each time-box. If not found necessary, they are later removed to stop them from interfering with higher priority requirements.
Although the DSDM methodology is an independent technology, it can also be paired with other iterative methodologies including Rational Unified Process and Extreme Programming.
Feature-Driven Development (FDD)
This variant of agile methodology is the original work of Jeff De Luca, with assistance from Stephen Palmer. M.A. Lim Bak Wee, Paul Szego, Rajashima and Jon Kern. FDD operates as model-driven software with a short-iteration process. This process begins with the laying out of the overall model shape. Afterwards, the series goes on for about two weeks when the design by feature iteration is implemented.
Other additional features that FDD designs are based on the following practices:
- Developing by Feature
- Feature Teams
- Visibility of progress and results
- Developing by Feature
- Component/Class Ownership
- Configuration Management
- Regular Builds
Due to its proponents, FDD is believed to be best suited for larger teams since its operations are a lot more straightforward as compared to other approaches. It describes specific and extremely short phases of work, which in return are completed separately. Some of them include Design Inspection, Domain Walkthrough, Design, Code and Code Inspection as well as Promote to Build.