Tuesday, August 14, 2012

Agile Methodology


  • Agile Methodology
Agile is all the buzz these days. With Agile, analysis is done similar to the Waterfall method. However, once analysis is done, each requirement is prioritized as follows:
  • High - These are mission critical requirements that absolutely have to be done in the first release.
  • Medium - These are requirements that are important but can be worked around until implemented.
  • Low - These are requirements that are nice-to-have but not critical to the operation of the software.

Features:
  1. Entire application is broken into pieces called iteration.Each iteration is an increase in the functionality
  2. Active customer involvement;every iteration is tested and approved by client
  3. Priority based delivery:high priority feature is developed first.After each iteration project priorities are re-evaluated
  4. People-centric:documentation and other non-development activities are minimized and more time is devoted to testing and development.




Below are the advantages of the Agile Iterative Life Cycle:
  1. The Design phase goes much faster, as designs are only done on the items in the current release (Release 1.0 for example).
  2. Coding and Testing go much faster because there are less items to code and test. If major design flaws are found, re-work is much faster since the functional areas have been greatly reduced.
  3. The client gets into production in less than 3 months, allowing them to begin earning revenue or reducing expenses quicker with their product.
  4. If market conditions change for the client, changes can be incorporated in the next iterative release, allowing the software to be much more nimble.
  5. As the software is implemented, the client can make recommendations for the next iteration due to experiences learned in the past iteration.

  • Agile development
 Agile software development uses iterative development as a basis but advocates a lighter and more people-centric viewpoint than traditional approaches. 
Agile processes use feedback, rather than planning, as their primary control mechanism. 
The feedback is driven by regular tests and releases of the evolving software.
    •  Extreme Programming (XP)
    •  Scrum
    •  Dynamic systems development method
  • Code and fix



  • Agile Programming Introduction - Software Development Tutorial

http://www.youtube.com/watch?v=L62dd8tJ_b4&list=SP58B1DE005EFA5406&index=6&feature=plpp_video



agile development is referred as people-driven, not process or plan-driven
scope identifies the boundaries of project
less bureaucracy for change requests
agile development follows iterative approach
another agile development method is called scrum
scrum is well suited for small teams which is divided into sprint parts
scrum involves daily meetings,which aim frequent progress check



Agile Software Development

Advantages of Agile
Face to face communication and continuous inputs from customer representative leaves no space for guesswork.
The documentation is crisp and to the point to save time
The end result is the high quality software in least possible time duration and satisfied customer
Agile methodology has an adaptive team which is able to respond to the changing requirements.
you can get development started fast, project scope statement is "flexible" and not fully defined.

Disadvantages of Agile Methodology
There is lack of emphasis on necessary designing and documentation.
The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources



The literal meaning of the word agile, an adjective, is “Characterized by quickness, lightness, and ease of movement.”
So this indicates that Agile Software development is about fast delivery of software with more ease of development


Key Features of Agile Software Development

Iterative: Entire application is distributed in incremental units called as iteration. Development time of each iteration is small (couple of weeks), fixed and strictly adhered to. Every Iteration is a mini increment of the functionality and is build on top of previous iteration

Active Customer involvement: There is lot of client involvement and face-to-face interaction. Every iteration is tested and approved by client. thus minimizing risk and ensuring higher client satisfaction

Fixed Time: Each iteration has a fixed time span in which it is delivered.

Empowered Teams: The project teams are generally small and have lot of interaction and communication

The documentation and other non-development activities are minimized and more time is devoted to development and testing



Benefits to the Customer
Customer is more actively involved, and gets higher priority
He gets to know regular and frequent status of the application
Requirements are accepted after each iteration

Benefits to the Project Teams
Since the development is Incremental, teams can focus on the specific requirements at any given point of time
More emphasis is on developing the application only, and not on documentation. Simple and minimal documents are used to exchange the views
Less time is spent in gathering requirements as all the requirements are not gathered upfront and are implemented as and when they arise
So less time is required for planning.
Less cost of development as rework, management, documentation and other non-development work related cost is reduced


http://www.indicthreads.com/1439/quick-introduction-to-agile-software-development/
http://www.my-project-management-expert.com/the-advantages-and-disadvantages-of-agile-software-development.html

  • Why Agile project management is harmful


Theoretical Objection
Project Management implies a start and end date, while Scrum in contrast focuses on sustaining a product.
The guide defines the purpose of Scrum as: “a framework for developing and sustaining complex products”.

The modern trend as espoused by the DevOps movement is that the team that builds the software also runs the software. In the past we normally developed a software project using a project management methodology and then an operations team took over the maintenance and operation of it. Traditional IT models divide implementation and support into separate teams, sometimes referred to as “build” and “run” or “development” and “support”.

As the Scrum Guide states: “The Scrum Team consists of a Product Owner, the Development Team, and a Scrum Master. Scrum Teams are self-organizing and cross-functional. Self-organizing teams choose how best to accomplish their work, rather than being directed by others outside the team”.
https://langerman.co.za/agile_pm_harmful/


  • 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
