An Introduction to Extreme Programming



Similar documents
Introduction. Motivational Principles. An Introduction to extreme Programming. Jonathan I. Maletic, Ph.D.

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries

Agile processes. Extreme Programming, an agile software development process

Introduction to extreme Programming (XP)

Extreme Programming, an agile software development process

Extreme Programming, an agile software development process

Agile processes. Extreme Programming, an agile software development process. Extreme Programming. Risk: The Basic Problem

Extreme Programming. Sergey Konovalov and Stefan Misslinger. May 23, 2006

Embracing Change with Squeak: Extreme Programming (XP)

Agile Testing and Extreme Programming

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

RUP and XP, Part I: Finding Common Ground

Agile with XP and Scrum

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

Development Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD

SOFTWARE ENGINEERING CSC 423 B - MWF EXTREME PROGRAMMING

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

AGILE SOFTWARE DEVELOPMENT. BY Sysop Technology Aurangabad

Software Quality and Agile Methods

History of Agile Methods

Agile in Financial Services A Framework in Focus

Agile So)ware Development

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Mindset: The New Psychology of Success Carol S. Dweck, Ph.D.

Extreme Programming: Strengths and Weaknesses

Introduction to Agile Software Development. EECS 690 Agile Software Development

Agile and Secure: Can We Be Both?

Advanced Software Engineering. Software Development Processes

EPL603 Topics in Software Engineering

MANAGEMENT S ROLE 1/16/ Copyright 2001, Net Objectives

Augmented reality enhances learning at Manchester School of Medicine

Set personal, academic, and career goals. Keep your expectations high.

Agile Software Development. Venkat Subramaniam Agile Software Development

Large Scale Systems Design G52LSS

Agile Software Development Methodologies and Its Quality Assurance

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

Seven Steps to Maximizing Central Plant Efficiency

ebook THE SURVIVAL GUIDE FOR MIGRATING TO A CLOUD- BASED CRM

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

Agile Software Project Management Methodologies

Software Development Life Cycle (SDLC)

Testing Rails. by Josh Steiner. thoughtbot

Agile Software Development. Mohsen Afsharchi

Test-Driven Development

WEALTH. The Great Secret of the Ages

SPECIFICATION BY EXAMPLE. Gojko Adzic. How successful teams deliver the right software. MANNING Shelter Island

A Capability Maturity Model (CMM)

Mental Skills Training

D25-2. Agile and Scrum Introduction

Could a Managed Services Agreement Save Your Company Tens of Thousands of Dollars Each Year?

Creating a High Maturity Agile Implementation

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Why Hire an Immigration Lawyer?

The E-Myth Revisited By Michael E. Gerber

extreme Programming An Overview

Génie Logiciel Avancé Cours 6 Extreme Programming

BCS Foundation Certificate in Agile Syllabus

Continuous Integration, Delivery and Deployment. Eero Laukkanen T Software Testing and Quality Assurance P

An Example Checklist for ScrumMasters

IT Governance In The Cloud: Building A Solution Using Salesforce.com

Basic Trends of Modern Software Development

Agile Methodologies and Its Processes

True Stories of Customer Service ROI: The real-world benefits of Zendesk

It starts like this...

Software Development Methodologies

Dom Jackson, Web Support Assistant Student Services Information Desk

Do you wish you could attract plenty of clients, so you never have to sell again?

10k. 8-week training program

Agile Development Overview

50 Tough Interview Questions

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

TIPS TO HELP YOU PREPARE FOR A SUCCESSFUL INTERVIEW

Starting Your Fee Based Financial Planning Practice From Scratch (Part 2) FEE008

Thinking about College? A Student Preparation Toolkit

Teacher Evaluation Using the Danielson Framework 6. A Professional Portfolio: Artifact Party A. Using Artifacts to Help Determine Performance Levels

Agile-Fall Process Flow Model A Right Candidate for Implementation in Software Development and Testing Processes for Software Organizations

THE LEADERSHIP CHALLENGE, 5 TH EDITION DISCUSSION QUESTIONS

Is Your Organization Agile-Ready?

Getting Started with Agile Project Management Methods for Elearning

Agile Software Development

INF5120 Modellbasert Systemutvikling

Software Development Life Cycle Models - Process Models. Week 2, Session 1

The Role of Agile Methodology in Project Management

CSE 435 Software Engineering. Sept 16, 2015

Sermon Promise in Unexpected Places Genesis 39:1-23, September 21, 2014

Arkansas State PIRC/ Center for Effective Parenting

A PARENT S GUIDE TO CPS and the COURTS. How it works and how you can put things back on track

Moderator: Albert Jeffrey Moore, ASA, MAAA. Presenters: Albert Jeffrey Moore, ASA, MAAA Kelly J. Rabin, FSA, MAAA Steven L. Stockman, ASA, MAAA

Enhancement of XP for Cloud Application Development Sara Tariq, Muhammad Mohsin Nazir, Farhat Saleemi

Génie Logiciel et Gestion de Projets. Software Processes Focus on Extreme Programming

Transcription:

An Introduction to Extreme Programming Ken Auer kauer@rolemodelsoft.com http://www.rolemodelsoft.com RoleModel Software, Inc. 5004 Rossmore Dr. Fuquay-Varina, NC 27526 919-557-6352 Page 1

The Joy of Software To change Hardware Soldering Iron Screwdrivers Change PCB To change Software Just change some symbols Page 2

The Reality? of Software Cost of Making Changes Changing Software is Hard Dependencies Time Page 3

