13
1 The Manifesto for The Manifesto for Agile Software Agile Software Development Development 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 interactions Individuals and interactions over processes and tools over processes and tools Working software Working software over comprehensive documentation over comprehensive documentation Customer collaboration Customer collaboration over contract negotiation over contract negotiation Responding to change Responding 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.” Is there ever a situation where these Is there ever a situation where these “values” could get a project into trouble? “values” could get a project into trouble?

The Manifesto for Agile Software Development

  • Upload
    mimi

  • View
    19

  • Download
    0

Embed Size (px)

DESCRIPTION

The Manifesto for Agile Software Development. Is there ever a situation where these “values” could get a project into trouble?. “We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: - PowerPoint PPT Presentation

Citation preview

Page 1: The Manifesto for  Agile Software Development

1

The Manifesto for The Manifesto for Agile Software Agile Software DevelopmentDevelopment

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

•Individuals and interactionsIndividuals and interactions over processes and over processes and tools tools •Working softwareWorking software over comprehensive over comprehensive documentation documentation •Customer collaborationCustomer collaboration over contract negotiation over contract 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 right, That is, while there is value in the items on the right, we value the items on the left more.”we value the items on the left more.” Is there ever a situation where these “values” Is there ever a situation where these “values” could get a project into trouble? could get a project into trouble?

Page 2: The Manifesto for  Agile Software Development

2

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

Effective (rapid and adaptive) response to changeEffective (rapid and adaptive) response to change 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 in control of the work Organizing a team so that it is in control of the work

performedperformed

Yielding …Yielding … Rapid, incremental delivery of softwareRapid, incremental delivery of software

How is agile development different from the How is agile development different from the incremental and evolutionary approaches we incremental and evolutionary approaches we discussed in Chapter 3? discussed in Chapter 3?

Page 3: The Manifesto for  Agile Software Development

3

The 12 Principles of AgilityThe 12 Principles of Agility

Do any of the 12 principles of agility seem Do any of the 12 principles of agility seem more/less important than any of the others? more/less important than any of the others?

Think of ways that you could try to achieve each Think of ways that you could try to achieve each principle on a project. principle on a project.

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

Page 4: The Manifesto for  Agile Software Development

4

4.2 What Is An Agile 4.2 What Is An Agile Process?Process?

Human FactorsHuman Factors CompetenceCompetence Common focusCommon focus CollaborationCollaboration Decision-making abilityDecision-making ability Fuzzy problem solving abilityFuzzy problem solving ability Mutual trust and respectMutual trust and respect Self-organizationSelf-organization

Can you perform agile methodologies without talented and Can you perform agile methodologies without talented and skilled people?skilled people?

Can you perform prescriptive methodologies without talented Can you perform prescriptive methodologies without talented and skilled people?and skilled people?

Page 5: The Manifesto for  Agile Software Development

5

4.3.1 Extreme Programming 4.3.1 Extreme Programming (XP)(XP)

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

XP PlanningXP Planning Begins with the creation of “Begins with the creation of “user storiesuser stories” on 3x5 index cards” on 3x5 index cards Customer assigns each story a valueCustomer assigns each story a value Agile team assesses each story and assigns a Agile team assesses each story and assigns a costcost Stories are grouped together for a Stories are grouped together for a deliverable incrementdeliverable increment 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 define ” is used to help define

subsequent delivery dates for other incrementssubsequent delivery dates for other increments

Page 6: The Manifesto for  Agile Software Development

6

