Extreme Programming > an agile methodology <

Slides:



Advertisements
Similar presentations
Extreme Programming Patrick Mattis Alana Trafford Akarsh Sakalaspur.
Advertisements

Agile Software Development کاری از : مهدی هوشان استاد راهنما : استاد آدابی.
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
E X treme Programming & Agile Modeling Copyright © 2003 Patrick McDermott UC Berkeley Extension
Alternate Software Development Methodologies
NAUG NAUG Knowledge Evening – th February 2007.
Agile development By Sam Chamberlain. First a bit of history..
Software Life Cycles ECE 417/617: Elements of Software Engineering
Agile
6 December ’s  60’s “Cowboys” wrote software anyway that they could Difference between best programmers and worst as high as 28:1 (many sources)
XP – eXtreme Programming A gentle introduction. Cleviton Vinícius Jobson Ronan Thiago Rodrigues.
1 March Extreme programming. Presentations Tuesday Campus Tour Sami Says Hawks Thursday Read2Me UNCSET Oral Lab NetVis If helpful, invite your client.
Agile Software Development. Traditional Software Development 1.Initiation (RFP) 2.Feasibility study Technical – can we build it? Economic – should we.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Extreme Programming Mark Steverson. What Is Extreme Programming? ● Extreme Programming (XP) is a lightweight, agile methodology developed by Kent Beck.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Introduction to Agile Methodologies and Concepts Roy Osherove Principal, Team Agile Blog : ISerializable.com.
An Overview of Agile L e a d i n g C h a n g e T h r o u g h C o l l a b o r a t i o n.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Extreme Programming > an agile methodology
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Chapter 4 Agile Development
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Extreme Programming Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
Extreme Programming Sylvain Giroux October 3 rd, 2000.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP (not Microsoft) e X treme P rogramming Can KOMAR
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
Extreme Programming and Systems Engineering Similarities and Synergy (based on talk given to INCOSE New England Chapter) Joseph (Yossi) Weihs Sept 10 th,
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme Programming מתודולוגיה לפיתוח פרויקטי תוכנה.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Project Management Software development models & methodologies
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
Software Development.
Appendix B Agile Methodologies
Extreme Programming.
Waterfall and Agile Quality Techniques
روش‌های سريع الانتقال (چابک) توسعه نرم افزار
What do you need to know about XP?
eXtreme Programming (XP) and eXtreme Modeling (XM)
Extreme Programming Extreme programming is "a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly.
Chapter 3: Agile Software Processes
Coming up: What is Agile?
Sylvain Giroux October 3rd, 2000
Agile software development
Agile Development.
Extreme Programming (and Pair Programming)
Presentation transcript:

Extreme Programming > an agile methodology < Mark Kilby / SAIC Steve Raulerson & Matt Weber / CONVERGYS June 2002

Traditional Software Methodologies Seek to avoid chaotic “code & fix” approach Impose a disciplined process on software development Goal is to make development more efficient and predictable Strong emphasis on “planning” inspired by engineering disciplines

Reality Check…deviations from the plan Testing and Documentation slip first when the going gets tough Requirements ALWAYS change Business environment can change during software development Developers want to build FLEXIBILITY into the system to anticipate future needs of the customer Usually more flexibility than the customer requested EVERYONE WANTS QUALITY: Customer, PM, senior management and (especially) developers Most developers and managers try to sidestep or manipulate the bureaucracy & complexity of the process

So, Agile Methodologies ask… [1] If design is good, why not make it everyone’s job? If simplicity is good, why not use the simplest design that supports the currently desired functionality? If architecture is good, why not have everyone work at defining and refining the architecture continuously? If short iterations are good, why not make iterations really short (hours and days) instead of weeks and months? If requirements, design, and code reviews are good, why not do it all the time? If testing is good, why not do it all the time… even customers? If integration testing is good, why not do it several times a day?

Agile Methodologies Seek to address these questions and the “realities” of software development Maintain a repeatable, quality-driven process Properties of an Agile Methodology: Iterative development Short iterations (2-6 weeks) Working versions at conclusion of each iteration Fully integrated and tested Adaptable: can evolve with each iteration People-centric: developers & management equal

