Agile

Manifesto for Agile Software Development

Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

Following are the Agile Manifesto principles:

  • Individuals and interactions − In Agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.

  • Working software − Demo working software is considered the best means of communication with the customers to understand their requirements, instead of just depending on documentation.

  • Customer collaboration − As the requirements cannot be gathered completely at the beginning of the project due to various factors, continuous customer interaction is very important to get proper product requirements.

  • Responding to change − Agile Development is focused on quick responses to change and continuous development.

Agile principles:

The following 12 Principles are based on the Agile Manifesto:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

  4. Business people and developers must work together daily throughout the project.

  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

  7. Working software is the primary measure of progress.

  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

  9. Continuous attention to technical excellence and good design enhances agility.

  10. Simplicity–the art of maximizing the amount of work not done–is essential.

  11. The best architectures, requirements, and designs emerge from self-organizing teams.

  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Agile metrics:

Metrics that can be collected for effective usage of Agile is:

  • Drag Factor

    • Effort in hours that do not contribute to the sprint goal

    • Drag factor can be improved by reducing the number of shared resources, reducing the amount of non-contributing work

    • New estimates can be increased by a percentage of drag factor -New estimate = (Old estimate+drag factor)

  • Velocity

    • Amount of backlog(user stories) converted to shippable functionality of sprint

  • No of Unit Tests added

  • Time interval taken to complete daily build

  • Bugs detected in an iteration or in previous iterations

  • Production defect leakage

Agile methods

Scrum

SCRUM is an agile development method that concentrates specifically on how to manage tasks within a team-based development environment. Scrum believes in empowering the development team and advocates working in small teams (say- 7 to 9 members). It consists of three roles, and their responsibilities are explained as follows:

  • Scrum Master - is responsible for setting up the team, sprint meeting and removes obstacles to progress

  • Product owner - creates product backlog, prioritizes the backlog, and is responsible for the delivery of the functionality at each iteration

  • Scrum Team - manages its own work and organizes the work to complete the sprint or cycle

Process flow of scrum testing is as follows:

  • Each iteration of a scrum is known as Sprint

  • Product backlog is a list where all details are entered to get the end-product

  • During each Sprint, top user stories of Product backlog are selected and turned into Sprint backlog

  • Team works on the defined sprint backlog

  • Team checks for the daily work

  • At the end of the sprint, team delivers product functionality

eXtreme Programming (XP)

Extreme Programming technique is very helpful when there is constantly changing demands or requirements from the customers or when they are not sure about the functionality of the system. It advocates frequent "releases" of the product in short development cycles, which inherently improves the productivity of the system and also introduces a checkpoint where any customer requirements can be easily implemented. The XP develops software keeping customer in the target.

Business requirements are gathered in terms of stories. All those stories are stored in a place called the parking lot.

Phases of eXtreme programming:

  • Planning

  • Analysis

  • Design

  • Execution

  • Wrapping

  • Closure

Crystal Methodologies

Crystal Methodology is based on three concepts

  1. Chartering: Various activities involved in this phase are creating a development team, performing preliminary feasibility analysis, developing an initial plan and fine-tuning the development methodology

  2. Cyclic delivery: The main development phase consists of two or more delivery cycles, during which the

    1. Team updates and refines the release plan

    2. Implements a subset of the requirements through one or more program test integrate iterations

    3. Integrated product is delivered to real users

    4. Review of the project plan and adopted development methodology

  3. Wrap Up: The activities performed in this phase are deployment into the user environment, post- deployment reviews and reflections are performed.

Dynamic Software Development Method (DSDM)

DSDM is a Rapid Application Development (RAD) approach to software development and provides an agile project delivery framework. The important aspect of DSDM is that the users are required to be involved actively, and the teams are given the power to make decisions. Frequent delivery of product becomes the active focus with DSDM. The techniques used in DSDM are

  1. Time Boxing

  2. MoSCoW Rules

  3. Prototyping

The DSDM project consists of 7 phases

  1. Pre-project

  2. Feasibility Study

  3. Business Study

  4. Functional Model Iteration

  5. Design and build Iteration

  6. Implementation

  7. Post-project

