Agile Methodolgy Guide: Ontents
Agile Methodolgy Guide: Ontents
CONTENTS
Agile term definition:...................................................................................................................................2
1. Client Communication
2. Programming Language
If a team were to develop a “Customer address book” using the agile methodology, the order of work
would be as follows (timeframes are for demonstration purposes only):
These requirements documents will be simple, and will include user scenarios. As each item is worked
on, questions will arise, and there will be opportunities to discuss them as they occur. From this list, the
requirements for the first iteration are chosen (starting with the highest priority items).
Timeframe: 1 week
2. Iteration 1:
The team works on the functionality to create new contacts and to view contacts. This includes the
design, development and testing for these items. At the end of the iteration, the team demonstrates the
functionality to the product manager, where he or she can provide feedback.
Timeframe: 2 weeks
3. Iteration 2:
Team works on the functionality to import contacts, to email and to add pictures to the contacts. This
includes the design, development and testing for these items. At the end of the iteration, the team
demonstrates the functionality to the product manager, where he or she can provide feedback.
Timeframe: 2 weeks
4. Iteration 3:
Timeframe: 1 week
5. Release:
Note that if any changes to the requirements occur during this project, then each iteration would be
adjusted accordingly.
Why agile?
1. This is achieved through regular measure of work, known as sprints (iterations) at the end of
which teams must present a potentially product increment. In agile we get multiple chances to
get each aspect of a project right.
2. It greatly reduces both development costs and time to market because teams can develop
software at the same time while gathering requirements.
Product backlog:
Every release begins with a list called a “backlog,” which consists of a list of “prioritized
requirements”. It is a list of task to be done. The team will always adjust the scope of work to
ensure that the most important items are completed first.
Sprint backlog:
It is a list of tasks to be completed in one sprint. Sprint (also known as Iterations) they are
smaller amounts of delivered requirements, which are taken from the backlog in their order of
importance.
During iteration, the team works through a full development cycle (from analysis to testing)
At the end, they demonstrate a working product to stakeholders. Multiple iterations may be
required for a release and to complete all backlog items. Here each sprint will normally require
many tasks.
Agile development life cycle vs. Software development life cycle:
Explanation:
The agile approach is shown by the following image; where after each phase, developers have the
opportunity to cycle back and check their work. There is a flexibility to check for errors under any part of
the development stage which usually make this approach less receptive to bugs.
Agile Approaches:
The most widely used methodologies based on the agile are XP (Extreme Programming) and Scrum.
Iterative approach is common among them.
Scrum:
It emphasizes on feedback; team self-management, and striving to build properly tested product
increments within short iterations. It focuses on agile management and on how to better organize the
development teams.
It is an agile process most commonly used for product development, especially software development.
Scrum is a project management framework that is applicable to any project with aggressive deadlines,
complex requirements and a degree of uniqueness. In Scrum, projects move forward via a series of
iterations called sprints. Each sprint is typically two to four weeks long.
Scrum team:
A typical scrum team has between five and nine people, but Scrum projects can easily scale into the
hundreds. However, Scrum can easily be used by one-person teams and often is. This team does not
include any of the traditional software engineering roles such as programmer, designer, tester or
architect. Everyone on the project works together to complete the set of work they have collectively
committed to complete within a sprint. Scrum teams develop a deep form of fellowship and a feeling
that “we’re all in this together.”
Extreme Programming:
It allows your developers to confidently respond to changing customer requirements, even late in the
life cycle. It includes some management elements but emphasizes technical practices more and is
therefore more of an agile approach.
It emphasizes teamwork. Managers, customers, and developers are all equal partners in a collaborative
team. Extreme Programming implements a simple, yet effective environment enabling teams to become
highly productive. The team self-organizes around the problem to solve it as efficiently as possible.
Agile Manifesto:
The Agile Manifesto, also called the “Manifesto for Agile Software Development”, is a formal declaration
of four key values and 12 principles to guide an iterative and people-centric approach to software
development.
The four core values of agile software development as stated by the Agile Manifesto are:
Early delivery of partial working solutions. End of project may not be known.
Suitable for small projects. Not suitable for small or low risk projects.
Depends heavily on customer interaction Does not depend heavily on customer interaction
The main focus is on adaptability and customer The main focus is on producing new version
satisfaction with rapid development of project. of software at the end of each iteration to satisfy
customer needs.
It can be used to develop more complex projects. It cannot be used for more complex projects
as iterative practice will increase complexity, time
requirement.
Evaluation is done more frequently resulting in Evaluation is after every iteration hence errors if
better error detection any are detected after a delay
Testing cycle time of Agile is relatively short Testing cycle time is relatively long for V-Model
because testing is done parallel to development.
Agile is a proactive model (due to its very short It is a reactive model.
cycles)
It is not rigid. V-Model is very rigid and relatively less flexible.
Agile teams are democratic. The whole team has RAD solutions were not based around the concept
a say in the architecture of the solution, but the of a common architecture and thus individuals
team is still lead by an architect. worked in silos.
Agile association with other working models:
Incremental:
Agile model is also a type of incremental model. Software is developed in incremental, rapid cycles. This
results in small incremental releases with each release building on previous functionality. Each release is
thoroughly tested to ensure software quality is maintained.
Waterfall model
The common element to all of them being the basic phases of the waterfall approach and that Agile is
also another of its successors. Both processes are sequential while you can count agile as recursive too.
CMMI model:
Make clear that the Capability Maturity Model Integration and Agile can co-exist. Modern CMMI-
compatible development processes are also iterative like agile attribute of being iterative.
The sprint day's focus for the development team is producing shippable functionality. If you're a
member of the development team, you also perform the following tasks during the sprint.
1. Select the tasks of highest need and complete them as quickly as possible.
2. Request clarification from the product owner when you are unclear about a user task.
3. Collaborate with other development team members to design the approach to a specific user
task, seek help when you need it, and provide help when another development team member
needs it.
4. Take on tasks beyond your normal role as the sprint demands.
5. Fully develop functionality as agreed to in the definition of done.
6. Report daily on your progress.
7. Alert the scrum master to any roadblocks you can't effectively remove on your own.
8. Achieve the sprint goal you committed to during sprint planning.
For the product owner, the focus is on preparing the product backlog for future sprints while supporting
the development team with real-time clarifications. The product owner has the following responsibilities
during the sprint:
1. Make the investments required to keep development speed high.
2. Prioritize product functionality.
3. Represent the product stakeholders to the development team.
4. Report on cost and schedule status to product stakeholders.
5. Create detailed user stories with the development team so that the team clearly understands
what is being created.
6. Provide immediate clarification and decisions about requirements to keep the development
team developing and provide feedback to the development team.
7. Add new user tasks to the product backlog as necessary and ensure that new user tasks support
the product vision, the release goal, or the sprint goal.
8. Look forward to the next sprint and elaborate user task in readiness for the next sprint planning
meeting.
The scrum master is the agile coach and maximizes the development team's productivity by removing
roadblocks and protecting the development team from external distractions. If you're a scrum master,
your job during the sprint will be:
1. Uphold agile values and practices by coaching the product owner, development team, and the
organization when necessary.
2. Shield the development team from external distractions and remove roadblocks, both tactically
for immediate problems and strategically for potential long-term issues.
3. Scrum masters can get benefit from understanding body language to identify unspoken tensions
within the scrum team.
1. In case of some software deliverables, especially the large ones, it is difficult to assess the effort
required at the beginning of the software development life cycle.
2. There is lack of emphasis on necessary designing and documentation.
3. The project can easily get taken off track if the customer representative is not clear what final
outcome that they want.
4. 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.
Conclusion:
Agile software development stresses rapid iterations, small and frequent releases, and evolving
requirements facilitated by direct user involvement in the development process. It empowers teams to
continuously re plan their release to optimize its value throughout development, allowing them to be as
competitive as possible in the marketplace.
References
http://www.dummies.com/how-to/content/defining-roles-within-an-agile-sprint.html
http://www.dummies.com/how-to/content/defining-roles-within-an-agile-sprint.html
http://www.allaboutagile.com/agile-methodologies/
http://consultingblogs.emc.com/simonevans/archive/2006/04/18/10-Reasons-why-Agile-is-not-Rapid-
Application-Development-_2800_RAD_2900_.aspx
http://www.marsdd.com/articles/product-development-agile-methodology/
http://efficientprograms.blogspot.com/2013/07/spiral-model-vs-waterfall-model-agile.html
http://searchcio.techtarget.com/definition/Agile-Manifesto
http://covalentmarketing.com/blog/2013/02/25/software-development-lifecycle-waterfall-vs-agile/
http://www.sdlc.ws/agile-vs-waterfall/