Anda di halaman 1dari 28

Chapter 3

◼ Agile Development
Slide Set to accompany
Software Engineering: A Practitioner’s Approach, 7/e
by Roger S. Pressman

Slides copyright © 1996, 2001, 2005, 2009 by Roger S. Pressman

For non-profit educational use only


May be reproduced ONLY for student use at the university level when used in conjunction
with Software Engineering: A Practitioner's Approach, 7/e. Any other reproduction or use is
prohibited without the express written permission of the author.

All copyright information MUST appear if these slides are posted on a website for student
use.

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 1
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 slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 2
What is “Agility”?
◼ Effective (rapid and adaptive) response to change
◼ Facile communication among all stakeholders
◼ Emphasizes rapid delivery of operational software
◼ Adopts the customer as part of the team
◼ it recognizes that planning in an uncertain world has its
limits and that a project plan must be flexible

Yielding …
◼ Rapid, incremental delivery of software

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 3
Why Agile?
◼ Agile Methods were developed in an effort to overcome
perceived and actual weaknesses in conventional
software engineering

◼ In the modern economy, it is often difficult or impossible


to predict how a computer-based system will evolve as
time passes

◼ Market conditions change rapidly, end-user needs


evolve, and new competitive threats emerge without
warning

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 4
Why Agile?
◼ In many situations, you won’t be able to define
requirements fully before the project begins

◼ You must be agile enough to respond to a fluid business


environment

◼ Important Agile characteristic: ability to reduce the costs


of change throughout the software process.

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 5
Agility and the Cost of Change

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 6
Agility Principles – (1/3)
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 adapt change for the customer's 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 slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 7
Agility Principles – (2/3)
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 behavior
accordingly.

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 8
Agility Principles – (3/3)
◼ Not every agile process model applies these 12
principles with equal weight, and some models choose to
ignore (or at least downplay) the importance of one or
more of the principles

◼ However, the principles define an agile spirit that is


maintained in each of the process models

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 9
Agility – a debate
◼ There is considerable debate about the benefits and
applicability of agile software development as opposed
to more conventional software engineering processes.
◼ No one is against agility. The real questions are:
◼ What is the best way to achieve it?
◼ how do we build quality software that meets customers’
needs?
◼ How software scaled to meet customer’s needs
◼ There are no absolute answers to either of these
questions. Even within the agile school itself, there are
many proposed process models each with a subtly
different approach to the agility problem

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 10
Human Factors
◼ the process molds to the needs of the people and team, not the
other way around
◼ key traits must exist among the people on an agile team
and the team itself:
◼ Competence. (innate talent, SW skills, Knowledge about
processes)
◼ Common focus: (different tasks, different skills but same
common interest)
◼ Collaboration: (frequent collaboration of stakeholders)
◼ Decision-making ability: (freedom to control its own
destiny)
◼ Fuzzy problem-solving ability: (learn lessons from
problem solving)
◼ Mutual trust and respect. (respect for integrity)
◼ Self-organization.(self-defined, targets, schedule, Process) 11
Agile Process Models
◼ The most widely used of all agile process
models is Extreme Programming (XP). But
many other agile process models have been
proposed and are in use across the industry.
Among the most common are:

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 12
Extreme Programming (XP)
Model
◼ The most widely used approach to agile
software development
◼ XP uses an object-oriented approach as its
preferred development paradigm
◼ XP encompasses a set of rules and practices
that occur within the context of four framework
activities:
◼ planning,
◼ design,
◼ coding,
◼ testing.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 13
Extreme Programming (XP)
Model
◼ XP Planning
◼ Begins with listening (Requirements gathering,
understanding business context for the SW, a picture
of features and functionalities)
◼ Listening leads to the creation of “user stories” (again
focus is output, features and functionalities, story is
similar to use-cases, written by the customer)
◼ Customer assigns a value to the story.
◼ Agile team assesses each story and assigns a cost
◼ Stories are grouped to for a deliverable increment

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 14
Extreme Programming (XP)
Model
◼ A commitment is made on delivery date
◼ the XP team orders the stories that will be developed
in one of three ways:
• Development of all stories immediately
• Development of high priority stories at first
• Development of risky stories at first

