SE - Unit 3
SE - Unit 3
Chapter 4
Agile Development
copyright © 1996, 2001, 2005
R.S. Pressman & Associates, Inc.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 1
2
Introduction
Agile is the ability to create and respond to change. It is a way of dealing with, and
ultimately succeeding in, an uncertain and turbulent environment.
The authors of the Agile Manifesto chose “Agile” as the label for this whole idea
because that word represented the adaptiveness and response to change which
was so important to their approach.
It’s really about thinking through how you can understand what’s going on in the
environment that you’re in today, identify what uncertainty you’re facing, and figure
out how you can adapt to that as you go along.
3
The Manifesto for
Agile Software Development
“We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
•Individuals and interactions over processes and
tools
•Working software over comprehensive
documentation
•Customer collaboration over contract
negotiation
•Responding to change over following a plan
That is, while there is value in the items on the
right, we value the items on the left more.”
Kent Beck et al
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 4
What is “Agility”?
■ Effective (rapid and adaptive) response to change
■ Encourages team structures and attitudes that
make communication easy
■ Effective communication among all stakeholders
■ Drawing the customer onto the team and works to
eliminate the “us and them” attitude.
■ Organizing a team so that it is in control of the
work performed
Yielding …
■ Rapid, incremental delivery of software
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 5
■ Agility can be applied to any software process.
However, to accomplish this, it is essential that:
■ The process be designed in a way that allows the project
team to adapt tasks and to streamline them, conduct
planning in a way that understands the fluidity of an
agile development approach, eliminate all but the most
essential work products and keep them lean, and
emphasize an incremental delivery strategy that gets
working software to the customer as rapidly as feasible
for the product type and operational environment.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 6
12 principles to achieve agility
1. Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes
harness change for the customer competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the
project.
5. Build projects around motivated individuals. Give them the environment
and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 7
8
9
12 principles contd..
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.
9. 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. The best architectures, requirements, and designs emerge from self-
organizing teams.
12. At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behaviour accordingly.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 10
An Agile Process
■ Is driven by customer descriptions of what is
required (scenarios)
■ Recognizes that plans are short-lived
■ Develops software iteratively with a heavy
emphasis on construction activities
■ Delivers multiple ‘software increments’
■ Adapts as changes occur
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 11
Human factors
■ Competence : software related skills and overall knowledge of the process.
■ Common Focus : focus on one goal – to deliver working software increment
to the customer within the time promised.
■ Collaboration : with one-another, customer and business managers.
■ Decision-making ability : team is given authority for technical and project
issues
■ Fuzzy problem-solving ability : team will have to deal with ambiguity and
be hit by changes.
■ Mutual trust and respect : “jelled” team or “the whole is greater than the
sum of the parts”
■ Self-organization :
⮚ Organizing itself for the work to be done.
⮚ Organizing the process to accommodate its local enviornment
⮚ Organizing work schedule to achieve delivery of software increment.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 12
Agile process models
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e
and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 13
Extreme Programming (XP)
■ The most widely used agile process, originally proposed
by Kent Beck
■ XP Planning
■ Begins with the creation of “user stories”
■ Agile team assesses each story and assigns a cost
■ Stories are grouped to for a deliverable increment
■ A commitment is made on delivery date
■ After the first increment “project velocity” (no. of stories
implemented during the first release) is used to help define
subsequent delivery dates for other increments and to identify if
over commitment has been made for all stories across the entire
development project.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 14
Extreme Programming (XP)
■ XP Design
■ Follows the (keep it simple) principle
■ Encourage the use of CRC cards (class responsibility collaborator)
■ For difficult design problems, suggests the creation of “spike solutions”—a
design prototype
■ Encourages “refactoring”—an iterative refinement of the internal program design
■ XP Coding
■ Recommends the construction of a unit test for a store before coding commences
■ Encourages “pair programming”
■ XP Testing
■ All unit tests are executed daily
■ “Acceptance tests” are defined by the customer and executed to assess customer
visible functionality
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 15
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 16
Extreme Programming (XP)
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 17
18
Extreme Programming improves a software project in five essential ways;
■ communication
■ simplicity
■ feedback
■ respect
■ courage.
19
■ Advantages
1) save costs and time required for project realization.
2) The developers who prefer to use this methodology create
extremely simple code
3) The whole process in XP is visible and accountable. Developers
commit what they will accomplish and show progress.
4) It is necessary to listen and make any changes needed in time.
Disadvantages:
1) XP is not the best option if programmers are separated
geographically.
2) There is a lot of pressure working with tight deadlines.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 20
Adaptive Software Development
■ Originally proposed by Jim Highsmith as a
technique for building complex software and
systems.
■ ASD — distinguishing features
■ Mission-driven planning
■ Component-based focus
■ Uses “time-boxing”
■ Explicit consideration of risks
■ Emphasizes collaboration for requirements gathering
■ Emphasizes “learning” throughout the process
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 21
Adaptive Software Development -
Phases
■ Speculation : Adaptive cycle planning is conducted using information like
⮚ Customer’s mission statement
⮚ Project constraints (delivery dates)
⮚ Basic requirements (to define increments)
■ Collaboration: People working together must trust one another to
⮚ Criticize without animosity
⮚ Assist without resentment
⮚ Work as hard or harder
⮚ Skill set to contribute to the work at hand
⮚ Communicate problems or concerns that leads to effective action
■ Learning : ASD team learns in 3 ways :
⮚ Focus groups
⮚ Formal Technical Reviews
⮚ Postmortems
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 22
Adaptive Software Development
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 23
Dynamic Systems Development Method
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 24
Dynamic Systems Development Method
■ Feasibility Study :establishes basic business requirements and constraints
associated with the application to be built.
■ B usiness Study : allow the application to provide business value, also defines the
basic application architecture and identifies the maintainability requirements for the
application.
■ Design and build iteration : —revisits prototypes built during functional model
iteration to ensure that each has been engineered in a manner that will enable it to
provide operational business value for end users.
■ Implementation : noted that (1) the increment may not be 100 percent complete or
(2) changes may be requested as the increment is put into place. In either case,
DSDMmaterials
These courseware development
are to be used inwork continues
conjunction by returning
with Software Engineering:
permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005
to Approach,
A Practitioner’s the functional model
6/e and are provided with iteration
25
Dynamic Systems Development Method
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 26
Scrum
■ Originally proposed by Beedle
■ Scrum—distinguishing features
■ Development work and the people who perform it are
partitioned into “clean and low-coupling partitions or packets”
■ Testing and documentation are on-going as the product is
constructed
■ Work occurs in “sprints” and is derived from a “backlog” of
existing requirements
■ Meetings are very short and sometimes conducted without chairs
■ “demos” are delivered to the customer with the time-box
allocated
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 27
Scrum
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 28
SCRUM
■ Backlog : Items can be added to backlog at any time. Backlog is a
prioritized list of work for the development team
■ Sprints : A sprint is a short, time-boxed period when a scrum
team works to complete a set amount of work
■ Sprint planning : The purpose of sprint planning is to define
what can be delivered in the sprint and how that work will be
achieved.
■ Scrum meetings :
⮚ What did you do since the last team meeting?
⮚ What obstacles are you encountering?
⮚ What do you plan to accomplish by the next team meeting?
■ Demos : Team members gather for informal demos and describe
the work they’ve done for that iteration.
29
Roles and Responsibilities
Scrum master : The scrum master is the master of scrum, who
ensures the scrum framework is followed. Scrum has a clearly
defined set of roles and rituals that should be followed and the scrum
master works with each member of the scrum team to guide and
coach the team through the scrum framework.
30
Product Owner : The product owner should not only understand the
customer, but also have a vision for the value the scrum team is delivering to
the customer. The product owner also balances the needs of other
stakeholders in the organization.
31
Development team : The development team are the people that do the work. At
first glance, you may think the “development team” means engineers. But that’s not always
the case. According to the Scrum Guide, the development team can be comprised of all
kinds of people including designers, writers, programmers, etc.
32
scrum tool
33
■ Organizations that have adopted agile Scrum have
experienced:
■ Higher productivity
■ Better-quality products
■ Reduced time to market
■ Improved stakeholder satisfaction
■ Better team dynamics
■ Happier employees
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 34
Here is an overview of the Scrum Framework
■ The product owner creates a product backlog (essentially, a wishlist of tasks that need to
be prioritized in a project)
■ The Scrum team conducts a sprint planning session where the tasks necessary to complete
items on the wishlist is broken down into small, more easily manageable chunks
■ The team creates a sprint backlog and plans its implementation
■ The team decides a time duration for every sprint (the most common intervals is probably
two weeks)
■ The team gets together every day for a brief Scrum meeting (often referred to as a Daily
Standup) where each member of the team shares daily updates, helping the team and the
project manager assess the progress of the project
■ The certified Scrum Master guides the team and keeps them focused and motivated
■ The stakeholders and the product owner conduct a review at the end of each sprint
This is the cycle followed by a Scrum team in a product development project. The three roles
mentioned above - the Product Owner, the Scrum Team, and the ScrumMaster together play a
major role in exercising this framework.
35
Advantages
● Scrum helps to deliver the product the highest possible value
● Scrum can help teams carry out project deliveries in a fast and effective way
● Scrum makes sure that money and time are used efficiently
● Large and complex projects can be separated into practically manageable parts
● Improvements analyzed during the sprint review
● Scrum works well for dynamic and fast-moving project improvement
● Scrum meetings allow the team to have neat visibility
Disadvantages
● Scrum often causes scope creep. That is because of the deficiency of a definite end-date.
● If team members do not work cooperatively then the probability of the failure of the project is high
● It is very challenging to adopt the framework of Scrum in large teams
● Only experienced team members can be successful in the framework
● Meetings held every day can sometimes disappoint team members
● A very huge problem will arise if any team member leaves the project in the middle of the progress
● Quality is difficult to achieve until the team undergoes a tough testing process
36
Crystal
■ Proposed by Cockburn and Highsmith
■ Crystal—distinguishing features
■ Actually a family of process models that allow
“maneuverability” based on problem characteristics
■ Face-to-face communication is emphasized
■ Suggests the use of “reflection workshops” to review the
work habits of the team
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are
provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 37