Extreme Programming Patrick Mattis Alana Trafford Akarsh Sakalaspur.

Slides:



Advertisements
Similar presentations
Agile Software Development کاری از : مهدی هوشان استاد راهنما : استاد آدابی.
Advertisements

OXFORD SOFTWARE ENGINEERING Software Engineering Services & Consultancy Slide 1.1 eXtreme Programming experiences with a new approach to software development.
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
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
Extreme Programming Programming Practices Object Mentor, Inc. Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material.
Agile Processes: eXtreme Programming
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
NAUG NAUG Knowledge Evening – th February 2007.
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
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.
Extreme Programming: Practices and Strategies Extreme Programming Practices and Strategies Mohammad Alshayeb Information and Computer.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development.
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.
Transitioning to XP or The Fanciful Opinions of Don Wells.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Agile Processes: eXtreme Programming Data taken from SDLC 3.0 book; Google; Scattered.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Agile Programming Principles.
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(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
One XP Experience: Introducing Agile (XP) Software Development into a Culture that is Willing but not Ready Joe Bergin * Fred Grossman * David Leip **
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.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP – Extreme Programming
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.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
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.
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.
Virtually Agile Astro Sabre (Matt Ganis) IBM, Senior Technical Staff Member Hawthorne, NY - September 20, 2007.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Agile Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
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)
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.
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.
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
Extreme Programming.
Waterfall and Agile Quality Techniques
The Extreme Programming Model
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?
Extreme Programming.
Agile software development
Extreme Programming (and Pair Programming)
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

Extreme Programming Patrick Mattis Alana Trafford Akarsh Sakalaspur

Presentation Outline Overview of Extreme Programming Key Practices of Extreme Programming Advantages of XP Disadvantages of XP Summary/Conclusions References/Links

Overview Extreme Programming (XP) was conceived and developed by Kent Beck to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. Extreme Programming nominates coding as the key activity. The programmer is the heart of XP.

Overview Why Extreme? XP takes commonsense principles and practices to extreme levels. 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). If design is good, we’ll make it part of everybody’s daily business (refactoring). If integration testing is important, then we’ll integrate and test several times a day. If short iterations are good, we will make the iterations really, really short – seconds, minutes and hours, not weeks, months and years.

Overview This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software rises dramatically over the course of time. The cost of change curve for XP is a flat curve, which is achieved by simple design, tests, and an attitude of constant refinement of the design.

Overview Historical Cost of Change Curve - The cost of change rising exponentially over time

Overview XP Cost of Change Curve - The cost of change may NOT rise over time

Overview Fundamentals of XP include: Writing unit tests before programming and keeping all of the tests running at all times. Integrating and testing the whole system--several times a day. Producing all software in pairs, two programmers at one screen. Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity. Putting a minimal system into production quickly and growing it in whatever directions prove most valuable.

Overview Why is XP so different?  XP doesn't force team members to specialize and become analysts, architects, programmers, testers, and integrators-- every XP programmer participates in all of these critical activities every day.  XP doesn't conduct complete up-front analysis and design-- an XP project starts with a quick analysis of the entire system, and XP programmers continue to make analysis and design decisions throughout development.  Develop infrastructure and frameworks as you develop your application, not up-front--delivering business value is the heartbeat that drives XP projects.  Don't write and maintain implementation documentation-- communication in XP projects occurs face-to-face, or through efficient tests and carefully written code.

Overview The four basic activities of Extreme Programming are coding, testing, listening, and designing. XP - What is involved: The four basic activities of Extreme Programming are coding, testing, listening, and designing. Coding: You code because if you don't code, at the end of the day you haven't done anything. Testing: You test because if you don't test, you don't know when you are done coding Listening: You listen because if you don't listen you don't know what to code or what to test Designing: And you design so you can keep coding and testing and listening indefinitely (good design allows extension of the system with changes in only one place)

XP Values/Principles There are four basic values in XP: Communication, Simplicity, Feedback, Courage Principles Rapid feedback Assume Simplicity Incremental Changes Embrace Change Quality Work

Key Practices of XP Planning Game Small releases Metaphor Simple design Testing Refactoring Pair Programming Collective ownership Continuous integration 40-hour week On-site Customer Coding Standards

