Extreme Programming Sylvain Giroux October 3 rd, 2000.

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.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
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.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
13-Jun-15 Extreme Programming. 2 Software engineering methodologies A methodology is a formalized process or set of practices for creating software An.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Introduction to XP “When the tests all run, you’re done”
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
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.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
ITEC XP Object Mentor, Inc. Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material are Copyright © 1998, by Addison.
Diane Pozefsky. 1960’s  60’s “Cowboys” wrote software anyway that they could Difference between best programmers and worst as high as 28:1 (many sources)
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Development Landscape
Chapter 5 Software Process Models. Problems with “Traditional” Processes 1.Focused on and oriented towards “large projects” and lengthy development time.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Current Trends in Systems Develpment
Extreme Programming: Introduced Matthew Heusser Excelon Development – xndev.com - Presented to CS 611 at GVSU, 4/6/2005.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Describing Methodologies PART II Rapid Application Development* Systems Analysis and Design II.
Agile Modeling Theory. 2 Agile Modeling (AM) AM is a chaordic, practices-based process for modeling and documentation AM is a collection of practices.
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.
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.
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
XP – Extreme Programming
EXtreme Programming Development Adrian Williamson People, Technology and People and Technology Consultant.
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,
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
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.
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.
CSC 480 Software Engineering Extreme Programming.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
25-Feb-16 Extreme Programming. 2 Software engineering methodologies A methodology is a formalized process or set of practices for creating software An.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme Programming מתודולוגיה לפיתוח פרויקטי תוכנה.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Extreme Programming.
Extreme Programming.
Agile and XP Development
eXtreme Programming (XP) and eXtreme Modeling (XM)
Agile and XP Development
Coming up: What is Agile?
Sylvain Giroux October 3rd, 2000
Agile software development
Extreme Programming (and Pair Programming)
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

Extreme Programming Sylvain Giroux October 3 rd, 2000

Plan The Problem to Solve XP: What? Why? When? “X” ? Software Methodolgy Variables Values Rules Practices References

Risk: The Basic Problem Software development fails to deliver, and fails to deliver value. Schedule slips Project canceled System goes sour Defect rate Business misunderstood / changes False feature rich Staff turnover

Software methodology A software methodology is the set of rules and practices used to create computer programs. A heavyweight methodology has many rules, practices, and documents. It requires discipline and time to follow correctly. Rational Unified Process (1491 files in 159 folders) A lightweight methodology has only a few rules and practices or ones which are easy to follow.

Extreme Programming a lightweight discipline of software development for small size teams (2-10 people) to develop software quickly in an environment of rapidly-changing requirements.

Goal of XP to deliver the software that is needed when it is needed.

When to use XP? problem domains whose requirements change may not have a firm idea of what the system should do a system whose functionality is expected to change every few months. to address the problems of project risk. If your customers need a new system by a specific date the risk is high. If that system is a new challenge for your software group the risk is even greater. If that system is a new challenge to the entire software industry the risk is greater even still.

When to use XP? XP requires an extended development team. the developers the managers the customers Why? asking questions, negotiating scope and schedules, creating functional tests require more than just the developers be involved in producing the software.

When to use XP? Testability Productivity XP projects unanimously report greater programmer productivity when compared to other projects within the same corporate environment.

Why Extreme ? -- I 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 current functionality (the simplest thing that could possibly work).

Why Extreme ? -- II If architecture is important, everybody will work defining and refining the architecture all the time (metaphor) If integration testing is important, we’ll integrate and test several times a day (continuous integration). If short iterations are good, we’ll make the iterations really, really short –seconds and minutes and hours, not weeks and months and years (the Planning Game).

Four Variables We will control four variables in our projects Cost Time Quality Scope External forces (customers and managers) get to pick the values of 3 of the variables. The development team gets to pick the resultant value of the 4 th variable.

Values XP is based on Communication Simplicity Feedback Courage.

Value : communication Problems with projects can invariably be traced back to somebody not talking to somebody else about something important A programmer doesn’t tell someone else about a critical change in the design A programmer doesn’t ask the customer the right question, so a critical domain decision is blown A manager doesn’t ask a programmer the right question, and project progress is misreported

Value : communication and XP Practices XP practices that can’t be done without communication Unit testing Pair programming Task estimation

Value : simplicity What is the simplest thing that could possibly work? Not to look toward the things you’ll need tomorrow and next week and next month XP stance: It is better to do a simple thing today and pay a little more tomorrow to change if it needs it, than to do a more complicated thing today that may never be used anyway

Value : simplicity and XP Practices The more you communicate, the clearer you can see exactly what needs to be done and the more you have confidence about what really doesn’t need to be done The simpler your system is, the less you have to communicate about Practices Simple design Refactoring

