ITEC XP Object Mentor, Inc. Copyright  1998-1999 by Object Mentor, Inc All Rights Reserved Portions of this material are Copyright © 1998, by Addison.

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University.
E X treme Programming & Agile Modeling Copyright © 2003 Patrick McDermott UC Berkeley Extension
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall B.1.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Extreme Programming: Practices and Strategies Extreme Programming Practices and Strategies Mohammad Alshayeb Information and Computer.
Introduction to XP “When the tests all run, you’re done”
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Extreme Programming Theory & XPeriences
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.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Development Models: Waterfall and Spiral Sung Hee Park Department of Mathematics and Computer Science Virginia State University August 21, 2012.
Software SYSTEMS DEVELOPMENT
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.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Agile Programming Principles.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Current Trends in Systems Develpment
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 Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP – Extreme Programming
EXtreme Programming Development Adrian Williamson People, Technology and People and Technology Consultant.
Implementing XP at PUT Copyright, 2000 © Jerzy R. Nawrocki Quality Management.
Page 1 Copyright © 1999, RoleModel Software, Inc. An Introduction to Extreme Programming Ken Auer
Extreme Programming David Li CTO, DigitalSesame. Problem in Developing Software The Basic Problem - Risk –Schedule slips –Project canceled –System goes.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
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,
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
CS3100 Software Project Management Agile Approaches.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Extreme Programming Based on and
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
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.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Copyright 2002 by RoleModel Software, Inc. Extreme Programming: So What? Roy W. Miller RoleModel Software, Inc.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
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.
Embedded Systems Software Engineering
Software Development.
Requirements Engineering Lecture 4
Appendix B Agile Methodologies
Extreme Programming.
Extreme Programming.
What do you need to know about XP?
eXtreme Programming (XP) and eXtreme Modeling (XM)
Chapter 3: Agile Software Processes
Coming up: What is Agile?
Introduction to XP.
Sylvain Giroux October 3rd, 2000
Agile Development – a new way of software development?
Appendix B Agile Methodologies
Agile software development
Extreme Programming (and Pair Programming)
Presentation transcript:

ITEC XP Object Mentor, Inc. Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material are Copyright © 1998, by Addison Wesley Longman,Inc. and have been reproduced here with permission. Erik Meade

The Paradox of Process Improvement A good process will tell you to do what a good manager and staff would do anyway. -- Tom DeMarco

The Extreme Premise The flattening of the cost of change curve Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material are Copyright © 1998, by Addison Wesley Longman,Inc. and have been reproduced here with permission.

4 Boehm said… Cost of change grows exponentially with time $1 Requirements $10 Analysis $100 Design $1,000 Implementation $10,000 Test

5 When costs increase exponentially We need to do lots of up-front planning! Every bug that can be caught early saves us lots of money. Because models are cheaper to modify than code.

6 When costs increase exponentially We are willing to make a very large investment in up-front analysis and design models. Because the cost of late error discovery is horrendous. Ergo, waterfall mentality and big design up front (BDUF) are the conventional wisdom.

7 But a few things have changed in three decades. We don’t have to walk down the hall and submit a deck of cards to the operator and then wait a day for our compile to finish. Computers are 1000X faster and 1000X cheaper.  1,000,000 X power/$ !! Compile/test cycle has gone from days to seconds. We have relational DBMSs, CM tools, CASE tools, object databases, modular programming, information hiding, etc. Finally, OO languages and principles make software much easier to change.

8 So, perhaps the cost of change can be flat...for much of the life of the system. If tools, practices, and principles are properly employed.

9 When costs don’t dramatically increase with time. Up front work becomes a liability. We pay for up front speculative work, some of which will certainly be wrong. Ambiguity or volatility is reason to delay. So we don’t plan for something that never happens. It is cost effective to delay all decisions until the last possible moment. We only pay for what we use.

10 The value of waiting. If you implement a feature today, but it turns out not to be valuable, you lose money and opportunity. If you are uncertain and you can wait, then the risk goes away over time. Time answers questions and removes uncertainty.

11 Dealing with low cost changes. We need a process that creates and then exploits a flat change-cost curve. XP is such a process.

What is XP? A Quick Summary Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material are Copyright © 1998, by Addison Wesley Longman,Inc. and have been reproduced here with permission.

13 What is XP? XP is a lightweight methodology for small to medium sized teams developing software in the face of vague or rapidly changing requirements. -- Kent Beck. XP is: Humane. Honest. Productive. Professional. Fun.

14 What is XP? XP is a discipline of software development. There are certain things you must do. You must write tests before code. You must program in pairs. You must integrate frequently. You must be rested. You must communicate with the customer daily. You must follow the customer’s priorities. You must leave the software clean and simple by the end of the day. You must adapt the process and practices to your environment.