◼ After the first increment “project velocity” is used to


help define subsequent delivery dates for other
increments

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 15
Extreme Programming (XP)
Model
◼ XP Design
◼ Follows the KIS (Keep It Simple) principle
◼ Encourage the use of CRC (Class-Responsibility-Collaborator)
cards (see Chapter 8)
◼ 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 story before
coding commences
◼ Encourages “pair programming” to code for a story
◼ One person codes, the other checks the coding standards used,
test whether the code follows the story being implemented, fulfills
the unit tests
◼ XP Testing
◼ All unit tests are executed daily (whenever code is modified)
◼ “Acceptance
These slides are designed tests”
to accompany Software are defined
Engineering: by Approach,
A Practitioner’s the customer
7/e and executed to
(McGraw-Hill, 2009) Slidesassess
copyright 2009 by Roger Pressman.
customer visible functionality 16
Extreme Programming (XP)
Model
spike solut ions
simple design
prot ot ypes
CRC cards
user st ories
values
accept ance t est crit eria
it erat ion plan

refact oring

pair
programming

Release
sof t ware increment unit t est
project velocit y comput ed cont inuous int egrat ion

accept ance t est ing


These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 17
Scrum
◼ Originally proposed by Schwaber and Beedle
◼ Scrum principles are consistent with the agile
manifesto and are used to guide development
activities within a process that incorporates the
following framework activities:
◼ requirements, analysis, design, evolution, and
delivery.

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman. 18
Scrum
◼ Scrum—distinguishing features
◼ 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
◼ Development work is partitioned into “packets”
◼ Testing and documentation are on-going as the
product is constructed

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 19
Scrum

20
Adaptive Software Development
◼ Originally proposed by Jim Highsmith
◼ ASD — distinguishing features
◼ Mission-driven planning
◼ Component-based focus
◼ Uses “time-boxing” (See Chapter 24)
◼ Explicit consideration of risks
◼ Emphasizes collaboration for requirements gathering
◼ Emphasizes “learning” throughout the process

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 21
Adaptive Software Development
adapt ive cycle planning Requirement s gat hering
uses mission st at ement JAD
project const raint s mini-specs
basic requirement s
t ime-boxed release plan

Release
sof t ware increment
adjust ment s f or subsequent cycles
component s implement ed/ t est ed
focus groups for feedback
formal t echnical reviews
post mort ems
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 22
Dynamic Systems Development Method
◼ Promoted by the DSDM Consortium (www.dsdm.org)
◼ DSDM—distinguishing features
◼ Similar in most respects to XP and/or ASD
◼ Nine guiding principles
• Active user involvement is imperative.
• DSDM teams must be empowered to make decisions.
• The focus is on frequent delivery of products.
• Fitness for business purpose is the essential criterion for acceptance of
deliverables.
• Iterative and incremental development is necessary to converge on an accurate
business solution.
• All changes during development are reversible.
• Requirements are baselined at a high level
• Testing is integrated throughout the life-cycle.

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 23
Dynamic Systems Development Method

DSDM Life Cycle (with permission of the DSDM consortium)


These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 24
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 slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 25
Feature Driven Development
◼ Originally proposed by Peter Coad et al
◼ FDD—distinguishing features
◼ Emphasis is on defining “features”
• a feature “is a client-valued function that can be
implemented in two weeks or less.”
◼ Uses a feature template
• <action> the <result> <by | for | of | to> a(n) <object>
◼ A features list is created and “plan by feature” is
conducted
◼ Design and construction merge in FDD

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 26
Feature Driven Development

Reprinted with permission of Peter Coad

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 27
Agile Modeling
◼ Originally proposed by Scott Ambler
◼ Suggests a set of agile modeling principles
◼ Model with a purpose
◼ Use multiple models
◼ Travel light
◼ Content is more important than representation
◼ Know the models and the tools you use to create them
◼ Adapt locally

These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 28

Anda mungkin juga menyukai