Table of Contents
Adaptive Software Development (ASD) is a less known framework among the other Agile frameworks such as extreme programming and Scrum. The reason for its less popularity with the industry folks may be the misconception that it cannot be an ideal framework to meet the demands of the ever-changing and fast-paced environment of the software development lab.
The good news is that it is merely a misconception. And, the bad news is, it does shatter your belief, and hence, challenges you to unlearn, relearn and seamlessly adapt to your own new belief system!
Adaptive Software Development is one of the earliest agile methodologies. It was a result of the work by Jim Highsmith and Sam Bayer on Rapid Application Development (RAD). This methodology interestingly validates the fact that it is quite normal to have continuous adaptation to the software development process.
This validation removes the fear of the unknown and uncertainty often involved in any software development cycle. In fact, this validation has paved the way for the later methodologies to welcome uncertainty and chaos with a more open and balanced mind.
Let us then explore various dimensions of this less popular Adaptive Software Development agile methodology.
A short history
Adaptive Software Development in software engineering is a classic example of necessity is the mother of invention adage. In the early 1990s, when Sam Bayer and Jim Highsmith were making the most out of RAD and creating RADical Software Development, they realized that these approaches were not enough.
It was important to have a process that encouraged collaboration inside the organization as well as with the clients. They realized that they needed the process that makes all the stakeholders at ease with the inherent uncertainty of software development while making room for continuous, consistent, and genuine learning during the process itself.
It is out of these needs that Adaptive Software Development came into being. Highsmith published a book called: Adaptive Software Development: A Collaborative Approach to Managing Complex Systems in 2000, and both Bayer and Highsmith became one of the signers of the 2001 Agile Manifesto.
In the world of technology, Adaptive Software Development introduced:
- Shorter iterations
- More speed
- More collaboration
- More ease with the uncertainty
- More openness to unlearn and relearn.
What is Adaptive Software Development?
ASD is a development methodology that encourages continuous learning throughout the software development project. It believes that this is the only correct way to sail through software development’s inherent complexity smoothly. Following rigid plans or principles does not add value to the business or the product; it propounds.
Adaptive Software development sets forth minimum guidelines, making it a minimalist approach that intends to improve efficiency by removing everything and anything that is not ‘fun’ and ‘organic.’
Yes, ASD strongly advocates a software development process that is fun to be in as well as natural or organic. Highsmith has an interesting term for this— emergence. He believes that the best software is always a result of a chance.
When necessary circumstances come together on their own, they lead to a product that has the potential to make a difference in the world. This coming together of circumstances is emergence, according to Highsmith.
Following are some of the major principles that define ASD:
- Enough room for emergence as opposed to determinism
- Focus on results that are called application features as opposed to tasks
- Prefers deeper change in management cycle over the superficial change in the life cycle
- Orientation towards high-speed iterations and life cycles
- Use of techniques such as timeboxed iterative cycles and risk-driven planning
- Ability to quickly deliver the value-added product to the customer in spite of having enough room for uncertainty and chaos.
In Adaptive Software Development, projects go through an iterative cycle. This cycle involves three phases that often overlap. Let us explore each in detail.
Our product owners love us because we make sure not to compromise with build-in quality. Here’s how we lead successful Agile transformation.
Three phases of adaptive life cycle
The adaptive life cycle is an evolution of the spiral life cycle that started during the mid-1980s. The major problem with the spiral life cycle was its reliance of predictability. Though RAD was less predictable and deterministic, the mindset of the practitioners of the spiral life cycle was still not changed.
The adaptive life cycle in Adaptive Software Development tries to address this issue of changing the mindset by way of reflection and naming the phases during this process exactly as per that reflection.
These phases of the adaptive life cycle that accept uncertainty and chaos as “normal” during the software development process are speculation, collaboration, learning.
The word “speculation” describing this very first phase of the adaptive life cycle in itself reflects what Adaptive Software Development example is all about. Speculation phase carefully and intentionally removes the factor of planning that often brings with it lots of unnecessary baggage and tension.
This phase gives the teams full liberty to welcome and accept the outcomes without the fear of the unknown or uncertainty. It totally eliminates the toxic need to be right all the time, putting all the stakeholders at ease.
In the speculation phase:
- A project mission statement is defined
- Creation and sharing of the general idea of the goals to be achieved take place
- Teams adopt the tools that would assist them in adapting and changing as per the requirements during the entire cycle of the project.
Mostly, the speculation phase finds itself divided into two steps. These steps are roughly called the project initiation step and adaptive planning step. As the name suggests, the first step of initiation involves stuff that serves as the project’s foundation. This includes project management information, mission statement and other essential tools and information.
In adaptive planning, different product features get assigned to the different teams as per their expertise and skills. This requires the teams to decide:
- Timebox for the project
- Number of development cycles
- Amount of time each cycle would take as per the unanimously decided timebox
- A theme and objective for the cycle
- Assignment of components for each cycle
- A task list for the project
The purpose of the speculation phase is:
- To remove the unnecessary burden of planning
- To create space for innovation by making the entire process open-ended
- To keep the planning at its most minimum or essential
- To set an appropriate framework for the end product
- To allow exploration and experimentation with each new speculation phase with small iterations.
Speculation phase of Adaptive Software Development involves three major tools with which the teams start the process. They are:
- A charter: This tool encompasses project vision with visual summary. It defines business outcomes and highlights major product differentiators.
- A datasheet: This contains essential information for the project and the customers. This serves as a point of focus for all the stakeholders of the project.
- An outline for product specifications: This has fine details about the product specifications. It defines desired components or the features of the product.
It is in this phase that the actual development begins. This phase is about group emergence. It is about coming together of diverse experiences, knowledge, and skills. This forms a collaborative environment where diversity serves as the building block for creativity and innovation during the entire development cycle.
The intrinsic principles of the collaboration phase are:
- Diversity is essential to effectively collect, analyze and apply massive data or information to the development of the product
- Collaboration or the collaborative environment is the only genuine way through which this diversity can be best utilized
- When such diversity is applied thoroughly, complex applications need not to be built. Diversity allows them to evolve organically.
- Collaboration is achieved by striking a balance between traditional project management techniques and a progressive, collaborative environment
- A sense of rootedness with an open-ended approach of emergence.
These principles can be built by strong and experienced teams that know the importance of collaboration in Adaptive Software Development. The collaboration phase can be a great success if the teams follow four basic principles of Mutual Trust, Mutual Respect, Mutual Participation, and Mutual Commitment.
Adaptive software development is all about experimentation and exploration. It is natural, therefore, that it offers great learning opportunities too. Learning phase is precisely about that.
In this phase which happens after each and every iteration, an agile software development team comes together to analyze its level of knowledge, skills, and expertise. This is done through:
- Studying technical reviews
- Studying project retrospectives
- Facilitating user feedback through focus groups and other possible or available means.
In other methodologies, the learning phase is also known as review or retrospective. In order to make the most out of this phase, there should be:
- Short and several iterations as short iterations would mean smaller mistakes. And, it is easier and cheaper to learn from smaller mistakes than the big ones.
- Several and intense iterations would help teams find even the smallest faults in the product
- The generous contribution of user experiences by the end-users
- An honest assessment of the assumptions by all the stakeholders, including developers and end-users
- Acceptance of outcomes that remove the underlying assumptions of the respective stakeholders
- Mutual agreement upon the common learning that defines the next step of the adaptive cycle.
Learning phase is a very crucial phase in the adaptive life cycle as it sets the tone of the next move and guides the stakeholders in the right direction during the entire process of software development. The success of this phase depends upon effective collaboration, which is the second phase and the very heart of the adaptive life cycle.
Build feature-rich software from the top software development company
950+ Developers | 10+ Years of Experience
Major characteristics of Adaptive Software Development
ASD is not just about building components or product features. It is also about doing required modifications in the existing components too. This has to do with its origin.
Adaptive Software Development originated from Rapid Application Development or RAD. This was triggered by the realization that RAD’s mechanistic and extremely linear approaches were not working.
In order to resolve this, Jim Highsmith and Sam Bayer worked relentlessly for years and came up with the adaptive life cycle that revolves around a continuous development process. Its main characteristics are:
- A specific mission drives it in spite of being open-ended
- It is a feature based
- It encourages frequent and small iterations
- It adopts timeboxing
- It is risk-driven
- It is tolerant of change
- It has components-based cycles.
ASD’s risk-driven feature has interesting connotations to it. It means that it creates an atmosphere where there is no inhibition in failing and that too quickly! It believes in failing fast and moving on fast with lessons learned thoroughly, of course!
A risk-driven approach in ASD calls for identifying the risk at the outset of the project by placing high-risk items earlier in the cycle. If the risk is identified at the earliest, it is easier and cheaper to reduce the failure of the component.
And, if there is no possibility of reducing the risk, acceleration of failure may help modify the component accordingly at the beginning of the project.
Adaptive Software Development has revolutionized the software development process by declaring that almost everything will change too frequently. It has taught the planning-obsessed industry not to be fussy about planning at all. This helps it create an environment wherein change does not overwhelm but inspires to create and innovate.
A broad comparison with other methodologies
A major factor that differentiates ASD from other methodologies is that ASD cycles are component-centric as opposed to task-centric. The components in ASD are a group of features, and the focus is always on the expected result. The features or the components are planned, implemented, and delivered collaboratively.
Components in ASD go beyond just visual or tangible entities like buttons, form fields, or other interface elements. It inherently includes everything intangible too that is responsible for the creation of these tangible entities.
There are three such components: primary components, technology components, and support components.
Primary components mean the ways of the business and things related to it.
Technology components stand for the technological infrastructure needed to implement primary components. They include hardware and network infrastructure as well as software infrastructure. Software infrastructure includes operating systems, databases, frameworks, and more.
Typically, technology components are almost there to use. However, in case they are not, they need to be installed as per the exact requirements of the adaptive life cycles.
As the name suggests, it includes everything and anything that is not covered by the other two components. It may include documentation of external factors with regards to software development, training materials, and other such things that are needed for the successful Adaptive Software Development process.
In the year 2015, an Electrical and Computer Engineering author and professor from Payame Noor University, Mahdi Javanmard conducted a study titled: Comparison between Agile and Traditional software development methodologies.
In the same paper, he also compared different agile methodologies. Following is a summary of the table that he presented in the same study:
|• A culture of adaptation
• Mission-driven, component-based iterative development process encourages collaboration
|Organizations serve the purpose of adaptive systems which encourage emergence over rigid planning or determinism.
|ASD has more to do with concepts and culture over actual software development.
|• Exploits RAD controls, timeboxing method
• Has empowered DSDM teams
|Use of prototyping; various user roles such as ambassador, visionary, and advisor
|The method per se may be available for all; but the white paper detailing the intricacies of the method is restricted to the concerned stakeholders only.
|• Customer-driven development
• Daily builds
|Refactoring- The system gets constantly redesigned to accommodate change and to improve responsiveness.
|Less importance or attention to overall view and management.
|• Independent, small, self-organizing, self-managing teams;
• 30-day cycles
|Replacing old way of defined and repeatable software development with the new product development view of Scrum.
|Though there is a detailed specification for the seamless execution of 30-day cycle, integration and acceptance tests are not detailed.
|• Five-step process
• Object-oriented, component or feature-based development
|Simplicity in method; designing and implementation of the system by features; object modeling.
|Focuses solely on design and implementation. Other supporting approaches are required.
Some other differences compared to other agile methodologies:
- Feature Driven Development (FDD) has set prescriptions for its engineering practices. Its software development process depends upon engineering practices such as continuous build, domain object modeling, and individual code ownership.
- In ASD, there is absolutely no adherence to any sort of technique.
- Unlike extreme programming or XP, ASD is a component-based process where components are assigned to cycles during the speculation phase for seamless implementation.
- In contrast to this, XP focuses on a task-oriented approach. Developers pick stories after each planning session for the current iteration, break them down into tasks, estimate them, and agree upon their implementation.
Strengths of Adaptive Software Development
Adaptive Software Development process came into being to get rid of existing issues in the other software development process. It would be interesting to know its strengths.
- A well-designed framework to develop complex software applications quickly
- Shorter and smaller iterations that help detect mistakes at the outset
- Shorter iterations mean detection of smaller mistakes which are easier to deal with compared to bigger ones
- Shorter iterations are also cost-effective
- An intentionally designed framework that allows emergence, exploration, and experimentation
- Encourages absolute transparency between all the stakeholders by creating an atmosphere of collaboration and learning
- Integration of end-users and their feedback into the development process
- Allowing the culture of diversity in a balanced way
- Intense testing of short iterations to reduce chances of bugs and other vulnerabilities
- Intensely focused on result
- Encouraging the culture of responsibility that leaves little room for poor results
Pitfalls of Adaptive Software Development
It is quite natural for anything to have some shortcomings, even if it is meant for the highest good. Adaptive Software development to has its own share of pitfalls. They are:
- Its open-ended approach requires certain maturity and experience of the Scrum team. It is difficult to have a mature and experienced team that can embrace and handle uncertainty at times.
- In a mission-driven framework, a very brief plan is made at the outset. This can pose a challenge for the minds that are habituated with detailed planning as their point of focus.
- Adaptive Software Development thrives on constant user feedback. The developers must get detailed feedback which is sometimes a challenge to get. Also, end users are not always clear about what they want in their solutions.
- Collaboration can be tricky as it may sometimes result in unnecessary meetings and discussions, resulting in a project delay.
- Poor collaboration can also result in ambiguous decisions.
- Increase in baseline costs due to intense and frequent testing at each and every iteration.
- Meticulous documentation is difficult with the rapid pace of the Adaptive Software Development process.
- Adaptive Software Development life cycles are less measurable than other traditional methodologies, which are comparatively well-structured.
- Its open-ended agile approach may result in the teams making inconsistent progress.
In the light of the discussion, it is crystal clear that all the agile methodologies, in essence, strive to embrace the change instead of getting overwhelmed by it.
All these methodologies, including Adaptive Software Development, promote collaboration, adaptation, and intense iterations. Adaptive Software Development is special among these methodologies simply because it directly addresses the irony or paradox of planning.
Not exactly discarding planning, it gives more importance to emergence, exploration and innovation through collaboration and learning. It is a good framework to adopt for enterprises which are:
• Confident to have adequate psychological and infrastructural readiness to embrace Adaptive Software Development
• Ready to bear increased baseline costs
• Eager to see their products in the state of constant evolution
• Ready to explore new ideas or ways
• Fluid enough to match up with the continuous risk mitigation and the testing
If you are such an enterprise which feels that it indeed has what it takes to implement Adaptive Software Development framework seamlessly, hire software developers and go for it without much thinking!