http://agilemanifesto.org/


  • Twelve Principles of Agile Software

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 
http://agilemanifesto.org/principles.html


  • ALM (Application Lifecycle Management)


Practices in ALM can be grouped into three areas:

    Governance
    Development
    Production

Within each area, the following practices can be applied to any development team’s ALM strategy:

    Requirements gathering.
    Project management tools.
    Source control.
    Defect tracking.
    Automated testing and more.

Agile is not a silver bullet.  It is a better way of developing software.
So, making sure that individuals on the team interact frequently and do not rely on the tools over the interactions is one way to ensure that your ALM practice is Agile.

For Agile teams, while comprehensive project plans can help to coordinate large initiatives, most planning takes the form of release plans with stories
Using reporting mechanisms like burn down charts (release burn down charts show the progress of the team), velocity charts, and cumulative flow diagrams helps teams plan. 
Planning also happens in a more collaborative way using Agile methods. Scrum, XP, Sprint, or iteration planning sessions allow the team to plan and commit to what they will get done within a fixed amount of time

these tools support Agile methods:

    Pivotal Tracker
    Version One
    Rally
    Lean Kit Kanban
    Microsoft ALM
    IBM Rational

How Agile ALM Improves Requirements Gathering
Agile teams rely on smaller scoped work items in their requirements gathering. Most teams utilize user stories to convey features that need to be built.
The easiest ALM tool one could use for basic  requirements gathering is index cards on a big board. Using a board and index cards is a great way for a team to begin a project
Other types of requirements include acceptance criteria. In Agile teams — as in most teams — these take the form of wireframes, mockups, and some written format

The Role of Version Control in Agile ALM
So you should establish a branching and merging strategy for your team.
This is not necessarily an Agile-only ALM practice; it is necessary for any ALM implementation

Quality Assurance in Agile ALM
In an Agile ALM solution, this includes Test Driven Design or Test Driven Development (TDD). 
So automated unit tests are necessary, along with the ability to have some metrics on those automated tests
Teams must perform code reviews through pair programming or some other mechanism to determine that
automated acceptance criteria can be used for quality checks as well. Some teams use tools for Behavior Driven Development (BDD), which can help in this regard too.

QA Tools
Below is a partial list of tools that support Agile methods that can be utilized for quality assurance:
    Cucumber
    RSpec
    NUnit
    JUnit
    Raconteur

DevOps in Agile ALM
The DevOps approach encourages greater collaboration between the development team and the infrastructure departments, in particular the operations group.
ALM practices work well with the DevOps concept because they prescribe stable, consistent development environments that help assure product quality and seamless deployment
This is critical to the DevOps concept, which includes a build system that takes the source control and builds and deploys it in a consistent manner on each environment.

http://www.logigear.com/blog/agile-alm-and-the-tools-to-practice-it/


  • Agile Application Lifecycle Management (Agile ALM) is a central platform that allows teams using Agile methods, alone or in combination with other development methodologies (e

.g., RUP, waterfall), to manage all phases of the software development lifecycle from requirements through release.  By uniting business users and developers and providing cross-team visibility, Agile ALM enables organizations to achieve a faster time to market and higher-quality software releases while reducing infrastruc
ture costs. 

https://www.open.collab.net/media/pdfs/CollabNet_WhatIsAgile_Whitepaper.pdf


  • Agile ALM is the practice of using Agile processes to manage your requirements, issues, and tests.

Applying Agile to ALM helps you:

    Deliver quality releases quickly.
    Improve collaboration across teams.
    Prioritize customer needs.

Agile is all about value and people. And ALM is all about tools. 

Individuals and Interactions Over Processes and Tools.
Traditional ALM is often governed by steps for completing the product. First you gather requirements. Then you build the product. And then you run tests. This can create silos by process.
Agile ALM, instead, favors cross-functional team interaction. Gathering requirements is a collaborative process — and these requirements are reviewed and updated constantly. The product is built and tested in sprints, facilitating greater collaboration throughout the process. 

Working Software Over Comprehensive Documentation.
ALM is traditionally characterized by extensive documentation. Agile suggests prioritizing fast (quality) releases over documentation. Hybrid Agile typically bridges the gap for organizations who need the documentation (e.g., for compliance) but want to be Agile. 

Customer Collaboration Over Contract Negotiation.
In traditional ALM, customer feedback comes in the form of requests for bug fixes or features. It usually doesn’t inform requirements.
In Agile ALM, customer feedback is critical. It’s often included in requirements gathering throughout the development lifecycle. 

Responding to Change Over Following a Plan.
Traditional ALM is all about the plan. The plan is set firmly at the beginning of development and followed through to deployment.
Agile ALM responds to change. The plan — if you call it that — is in flux. This helps team members be more productive and deliver the right functionality at the right time. And that typically helps you reduce your costs. 


https://www.perforce.com/blog/alm/what-agile-alm


No comments:

Post a Comment