Friday, August 29, 2014

AGILE

What Is Agile?

The Agile movement proposes alternatives to traditional project management. Agile approaches are typically used in software development to help businesses respond to unpredictability.
Agilityagility is defined as "the ability of a system to rapidly respond to change by adapting its initial stable configuration".

Why Agile?

  • Customer satisfaction by rapid delivery of useful software
  • Welcome changing requirements, even late in development
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Close, daily co-operation between business people and developers
  • Face-to-face conversation is the best form of communication (co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances

Scrum

Scrum is the most popular way of introducing Agility due to its simplicity and flexibility. Scrum emphasizes empirical feedback, team self management, and striving to build properly tested product increments within short iterations. 

Scrum Roles


Agile Project Life Cycle

  • In agile software development life cycle the product or solution is first divided into features which need to be developed. If there are new features identified in the midst of complete product release it again gets planned across sprints. Agile Sprint duration is decided based on feature to be developed. Every sprint goes through the phases of Requirement, Design, Development and Testing phase.
  • In the requirements phase, software requirements are framed.
  • In the Design phase, design of the product / solution to be done is come up with. Here test team understands the requirements and comes up with a test strategy / plan to proceed with testing of the piece being developed.
  • In the Development phase, Developers are actively involved in writing source for solutions to be provided and then in unit testing of the functionalists developed. Here the test team is involved in writing test cases for functionalists being developed.
  • In the Test phase, Manual testing happens on the basis of test cases written. Automation testing for the test cases automated is also done. Here the development team is involved in fixing the bugs reported and test team re-verifies it.

Pros and Cons of Agile

ProsCons
  • 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.
  • 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
  • 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 customer is not clear, team can be driven in the wrong direction.
  • There is 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.

No comments:

Post a Comment