Agile Scrum Software Development Methodology
Agile Software Development Methodology
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.
Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames (timeboxes) that typically last from two to five 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 customers. This helps minimize overall risk, and lets the project adapt to changes quickly. The goal is to have an available release at the end of each iteration. Multiple iterations may be required to release a product or new features.
Twelve principles underlie the Agile Manifesto, including:
|
Customer satisfaction by rapid, continuous delivery of useful software |
|
Working software is delivered frequently |
|
Working software is the principal measure of progress |
|
Even late changes in requirements are welcome |
|
Close, daily cooperation between business people and developers |
|
Face-to-face conversation is the best form of communication |
|
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 |
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 an iteration requires. They decide individually how to meet an iteration’s requirements.
Most agile implementations use a routine and formal daily face-to-face communication among team members. This sometimes includes the customer representative as observers. In a brief session, team members report to each other what they did the previous day, what they intend to do today, and what their roadblocks are. This standing face-to-face communication prevents problems from being hidden.
Agile emphasizes working software as the primary measure of progress. This, combined with the preference for face-to-face communication, produces less written documentation than other methods.
The agile method encourages customers to prioritize wants with other iteration outcomes based exclusively on business value perceived at the beginning of the iteration.
Scrum Project Management Methodology
Scrum is an iterative, incremental methodology for project management in Agile software development.
Scrum can be used to manage and control complex software and product development using iterative, incremental practices. Scrum has been used from simple projects to changing the way entire enterprises do their business. Scrum significantly increases productivity and reduces time to benefits while facilitating adaptive, empirical systems development.
Scrum provides organizations with a way to bring software to the customer faster and better while increasing the level of control and lowering overall project risks.
Scrum is one of the original Agile processes, adhering to the values enunciated in the Agile Manifesto:
| "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 |
| While there is value in the items on the right, we value the items on the left more." |
|