Extreme Programming David Li CTO, DigitalSesame. Problem in Developing Software The Basic Problem - Risk –Schedule slips –Project canceled –System goes.

Slides:



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

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.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
NAUG NAUG Knowledge Evening – th February 2007.
Agile development By Sam Chamberlain. First a bit of history..
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)
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.
Introduction to XP “When the tests all run, you’re done”
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 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.
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
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.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Extreme programming overview Agenda  Extreme programming goals  Extreme programming values  Extreme programming practices  The Extreme programming.
By Saravanan Bala. General Report 31 % of Software projects are cancelled 75 % of the software projects are considered failures by the people who initiated.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
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.
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.
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.
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.
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.
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.
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.
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
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.
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.
Project Management Software development models & methodologies
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Software Development.
Requirements Engineering Lecture 4
Planning User stories are written.
Extreme Programming.
eXtreme Programming (XP) and eXtreme Modeling (XM)
Coming up: What is Agile?
Sylvain Giroux October 3rd, 2000
Extreme Programming.
Agile software development
Extreme Programming (and Pair Programming)
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

Extreme Programming David Li CTO, DigitalSesame

Problem in Developing Software The Basic Problem - Risk –Schedule slips –Project canceled –System goes sour –Defect rate –Business misunderstood –Business changes –False feature rich –Staff turnover

Software Engineering Models Waterfall Approach –Sequential –Analysis, Design, Development, Test, and Release Spiral Approach –An iterative waterfall RUP (Rational Unified Process) –User-centered design –Business system modeling –Heavy investment up front on analysis

The Cost of Change In the past, the cost of changing software over time was exponential –Requirements: $1 –Analysis: $10 –Design: $100 –Implementation: $1,000 –Testing: $10,000 –Production: $100,000 In the present, XP inverts and flattens the cost change curve

System Control Variables Cost –Often he most constrained variable –Throwing more money at a problem does not always solve it Time –More time can improve quality and increase scope Quality –The most difficult control variable not as easy to measure –External quality and internal quality Scope

Variables Control External forces (managers, customers) get to pick the value of 3 of the 4 variables Development team picks the value of the 4th

The Four Values of XP Communication –Pair programming –On site customers Simplicity –“What is the simplest thing that could possibly work?” Feedback –“Have you written a test case for that yet?” Courage –it takes courage to fix architectural flaws 3/4 of the way through a project –it takes courage, and humility, to toss code

The Basic Principles Rapid feedback –from both customers and other developers Assume simplicity –solve today’s problems today, and tomorrow’s problems tomorrow Incremental change –solve problems with a series of the smallest changes that will make a difference

The Basic Principles Embracing change Quality work –of the 4 control variables, the only possible values are “excellent” and “insanely excellent”

Teach learning Small initial investment Play to win Concrete experiments Open, honest communication Work with people’s instincts, not against them The Basic Principles

Accepted responsibility Local adaptation Travel Light Honest measurement

The Basic Activities Coding –coding as learning –coding as communication Testing –“Anything that can’t be measured, doesn’t exist.” Lock, Berkeley, Hume –automated testing –unit tests and integration tests

The Basic Activities Listening –“Programmers don’t know anything.” Designing –creating a structure that organizes the logic in the system

The Practices The Planning Game Small Releases Metaphor Simple Design Testing Refactoring

The Practices Pair Programming Collective Ownership Continuous integration 40-hour week On-site customer Coding standards

Business people decide: –Scope –Priority –Composition –dates of releases Technical people decide: –Implementation estimates –Consequences –Process –Detailed scheduling The Planning Game

Small Releases Releases should be as small as possible

Metaphor Each project should be guided by a single overarching metaphor, I.e. desktop, business objects, such as customers and orders

Simple Design Passes all the tests Has no duplicated logic States every intention important to the team has the fewest possible classes and methods

Testing Automated tests are required for all program features

Is there a way of changing the existing program to make adding a new feature simple? Now that I’ve added the feature, can I do anything to make the program simpler? Refactoring

Pair Programming 2 people, 1machine, 1 keyboard, and 1 mouse 1 person is focused on the here and now, the other person is thinking of the bigger picture

Collective Ownership Anybody who sees an opportunity to add value to any portion of the code is required to do so

Continuous Integration Code is integrated and tested every few hours, not weeks or months

40-Hour Week “Overtime is a symptom of a serious problem on the project”

A real live customer(future product user) must site with the team…being available to answer questions On-site Customer

Coding Standards it should become impossible to tell who wrote what code no duplicate code do it right, or don’t do it at all!

How to Make this Work Management Strategy –Phased delivery, quick and concrete feedback, clear communication of business needs, and specialists for special tasks Facilities Strategy –Open workspaces with a common programming area

How to Make this Work Planning Strategy –The Planning game has 2 players, business and development –Relies on the creation of Story Cards

Customer Story and Task Card Date: ________ Story Number: _______ Type of Activity: New: __ Fix: __ Enhance: __ Priority: __________________ Prior Reference: ____________ Functional Test: ____________ Task Description: Notes: Task Tracking: DateStatusTo DoComments _____________________________________

Engineering Task Card Date: ________ Story Number: _______ Engineer: _________________ Task Estimate: ____________ Task Description: Software Engineer’s Notes: Task Tracking: DateStatusTo DoComments _____________________________________

Relies on continuous integration Collective ownership Pair programming Coding standards Development Strategy

Design Strategy Always have the simplest design that runs the current test suite Refactoring

Testing Strategy Write tests before we code Derive tests from the customer’s perspective

XP Project Lifecycle Exploration –Complete when there’s enough material on the story cards to make a good first release Planning –Customers and programmers agree on a date by which the smallest, most valuable set of stories will be done The plan for the first release should be between 2 – 6 months

XP Project Lifecycle Iteration to First Release –Each iteration produces a set of functional test cases for each scheduled story 1 – 4 weeks in duration Productionizing –The end product of a release…feedback cycle is tightened, iterations are weekly or even daily

XP Project Lifecycle Maintenance –The normal state of an XP project –Requires simultaneously producing new functionality, keeping the existing system running, incorporating new folks into the team, and bidding farewell to other members Death –The customer can’t generate any new stories –Or…the system isn’t delivering

XP Team Roles Programmer –The heart of XP –Requires the habit of simplicity Customer –The other half of the essential duality of Xprogramming –Must write good stories –Must write functional tests

XP Team Roles Tester –Focused on the customer..helps the customer generate functional tests Tracker –The conscience of the team…responsible for making estimates

Coach –Responsible for the process as a whole –Must notice when team is deviating from the process and call it to their attention Consultant –XP Projects often do not require specialists XP Team Roles

Big Boss –Provides the team with courage, confidence, and occasional insistence that they do what they say they do

20-80 Rule and XP The Rule: “80% of the benefit comes from 20% of the work” –This tells the XP Programmer to put the most valuable 20% of functionality into production, do the most valuable 20% of the design, and rely on the rule to defer optimization

What Makes XP Difficult? It’s not the concepts, it’s the execution! –There are so many factors that can throw the process off course