E X treme P rogramming Angelo Corsaro (modified by G. Blank, with notes from Extreme Programming FAQ and Mike Rogers, BrainLoaf.com ) Extreme Programming.

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.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
EXtreme Programming Overview.
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
Agile Development.
NAUG NAUG Knowledge Evening – th February 2007.
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 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 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 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.
An Agile View of Process
EXtreme Programming.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Development Landscape
Agile Programming Principles.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Embracing change with Extreme Programming Method Engineering Erik ten Brinke
EXtreme Programming. What’s wrong with software today? Software development is risky and difficult to manage Customers are often dissatisfied with the.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
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
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
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.
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
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.
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.
CSC 480 Software Engineering Extreme Programming.
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
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.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
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.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Project Management Software development models & methodologies
Embedded Systems Software Engineering
Software Development.
Planning User stories are written.
Alexander Kanavin Lappeenranta University of Technology
Extreme Programming.
What do you need to know about XP?
eXtreme Programming (XP) and eXtreme Modeling (XM)
Coming up: What is Agile?
Refactoring.
Agile software development
Extreme Programming (and Pair Programming)
Presentation transcript:

e X treme P rogramming Angelo Corsaro (modified by G. Blank, with notes from Extreme Programming FAQ and Mike Rogers, BrainLoaf.com ) Extreme Programming FAQBrainLoaf.com

2 Table of Contents Software Development Life Cycle (SWDLC). SWDLC Models. Cost Of Change. XP Introduction. XP’s Values. XP’s Principles. XP’s Practices. Putting it all Together. An XP Project Road-Map. References.

3 A Brief Overview… A Software Development Life Cycle (SWDLC) is an abstract representation of how software is developed. A SWDLC process can consist of Sequential Phases/Steps Parallel Phases/Steps The Phases of a SWDLC process are typically 1.Requirement Analysis 2.Design Specification 3.Coding and Unit Testing 4.Test and Integration 5.Acceptance Test 6.System and Software Maintenance Software Development Life Cycle

4 Generic Waterfall Model Assume a development process in which the step 1-6 outlined before are executed one after the other in sequential order. SWDLC Models Requirements Design Coding Unit Testing TestIntegration Acceptance Test Maintenance

5 Generic Waterfall Model This model in not practical, it fails in capturing the inherent iterative nature of SW development. SW development has concurrent and iterative aspects that this model fail to capture. Does not encourage prototyping and software reuse. The DOD SWDLC uses a variation of the Waterfall- Model. NASA uses a SWDLC development model that is a minor variation of the DOD SWDLC. SWDLC Models

6 Risk: The Basic Problem The basic problem of SW development is risk. Sample of risks are Schedule slips Project Cancelled System Goes Sour Defect Rate Business Misunderstood False Feature-Rich Staff Turnover Commonly used SWDLC fall short in coping with the previously cited risks. SWDLC Models

7 Spiral Model 1/2 Is a Risk-Driven approach to SW development. It encompass both the best features of both classic life cycles and prototyping. Planning Risk Analysis Prototyping Client Evaluation And Input DevelopmentPrototyping SWDLC Models Req Analysis Design Spec. Test and Integration. Coding Unit Testing Accptance Test

8 Spiral Model 2/2 The Spiral Model can be used effectively for both System Enhancement System Development Most SWDLC can be considered as a special case of the Spiral Model. The embedded Risk-Analysis built into the model avoids many of the difficulties that arise in other models. SWDLC Models

9 Cost of Change One Universal Assumption of SW Engineering is that the cost of changing a program rises exponentially over time One of the key assumption of XP is that the cost of changing a program, can be kept mostly constant over time. This assumption is based on real-world experience, and on the use of both better Programming Practice Programming Environments This assumption about the cost of change gives the opportunity of taking a totally different approach to SW development.

10 Extreme Programming (XP) XP does not involve bungee cords! And it predates Windows XP. Developed by Kent Beck (also developed CRC cards)Kent Beck “A light-weight methodology for small to medium-sized teams developing software in the face of vague or rapidly changing requirements” -- Kent Beck " Extreme Programming turns the conventional software process sideways. Rather than planning, analyzing, and designing for the far-flung future, XP programmers do all of these activities a little at a time throughout development.” IEEE Computer October 1999 XP Introduction

11 Main XP Concepts XP is a lightweight development process Instead of lots of documentation nailing down what the customer wants up front, emphasize continuous communication and feedback between developers and programmers Embrace change: iterate often, design and redesign, code and test frequently, keep the customer involved. Deliver software to the customer in short (2 week) iterations Seeks to eliminate defects early, thus reducing costs XP is made of a collection of Values Rules/Principles Practices In XP values, principles and practices are often set to the extreme level, from here the name eXtreme Programming XP Introduction

12 The Four Core Values of XP Communication. Simplicity. Feedback. Courage. XP Values

13 Communication Often problem that arise in SW project can be tracked back to lack of communication. XP enforces the Communication Value by employing many practice that could not be carried without communicating (e.g. pair programming, unit testing etc.). XP employs a Coach whose job is that of noticing when people are not communicating and reintroduce them. XP Values

