coming up: the manifesto for agile software development 1 software engineering: a practitioner’s...

12
Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Chapter 3 Agile Development Agile Development copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach. Any other reproduction or use is expressly prohibited.

Upload: hubert-hutchinson

Post on 22-Dec-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: The Manifesto for Agile Software Development 1

Software Engineering: A Practitioner’s Software Engineering: A Practitioner’s Approach, 7/eApproach, 7/e

Chapter 3Chapter 3Agile DevelopmentAgile Development

copyright © 1996, 2001, 2005

R.S. Pressman & Associates, Inc.

For University Use OnlyMay be reproduced ONLY for student use at the university level

when used in conjunction with Software Engineering: A Practitioner's Approach.Any other reproduction or use is expressly prohibited.

Page 2: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: What is “Agility”? 2

The Manifesto for The Manifesto for Agile Software Agile Software DevelopmentDevelopment

““We are uncovering better ways of developing We are uncovering better ways of developing software by doing it and helping others do it. software by doing it and helping others do it. Through this work we have come to value: Through this work we have come to value:

•Individuals and interactionsIndividuals and interactions over processes over processes and tools and tools •Working softwareWorking software over comprehensive over comprehensive documentation documentation •Customer collaborationCustomer collaboration over contract over contract negotiation negotiation •Responding to changeResponding to change over following a plan over following a plan

That is, while there is value in the items on the That is, while there is value in the items on the right, we value the items on the left more.”right, we value the items on the left more.”

agilemanifesto.orgagilemanifesto.orgKent Beck et alKent Beck et al

Page 3: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: An Agile Process 3

What is “Agility”?What is “Agility”?

Effective (rapid and adaptive) response to Effective (rapid and adaptive) response to changechange

Effective communication among all stakeholdersEffective communication among all stakeholders Drawing the customer onto the teamDrawing the customer onto the team Organizing a team so that it is Organizing a team so that it is

in control of the work in control of the work

performedperformed

Yielding …Yielding … RapidRapid, , incrementalincremental delivery of delivery of

softwaresoftware

Page 4: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: Extreme Programming (XP) 4

An Agile ProcessAn Agile Process

Is driven by customer descriptions of what Is driven by customer descriptions of what is required (scenarios)is required (scenarios)

Recognizes that plans are short-livedRecognizes that plans are short-lived Develops software Develops software iterativelyiteratively with a heavy with a heavy

emphasis on construction activitiesemphasis on construction activities Delivers multiple ‘software increments’Delivers multiple ‘software increments’ Adapts as Adapts as

changes changes

occuroccur

Page 5: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: Extreme Programming (XP) 5

Extreme Programming (XP)Extreme Programming (XP)

The The secondsecond most widely used agile process, most widely used agile process, originally proposed by Kent Beckoriginally proposed by Kent Beck

XP PlanningXP Planning Begins with the creation of “Begins with the creation of “user storiesuser stories”” Agile team assesses each story and assigns a Agile team assesses each story and assigns a

costcost Stories are grouped to form a Stories are grouped to form a deliverable deliverable

incrementincrement A A commitmentcommitment is made on delivery date is made on delivery date After the first increment “After the first increment “project velocityproject velocity” is used to help ” is used to help

define subsequent delivery dates for other incrementsdefine subsequent delivery dates for other increments

Page 6: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: Extreme Programming (XP) 6

Extreme Programming (XP)Extreme Programming (XP)

XP DesignXP Design Follows the Follows the KIS principleKIS principle Encourage the use of Encourage the use of CRC cardsCRC cards (see Chapter 8) (see Chapter 8) For difficult design problems, suggests the creation of “For difficult design problems, suggests the creation of “spike spike

solutionssolutions”—a design prototype”—a design prototype Encourages “Encourages “refactoringrefactoring”—an iterative refinement of the internal ”—an iterative refinement of the internal

program designprogram design XP CodingXP Coding

Recommends the Recommends the construction of a unit testconstruction of a unit test for a store for a store beforebefore coding coding commencescommences

Encourages “Encourages “pair programmingpair programming”” XP TestingXP Testing

All All unit tests are executed dailyunit tests are executed daily ““Acceptance testsAcceptance tests”” are defined by the customer and executed to assess are defined by the customer and executed to assess