Agile Methodologies - Examples SCRUM Dynamic Systems Development Method (DSDM) Popular in UK; 9 practices similar to XP; being adopted by UK government Crystal Family & Adaptive Software Development (merged in 2001) Feature-Driven Development (FDD – Coad) Pragmatic Programming dX (agile form of RUP) Extreme Programming (XP) For an overview of agile methodologies, see [2]

Extreme Programming (XP) Receives the most press (or hype) Like most agile methodologies, use for… Small to medium-sized team (up to 30?) High risk projects Vague or rapidly changing requirements Adopts processes from other methodologies E.g., SCRUM, Crystal Used or experimented with at… Daimler-Chrysler, Ford, Capital One, IBM, and many others

Why XP? > revisit Reality Checks > a.k.a. Risks Schedule Slips Projects canceled Defect rates Business misunderstood Business changes Unnecessary functionality Staff turnover Lack of Discipline? Coding standards: How well are they followed? Code reviews: Are they effective?

XP > 4 Values Simplicity Communication Do the simplest thing that works for the current business need Hardest value for most software engineers to accept Communication Choose practices that will work better support communication At all levels: unit testing, pair programming, estimation Feedback …at all levels and timescales Minutes, days, weeks: unit tests, functional tests, early production Scope: as soon as customer writes a user story, a developer estimates Courage To rework design and code when needed To throw away code when no longer needed Without other 3 values, you’re just “hacking”

XP > Practices The 4 Values drive the practices: Simplicity, Feedback, Communication, Courage Think of them as “maximizing functions” Practice = Etude [3] In music, an etude is a piece of music practiced repeatedly to perfect a technique You may not use all the practices all the time on every project… …but repeated use of the XP Practices will make better software engineers out of your team and get you to a solution faster Practices work best when used together (SYNERGY)

XP > Practices > “Circles of Life” [4] On-site Customer Release Planning Small Releases Acceptance Tests Coding Standards Collective Ownership Continuous Integration Metaphor Sustainable Pace Pair Programming Unit Tests Refactoring Simple Design Customer – Team – Developer Pair – Team – Customer Different Roles within the Extreme Programming methodology work with some of the practices more than others. This “Circle of Life” diagram (adapted from Ron Jefferies papers on XP) shows how the customer is more involved with the “outer ring” practices, the team is involved in all practices, and developers, or pairs of developers are involved in some of the “inner ring” practices. Synergy >

XP > Practices > “Circles of Life” [4] On-site Customer Release Planning Small Releases Acceptance Tests Coding Standards Metaphor Refactoring Customer – Team – Developer Pair – Team – Customer Pair Programming Unit Tests Continuous Integration Collective Ownership Simple Design Sustainable Pace Synergy >

XP > Practices > On-Site Customer(s) Empowered to determine requirements, define functionality, set priorities, and answer questions for the programmers Daily, face-to-face customer interaction should… reduce the amount of hard-copy documentation and the high cost associated with its creation and maintenance < back 2 COL

XP > Practices > Release Planning a.k.a. “Planning Game” Requires the XP "customer" to define the business value of desired features User Stories Programmers (not just PM) provide cost estimates for those features Using this information, customer and developers perform a cost/benefit analysis of each feature enables them to make intelligent decisions about which features to implement and which to defer < back 2 COL

XP > Practices > Small Releases Put a simple system into production quickly, then release new versions on a very short cycle For example Release might be 2-3 months Each release might have multiple 2-4 week iterations Helps establish a “rhythm” Customer and team knows when feedback will occur Allows the real business value of the product to be evaluated in a real-world environment < back 2 COL

XP > Practices > Test-Driven Development a.k.a. “Test First”, “Test Infected” ACCEPTANCE TESTS: Customers are asked to provide acceptance tests in advance of the development of the system. (automated?) UNIT TESTS: Programmers write tests first based on user stories (requirements) and then create software that fulfills the requirements reflected in the tests. AUTOMATE, AUTOMATE, AUTOMATE (JUnit, XUnit) [4] By coding to meet test requirements, we ensure that mandatory features are provided < back 2 COL

