In: Computer Science
Adaptive Software Development is a move towards adaptive practices, leaving the deterministic practices in the context of complex systems and complex environments. Adaptive Software Development focuses on collaboration and learning as a technique to build complex systems. It is evolved from the best practices of Rapid Application Development (RAD) and Evolutionary Life Cycles.
In literary terms, the word “agile” means someone who can move quickly and easily or someone who can think and act quickly and clearly. In business, “agile” is used for describing ways of planning and doing work wherein it is understood that making changes as needed is an important part of the job. Business “agility” means that a company is always in a position to take account of the market changes.
In software development, the term “agile” is adapted to mean “the ability to respond to changes − changes from Requirements, Technology and People.”
The Agile Manifesto was published by a team of software developers in 2001, highlighting the importance of the development team, accommodating changing requirements and customer involvement.We are uncovering better ways of developing software by doing it and helping others do it.
Adaptive Software Development is a move towards adaptive practices, leaving the deterministic practices in the context of complex systems and complex environments. Adaptive Software Development focuses on collaboration and learning as a technique to build complex systems. It is evolved from the best practices of Rapid Application Development (RAD) and Evolutionary Life Cycles. Adaptive Software Development was then extended to include adaptive approaches for the management, with speculation replacing Planning.
Adaptive Software Development has evolved from RAD practices. The team aspects also were added to these practices. Companies from New Zealand to Canada, for a wide range of project and product types, have used adaptive Software Development.
Jim Highsmith published Adaptive Software Development in 2000.
Adaptive Software Development practices provide ability to accommodate change and are adaptable in turbulent environments with products evolving with little planning and learning.
Adaptive Software Development is cyclical like the Evolutionary model, with the phase names reflecting the unpredictability in the complex systems. The phases in the Adaptive development life cycle are −
These three phases reflect the dynamic nature of Adaptive Software Development. The Adaptive Development explicitly replaces Determinism with Emergence. It goes beyond a mere change in lifecycle to a deeper change in management style. Adaptive Software Development has a dynamic Speculate-Collaborate-Learn Lifecycle.
The Adaptive Software Development Lifecycle focuses on results, not tasks, and the results are identified as application features.
2. Dynamic System Development Method (DSDM)
DSDM is an Agile method that focuses on the full project lifecycle, DSDM (formally known as Dynamic System Development Method) was created in 1994, after project managers using RAD (Rapid Application Development) sought more governance and discipline to this new iterative way of working.
DSDM’s success is due to the philosophy “that any project must be aligned to clearly defined strategic goals and focus upon early delivery of real benefits to the business.” Supporting this philosophy with the eight principles allows teams to maintain focus and achieve project goals.
The eight Principles of DSDM are:
DSDM is vendor-independent, covers the entire lifecycle of a project and provides best practice guidance for on-time, in-budget delivery of projects, with proven scalability to address projects of all sizes and for any business sector.
DSDM advocates the use of several proven practices, including:
There are some roles introduced within DSDM environment. It is important that the project members need to be appointed to different roles before they commence the project. Each role has its own responsibility. The roles are:
DSDM’s strengths include:
DSDM’s weaknesses include:
3.Crystal
Crystal is an agile methodology for software development. It places focus on people over processes, to empower teams to find their own solutions for each project rather than being constricted with rigid methodologies.
Unlike more fixed frameworks like Scrum, Crystal recognizes that different teams will perform differently depending on team size, criticality and priority of the project and encourages users to adapt the framework for their individual situation.
For example, a small team can keep itself aligned with regular communication, so it doesn't need much status reporting and documentation, whereas a large team is likely to get out-of-sync and would benefit from a more structured approach.
These are categorized by color, according to the number of people in the project;
Crystal Clear - Teams with less than 8 people
Crystal Yellow - Teams with between 10 and 20 people
Crystal Orange - Teams with between 20-50 people
Crystal Red - Teams with between 50-100 people
At the heart of the Crystal, a family is seven principles. The first three are compulsory for all Crystal approaches, but the rest are optional and can be adopted if appropriate:
#1: Frequent Delivery
You should deliver code regularly to your real users. Without this, you might be building a product nobody needs.
#2: Reflective Improvement
Look back on what you've done, how you've done it and why. As a team, reflect and decide how to improve it in the future.
#3: Osmotic Communication
Cockburn believed that co-location (having teams in the same physical space) is critical as it allows information to flow between team members, as if by osmosis.
#4: Personal Safety
Team members should feel safe to discuss ideas openly, without fear of ridicule. There are no wrong answers or bad suggestions in a Crystal team.
#5: Focus on Work
Team members should know what to work on next and be able to do it. This requires clear communication and documentation when required.
#6: Access to Subject Matter Experts and Users
Team members should be able to get feedback from real users and experts when required.
#7: Technical Tooling
Even back in the 1990s, Cockburn said development teams should have access to toolings like continuous deployment, automated testing and configuration management. This means errors and mistakes can be caught quickly without human intervention.
Advantages of using the Crystal Agile Framework
Teams have a lot of autonomy to work in the way they deem most effective
Teams communicate directly with each other, reducing management overhead
The framework can adapt as a team grows or shrinks
Disadvantages of using the Crystal Agile Framework
Lack of structure can slow down inexperienced teams
Not clear on how remote teams can share knowledge informally
Lack of rigid planning can lead to confusion and loss of focus
The Crystal method has several essentials, which are known as Crystal properties:
In the same vein as other Agile methods, Crystal Methodology also promotes on time and frequent working software delivery. It inspires high user participation, adaptability, and exclusions of distractions and any waste.
4. Feature Driven Development (FDD)
Feature-Driven Development (FDD) is a client-centric, architecture-centric, and pragmatic software process. The term "client" in FDD is used to represent what Agile Modeling (AM) refers to as project stakeholders or eXtreme Programming (XP) calls customers. FDD was first introduced to the world in 1999 via the book Java Modeling In Color with UML, a combination of the software process followed by Jeff DeLuca's company and Peter Coad's concept of features. FDD was first applied on a 15 month, 50-person project for a large Singapore bank in 1997, which was immediately followed by a second, 18-month long 250-person project. A more substantial description is published in the book A Practical Guide to Feature-Driven Development as well as the Feature Driven Development web site.
As the name implies, features are an important aspect of FDD. A feature is a small, client-valued function expressed in the form . For example, "Calculate the total of a sale", "Validate the password of a user", and "Authorize the sales transaction of a customer". Features are to FDD as use cases are to the Rational Unified Process (RUP) and user stories are to Scrum - they're a primary source of requirements and the primary input into your planning efforts.
Strengths and Weakness of Feature Driven Development
FDD’s strengths include:
FDD’s weaknesses include:
Scrum, XP, and other agile methodologies all use an iterative approach to deliver software. By contrast, the five steps in FDD require the team to follow a set of engineering best practices as they develop small feature sets in one- to two-week iterations. These five steps ensure that development remains consistent so that the project can grow and new team members can come up to speed much faster.
You may want to consider using FDD methodology if your project grows too large and complex for smaller scrum teams to effectively handle the amount of work. This agile feature-driven methodology is well-suited for long-term projects that continually change and add features in regular, predictable iterations.
FDD is very scalable from small teams to large cross-functional teams because it is designed to always focus on what the customer needs and wants.
analysis between Traditional Software Development Methods (TSDMs) and Agile Software Development Methods (ASDMs)
The main difference between traditional and agile approaches is the sequence of project phases – requirements gathering, planning, design, development, testing and UAT. In traditional development methodologies, the sequence of the phases in which the project is developed is linear where as in Agile, it is iterative.
Traditional software development methodologies are based on pre-organized phases/stages of the software development lifecycle. Here the flow of development is unidirectional, from requirements to design and then to development, then to testing and maintenance. In classical approaches like the Waterfall model, each phase has specific deliverables and detailed documentation that have undergone a thorough review process.
Traditional approaches are suited when requirements are well understood – for example, in industries like construction, where everyone clearly understands the final product. On the other hand, in rapidly changing industries like IT, traditional development procedures might fail to achieve project goals. Below are the major disadvantages of traditional SDLC methods.
Unlike the traditional approaches of SDLC, Agile approaches are precise and customer friendly. Users/Customers have the opportunity to make modifications throughout project development phases. The advantages of Agile over traditional development methodologies include:
Agile proposes an incremental and iterative approach to development. Consider Agile Scrum Methodology to get good understanding of how Agile processes work. Scrum Master plays an important role in Agile Scrum Methodology. A Scrum Master interacts daily with the development team as well as the product owner to make sure that the product development is in sync with the customer’s expectations. The following diagram illustrates the lifecycle process in Agile methodologies.
Key points while making the transition from Traditional to Agile methodologies:
The main difference between traditional and agile approaches is the sequence of project phases – requirements gathering, planning, design, development, testing and UAT. In traditional development methodologies, the sequence of the phases in which the project is developed is linear where as in Agile, it is iterative. Below picture illustrate this difference.