coming up: the manifesto for agile software development 1 software engineering: a practitioner’s...
TRANSCRIPT
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.
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
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
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
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
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
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.
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
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
Coming up: Others 10
ScrumScrum
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
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