Unit 1 Notes Agile Soft Dev Edit by Sapan Jain Sir
Unit 1 Notes Agile Soft Dev Edit by Sapan Jain Sir
The Agile method is flexible and customer-focused. Although methodologies similar to Agile were already
being practiced, the Agile model wasn't official until 2001, when seventeen software developers joined
together to figure out a solution to their frustrations with the current options and came up with the
Manifesto for Agile Software Development, also known as the Agile Manifesto.
Agile Manifesto:
1. Customer focus - Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
2. Embrace change and adapt - Welcome changing requirements, even late in development. Agile processes
harness change for the customer's competitive advantage.
3. Frequent delivery of working software - Deliver working software frequently, from a couple of weeks to a
couple of months, with a preference to the shorter timescale.
4. Collaboration - Business people and developers must work together daily throughout the project.
5. Motivated teams - Build projects around motivated individuals. Give them the environment and support they
need, and trust them to get the job done.
6. Face-to-face conversations - The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
7. Working software - Working software is the primary measure of progress.
8. Work at a sustainable pace - Agile processes promote sustainable development. The sponsors, developers,
and users should be able to maintain a constant pace indefinitely.
9. Agile environment - Continuous attention to technical excellence and good design enhances agility.
10. Simplicity - The art of maximizing the amount of work not done--is essential.
11. Self-organizing teams - The best architectures, requirements, and designs emerge from self-organizing teams.
12. Continuous Improvement - At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behaviour accordingly.
(1) Extreme Programming (XP) - Compared with Scrum, XP is more prescriptive about software engineering best-
practices, and more deliberately addresses the specific kinds of quality-of-life issues facing software development
teams.
(2) Agile Scrum - In rugby, the term scrum describes a point in game play where players crowd together and try to gain
possession of the ball. The Scrum focuses on small, self-organizing teams that meet daily for short periods and work in
iterative sprints, constantly adapting deliverables to meet changing requirements.
Scrum Elements:
(1) THREE Roles: also knows as scrum team
Product Owner:
Scrum Master:
Team Member :
Scrum Team:
Scrum teams are cross-functional, collaborative, self-managed and self-empowered. Ideally, these scrum teams
should not be larger than 10 individuals, but they should be big enough to finish a user story within a sprint.
Every day, each scrum team should have a daily stand-up. A stand-up is a meeting that should last no longer than
15 minutes, and should take place at the same time every day. In fact, it's called a "stand-up" because ideally it
should be short enough for the team to accomplish it without having to sit down.
The goal of the daily stand-up is to keep all team members in sync with what each person has accomplished since the
last stand-up, what they are going to work on until the next stand-up, and what obstacles they have that may be
preventing them from finishing their task. The scrum master facilitates these stand-ups, and their job is to report
and/or help remove obstacles.
Product Backlog
Sprint Backlog
Product Increments
What is Backlog?
Sprints: In the Agile model, the software development life cycle still applies. Unlike the waterfall method, where there
is single long iteration of the SDLC, Agile is many quick iterations of the SDLC.
A Scrum iteration (called a Sprint) contains a list of tasks and work product outputs that will be done in a 4-week*
time-box.
These quick iterations are called sprints, and the purpose of sprints is to accomplish the frequent delivery of working
software principle of the Agile manifesto. A sprint is a specific period of time (time-boxed) which is usually between two
weeks and four weeks, but preferably as short as possible. The duration of the sprint should be determined before the
process begins and should rarely change.
During a sprint, each team takes on as many tasks, also known as user stories, as they feel they can accomplish within
the time-boxed duration of the sprint. When the sprint is over, the software should be working and deliverable, but that
doesn't necessarily mean that it will be delivered; a sprint doesn't always lead to a release, but Agile requires the
software to remain deliverable.
When a feature gets close to the top of the priority list, it gets broken down into smaller tasks called user stories. Each
user story should be small enough that a single team can finish it within a single sprint. If it's too large to be completed
in a single sprint, the team should break it down further. Because the software must be deliverable at the end of each
sprint, a user story must also abide by those rules. A user story is a simple statement of what a user (or a role) needs,
and why. The suggested template for a user story is:
Completing a user story requires completing all of the phases of the SDLC. The user story itself should already have the
requirements defined by the product owner, and the team taking on the user story needs to come up with a design for
the task, implement it and test it.
(3) Lean - Based on Lean Manufacturing, the Lean method emphasizes elimination of wasted effort in planning and
execution and reduction of programmer cognitive load.
IMP NOTES points: An Agile methodology for developing software, Feature-Driven Development (FDD) is customer-
centric, iterative, and incremental, with the goal of delivering tangible software results often and efficiently. FDD in Agile
encourages status reporting at all levels, which helps to track progress and results.
FDD allows teams to update the project regularly and identify errors quickly. Plus, clients can be provided with
information and substantial results at any time. FDD is a favorite method among development teams because it helps
reduce two known morale-killers in the development world: Confusion and rework.
First applied in 1997 during a project for a Singapore bank, FDD was developed and refined by Jeff De Luca, Peter
Coad and others. The original project took 15 months with 50 people, and it worked; it was followed by a second, 18-
month long, 250-person project./p>
Since then, it’s become a pragmatic approach ideal for long-term, complex projects looking for a simple but
comprehensive methodology. While Scrum and new variations of Agile are more widely recognized methods (especially
outside of software development), FDD can be a good option for software development teams looking for a structured,
focused Agile methodology that can be scaled across the product organization and will deliver clear outcomes.
FDD prescribes that software development should proceed in terms of an overall model, broken out, planned, designed,
and built feature-by-feature. It specifies a process of modeling used to estimate and plan feature delivery, and a detailed
set of roles for both the core development team and support people.
(2) “During FDD, a feature should be delivered every 2-10 days – which differs from Scrum, in which sprints typically
last two, but sometimes four, weeks.”
(3) FDD values documentation more than other methods (Scrum and XP included), which also creates differences in the
roles of meetings.
(4) In Scrum, teams typically meet on a daily basis; in FDD, teams rely on documentation to communicate important
information, and thus don’t usually meet as frequently.
(5) Another key difference is the end user; in FDD, the actual user is viewed as the end user, whereas in Scrum it’s
typically the Product Owner who is seen as the end user.
Process #1: Develop an Overall Model ---- from step 1 to 3 project wise upfront design activities perform.
Process #2: Build a Features List.
Process #3: Plan By Feature
Process #4: Design By Feature --- in step 4 and 5 deliver the system by feature by feature.
Process #5: Build By Feature
Imp Note: (1) An overall model shape is formed during the first two steps, while the final three are repeated for each
feature. The majority (roughly 75%) of effort during FDD will be spent on the fourth and fifth steps – Design by Feature
and Build by Feature.
As with all Agile methodologies, the first step in FDD is to gain an accurate understanding of content and context of the
project, and to develop a clear, shared understanding of the target audience and their needs. During this time, teams
should aim to learn everything they can about the why, the what, and the for whom about the project they’re about to
begin (the next few steps will help clarify the how). This data-gathering can be thought of as stage 0, but one that
cannot be skipped. To compare product development with writing a research paper, this is the research and thesis
development step.
Once teams have a clear understanding of their goals, the targeted audience and their current (and potentially, future)
needs, the first named stage in FDD can begin: Developing an Overall Model.
Continuing the research paper metaphor, this stage is when the outline is drafted. Using the “thesis” (aka primary goal)
as a guide, the team will develop detailed domain models, which will then be merged into one overall model that acts as
a rough outline of the system. As it develops and as the team learns, details will be added.
Plan by features:
Construct initial schedule
◦ Formed on level of individual features
Prioritize by business value
Also consider dependencies, difficulty, and risks
Assign responsibilities to team members
◦ Determine Class Owners
◦ Assign feature sets to chief programmers
Build a features list
Use the information assembled in the first step to create a list of the required features. Remember, a feature is a client-
valued output. Make a list of features (that can be completed in two weeks’ time), and keep in mind that these features
should be purposes or smaller goals, rather than tasks.
Design by Feature:
A chief programmer will determine the feature that will be designed and build. He or she will also determine the class owners and
feature teams involved, while defining the feature priorities. Part of the group might be working on technical design, while others
work on framework. By the end of the design stage, a design review is completed by the whole team before moving forward.
Build by Feature:
This step implements all the necessary items that will support the design. Here, user interfaces are built, as are components detailed
in the technical design, and a feature prototype is created. The unit is tested, inspected and approved, then the completed feature can
be promoted to the main build. Any feature that requires longer time than two weeks to design and build is further broken into
features until it meets the two-week rule.
Conclusion
Feature-Driven Development is a practical Agile approach suited for long-term, complex projects. It is a suitable choice for
development teams seeking a simple but structured Agile method that is scalable and delivers predictable results.