1 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme Programming Joint Advanced Student School (JASS) XP 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.
Extreme Programming Programming Practices Object Mentor, Inc. Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material.
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.
 User assignments (product owner)  ‘circle’  1 st sprint: ◦ Scrum Boards (informative workspace)  Product -, release -, sprint -, defect backlog 
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
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.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Extreme Programming Collaboration in Software Development Process.
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 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.
COMP4710 Senior Design Software Development Process.
03/12/2001 © Bennett, McRobb and Farmer Managing Object-Oriented Projects—DSDM and XP Based on Chapter 21 of Bennett, McRobb and Farmer: Object.
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.
Introduction to Agile Methodologies and Concepts Roy Osherove Principal, Team Agile Blog : ISerializable.com.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Extreme Programming Adam Cogan Database Architect ssw.com.au.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Figures – Chapter 3. Figure 3.1 The principles of agile methods PrincipleDescription Customer involvementCustomers should be closely involved throughout.
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: An Introduction Presentation by: Jon Banta.
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.
Extreme Programming.
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
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.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
CS3100 Software Project Management Agile Approaches.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
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.
EXtreme Programming and Open Source engineering paradigm A comparison
CSC 480 Software Engineering Extreme Programming.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
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.
Agile Methodologies (including: XP & Scrum) By Avi Wortzel
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.
Planning User stories are written.
Alexander Kanavin Lappeenranta University of Technology
Extreme Programming.
Rapid software development
What do you need to know about XP?
Chapter 3 – Agile Software Development
Coming up: What is Agile?
Agile Development – a new way of software development?
Extreme Programming.
Agile software development
Presentation transcript:

1 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme Programming Joint Advanced Student School (JASS) XP EXTREME PROGRAMMING

2 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Outline ■ What is XP? ■ Motivation ■ XP values ■ XP features ■ Rules and practices of XP ■ Example: Pair Programming ■ Conclusion ■ Experiment: Pair Drawing

3 JASS 2006, Sergey Konovalov, Stefan Misslinger XP What is XP? A system of practices that a community of software developers is evolving to address the problems of quickly delivering quality software, and then evolving it to meet changing business needs.

4 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme?

5 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Motivation XP solutions:  Short iterations, fast delivery  Whole team  Test driven development  Shared understanding  Humanity and productivity Common problems of software development:  Schedule slips  Business misunderstood  Defect rate  Management  Motivation of developers  Why do we need XP?

6 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Cost of change Time Motivation Requirements Analysis Design Implementation Testing Production Time  Economics of Software Development Classic approachXP approach Iterations

7 JASS 2006, Sergey Konovalov, Stefan Misslinger XP XP values Courage Communication Simplicity Feedback

8 JASS 2006, Sergey Konovalov, Stefan Misslinger XP XP features XP is the most suitable for: Small and medium size projects New technologies Projects with unclear requirements Risky projects XP improves skills by cross training No more than 20 developers in a team Using of XP in life-critical projects is questionable

9 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme Programming Rules and practices Designing Testing Coding Planning

10 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Development Business Development Business The planning game Desired features User stories Estimate stories Prioritize Plan overall release Plan next iteration Determine Project Velocity Development

11 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Simple program to explore potential solutions. Address only one problem at a time. Always use the simplest possible design that gets the job done. K.I.S.S. - Keep It Short and Simple Ongoing redesign of software to improve responsiveness to change The metaphor is a simple meaningful description of how the program works. Designing ■S■Simplicity ■S■System metaphor ■S■Spike solution ■R■Refactoring The metaphor is a simple meaningful description of how the program works.

12 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Code must be written to agreed standards. Java Naming Conventions Classes: Node, Reader, AssignableVariable Variables: node, reader, variable Member variables: m_imageSource, m_reader; Methods: append(), getSource(), deleteIfEmpty() Mutator Methods: setToyOwner(String ownerName) Any developer can change any line of code to add functionality, fix bugs, or refactor. 40-Hour Work Week Programmers go home on time. Coding ■ On-site customer ■ Collective ownership ■ Pair programming ■ Coding standards ■ No overtime The customer is always available.

13 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Testing ■ Extreme testing? ■ Code test first ■ Unit tests ■ Acceptance tests Testcase is the specification

14 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Pair Programming Example

15 JASS 2006, Sergey Konovalov, Stefan Misslinger XP What is our task?How do we calculate that?And how? Nice, so lets start with creating a 'customer' class. Example We have to calculate the fee for the rented DVDs. The price depends on the number of days that you rent a DVD. Let me see... Our cards says, that regular movies are 2EUR for 2 days. After the third day it's 1.5EUR per day. Wait! Let us write a testcase for it...

16 JASS 2006, Sergey Konovalov, Stefan Misslinger XP public class CustomerTest extends junit.framework.TestCase { public CustomerTest(String name) { super(name); } } Example

17 JASS 2006, Sergey Konovalov, Stefan Misslinger XP What's the first testcase? The simplest thing to start is renting one movie. Example And how? For every method we write asserts to assure that it is working. And where do we put the testcode? The best thing is, that we write a testcase-method testRentingOneMovie, which checks the renting-fee for the movie. The framework looks for all methods that begin with 'test' and runs them. Good, let's write down what we have so far. First we need a customer. And then we act like we have all the methods that we'd like to have. Right. We rent a DVD for one day and the fee should be 2 EUR. That's easy :)

18 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Example public class CustomerTest... public void testRentingOneMovie() { Customer customer = new Customer(); customer.rentMovie(1); assertTrue(customer.getTotalCharge() == 2); } }

19 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Ok. You want me to make this test running and forget everything else for the moment. Exactly. What would you do, if you only had to implement this single test? Example That's also easy :)

20 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Example public class Customer { public void rentMovie(int daysRented) { } public int getTotalCharge() { return 2; } } How extreme... But good :) Test a bit, code a bit, test a bit more

21 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Example public class CustomerTest... public void testRentingTwoMovies() { Customer customer = new Customer(); customer.rentMovie(1); customer.rentMovie(2); assertEquals(4, customer.getTotalCharge()); } } How extreme... But good :) Test a bit, code a bit, test a bit more

22 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Example public class Customer { private int totalCharge = 0; public void rentMovie(int daysRented) { totalCharge += 2; } public int getTotalCharge() { return totalCharge; } }

23 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Conclusion What you should take with you now ■ Communicate intensively ■ Test a bit, code a bit, test a bit more ■ Keep the design simple ■ Refactor ■ Enjoy having a safety net when refactoring

24 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Have fun and thank you!

25 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Experiment: Pair Drawing ■ How did you feel when you were drawing solo vs. in a pair? ■ Which of the drawings are more artistic / original? ■ Did you find yourself concentrating more or less during pairing? ■ Was it more fun to draw alone or in a pair? ■ What did you like and what didn’t you like about drawing alone or in a pair?