INTRODUCTION Agile software development is a movement within a software development community away from the traditional methodologies and towards ‘relatively light, effective, human powered software development techniques’. Some of the basic ideas that agile methods encompasses are 1. team work 2. Collaboration 3. Face-to-face communication 4. Doing things in small increments with minimal planning
history The concept of Agile methods evolved in mid 1990’s as a reaction to the heavy-weight methods. Initially Agile methods were known as “Light-weight methods”. In 2001 the name Agile methods was adopted. Later ‘The Agile Alliance’ was formed which is a non profit organization that promotes agile development.
The word “ Agile ” The word agile literally means Active Easy moving flexible Energetic Fast Agile methods have all the above mentioned characteristics and are called agile methods because they are light, effective, human powered software development techniques’.
What Are A gile methods methodologies for the development of soft wares In agile methodology development team focuses more on soft ware rather than on its design and its documentation. Basically agile methods are iterative in nature. each iteration is a self-contained, mini-project with activities that span requirements analysis, design, implementation, and test. Each iteration leads to an iteration release (which may be only an internal release) that integrates all software across the team and is a growing and evolving subset of the final system. Purpose of these iterations is to get feed back which helps in refinement of the project.
Principles behind use of agile methods 1. satisfy customers 2. Welcome changing requirements 3. business people and developers must work together 4. build projects around motivated individuals 5. Have face to face conversations
Why use agile methods? Improved return on investment (RIO) Early detection and cancellation of failing products Higher quality software Improved control of a project Reduced dependence on individuals and increased flexibility
What is XP? It is a deliberate and disciplined approach to software development. When to use XPWhen to use XP? Risky projects with dynamic requirements are perfect for XP. These projects will experience greater success and developer productivity. XP is a refreshing new approach. XP is successful because it emphasizes customer involvement and promotes team work.
Goal of XP Extreme Programming is described as being: 1. An attempt to reconcile humanity and productivity 2. A mechanism for social change 3. A path to improvement 4. A style of development 5. A software development discipline The main aim of XP is to lower the cost of change.
XP values Communication Simplicity Feedback Courage Respect
Application of Extreme Programming Extreme Programming remains a sensible choice for some projects. Projects suited to Extreme Programming are those that: Involve new or prototype technology, where the requirements change rapidly, or some development is required to discover unforeseen implementation problems Are research projects, where the resulting work is not the software product itself, but domain knowledge Are small and more easily managed through informal methods
Projects suited for more traditional methodologies are those that: Involve stable technology and have fixed requirements, where it is known that few changes will occur Involve mission critical or safety critical systems, where formal methods must be employed for safety or insurance reasons Are large projects which may overwhelm informal communication mechanisms Have complex products which continue beyond the project scope to require frequent and significant alterations, where a recorded knowledge base, or documentation set, becomes a fundamental necessity to support the maintenance Project Managers must weigh project aspects against available methodologies to make an appropriate selection.
Comparison with other methods 1. Agile methods are sometimes characterized as being at the opposite end of the spectrum from "plan-driven" or "disciplined" methods. This distinction is misleading, as it implies that agile methods are "unplanned" or "undisciplined". 2. A more accurate distinction is that methods exist on a continuum from "adaptive" to "predictive". Agile methods lie on the "adaptive" side of this continuum. 3. Agile methods have much in common with the “Rapid application development” techniques from the 1980/90s as espoused by James Martin and others.
Contrasted with other iterative development methods Most agile methods share other iterative and incremental development methods' emphasis on building releasable software in short time periods.iterative and incremental development Agile development differs from other development models: In this model time periods are measured in weeks rather than months and work is performed in a highly collaborative manner. Most agile methods also differ by treating their time period as a strict timebox.timebox
Contrasted with the waterfall model Agile development has little in common with the waterfall model. As of 2009, the waterfall model is still in common use.waterfall model The main problem with the waterfall model is the inflexible division of a project into separate stages, so that commitments are made early on, and it is difficult to react to changes in requirements. Iterations are expensive. This means that the waterfall model is likely to be unsuitable if requirements are not well understood or are likely to change in the course of the project.
Agile methods, in contrast, produce completely developed and tested features (but a very small subset of the whole) every few weeks. The emphasis is on obtaining the smallest workable piece of functionality to deliver business value early, and continually improving it and adding further functionality throughout the life of the project.
Contrasted with "cowboy coding" Cowboy coding is the absence of a defined method: team members do whatever they feel is right. Cowboy coding Agile development's frequent re-evaluation of plans, emphasis on face-to-face communication, and relatively sparse use of documents sometimes causes people to confuse it with cowboy coding. Agile teams, however, do follow defined (and often very disciplined and rigorous) processes.
Extreme Programming - One of the most used Agile method Extreme Programming (XP) is a software engineering methodology, the most prominent of several agile software development methodologies.software engineering methodologyagile software development Like other agile methodologies, Extreme Programming differs from traditional methodologies primarily in placing a higher value on adaptability than on predictability.Extreme Programming
XP prescribes a set of day-to-day practices for managers and developers. Proponents believe that the exercise of these practices leads to a development process that is more responsive to customer needs ("agile") than traditional methods, while creating software of similar or better quality.
1. There are many specific agile development methods. Most promote development iterations teamwork, collaboration, and process adaptability throughout the life-cycle of the project. 2. Agile methods choose to do things in small increments with minimal planning, rather than long-term planning. 3. 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. 4. Agile methods emphasize face-to-face communication over written documents, when working
5. Team size is typically small (5-9 people) to help make team communication and team collaboration easier. 6. Each agile team will contain a customer representative. A person is appointed to act on behalf of stakeholders. 7. Agile methodologies include a routine and formal daily face-to-face communication among team members.
1. Agile team is self-organizing. 2. Empowered team members’ reduce their dependency on management. 3. Rather than having a manager with responsibility for planning, managing and controlling the work, the team members share increasing responsibility for managing their own work. 4. Agile methods inherently drive the team in a self- organizing direction. 5. Managers become facilitators, liaisons. Team members’ roles change too
BENEFITS:- RAPID LEARNING EARLY RETURN ON INVESTMENT INCREASED CONTROL RESPONSIVE TO CHANGE
RAPID LEARNING 1. Rapid delivery of valuable results gives an organization frequent opportunities to learn what it truly needs. 2. This process allows learning to take place at the level of the product or service. 3. Agile methods also allow you to learn about the process used to produce the product or service. 4. Ken's anecdote in the sidebar describes, the first cycles will almost certainly deliver incorrect or poor Results.
EARLY RETURN ON INVESTMENT Improving ROI occurs in three ways 1. increase revenue, 2. costs or reduce 3. delivery time. In cost-conscious environments, this mechanism enables a valuable control mechanism: measuring when to stop a project or work operation when the cost of doing the work is higher than the return for that work.
INCREASED CONTROL 1. The person responsible for prioritizing the work that is being done in an agile method is the locus of value control in an agile environment. 2. First and foremost is through the constantly evolving queue of features or results to be delivered by the agile team. 3. Secondly Stakeholders can contribute ideas to the queue at any time. 4. Ideally there is close collaboration. However, if there is disagreement. The benefit is given to those who are doing the work by giving them full control which allow full run of creativity and problem-solving skills to come into play.
RESPONSIVENESS TO CHANGE 1. Change control is put in place because change becomes very expensive in a phase-based process. 2. Agile methods turn this effect on it's head. By allowing change every cycle, well within the duration of the horizon of predictability, the team and the organization learn how to do their work in order to accommodate change. 3. Automated testing dramatically lowers defect rates and improves software design for better maintainability. 4. Frequent releases increase feedback, lower total risk, and mitigate risk of failure by front-loading potential problems
LEADERS IN AGILE TEAMS:- Good leaders know themselves well. Specifically, leaders know their position in an organization or system, as well as their strengths and weaknesses Leaders takes time regularly to reflect upon their lives and values. This trait fits well with Agile teams, since reflection is a core Agile principles. The Agile leader values reflection and encourages team members to take time to reflect and evaluate themselves for the purpose of improvement.
EVERYONE NEEDS TO UNDERSTAND THEIR RESPONSIBILITIES
LIMITATIONS/DRAWBACKS:- Agile development methods do not scale. Agile management methods do not handle large teams well. Agile development requires highly skilled and highly motivated individuals.
Conclusion Agile Methods are a fundamentally new paradigm Agile Methods are “not” lighter Traditional Methods They should not be viewed through a Traditional lens