Introduction to XP “When the tests all run, you’re done”

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.
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall B.1.
NAUG NAUG Knowledge Evening – th February 2007.
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
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.
1 March Extreme programming. Presentations Tuesday Campus Tour Sami Says Hawks Thursday Read2Me UNCSET Oral Lab NetVis If helpful, invite your client.
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.
Management 421 Computer Science 350. Overview Project Roles Software Development Process Extreme Programming Management/Developer Interaction in Extreme.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Roles Managers Technical Team Leaders Programmers Customers Database Administrators Instructors.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
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.
Lecture 4 Process and Method: An Introduction to the Rational Unified Process.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
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.
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.
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 Development Adrian Williamson People, Technology and People and Technology Consultant.
Implementing XP at PUT Copyright, 2000 © Jerzy R. Nawrocki Quality Management.
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
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.
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.
Testing, The Ugly Stepchild of Software Development Better Living through Software Testing Chris Berry – Feb 21, 2000 Chris Berry
CS5103 Software Engineering Lecture 02 More on Software Process Models.
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.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
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 © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix B Agile Methodologies B.1.
Copyright 2002 by RoleModel Software, Inc. Extreme Programming: So What? Roy W. Miller RoleModel Software, Inc.
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.
Planning Extreme programming
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Project Management Software development models & methodologies
Requirements Engineering Lecture 4
Appendix B Agile Methodologies
Extreme Programming.
What do you need to know about XP?
Agile and XP Development
Agile and XP Development
Coming up: What is Agile?
Sylvain Giroux October 3rd, 2000
Agile Development – a new way of software development?
Agile software development
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

Introduction to XP “When the tests all run, you’re done”

Options 4 XP is designed around the concept of options –Option to abandon –Option to switch –Option to defer –Option to grow and learn

The Four Variables 4 Management or the Customer chooses 3 of the four variables, the development team defines the fourth. 4 Cost –Cost is the amount of capital available, which defines resources. More resources don’t necessarily mean better quality or shorter time (remember Brooks?) 4 Time –The amount of time available for the project through delivery 4 Quality –Quality is the degree to which and aplomb with which functionality meets requirements 4 Scope –Scope is the amount of work to be done, the totality of the set of requirements. As requirements come and go, scope vacillates.

The Paradigm Shift 4 XP is based on the rejection of a fundamental and long-standing principle, that it costs less to make changes earlier in the development cycle rather than later. That the graph of cost to change is exponential across time. This fundamental principle has led to several strategies: –Better safe than sorry –Functional extravagance –Design extravagance –Proliferation of activities that may never provide a return on the investment 4 The fundamental technical premise of XP is that the graph of cost to change is not exponential but digressive, and as time goes by, the cost to change is asymptotic. “You make the big decisions as late in the process as possible.” This has several strategies: –You implement only what you have to, and add functionality later only if necessary –Design is parsimonious –Thoreau’s principle: Simplify, Simplify, Simplify. –Automated tests –Refactoring –Learning to drive analogy –informality

The Four Values 4 Communication –Communication is bipartite. Developers need to communicate with customers as well as between themselves 4 Simplicity –“What’s the simplest thing that could possibly work?” Let’s do that. 4 Feedback –Continuous and instant feedback to all artifacts –Continuous and instant feedback to the project progression –Continuous and instant feedback to code 4 Courage –The courage to change (alter design, throw away code) –The courage to decide –The courage to do –The courage to be

The Basic Principles of XP 4 Rapid feedback –instant evaluation of all work and deliverables 4 Assume simplicity –98% of problems can be solved with “ridiculous simplicity” –What happened to complexity? Complexity != complex solutions 4 Incremental change –Avoid big changes, make smaller changes more often (driving analogy) 4 Embracing change –Might as well. Heraclitus was right, Parmenides was wrong. You simply will not be stepping into the same river twice. 4 Quality work –Work ethic –Is Beck a little too hopeful on the human condition?