Value : Feedback at scale of minutes and days Concrete feedback about the current state of the system Don’t ask me, ask the system Feedback for customers When customers write new stories (description of features), the programmers immediately estimate them Feedback on project progress Watching the completion of tasks to give the whole team feedback about whether they are likely to finish everything they set out to do in a span of time

Value : Feedback at scale of weeks and months The customers and testers write functional tests for all the stories (simplified use cases) implemented by the system. The customers review the schedule every two or three weeks to see if the team’s overall velocity matches the plan, to adjust the plan The system is put into production as soon as it makes sense, so the business can begin to “feel” what the system is in action and discover how it can best be exploited.

Value : Feedback and XP practices The more feedback you have, the easier it is to communicate Simple systems are easier to test XP practices The planning game Small releases Testing Pair programming Continuous integration On-site customer

Value : Courage Courage to take decisions Radical surgery on code Throwing code away Starting over from scratch Prototyping multiple design alternatives, and keep only one for “real” development

Last but not least Respect

Principles From the 4 values, a dozen or so of principles (rules) are derived to guide the development style

Central Principles Main principles Rapid feedback time between action and feedback is critical Assume simplicity Incremental Change Big change made all at once just don’t work Embracing change Preserves the most options while solving the most pressing problem Quality work Nobody likes working sloppy

Less central principles Teach learning No doctrine Small initial investment Too many resources too early in a project is a recipe for disaster Play to win Playing to win vs playing not to lose For sure we need to write reports, … but getting a working system is more important… Concrete experiments Every time you made a decision and you don’t test it, there is some probability that the decision is wrong.

Less central principles Open, honest communication Able to tell each other where there are problems in the code Able to express fears and get support Free to deliver bad news to customers and management, to deliver it early, and without being punished Work with people’s instincts, not against them XP is a process where following short-term self-interest (win, learn, be in control, good work…) also serves long-term team interest Accepted responsibility Not telling people what to do Does not mean that you always do exactly what you feel like doing

Less central principles Local adaptation Adapt XP principles and practices to local conditions Travel light You can’t expect to carry a lot of baggage and move fast Be prepared to change direction Artifacts Few Simple Valuable Honest measurement This will take hours (???)

Back to basics There are 4 activities to support Coding Testing Listening Designing

XP Practices What is a practice? the usual way of doing something Aim of practices in XP: Structure the 4 activities Coding, testing, listening, designing In XP, there are 12 practices

12 Practices The Planning Game Small Releases. Metaphor. Simple Design. Testing. Refactoring. Pair Programming. Collective Ownership. Continuous Integration. 40-hour Week. On-site Customer. Coding Standard.

Practice: The Planning Game The XP "customer“ define the business value of desired features The programmer provides cost estimates The XP "customer“ choose what needs to be done what needs to be deferred

Practice: Small releases XP teams put a simple system into production early, update it frequently on a very short cycle

Practice: Metaphor XP teams use common "system of names" and a common system description that guide development and communication We don’t literally mean “the system is…” Give everyone a coherent story within which to work Help everyone on the project understand the basic elements and their relationships

Practice: Simple design A program built with XP should be the SIMPLEST program that meets the current requirements. There is not much building "for the future".

Practice: Testing XP teams focus on validation of the software at all times. Programmers develop software by writing tests first, then software that fulfills the requirements reflected in the tests. Customers provide acceptance tests that enable them to be certain that the features they need are provided.

Practice: Refactoring XP teams improve the design of the system throughout the entire development This is done by keeping the software clean without duplication with high communication simple Yet complete

Practice: Pair Programming XP programmers write all production code in pairs, two programmers working together at one machine

Practice: Collective ownership All the code belongs to all the programmers This lets the team go at full speed, because when something needs changing, it can be changed without delay

Practice: Continuous integration XP teams integrate and build the software system multiple times per day This keeps all the programmers on the same page, and enables very rapid progress integrating more frequently tends to eliminate integration problems that plague teams who integrate less often

Practice: 40-hour week Tired programmers make more mistakes. XP teams do not work excessive overtime, keeping themselves fresh, healthy, and effective

Practice: On-site customer An XP project is steered by a dedicated individual who is empowered to determine requirements, set priorities, answer questions as the programmers have them

Practice: Coding standards to work effectively in pairs, to share ownership of all the code, all the programmers need to write the code in the same way with rules that make sure the code communicates clearly Software, naming, language, {}…

XP map A spike solution is a very simple program to explore potential solutions

References Kent beck, Extreme Programming Explained: Embrace Change, Addison Wesley, 2000 Martin FowlerMartin Fowler, Refactoring : Improving the Design of Existing Code, Addison-Wesley,