Planning Game Business People Scope Priority Composition Release Date Technical People Estimates Consequences Process Detailed Scheduling

Small Releases Every release must be as small as possible Contain the most valuable business requirements Release has to make sense

Metaphor Helps understand Basic elements of the project Relationships

Simple Design The system must communicate everything you want to communicate No duplicate code The system should have the fewest possible classes The system should have the fewest possible methods

Testing Sources Programmers Customers Types of Testing Unit Testing Functional Testing

Refactoring After getting something to work we refactor Revise and edit Followed by running all the tests We cannot check in our code until: All tests are green. All duplication has been removed The code is as expressive as we can make it

Pair Programming Two programmers collaborate on the same design, algorithm, code or test case Pairing is dynamic Encourages communication, productivity and enhances code quality Pairing is useful for cross-training established employees and for training new employees Pair programming research reveals that: –Pairs use no more man-hours than singles –Pairs create fewer defects –Pairs create fewer lines of code –Pairs enjoy their work more

University of Utah Experiment: Pairs spent 15% more time on the program than individuals

University of Utah Experiment: Code written by pairs passed more test cases than code written by individuals

University of Utah Experiment: Pairs consistently implemented the same functionality produced by individuals in fewer lines of code

University of Utah Experiment: Learning how to program in an environment where there are rapidly tangible results is fun and allows one to learn faster

University of Utah Experiment: Conclusions The significant benefits of pair programming are that: many mistakes get caught as they are being typed in rather than in QA testing or in the field the end defect content is statistically lower the designs are better and code length shorter the team solves problems faster people learn significantly more about the system and about software development the project ends up with multiple people understanding each piece of the system people learn to work together and talk more often together, giving better information flow and team dynamics people enjoy their work more

Collective Ownership Any team member may add to the code at any time Everybody takes responsibility for the whole system Encourages simplicity: –Prevents complex code from entering the system Increases individual responsibility and personal power Reduces project risk: –Spreads knowledge of the system around the team

Continuous Integration Code is integrated and tested after a few hours Daily builds are for wimps –Build, end to end, at every check in –Check in frequently –Put resources on speeding build time –Put resources on speeding test time Reduces project risk: –You’ll never spend days chasing a bug that was created some time in the last few weeks Provides valuable human benefit during development

Forty Hour Week (Sustainable Pace) Overtime is a symptom of a serious problem on a project Occasionally, programmers may work one week of moderate overtime. Two weeks in a row is out of the question Programmers need to be well rested to work efficiently

On-Site Customer A real customer must sit with the team full time The on-site customer enables an XP team to explore business requirements as it needs to and gives direct access to someone who can make key decisions quickly Provides value to the company by contributing to the project, thus reducing project risk. In XP, if the system isn’t worth the time of one customer, maybe it’s not worth building.

Coding Standards Programmers write all code in accordance with rules adopted voluntarily by the team Make it impossible to tell who wrote what Having no standards slows pair programming and refactoring Constraints No duplicate code System should have the fewest possible classes System should have the fewest possible methods Comments should be minimized

Advantages/Disadvantages ADVANTAGES Customer focus increase the chance that the software produced will actually meet the needs of the users The focus on small, incremental release decreases the risk on your project: –by showing that your approach works and –by putting functionality in the hands of your users, enabling them to provide timely feedback regarding your work. Continuous testing and integration helps to increase the quality of your work XP is attractive to programmers who normally are unwilling to adopt a software process, enabling your organization to manage its software efforts better.

Advantages/Disadvantages DISADVANTAGES XP is geared toward a single project, developed and maintained by a single team. XP is particularly vulnerable to "bad apple" developers who: – don't work well with others –who think they know it all, and/or –who are not willing to share their "superior” code XP will not work in an environment where a customer or manager insists on a complete specification or design before they begin programming. XP will not work in an environment where programmers are separated geographically. XP has not been proven to work with systems that have scalability issues (new applications must integrate into existing systems).

Conclusion XP focuses on people Values team work over power XP works well when there are uncertain or volatile requirements XP is a process not a miracle cure for all software development problems

References/Links Books Kent Beck, "Extreme Programming Explained," Addison-Wesley, Giancarlo Succi, Michelle Marchesi, "Extreme Programming Examined," Addison-Wesley, Websites