XP > Practices > “Circles of Life” [4] On-site Customer Coding Standards Metaphor Pair Programming Unit Tests Refactoring Simple Design Customer – Team – Developer Pair – Team – Customer Acceptance Tests Release Planning Continuous Integration Collective Ownership Sustainable Pace Synergy > Small Releases

XP > Practices > Refactoring Programmers restructure system without changing its behavior to remove duplication, improve communication, simplify, or add flexibility Small steps Code, test, refactor, test, code, test, refactor Beck suggests [1] short cycle (10 minutes) Typical goal of refactoring is to move toward a design pattern Based on Martin Fowler’s work [6,7] < back 2 COL

XP > Practices > Pair Programming All production code written with 2 programmers at 1 machine One tactical, one strategic Pairing should be dynamic Members in pair switch roles every 30-60 minutes Change pairs each task Experiments showing effectiveness [8]

XP > Practices > Pair Programming (cont.) What does it buy you? Continuous Code Review Continuous requirements & domain knowledge reinforcement Continuous skills training (Java, Design Patterns, Refactoring, CM or IDE tools, etc.) Developers have more trouble with this concept than managers Need to try it a few times to see if it works Takes time to get acclimated More intense development experience < back 2 COL

XP > Practices > Simple Design Based on philosophy that highest business value is derived from the simplest program that will meet current requirements. Don’t over-engineer a solution! While many preach K.I.S.S., this concept is one of the hardest to apply! 2 common philosophies of XP teams: DTSTTCPW - Do The Simplest Thing That Could Possibly Work YAGNI - You Aren't Gonna Need It < back 2 COL

XP > Practices > “Circles of Life” [4] On-site Customer Coding Standards Collective Ownership Continuous Integration Metaphor Sustainable Pace Refactoring Customer – Team – Developer Pair – Team – Customer Acceptance Tests Pair Programming Release Planning Unit Tests Different Roles within the Extreme Programming methodology work with some of the practices more than others. This “Circle of Life” diagram (adapted from Ron Jefferies papers on XP) shows how the customer is more involved with the “outer ring” practices, the team is involved in all practices, and developers, or pairs of developers are involved in some of the “inner ring” practices. Simple Design Synergy > Small Releases

XP > Practices > Coding Standards Programmers write all code in accordance with rules emphasizing communication throughout the code Goal: Self-documenting code Because the “common language” is the code More than Javadoc; good Javadocs with clear inline comments < back 2 COL

XP > Practices > Continuous Integration Integrate & build the system several times a day Integrate every time a task is completed Let’s you know every day the status of the system < back 2 COL

XP > Practices > Metaphor The XP concept of “architecture” Guide all development with a single shared story of how the whole system works Defines a "system of names" and guides the team's development and communication < back 2 COL

XP > Practices > Collective Ownership Any programmer can change any code anywhere in the system at any time This works best if using Coding Standards, Test-Driven Development and Pair Programming (Synergy) Gives the team more flexibility for vacation, sick leave, turn over Progress doesn’t stop on a component because one of the team members is not present < back 2 COL

XP > Practices > Sustainable Pace Tired programmers often write lower-quality code Minimizing overtime and keeping programmers fresh will produce higher-quality code in less time Set 40-45 hours as a rule Based on team preference Corollary: Never work overtime a second week in a row Avoid burnout < back 2 COL

XP > 12 Practices > Synergy XP says: practices will fail individually but will work synergistically [1]

XP > Pros > Feedback Loops [9]                                                                              

XP > Pros Extreme = Continuous… Code reviews (pair programming) Unit testing Integration testing User acceptance testing Can you keep the customer happy with constant feedback, communication, and simplicity? Feedback through estimation, testing, short releases Gives user confidence Gives developers confidence Gives Management confidence Prototype & build (blatant iterative process)

XP > Pros If design is good, why not make it everyone’s job? (refactoring) If simplicity is good, why not use the simplest design that supports the current desired functionality? (simple design) If architecture is good, why not have everyone work at defining and refining the architecture continuously? (metaphor) If short iterations are good, why not make iterations really short (hours and days) instead of weeks and months? (short iterations & planning game)