15 XP Motives Adaptability: In the business. In technology. In the team. Predictability. Overall plans and schedule. Feedback and tuning. Options. Change direction or priority at any time. Humanity. A mentality of sufficiency.

16 Developer Bill of Rights You have the right to know what is needed, with clear declarations of priority. You have the right to produce quality work at all times. You have the right to ask for and receive help from peers, superiors, and customers. You have the right to make, and update your own estimates. You have the right to accept your responsibilities instead of having them assigned to you.

17 The Customer Bill of Rights. You have the right to an overall plan, to know what can be accomplished, when, and at what cost. You have the right to get the most possible value out of every programming week. You have the right to see progress in a running system, proven to work by passing repeatable tests that you specify. You have the right to change your mind, to substitute functionality, and to change priorities without paying exorbitant costs. You have the right to be informed of schedule changes, in time to choose how to reduce scope to restore the original date. You can cancel at any time and be left with a useful working system reflecting investment to date.

18 Why is it Extreme? Because we take good practices to extreme levels (turning the knobs up to 10!): If code reviews are good, we’ll review code all the time (pair programming). If testing is good, everybody will test all the time (unit testing), even the customers (functional testing). If design is good, we’ll make it part of everybody’s daily business (Refactoring). If simplicity is good, we’ll always leave the system with the simplest design that supports its current functionality. (The simplest thing that could possibly work.

19 Turning the Knobs to 10 (Continued). If architecture is important, everybody will work defining and refining the architecture all the time (Metaphor). If integration testing is important, then we’ll integrate and test several time a day (continuous integration). If feedback is good, we’ll get feedback quickly -- seconds and minutes and hours, not weeks and months and years (the Planning Game).

20 What makes XP different? Its early, concrete, and continuing feedback from short cycles. Its incremental planning approach, which quickly comes up with an overall plan that is expected to evolve through the life of the project. Its ability to flexibly schedule the implementation of functionality, responding to changing business needs. Its reliance on automated tests to demonstrate the presence of features. Its reliance on oral communications, tests, and source code to communicate system structure and intent.

21 What makes XP different? (Continued) Its reliance on an evolutionary design process that lasts as long as the system lasts. Its reliance on the close collaboration of programmers. Its reliance on practices that work with both the short-term instincts of programmers and the long-term interests of the project.

22 What makes XP familiar? XP matches the behavior of successful programmers in the wild. Tests. Refactoring. Evolutionary delivery. Incremental planning. Low overhead.

23 Three Processes WaterfallIterativeXP Time Scope

24 XP Time Scales Years Months Release Iteration Weeks Implementation Days

25 Values XP team members value: Communication. Simplicity. Feedback. Courage.

26 XP Communication XP teams: Use a common system metaphor. Work in an open workspace. Continuously integrate the code. Have a customer teammate. Program in pairs. Collectively own the code. Frequently plan with and report status to the customer.

27 XP Simplicity XP teams: Do the simplest thing that could possibly work. Continuously simplify and improve the design through refactoring.

28 XP Feedback Write test cases before production code. Develop in small releases, And even smaller iterations. And even smaller tasks. And even smaller tests.

29 XP Courage XP team members are not afraid to: Stop when they are tired. Let every business decision be made by the customer. Ask customers to reduce the scope of a release. Ask their peers, or customers, for help. Design and implement only what is needed for today, trusting that we can add, tomorrow, what will be needed tomorrow. Make changes that improve the function or structure of code. Fix the design and retrofit existing code when the design is shown to be inadequate. Throw code away. Change the process when it’s not working.

30 Basic Principles Rapid feedback Assume simplicity Incremental change Embracing change Quality work

31 Rapid Feedback The best learning occurs when the time between action and feedback is short. So, get feedback, interpret it, and put it back into the system as quickly as possible. Get feedback for: Schedule. Quality. Process. Morale.

32 Assume Simplicity Treat every problem as if it can be solved with ridiculous simplicity. The time you save on 98% of problems for which this is true, will give you ridiculous resources to apply to the other 2% -- Paul B. MacCready Gossamer Condor. Do a good job on today’s problems. Sufficient for the day are the troubles therein. Let tomorrow worry about tomorrow.

33 Incremental Change Big changes made all at once just don’t work. Any problem is solved with a series of the smallest changes that make a difference. In XP The design changes a little at a time. The plan changes a little at a time. The team changes a little at a time.

34 Embracing Change The best strategy is the one that preserves the most options while actually solving your most pressing problem. We see the volatility of requirements as an opportunity, not as a problem.

35 Quality work Nobody likes working sloppy. Everybody likes doing a good job. The only acceptable quality levels are: Excellent. Insanely excellent... If lives are at stake. Otherwise: You don’t enjoy your work. You don’t work well. The project goes down the drain.