4.3.1 Extreme Programming 4.3.1 Extreme Programming (XP)(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 story for a story beforebefore coding coding commencescommences

Encourages “Encourages “pair programmingpair programming”” ““Collective ownership”Collective ownership” of code of code

XP TestingXP Testing All All unit tests are executed dailyunit tests are executed daily Continuous integration, Continuous integration, daily buildsdaily builds ““Acceptance tests”Acceptance 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: The Manifesto for  Agile Software Development

7

4.3.2 Adaptive Software 4.3.2 Adaptive Software DevelopmentDevelopment

Originally proposed by Jim HighsmithOriginally proposed by Jim Highsmith ASD — distinguishing featuresASD — distinguishing features

Speculation, collaboration, learningSpeculation, collaboration, learning Emphasizes Emphasizes collaborationcollaboration for requirements for requirements

gatheringgathering Emphasizes “Emphasizes “learninglearning” throughout the process” throughout the process

Page 8: The Manifesto for  Agile Software Development

8

4.3.3 Dynamic Systems Development 4.3.3 Dynamic Systems Development MethodMethod

Promoted by the DSDM Consortium (Promoted by the DSDM Consortium (www.dsdm.org))

DSDM—distinguishing featuresDSDM—distinguishing features 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 Iterative and incremental development is necessary to converge on an

accurate business solution.accurate business solution. All changes during development are reversible.All changes during development are reversible. 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.

Functional Model, Design & Build, ImplementationFunctional Model, Design & Build, Implementation Prototypes, 11 projects rolesPrototypes, 11 projects roles Less radical agile approachLess radical agile approach

Page 9: The Manifesto for  Agile Software Development

9

4.3.4 4.3.4 ScrumScrum

Originally proposed by Schwaber and BeedleOriginally proposed by Schwaber and Beedle Scrum—distinguishing featuresScrum—distinguishing features

Development work is partitioned into 30 day “Development work is partitioned into 30 day “sprintssprints”” Pre-sprintPre-sprint

Product ownerProduct owner Product backlog, release backlog, sprint backlog, sprint Product backlog, release backlog, sprint backlog, sprint

goalgoal SprintSprint

Scrum meetingsScrum meetings Scrum masterScrum master

Post-sprintPost-sprint

Page 10: The Manifesto for  Agile Software Development

10

4.3.5 4.3.5 CrystalCrystal

Proposed by Cockburn and HighsmithProposed by Cockburn and Highsmith Crystal—distinguishing featuresCrystal—distinguishing features

Actually a Actually a family of process modelsfamily of process models that allow that allow ““maneuverabilitymaneuverability” based on problem ” based on problem characteristics (clear, yellow, orange, red, etc.)characteristics (clear, yellow, orange, red, etc.)

Face-to-face communicationFace-to-face communication is emphasized is emphasized Suggests the use of “Suggests the use of “reflection workshopsreflection workshops” to ” to

review the work habits of the teamreview the work habits of the team

Page 11: The Manifesto for  Agile Software Development

11

4.3.6 Feature Driven 4.3.6 Feature Driven DevelopmentDevelopment

Originally proposed by Peter Coad et alOriginally proposed by Peter Coad et al FDD—distinguishing featuresFDD—distinguishing features

Emphasis is on defining Emphasis is on defining “features”“features” aa featurefeature “is a client-valued function that can be “is a client-valued function that can be

implemented in two weeks or less.”implemented in two weeks or less.” Uses a Uses a feature templatefeature template

<action> the <result> <by | for | of | to> a(n) <object><action> the <result> <by | for | of | to> a(n) <object>

A A features listfeatures list is created and “ is created and “plan by featureplan by feature” is ” is conductedconducted

Design and construction merge in FDDDesign and construction merge in FDD

Page 12: The Manifesto for  Agile Software Development

12

4.3.6 Feature Driven 4.3.6 Feature Driven DevelopmentDevelopment

Reprinted with permission of Peter CoadReprinted with permission of Peter Coad

Page 13: The Manifesto for  Agile Software Development

13

4.3.7 Agile 4.3.7 Agile ModelingModeling

Originally proposed by Scott AmblerOriginally proposed by Scott Ambler Suggests a set of agile modeling principlesSuggests a set of agile modeling principles

Model with a purposeModel with a purpose Use multiple modelsUse multiple models Travel light (only keep models w/ long term Travel light (only keep models w/ long term

value)value) Content is more important than representationContent is more important than representation Know the models and the tools you use to create Know the models and the tools you use to create

themthem Adapt locallyAdapt locally