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



Similar documents
Extreme Programming, an agile software development process

Agile processes. Extreme Programming, an agile software development process

Extreme Programming, an agile software development process

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

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

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

Introduction to extreme Programming (XP)

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

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

Introduction to Agile Software Development. EECS 690 Agile Software Development

History of Agile Methods

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

Agile and Secure: Can We Be Both?

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

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

An Introduction to Extreme Programming

Agile Development Overview

XP and TDD. Extreme Programming and Test Driven Development. Bertrand Meyer, Manuel Oriol Andreas Leitner. Chair of Software Engineering ETH Zurich

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

Agile with XP and Scrum

RUP and XP, Part I: Finding Common Ground

Large Scale Systems Design G52LSS

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

Java course - IAG0040. Unit testing & Agile Software Development

Agile Development with C#

Agile QA s Revolutionary Impact on Project Management

CSE 435 Software Engineering. Sept 16, 2015

Agile So)ware Development

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

Quality Assurance Software Development Processes

INF5120 Modellbasert Systemutvikling

Agile and Secure Can We Be Both? Chicago OWASP. June 20 th, 2007

Agile Planet. A Travel Guide to the Agile Universe Fabian Schiller. This book is for sale at

Agile Testing and Extreme Programming

Distributed Agile Development. Bapiraju Nandury Product Development Manager Bangalore Development Centre

A Capability Maturity Model (CMM)

Basic Trends of Modern Software Development

CMMI - The AGILE Way By Hitesh Sanghavi

Agile and Secure: OWASP AppSec Seattle Oct The OWASP Foundation

SOFTWARE PROCESS MODELS

Agile Software Development

extreme Programming An Overview

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

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

Agile Software Development. Mohsen Afsharchi

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

Agile Software Development in the Large

Software Development Life Cycle (SDLC)

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

The Role of Agile Methodology in Project Management

What Does Large Mean? Copyright 2003 by N. Josuttis and J. Eckstein 3. Why is Large an Issue?

Agile Software Development

Agile Models. Software Engineering Marco Scotto Software Engineering

Génie Logiciel Avancé Cours 6 Extreme Programming

How To Model In An Agile World

Agile Software Project Management Methodologies

Agile EAI November 2002 Martin Fowler Gregor Hohpe

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

Extreme Programming. As software organizations continue to move

SOFTWARE ENGINEERING CSC 423 B - MWF EXTREME PROGRAMMING

AGILE SOFTWARE DEVELOPMENT

D25-2. Agile and Scrum Introduction

Introduction to Agile Software Development Process. Software Development Life Cycles

Object-Oriented and Classical Software Engineering

The Agile approach Extreme Programming (XP) Implementing XP into a software project Introducing HCI design into agile software development Summary

Agile Software Development with Scrum. Jeff Sutherland Gabrielle Benefield

Digital Transformation of the Enterprise for SMAC: Can Scrum help?

Human Aspects of Software Engineering: The Case of Extreme Programming

Agile Methodologies XP and Scrum

Development Methodologies. Types of Methodologies. Example Methodologies. Dr. James A. Bednar. Dr. David Robertson

Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1

Scrum. in five minutes

Extreme Programming: Strengths and Weaknesses

EPL603 Topics in Software Engineering

AGILE BUSINESS INTELLIGENCE

Scrum and Agile methods The real world

Software Engineering. An Introduction. Fakhar Lodhi

Software Engineering I (02161)

Software Life Cycles and Configuration Management

Agile Software Development Methodologies and Its Quality Assurance

Agile Project Management By Mark C. Layton

A Viable Systems Engineering Approach. Presented by: Dick Carlson

Agile Projects 7. Agile Project Management 21

Software Development Methodologies

Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and

Transcription:

Agile processes Extreme Programming, an agile software development process Perdita Stevens School of Informatics University of Edinburgh What the spiral models were reaching towards was that software development has to be agile: able to react quickly to change. The Agile Manifesto http://agilemanifesto.org: We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. We ll now look in more detail at one agile process, XP. Extreme Programming Extreme Programming (XP) is a humanistic discipline of software development, based on values of communication, simplicity, feedback and courage People: Kent Beck, Ward Cunningham, Ron Jeffries, Martin Fowler, Erich Gamma... More info: www.extremeprogramming.org, Beck Extreme Programming Explained: Embrace Change Risk: The Basic Problem schedule slips project cancelled system goes sour defect rate business misunderstood false feature rich staff turnover Use XP when requirements are vague or changing

