Showing posts with label agile. Show all posts
Showing posts with label agile. Show all posts

Monday, June 13, 2011

Agile Software/Web Development

Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. In fact it is a framework that promotes development iterations throughout the life-cycle of a project. It minimizes risk by developing software in short amounts of time. Developments accomplished in one unit of time (generally up to four weeks) is called an iteration. Each iteration is a project with analysis, design, coding, testing and also documentation All the required functionality may not be covered in one iteration for releasing the project. But it will be covered in multiple iterations. The idea is to have a defect free release available at the end of each iteration.
Being agile is critical if you are to succeed in today‟s competitive world. More and more people are achieving greater productivity and success by applying agile methodology to their work. Organizations of all sizes are achieving greater success by adopting the Agile Method, replacing rigid and inflexible processes with our dynamic and iterative approach.
The Agile Manifesto introduced the term in 2001. Agile Manifesto reads, in its entirety, as follows:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.

Twelve principles underlie the Agile Manifesto, including:
  • 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
  • Sustainable development, able to maintain a constant pace
  • 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
Characteristics
There are many specific agile development methods. Most promote development, teamwork, collaboration, and process adaptability throughout the life-cycle of the project.
Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders.
Team composition in an agile project is usually cross-functional and self-organizing without consideration for any existing corporate hierarchy or the corporate roles of team members. Team members normally take responsibility for tasks that deliver the functionality iteration requires.
Agile methods emphasize face-to-face communication over written documents when the team is all in the same location. Most agile teams work in a single open office, which facilitates such communication
No matter what development disciplines are required, each agile team will contain a customer representative. This person is appointed by stakeholders to act on their behalf and makes a personal commitment to being available for developers to answer mid-iteration problem-domain questions.
Most agile implementations use a routine and formal daily face-to-face communication among team members.
Agile development emphasizes working software as the primary measure of progress.