SE-03-Agile Software Development
SE-03-Agile Software Development
Agile Method
• Agile means “move quickly”
• Agile methods are incremental development methods that focus on rapid development
• The Agile methodology is a way to manage a project by breaking it up into several phases
or parts called iterations.
• Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks.
Phases of Agile Model
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
• Agile model believes that every project needs to be
handled differently and the existing methods need to be
tailored to best suit the project requirements. In Agile,
the tasks are divided to time boxes (small time frames)
to deliver specific features for a release.
• Iterative approach is taken and working software build is
delivered after each iteration. Each build is incremental
in terms of features; the final build holds all the features
required by the customer.
• Here is a graphical illustration of the Agile Model −
Agile Manifesto principles
• Following are the Agile Manifesto principles
• Individuals and interactions − In Agile development, self-
organization and motivation are important, as are interactions like co-
location and pair programming.
• Working software − Demo working software is considered the best
means of communication with the customers to understand their
requirements, instead of just depending on documentation.
• Customer collaboration − As the requirements cannot be gathered
completely in the beginning of the project due to various factors,
continuous customer interaction is very important to get proper
product requirements.
• Responding to change − Agile Development is focused on quick
responses to change and continuous development.
Agile Vs Traditionel SDLC Model
Advantages
• Frequent delivery
• Face to face communication with client
• Changes are easy
• Less time
Disadvantages
• Less documentation
• maintenance
Agile Software development Approaches
• Scrum
• Extreme Programing
• Crystal
• Dynamic Systems Development Method (DSDM)
• kanban
Scrum
• Scrum is the type of Agile framework. It is a
framework within which people can address complex
adaptive problem while productivity and creativity of
delivering product is at highest possible values. Scrum
uses Iterative process
Silent features of Scrum
• Scrum is light-weighted framework
• Scrum emphasizes self-organization
• Scrum is simple to understand
• Scrum framework help the team to work together
Lifecycle of Scrum
• Sprint:
A Sprint is a time-box of one month or less. A new Sprint starts
immediately after the completion of the previous Sprint.
• Release:
When the product is completed then it goes to the Release
stage.
• Sprint Review:
If the product still have some non-achievable features then it
will be checked in this stage and then the product is passed to
the Sprint Retrospective stage.
• Sprint Retrospective:
In this stage quality or status of the product is checked.
• Product Backlog:
According to the prioritize features the product is
organized.
• Sprint Backlog:
Sprint Backlog is divided into two parts Product
assigned features to sprint and Sprint planning meeting.
Scrum Explanation
• During sprint planning, the team pulls a small chunk from the top of that wish list, a
sprint backlog, and decides how to implement those pieces.
• The team has a certain amount of time, a sprint, to complete its work – usually two to
four weeks – but meets each day to assess its progress (daily scrum).
• Along the way, the Scrum Master keeps the team focused on its goal.
• At the end of the sprint, the work should be potentially shippable, as in ready to hand
to a customer, put on a store shelf, or show to a stakeholder.
• As the next sprint begins, the team chooses another chunk of the product backlog and
begins working again.
Scrum benefits
• The product is broken down into a set of manageable and understandable chunks.
• Customers see on-time delivery of increments and gain feedback on how the
product works.
• If any team member leaves in the middle of a project, it can have a huge negative
impact on the project
• Quality is hard to implement until the team goes through an aggressive testing process
Extreme Programing (XP)
20
Extreme programming practices (a)
Principle or practice Description
Incremental planning Requirements are recorded on story cards and the stories to be
included in a release are determined by the time available and
their relative priority. The developers break these stories into
development ‘Tasks’. See Figures 3.5 and 3.6.
Small releases The minimal useful set of functionality that provides business
value is developed first. Releases of the system are frequent
and incrementally add functionality to the first release.
Simple design Enough design is carried out to meet the current requirements
and no more.
Test-first development An automated unit test framework is used to write tests for a
new piece of functionality before that functionality itself is
implemented.
Refactoring All developers are expected to refactor the code continuously as
soon as possible code improvements are found. This keeps the
code simple and maintainable.
• In XP, a customer or user is part of the XP team and is responsible for making
decisions on requirements.
• These are written on cards and the development team break them down into
implementation tasks. These tasks are the basis of schedule and cost estimates.
• The customer chooses the stories for inclusion in the next release based on their
priorities and the schedule estimates.
23
Refactoring in XP
• Programming team look for possible software improvements and make these
improvements even where there is no immediate need for them.
• This improves the understandability of the software and so reduces the need
for documentation.
• Changes are easier to make because the code is well-structured and clear.
• Scrum teams typically work in iterations (called sprints) that are from two weeks to one
month long. XP teams typically work in iterations that are one or two weeks long.
• Scrum teams do not allow changes into their sprints. XP teams are much more open to
change within their iterations.
• Scrum product owner prioritizes the product backlog but the team determines the
sequence in which they will develop the backlog items. XP teams work in a strict
priority order. Features to be developed are prioritized by the customer and the team
is required to work on them in that order.