XP > Pros If code reviews are good, why not do it all the time? (pair programming) If testing is good, why not do it all the time…even customers? (continuous unit and functional testing) If integration testing is good, why not do it several times a day? (continuous integration)

XP > Limitations XP is NOT a silver bullet! May not work for Teams over 30 Distributed teams Complex systems Integrating legacy code “Big M” organizations where methodology is rigid Burn-out organizations Where the more time you spend at work, the more valuable you are to the company Big ego developers Wrong physical environment But it can be adapted

XP > Cons Cultural shift can be difficult for Developers and Managers: Minor Culture Shift: Sustainable Pace, Coding Standards, Testing, Refactoring Major Culture Shift: On-Site Customer, Planning Game, Small Releases, Simple Design Extreme Culture Shift: Collective Ownership, Pair Programming, Metaphor Requires experienced OO developers (but not gurus) May not get a “customer” on-site May not get all of their time May not be a decision maker May break the internal culture

Does XP work within context of CMM? XP > FAQs Documentation? Code is the documentation (if conform to coding standards) Other documentation as needed Does XP work with UML? Use it if it makes sense for your customer/project Don’t let “pictures” and models bog you down See “Agile Modeling” [13] Does XP work within context of CMM? XP practices can map to CMM processes [10,11]

XP > FAQs Metrics Prototypes? Bug fixes? There are several to choose from The key is to make them visible (“The Big Visible Chart”) Prototypes? XP calls them “spikes” Treat it as a story for an iteration Bug fixes? Also can be treated as a story for an iteration

Convergence? Evolution? Future of XP? Conferences OOPSLA http://www.xpuniverse.com Now becoming “XP Agile Universe” Numerous others Convergence? Evolution?

Agile is NOT JUST Extreme Programming Agile Software Methodology Alliance http://www.agilealliance.org Representatives from Extreme Programming, SCRUM, DSDM, ASD-Crystal, Feature-Driven Development, Pragmatic Programming Recogize a need for an alternative to documentation-driven, heavyweight software development processes which doesn’t work for ALL projects Alliance formed Feb 2001 Similar to merging of Booch, OMT, and others into UML?

For more info, check out… The Central Florida Patterns Group FINIS Comments? Questions? References (see last slides) For more info, check out… The Central Florida Patterns Group http://groups.yahoo.com/group/cflpatternsgroup/

Contacting the Speakers Mark Kilby / SAIC kilbym@saic.com / kilby@computer.org Steve Raulerson / CONVERGYS steve.raulerson@convergys.com Matt Weber / CONVERGYS matt.weber@convergys.com

XP References Beck, Kent. “Extreme Programming explained”, 2000 Fowler, Martin. “The New Methodology”. Nov 2001. An overview of Agile Methodologies with brief descriptions of specific methodologies. http://www.martinfowler.com/articles/newMethodology.html Jefferies, Ron. “They’re called practices for a reason”, Sept 2000. http://www.xprogramming.com/xpmag/PracticesForaReason.htm Jefferies, Ron. “Circle of Life, Spiral of Death: Ways to Keep your XP Project Alive. Ways to Kill Your XP Project”. Invited Talk. XPUniverse, July 2001. Raleigh, NC http://www.junit.org - testing frameworks http://www.refactoring.org Fowler, Martin. Refactoring: Improving the Design of Existing Code. Addison-Wesley. 2000

XP References http://www.pairprogramming.com – many resources http://www.extremeprogramming.org - Live methodology manual like RUP http://www.xprogramming.org - many excellent articles from Ron Jefferies and others Paulk, Mark (SEI). “XP from a CMM Perspective”. Invited Talk. XPUniverse, July 2001. Raleigh, NC. http://c2.com/cgi/wiki?ExtremeProgrammingRoadmap - The Extreme Programming Roadmap on the Portland Pattern Repository. Where most of the discussions and good information take place in Wiki-style. http://www.agilemodeling.com – Scott Ambler’s site with information on forthcoming book. http://www.agilealliance.org - Non-profit organization dedicated to promote agile methodologies