Subordinate Principles 4 Teach learning 4 Small initial investment 4 Play to win 4 Concrete experiments 4 Open, honest communication 4 Work with people’s instincts, not against them 4 Accepted not foisted responsibility 4 Local adaptation (of process) 4 Travel light (the nomadic team) 4 Honest measurement (no lying)

The Four Basic Activities 4 Coding 4 Testing 4 Listening 4 Designing

Dominance of Coding and Testing 4 Code is unambiguous and constant. It offers no opinions. 4 Code is a another language for communication (as in pair programming) 4 Tests allow for a secondary view into the code, from another angle 4 Tests verify that “what was meant” was actually implemented 4 Tests can validate performance as well as functionality 4 You are responsible for writing multiple unit tests, you write a simple test for every possible way to “break” your code. 4 Automated tests can prolong the longevity of the code, and provide continuous validation. 4 A testing mentality promotes more self-assured programming style, as successful tests yield confidence in the code.

The Practices 4 Planning – quickly determine the scope of the next iteration. Customers do the planning based on feedback from the developers. –“Software development is always an evolving dialog between the possible and the desirable.” 4 Small Releases – take baby steps in each iteration. Rank iterations according to those which deliver the most valuable business requirements. 4 Metaphor – define a simple story of how the system will work. It should be enlightening. 4 Simple design – few classes and methods, no duplicated logic 4 Testing – Developers write unit tests, Customers write functional tests 4 Refactoring – revisiting code with rules that simplify the code. “When the system requires that you duplicate code, it’s asking for refactoring.” 4 Pair Programming 4 Collective Ownership – anyone can change any code at any time.

The Practices, cont. 4 Continuous Integration – code is integrated every half or full day at most. Integration is putting new code with the current system. 4 Sane work week 4 On-site customer – customer needs to be around 4 Coding standards that all coders follow

Pair Programming 4 One programmer writes the code, at the low level. He/she “has the ball”, or at least the keyboard. 4 The other programmer looks at the code being written from a higher strategic level: –What additional tests could break this? –Can this be done more simply? (designing) –Have I seen this before? (Refactoring) –Did the guy with the ball just introduce a bug? –Is this the best approach to this problem? –Did the guy with the ball forget something? –Does a question need to be answered by the Customer? 4 Coding standards help reduce the need for reformatting code and bickering about style. 4 Pairs write tests together too, following the same principles.

“Problems” With Pair Programming 4 What happens on a geographically distributed development team? 4 Management will object to “waste”, you only get half as much done, or we’ll need twice as many programmers. 4 Pairs will naturally “self-select” in a Darwinian sense, militating against teaching learning.

Project Planning 4 Three phases: –Exploration –Commitment –Steering

Exploration Phase 4 Write a story (think “simplified” Use Case) 4 Estimate a story: how long will it take to code this? 4 Split a story: if a part of a story is more important than another, split it into two stories

Commitment Phase 4 Business chooses the scope and delivery date of the next iteration 4 Four movements: –Sort by value (must have, should have, nice to have) –Sort by (estimation) risk –Set velocity – how quickly do we expect to move on this? –Choose Scope – Ok, given the above, what are we to deliver and when is it due?

Steering Phase 4 Four movements: –Iteration Iterations run 1 to 3 weeks generally. Each iteration selects one or more stories to implement. Each iteration must yield a system that runs end-to-end, however embryonically. –Recovery: if development has overstated velocity, re- evaluate the set of stories (deliverables) –New story: If business realizes it’s got a new story, the new story is estimated, ranked, and added. –Reestimate: If development feels the plan is inadequate, it can reestimate the remaining stories and reset the estimated velocity.

Iteration Planning 4 Task planning 4 Three Phases: –Exploration Phase Write a task by breaking down the stories into tasks Split a task if necessary –Commitment Phase Accept a task Estimate a task –Steering Phase Implement a task Record Progress Recovery – what to do if overworked: manage scope Verify story with functional tests

What about Design Strategy? 4 Start with a test. A simple test. 4 Design and implement just enough to get that test running, and make sure you don’t break another test. 4 Add functionality and repeat 4 Refactor. 4 “The definition of the best design is the simplest design that runs all the test cases.”