CU-Boulder CSCI 5828 - Agile Development and Extreme Programming

Unformatted text preview:

Agile Development andExtreme ProgrammingCSCI 5828: Foundations ofSoftware EngineeringLecture 5: SupplementKenneth M. AndersonJanuary 29, 2007 © University of Colorado, 2007 2Credit where Credit is Due The material for this lecture is based oncontent from “Agile Software Development:Principles, Patterns, and Practices” by RobertC. Martin As such, some of this material is copyright ©Prentice Hall, 2003January 29, 2007 © University of Colorado, 2007 3Goals for this lecture (Very) Briefly introduce the concepts of AgileDesign and Extreme Programming Agile Design is a design framework Extreme Programming is one way to“implement” agile design Other agile life cycles include SCRUM, Crystal,feature-driven development, and adaptivesoftware development See http://www.agilealliance.org/ for pointersJanuary 29, 2007 © University of Colorado, 2007 4Outline Background on Agile Methods Extreme ProgrammingJanuary 29, 2007 © University of Colorado, 2007 5Agile Development (I) Agile development is a response to theproblems of traditional “heavyweight”software development processes too many artifacts too much documentation inflexible plans late, over budget, and buggy softwareJanuary 29, 2007 © University of Colorado, 2007 6Agile Development (II) A manifesto (from the Agile Alliance) “We are uncovering better ways of developingsoftware 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 theright, we value the items on the left moreJanuary 29, 2007 © University of Colorado, 2007 7Agile Development (III) From this statement of values, agile developmenthas identified twelve principles that distinguish agilepractices from traditional software life cycles Lets look at five of them Deliver Early and Often to Satisfy Customer Welcome Changing Requirements Face to Face Communication is Best Measure Progress against Working Software Simplicity is EssentialJanuary 29, 2007 © University of Colorado, 2007 8Deliver Early and Often to Satisfy Customer MIT Sloan Management Review published ananalysis of software development practices in 2001 Strong correlation between quality of software system andthe early delivery of a partially functioning system the less functional the initial delivery the higher the qualityof the final delivery! Strong correlation between final quality of software systemand frequent deliveries of increasing functionality the more frequent the deliveries, the higher the final quality! Customers may choose to put initial/intermediatesystems into production use; or they may simplyreview functionality and provide feedbackJanuary 29, 2007 © University of Colorado, 2007 9Welcome Changing Requirements Welcome change, even late in the project! Statement of Attitude Developers in agile projects are not afraid ofchange; changes are good since it means ourunderstanding of the target domain has increased Plus, agile development practices (such asrefactoring) produce systems that are flexible andthus easy to changeJanuary 29, 2007 © University of Colorado, 2007 10Face to Face Communication is Best In an agile project, people talk to each other! The primary mode of communication isconversation there is no attempt to capture all project information inwriting artifacts are still created but only if there is animmediate and significant need that they satisfy they may be discarded, after the need has passedJanuary 29, 2007 © University of Colorado, 2007 11Measure Progress against Working Software Agile projects measure progress by theamount of software that is currently meetingcustomer needs They are 30% done when 30% of requiredfunctionality is working AND deployed Progress is not measured in terms of phasesor creating documentsJanuary 29, 2007 © University of Colorado, 2007 12Simplicity is Essential This refers to the art of maximizing theamount of work NOT done Agile projects always take the simplest pathconsistent with their current goals They do not try to anticipate tomorrow’s problems;they only solve today’s problems High-quality work today should provide a simpleand flexible system that will be easy to changetomorrow if the need arisesJanuary 29, 2007 © University of Colorado, 2007 13The Other Seven The other seven principles are Deliver working software frequently Stakeholders and developers work together daily Build projects around motivated individuals Agile processes promote sustainable development Continuous attention to technical excellence and gooddesign enhances agility Agile team members work on all aspects of the project At regular intervals, the team reflects on how to becomemore effectiveJanuary 29, 2007 © University of Colorado, 2007 14Outline Background on Agile Methods Extreme ProgrammingJanuary 29, 2007 © University of Colorado, 2007 15Extreme Programming Extreme Programming (XP) takes commonsensesoftware engineering principles and practices toextreme levels For instance “Testing is good?” then “We will test every day” and “We will write test cases beforewe code” As Kent Beck says extreme programming takescertain practices and “sets them at 11 (on a scale of1 to 10)”January 29, 2007 © University of Colorado, 2007 16XP Practices The best way to describe XP is by looking atsome of its practices There are fourteen standard practicesCustomer Team MemberUser StoriesShort CyclesAcceptance TestsPair ProgrammingTest-Driven DevelopmentCollective OwnershipContinuous IntegrationSustainable PaceOpen WorkspaceThe Planning GameSimple DesignRefactoringMetaphorJanuary 29, 2007 © University of Colorado, 2007 17Customer Team Member The “customer” is made a member of thedevelopment team The customer is the person or group who definesand prioritizes features A customer representative should be “in the sameroom” or at most 100 feet away from thedevelopers “Release early; Release Often” delivers a workingsystem to the client organization; in between, thecustomer representative provides continuousfeedback to the developersJanuary 29, 2007 © University of Colorado, 2007


View Full Document

CU-Boulder CSCI 5828 - Agile Development and Extreme Programming

Documents in this Course
Drupal

Drupal

31 pages

Deadlock

Deadlock

23 pages

Deadlock

Deadlock

23 pages

Deadlock

Deadlock

22 pages

Load more
Download Agile Development and Extreme Programming
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Agile Development and Extreme Programming and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Agile Development and Extreme Programming 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?