customer visible functionalitycustomer visible functionality

Page 7: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: Dynamic Systems Development Method 7

Dynamic Systems Development Dynamic Systems Development MethodMethod

Promoted by the DSDM Consortium (Promoted by the DSDM Consortium (www.dsdm.org)) DSDM—distinguishing featuresDSDM—distinguishing features

Similar in most respects to XP Similar in most respects to XP Nine guiding principlesNine guiding principles

Active user involvement is imperative. Active user involvement is imperative. DSDM teams must be empowered to make decisions.DSDM teams must be empowered to make decisions. The focus is on frequent delivery of products. The focus is on frequent delivery of products. Fitness for business purpose is the essential criterion for acceptance of Fitness for business purpose is the essential criterion for acceptance of

deliverables.deliverables. Iterative and incremental development is necessary to converge on an accurate Iterative and incremental development is necessary to converge on an accurate

business solution.business solution. All changes during development are reversible. (configuration management)All changes during development are reversible. (configuration management) Requirements are baselined at a high levelRequirements are baselined at a high level Testing is integrated throughout the life-cycle.Testing is integrated throughout the life-cycle.

Page 8: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

DSDMDSDM

An agile approachAn agile approach A focus on frequent delivery of productsA focus on frequent delivery of products

deliver something "good enough" earlier is always deliver something "good enough" earlier is always better than to deliver everything "perfectly" in the endbetter than to deliver everything "perfectly" in the end

When should we not use it?When should we not use it? Cases where there is no “good enough”Cases where there is no “good enough”

ultradependable/safety critical softwareultradependable/safety critical software What else?What else?

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 8

Page 9: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: Scrum 9

ScrumScrum

Originally proposed by Schwaber and Originally proposed by Schwaber and BeedleBeedle

Scrum—distinguishing featuresScrum—distinguishing features Development work is partitioned into “Development work is partitioned into “packetspackets”” Testing and documentation are on-goingTesting and documentation are on-going as the product is as the product is

constructedconstructed Work occurs in “Work occurs in “sprintssprints” and is derived from a “” and is derived from a “backlogbacklog” of ” of

existing requirementsexisting requirements Meetings are very short Meetings are very short and sometimes conducted without chairsand sometimes conducted without chairs ““demosdemos” are delivered to the customer with the time-box ” are delivered to the customer with the time-box

allocatedallocated Currently seems to have overtaken XP as most popularCurrently seems to have overtaken XP as most popular

Page 10: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Coming up: Others 10

ScrumScrum

Page 11: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

Agile IdeaAgile Idea

Frequent idea: Fix time, not featuresFrequent idea: Fix time, not features

11

Functionality

Time Resources Functionality

Time Resources

Agile

Prescriptive

FIXEDFIXED

VARIABLEVARIABLE

Page 12: Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:

CriticismsCriticisms Lack of structure and necessary documentationLack of structure and necessary documentation Only works with senior-level developersOnly works with senior-level developers Incorporates insufficient software designIncorporates insufficient software design Requires meetings at frequent intervals at enormous expense to customersRequires meetings at frequent intervals at enormous expense to customers Requires too much cultural change to adoptRequires too much cultural change to adopt Can lead to more difficult contractual negotiationsCan lead to more difficult contractual negotiations Can be very inefficient— maybe code things multiple times as they change if Can be very inefficient— maybe code things multiple times as they change if

the requirements for one area of code change through various iterations, the requirements for one area of code change through various iterations, the same programming may need to be done several times over. Whereas if the same programming may need to be done several times over. Whereas if a plan were there to be followed, a single area of code is expected to be a plan were there to be followed, a single area of code is expected to be written once.written once.

Hard to develop realistic estimates of work effort because at the beginning Hard to develop realistic estimates of work effort because at the beginning of the project no one knows the entire scope/requirementsof the project no one knows the entire scope/requirements

Agile is feature driven, non-functional quality attributes are hard to be Agile is feature driven, non-functional quality attributes are hard to be placed as user storiesplaced as user stories

Can increase the risk of scope creep due to lack of detailed requirementsCan increase the risk of scope creep due to lack of detailed requirements

12Source: Wikipedia