14 Simplicity ''Do the simplest thing that could possibly work'' (DTSTTCPW) principle (elsewhere known as KISS). An XP coach may say DTSTTCPW when he sees an XP developer doing something that is needlessly complicated. YAGNI principle (''You ain’t gonna need it'') Simplicity and Communication support each other mutually. XP Values

15 Feedback Feedback works in XP at different time scales. Programmers have feedback on a minutes time scale on the status of the system thanks to unit tests. When customers write new stories the programmers estimate those immediately to give prompt feedback to the customer about the quality of the stories. The customer review the scheduler every 2-3 weeks and provide prompt feedback to the developer. XP Values

16 Courage XP team should have the courage of throwing code away. XP team should have the courage of mainly refactor the architecture of the system, if architectural flaw are detected. Courage has in XP the same role that mutation has in genetic algorithms. Takes you out of local maximum/minimum. XP Values

17 Core XP Principles Rapid Feedback. Assume Simplicity. Incremental Change. Embracing the Change. Quality Work. XP Principles

18 Twelve XP Practices The Planning Game. Small Releases. Metaphor. Simple Design. Testing. Refactoring. Pair Programming. Collective Ownership. Continuous Integration. 40-Hours a Week. On-Site Customer. Coding Standards. XP Practices

19 XP Practices (1) The Planning Game. Customer and developers cooperate to produce the maximum business value as rapidly as possible. Customer comes up with a list of desired features for the system. Each feature is written out as a User Story, giving each feature a name and describes in broad strokes what is required. User stories are typically written in 2-3 sentences on 4x6 story cards. Developers estimate how much effort each story will take, and how much effort the team can produce in a given time interval (iteration). Project velocity = how many days can be committed to project per week. Customer decides which stories to implement in what order, and when and how often to produce a production releases of the system. XP Practices

20 XP Practices (2-4) Small releases. Start with the smallest useful feature set. Release early and often, adding a few features each time. Releases can be date driven or user story driven. System metaphor. Each project has an organizing metaphor, which provides an easy to remember naming convention. Simple design. Always use the simplest possible design that gets the job done. The requirements will change tomorrow, so only do what's needed to meet today's requirements (remember, YAGNI). XP Practices

21 XP Practices (5) Continuous Testing Before programmers add a feature, they write a test for it. When the suite runs, the job is done. Tests in XP come in two basic flavors. Unit Tests automate testing of functionality as developers write it.  Each unit test typically tests only a single class, or a small cluster of classes.  Unit tests typically use a unit testing framework, such as JUnit.JUnit Acceptance Tests (or Functional Tests) are specified by the customer to test that the overall system is functioning as specified.  When all the acceptance tests pass for a given user story, that story is considered complete.  Could consist of a script of user interface actions and expected results that a human can run.  Ideally acceptance tests should be automated, either using the unit testing framework, or a separate acceptance testing framework. XP Practices

22 XP Practices (6) Pair programming. Two programmers work together at one machine. Driver enters code, while navigator critiques it. Periodically switch roles. XP Practices Research results: Pair programming increases productivity. Higher quality code in about half the time. Increased satisfaction/decreased frustration). Williams, L., Kessler, R., Cunningham, W., & Jeffries, R. Strengthening the case for pair programming. IEEE Software, 17(3), July/August Requires proximity in lab or work environment.

23 XP Practices (7-9) Refactoring. Refactor out any duplicate code generated in a coding session. You can do this with confidence that you didn't break anything because you have the tests. Collective code ownership. No single person "owns" a module. Any developer can work on any part of the code base at any time. Continuous integration. All changes are integrated into the codebase at least daily. Tests have to run 100% both before and after integration. XP Practices

24 XP Practices (10-12) 40-hour work week. Programmers go home on time. In crunch mode, up to one week of overtime is allowed. More than that and there’s something wrong with the process. On-site customer. Development team has continuous access to a real live customer, that is, someone who will actually be using the system, or a proxy. Coding standards. Everyone codes to the same standards. Ideally, you shouldn't be able to tell by looking at it who on the team has touched a specific piece of code. XP Practices

25 Putting it all Together Planning User Stories Release Planning Release Plan Make Frequent Small Releases Project Velocity Iterative Development Iteration Planning Move People Around Daily Stand Up Meeting Fix XP When it Breaks Designing Simplicity is the Key Choose a System Metaphor CRC Cards Spike Solution Never add Functionality Early Refactor Mercilessly

26 Daily Standup Meeting Goal: Identify items to be accomplished for the day and raise issues Everyone attends, including the customer Not a discussion forum Take discussions offline Everyone gets to speak 15 minutes

27 XP Project

28 XP Project Iteration

29 XP Project Development

30 XP Project Coding

31 XP vs. Rational Unified Process XPRUP Primary Communication Medium Short Daily Face to Face meetings, Pair Programming Client Status Meetings, Design Meetings Development MethodologyCode, Refine, TestDesign, Document, Code, Test Focuses onDelivering software quicklyFollowing the process to develop good software Quality FocusEliminate Defects as early as possible in the process using whole team Eliminate defects on a scheduled basis with a separate team

32 References Extreme Programming Explained, Kent Beck Addison Wesley