Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "1 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme Programming Joint Advanced Student School (JASS) XP EXTREME PROGRAMMING."— Presentation transcript:

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

2 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 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 4 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme?

5 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 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 7 JASS 2006, Sergey Konovalov, Stefan Misslinger XP XP values Courage Communication Simplicity Feedback

8 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 9 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Extreme Programming Rules and practices Designing Testing Coding Planning http://www.extremeprogramming.org

10 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 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 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 13 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Testing ■ Extreme testing? ■ Code test first ■ Unit tests ■ Acceptance tests Testcase is the specification

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

15 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 16 JASS 2006, Sergey Konovalov, Stefan Misslinger XP public class CustomerTest extends junit.framework.TestCase { public CustomerTest(String name) { super(name); } } Example

17 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 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 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 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 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 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 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 24 JASS 2006, Sergey Konovalov, Stefan Misslinger XP Have fun and thank you!

25 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? http://industriallogic.com/games/pairdraw.html


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

Similar presentations


Ads by Google