The Promise of Specifications Examples from Traditional Engineering Do the Drawings first Design work is done on the drawings Construction is a separate act (at least in theory) In Software Capture Requirements up front Do design up front Hand over to coders Page 4

BDUF (Big Design Up Front) Cost of Making Changes Find errors faster Time Analysis Design Coding Testing Almost all method(ologie)s focus on this assumption no matter what they say about the evils of waterfalls! Page 5

The Uncomfortable Reality The Customers change requirements Customers believe software is easy to change Real requirements hard to nail down They re learning, conditions change Hard to get costs of features Materials keep changing Productivity of people/teams vary widely Later development tasks hard to estimate Developers learn as they program Too much flexibility costs Cannot design for unanticipated changes Often anticipate wrong changes... Page 6

In the moment Design Decisions Consider current needs Patch code when new needs appear is this really design??? Up front design Consider current needs and possible future needs Design to minimize change with future needs Patch code if unforeseen need appears Evolutionary design Consider current needs and possible future needs Trade off cost of current flexibility versus cost of later refactoring Refactor as changes appear Page 7

Object Orientation Object-orientation helps manage the complexity of software and reduce dependencies Why don t methods reflect this? Why don t methods exploit this? Many have tried but failed because they threw out the baby (discipline) when they threw out the bathwaterfall... Page 8

Another Approach Cost of Making Changes Reduce cost of later change Time The flatter this is, the less... Benefit of up-front design Cost of up-front design Cost of maintaining design artifacts Page 9

Extreme Programming Recognizing that the cost of changing a program no longer grows exponentially over time, XP relies on the complex interactions between simple development practices to reduce project risk, improve responsiveness to business and technical learning, and make programming more fun -Kent Beck Page 10

Playing to Win Don t just survive Tackle problems aggressively Tackle only the problems that you KNOW exist in the current context Communicate to expose and reduce risk Be confident in what you ve done and are doing based on feedback Page 11

The Four Values Simplicity Communication Feedback Aggressiveness Page 12

Simplicity What is the simplest thing that will possibly work? No code duplication Don t look too far ahead Simple things are easier to change You may not need it Page 13

Communication People talk to people People work with people People are honest when they don t know People share what they ve learned! Code communicates with people No documentation for documentation s sake Page 14

Feedback Measure things that matter Look at the measurements Share the measurements Believe the measurements tell you something Change what you can, accept what you can t Page 15

Aggressiveness You ve got to believe that you can do it Jump into the problem, don t be frozen by all the things that can go wrong Believe that when things do go wrong, you can fix them Page 16

XP Practices Page 17

Limited Up Front Design XP Iterations Detailed work in iterations Up front work for estimates and risk assessment Planning Game Customers develop stories (use cases) Development estimates stories Joint scheduling based on customer value and development risk Disciplined development Write tests first Only focus on story in hand Short development episodes in pairs Continuous Integration Always working, always clean Page 18

Development Practices A Day in the Life... Page 19

Stand up meeting Load latest stuff Identify tasks Pair up Test first, code second A Day In The Life What exists? Does it support what we need to do? Gotta test for that? Do the tests work? Is the code clean (enough)? If it s working, integrate it Do the tests work? Next task? Page 20

Development Practices A Little More Detail Page 21

Customer Split Business & Technical chooses scope sets priorities Developers estimate time required to implement requirements schedule within a release... Page 22

Customer Small Releases chooses smallest, most valuable set of requirements to put into production next Developers keep design simple to get requirements met as fast as possible Page 23

Metaphor Everyone tells the story of the system consistent with a central metaphor Validate the metaphor quickly with a concrete design Often 5-20 CRC level concepts Page 24

At all times the system has Simple Design simplest design that runs all test cases no code duplication no unnecessary classes or methods Constantly evolved through refactoring Page 25

Developers write and satisfy unit tests for all development write the tests first Customers/Testers Having Tests write functional tests for each requirement Ensure all tests can be run with one command Test often every change to a line of code?? Run all tests with every build Tests should be about 1/3 of production code Page 26

Having Tests Take the confidence of the moment, and preserve it When did it break? Allows refactoring collective code ownership feedback trust... Page 27

All Production Code Pair Programming written with two people sitting at one machine pass the keyboard and mouse back and forth Refactoring code wherever it needs clean up Write tests Everyone knows a little about the whole system Page 28

Refactoring Pair brings code back to simplicity the instant they see it drifting away Short episodes... Page 29

Continuous Integration System is built and successfully tested several times a day each time a pair gets the test cases for a simple development task running integration machine Page 30

Collective Code Ownership Code is fixed wherever it is found to be deficient Tests verify you haven t broken anything New tests verify it doesn t happen again Page 31

Iterations During Iteration Planning Cards can be shifted Time cannot During Iteration Clarification as we learn That s another iteration Page 32

Final Thoughts Undisciplined coding leads to a steep cost of change curve BDUF doesn t change the curve It attempts to reduce number of times you are bitten by the curve It adds up front cost that may never be recovered XP focuses on pushing the cost of change curve down Any of the XP practices might help your project Adopting all of the practices will allow you to attain a high level of productivity and produce high quality product at a sustained rate over an extended period of time Page 33

To Learn More... http://www.armaties.com http://c2.com/cgi/wiki?extremeprogrammingroadmap Books from AW-L: Extreme Programming Explained: Embrace Change Kent Beck Refactoring: Improving the Design of Existing Code Martin Fowler Extreme Programming Applied: Playing to Win (not yet available) Beck, Auer, Cunningham, Fowler, Jeffries Page 34