Understanding Agile Software Development With Mind Maps
Get your review of Agile tenets, values, and methodlogies here, as well as learning how to visualize them with mind mapping techniques.
Join the DZone community and get the full member experience.Join For Free
It is an interesting fact how was Agile development invented. Even though there are traces of iterative and incremental development methods existing back in the 90s, these weren’t brought together under the name of Agile until 2001. That happened when a group of 17 software developers agreed to write the “Manifesto for Agile Software Development” at The Lodge at the Snowbird ski resort in Utah.
The creation of the Agile Manifesto was based on the idea to develop products that would meet consumers’ needs. At the gathering of the seventeen pundits, a valuable document, considered to be a rallying call, was written. This document carries the name "Agile" – a term that highlights the adapting, flexible, and dynamic nature of software development. In the contemporary environment, Agile encompasses several methodologies that are based on four values and twelve principles.
Mind Maps to Better Understand Agile Methodologies
Many people are not aware that Agile actually is an umbrella term that covers these several methodologies so it can be quite difficult to understand which exactly fall under this term. With the help of the mind mapping technique that is widely utilized for organizing and structuring information, the characteristics of Agile software development can be better explained.
Using mind maps, all important aspects of each Agile methodology and the principles and values that is built upon can be broken down into numerous branches which would give a more clear picture of what is fundamentally important when it comes to Agile.
Agile is considered to be more a philosophy than a methodology. Actually, it represents a family of methods that are founded on the values and principles declared in the Agile Manifesto. There are several pre-existing methodologies that the Agile Manifesto encompasses.
Thought to be the most distinguished Agile software development methodology, Extreme Programming (XP) focuses on improving the quality of a software and the adaptiveness to customers changing needs and expectations.
Scrum is another Agile software development framework designed with the aim to be used by small teams of three to nine members who dissolute their work in fixed sprints (one to four weeks) and organize daily stand-up meetings to examine progress (15 minutes).
Dynamic Systems Development Method (DSDM)
DSDM is an Agile method that is more focused on project management projects, rather than IT. Originally it was a process that was focused on software development as well, but through the years it was revised and became vastly used in non-IT environments.
Adaptive Software Development (ASD)
A dynamic software development methodology that actually replaces the traditional waterfall method and encompasses three steps: speculate, collaborate, and learn. For this Agile methodology is particularly important that derived from the rapid application development method.
Crystal is a family of methodologies taken as the most adaptable and ultra-light Agile methodologies that keep people and their communication and interactions at the center of the development process as the most essential elements. In other words, Crystal is a human-powered approach that focuses on people while they work on a software development.
Feature-Driven Development (FDD)
The FDD process emphasizes the most important aspects for the client in the objective of delivering a working software. In this methodology the clients and their requirements are valued the most, therefore, emphasis is put on them.
Everything that isn't adding value to the customers and its needs is considered a waste with Lean. Lean Development is an Agile approach that puts its focus on principles such as building integrity and eliminating waste in the development processes.
A Closer Look at The Values and Principles of Agile
Agile values and principles aim to develop a specific mindset of "agility" that is vital when implementing an Agile approach. In fact, for one to be able to apply a certain Agile methodology in a working environment it is a must to understand, learn and follow through the set principles and values which are the core foundation of the Agile software development.
In order to understand them, similarly as for the different Agile methodologies, visually dividing and outlining their characteristics with the help of a mind map can be a useful practice.
The Four Values
Individuals and Interactions Over Processes and Tools
People and their interactions are the vital assets of one organization. Processes and tools are valuable as well, but individuals and interactions are those who can contribute to many software development projects in a specific way.
Working Software Over Comprehensive Documentation
The term software development itself implies that in this kind of project, working software needs to be developed. This means that clients and customers, instead of reading comprehensive documentation, want to see a finished product. Therefore, documentation comprising too many details is not indispensable in software development.
Customer Collaboration Over Contract Negotiation
Negotiation in software development projects can lead to losing valuable customers. As a consequence, in Agile methodologies, it's advisable to completely involve customers in the ongoing project’ processes. This way the customer will become a part of the ongoing project and will follow every change and modification that comes along.
Responding to Change Over Following a Plan
Changes in Agile software development are predictable and manageable. The Agile approach to software development projects means choosing responsiveness to change over following a strict plan. Changes are considered a positive aspect that allows the project environment to be flexible and adaptable.
The Twelve Principles
- Customer satisfaction by early and continuous delivery of valuable software
- Welcome changing requirements, even in late development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the primary measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity — the art of maximizing the amount of work not done — is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective and adjusts accordingly
Opinions expressed by DZone contributors are their own.