Key insight of XP Traditional methodologies are that way because the cost of coping with a requirements change or correcting a defect rises exponentially through the development lifecycle but what if it needn t be so? Then it is possible to be much more flexible. Keeping that cost down is partly luck (i.e. being in the kind of project where it s possible to do so) and partly judgement (e.g., following those of XP s practices, like refactoring, which help to make it so). XP classification of software development activities coding testing listening designing Illuminating exercise: map these onto standard activities and contemplate implications of differences. XP Practices The Planning Game Small releases Metaphor Simple design Testing Refactoring Pair programming Collective ownership Continuous integration 40-hour week On-site customer Coding standards The Planning Game Played with user story cards. Release planning game customer and developers Iteration planning game just developers Customer understands scope, priority, business needs for releases: sorts cards by priority. Developers understand risk, estimating: sorts cards by risk. Game captures, e.g., that you can t make a total release in less than the sum of the times it s going to take to do all the bits: that s against the rules.

On-site customer A customer someone capable of making the business s decisions in the planning game sits with the development team (maybe doing their normal work when not needed to interact with the development team), always ready to clarify, write functional tests, make small-scale priority and scope decisions. Small releases Release as frequently as is possible whilst still adding some business value in each release. This ensures that you get feedback as soon as possible and lets the customer have the most essential functionality asap. (May be talking about every week to every month outside XP each 6 months would be more usual even in an iterative project, longer not uncommon.) Metaphor Is basically XP s word for part of what other people call architecture it avoids the word architecture to emphasise that it doesn t just mean the overall structure of the system. Metaphor is intended to suggest an overarching coherence, easily communicated. Continuous integration Code is integrated and tested at most a few hours or one day after being written. E.g. when a pair wants to checkpoint they go to an integration machine, integrate and fix any bugs against the latest full build, add their changes to the central CM database.

Simple design Motto: do the simplest thing that could possibly work. Don t design for tomorrow: you might not need it. Testing Test everything that could break. Programmers write unit tests using a good automated testing framework (e.g. JUnit) to minimise the effort of writing running and checking tests. Customers, with developer help, write functional tests. Refactoring As we discussed before: but here refactoring is especially vital because of the way XP dives almost straight into coding. Later redesign is vital. A maxim for not getting buried in refactoring is Three strikes and you refactor : For example, consider removing code duplication. 1. The first time you need some piece of code you just write it. 2. The second time, you curse but probably duplicate it anyway. 3. The third time, you refactor and use the shared code. i.e. do refactorings that you know are beneficial (NB you have to know about the duplication and have permission to fix it... ownership in common) Pair programming All production code is written by two people at one machine. You pair with different people on the team and take each role at different times. There are two roles in each pair. One partner, the one with the keyboard and the mouse, is thinking about the best way to implement this method right here. The other partner is thinking more strategically about: Is this whole approach going to work? What are some other test cases that might not work yet? Is there some way to simplify the whole system so the current problem just disappears?

Collective ownership i.e. you don t have your modules which no-one else is allowed to touch. If any pair sees a way to improve the design of the whole system they don t need anyone else s permission to go ahead and make all the necessary changes. Of course a good configuration management tool is vital. Coding standards The whole team adheres to a single set of conventions about how code is written (in order to make pair programming and collective ownership work). Sustainable pace aka 40 hour week, but this means not 60, rather than not 35! People need to be rested to work effectively in the way XP prescribes. There might be a week coming up to deadlines when people had to work more than this, but there shouldn t be two consecutive such weeks. Mix and match? Can you use just some of the XP practices? Maybe... but they are very interrelated, so it s dangerous. E.g., if you do collective ownership but not coding standards, the code will end up a mess; if you do simple design but not refactoring, you ll get stuck!

Where is XP applicable? The scope of situations in which XP is appropriate is somewhat controversial. there are documentated cases where it has worked well for development in-house of custom software for a given organisation (e.g. Chrysler). A decade ago I wrote it seems clear to me that it wouldn t work for Microsoft: big releases are an essential part of the business; even the frequency of updates they do use annoys people. Now of course we have automated updates to OSs, Microsoft is a Gold Sponsor of a 2008 Agile conference... XP does need: team in one place, customer on site, etc. Agile is broader.