-Sudhamayi
Of late I came across a phrase “AGILE”- ‘a software development methodology’ when I was going through some technical post. Immediately I searched for the word “AGILE” in answers.com and it gave me the answer “Characterized by quickness, lightness, and ease of movement; nimble”. I got a bit confused about how on earth this quickness, ease of movement come into picture in software development. My questions started at what it means by saying quickness in software development.There came my answer from the panacea “Google”.
Quickness in “Agile” software development methodology is achieved by slicing a large part of work and allocating short amounts of time for each slice of work , ensuring that at the end of each time interval we have a working software with minimal bugs and which meets the functional and technical requirements decided upon for that slice of work. With this introduction we can now start diving a bit deep into the topics of Agile methodology, introduction and how it varies from the traditional approaches.
Introduction
Agile is a group of software development methodologies based on iterative model of development. Here, the client requirements are not frozen as in case of traditional model (ex: Waterfall model) and the requirements evolve continuously. The stress in Agile methodology would be on delivering a high quality software product at the end of each iteration .Even though the product may not meet all the complete set of requirements it should meet all the requirements decided upon for that iteration or the interval of time.
Basic idea behind Agile is, breaking the tasks into small increments with minimal planning. Each iteration may last up to 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. This helps minimize overall risk, and lets the project adapt to changes quickly. Stakeholders produce documentation as required. Iteration may not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration. Multiple iterations may be required to release a product or new features.
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. They decide individually how to meet iteration’s requirements.
Agile methods emphasize face-to-face communication over written documents when the team is all in the same location. When a team works in different locations, they maintain daily contact through videoconferencing, voice, e-mail, etc. Team size would be typically between 5 to 9.
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. At the end of each iteration, stakeholders and the customer representative review progress and re-evaluate priorities with a view to optimizing the return on investment and ensuring alignment with customer needs and company goals. This avoids the last minute confusions about the requirements the customer’s expecting from the development team. Also it avoids the costly rework in case of requirements that are not completely understood. Hence customer satisfaction would be more.
Success of Agile methodology of software development is largely credited to the team-work, collaboration and the skill of the individuals.
Some of the principles behind the Agile Manifesto are:
- Customer satisfaction by rapid, continuous delivery of useful software
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Even late changes in requirements are welcomed
- Close, daily cooperation 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
A. Traditional methods (like waterfall) fall under Predictive category of development methodologies. Meaning we can report features and tasks planned at any point of time and predict the same for some future date also. But changing the direction in case of the traditional methods would cost the code developed to the point to be thrown out .So adapting to change of requirements would be difficult .Hence the name “Predictive”.
In contrast, Agile focuses on the adaptive mode meaning at any point of time change is welcomed. When the needs of a project changes, an adaptive team changes as well. But the Agile team would have difficulty in reporting what will happen on a future date. Hence the name “Adaptive”.
B. The waterfall model is the most structured of the methods, stepping through requirements-capture, analysis, design, coding, and testing in a strict, pre-planned sequence. Progress is generally measured in terms of deliverable artifacts: requirement specifications, design documents, test plans, code reviews.
C. 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.
D. If a project being delivered under the waterfall method is cancelled at any point up to the end, there is nothing to show for it beyond a huge resources bill.
With the agile method, being cancelled at any point will still leave the customer with some worthwhile code that has likely already been put into live operation.
Selecting Agile methodology
Factors influencing the selection of Agile as development methodology:
- Low criticality
- Senior developers
- Requirements change often
- Small number of developers
- Culture that thrives on chaos
- Agile Modeling
- Agile Unified Process (AUP)
- Agile Data Method
- DSDM
- Essential Unified Process (EssUP)
- Extreme programming (XP)
- Feature Driven Development (FDD)
- Getting Real
- Open Unified Process (OpenUP)
- Scrum
- Lean software development
I conclude this article by stating that “Agile” may not be a solution for all the projects but still it’s a good option considering the duration, risk, effort, team size, skill of the developers and the requirements agility.
No comments:
Post a Comment