Feature Driven Development (FDD)

This method is focused around "designing & building" features. Unlike other agile methods, FDD describes very specific and short phases of work that has to be accomplished separately per feature. It includes domain walkthrough, design inspection, promote to build, code inspection and design. FDD develops product keeping following things in the target

  1. Domain object Modeling

  2. Development by feature

  3. Component/ Class Ownership

  4. Feature Teams

  5. Inspections

  6. Configuration Management

  7. Regular Builds

  8. Visibility of progress and results

Lean Software Development

Lean software development method is based on the principle "Just in time production". It aims at increasing speed of software development and decreasing cost. Lean development can be summarized in seven steps.

  1. Eliminating Waste

  2. Amplifying learning

  3. Defer commitment (deciding as late as possible)

  4. Early delivery

  5. Empowering the team

  6. Building Integrity

  7. Optimize the whole

Kanban

Kanban originally emerged from Japanese word that means, a card containing all the information needed to be done on the product at each stage along its path to completion. This framework or method is quite adopted in software testing method especially in agile testing.

Pros and Cons

Agile methods are being widely accepted in the software world recently. However, this method may not always be suitable for all products. Here are some pros and cons of the Agile model.

Pros:

  • Is a very realistic approach to software development.

  • Promotes teamwork and cross-training.

  • Functionality can be developed rapidly and demonstrated.

  • Resource requirements are minimum.

  • Suitable for fixed or changing requirements

  • Delivers early partial working solutions.

  • A good model for environments that change steadily.

  • Minimal rules, documentation easily employed.

  • Enables concurrent development and delivery within an overall planned context.

  • Little or no planning required.

  • Easy to manage.

  • Gives flexibility to developers.

Cons:

  • Not suitable for handling complex dependencies.

  • More risk of sustainability, maintainability and extensibility.

  • An overall plan, an agile leader and agile PM practice is a must without which it will not work.

  • Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.

  • Depends heavily on customer interaction, so if a customer is not clear, the team can be driven in the wrong direction.

  • There is a very high individual dependency, since there is minimum documentation generated.

  • Transfer of technology to new team members may be quite challenging due to lack of documentation.

Agile Model Vs Waterfall Model

Agile and Waterfall models are two different methods for the software development process. Though they are different in their approach, both methods are useful at times, depending on the requirement and the type of the project.

Agile Model

Waterfall Model

  • Agile method proposes an incremental and iterative approach to software design

  • Development of the software flows sequentially from start point to end point.

  • The agile process is broken into individual models that designers work on

  • The design process is not broken into an individual models

  • The customer has early and frequent opportunities to look at the product and make decision and changes to the project

  • The customer can only see the product at the end of the project

  • Agile model is considered unstructured compared to the waterfall model

  • Waterfall model are more secure because they are so plan oriented

  • Small projects can be implemented very quickly. For large projects, it is difficult to estimate the development time.

  • All sorts of project can be estimated and completed.

  • Error can be fixed in the middle of the project.

  • Only at the end, the whole product is tested. If the requirement error is found or any changes have to be made, the project has to start from the beginning

  • Development process is iterative, and the project is executed in short (2-4) weeks iterations. Planning is very less.

  • The development process is phased, and the phase is much bigger than iteration. Every phase ends with the detailed description of the next phase.

  • Documentation attends less priority than software development

  • Documentation is a top priority and can even use for training staff and upgrade the software with another team

  • Every iteration has its own testing phase. It allows implementing regression testing every time new functions or logic are released.

  • Only after the development phase, the testing phase is executed because separate parts are not fully functional.

  • In agile testing when an iteration end, shippable features of the product is delivered to the customer. New features are usable right after shipment. It is useful when you have good contact with customers.

  • All features developed are delivered at once after the long implementation phase.

  • Testers and developers work together

  • Testers work separately from developers

  • At the end of every sprint, user acceptance is performed

  • User acceptance is performed at the end of the project.

  • It requires close communication with developers and together analyzes requirements and planning

  • Developer does not involve in requirement and planning process. Usually, time delays between tests and coding

Last updated

Was this helpful?