Extreme Programming, an agile software development process

Similar documents
The problem. extreme Programming (XP) Conclusions Resources. Problems in software development. Practices Why XP works Benefits of XP

EXtreme Programming explained: embrace change by Kent Beck, Addison Wesley, September 1999.

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

Foundations of Software Engineering. Process: Agile Practices Michael Hilton

Agile Development Methods: Philosophy and Practice. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed

XP is not hacking. extreme Programming. XP practices. Whole Team. When using XP you write as little documentation as possible.

User-centered System Design. Agile

Let s Talk About Being Agile

Lecture 1. Topics covered. Rapid p development and delivery is now often the most important requirement for software systems.

CS 5704: Software Engineering

Introduction to Extreme Programming

Extreme Programming (XP)

Chapter 2 Objectives. Pfleeger and Atlee, Software Engineering: Theory and Practice (edited by B. Cheng) Chapter 2.

Introduction to Software Life Cycles and Agile. CSCI 5828: Foundations of Software Engineering Lecture 03 09/02/2014

Extreme programming XP 5

Lecture 8 Agile Software Development

Foundations of software engineering

Agile Software Construction. This Course. Course information. Course Contents. Daisy: Software Engineering Agile Methods

Agile Manifesto & XP

Software Engineering Lecture 5 Agile Software Development

Lecture 5. Software Processes CSC 4700 Software Engineering. Software Development Processes. The software process

CS350 Lecture 2 Software Dev. Life Cycle. Doo-Hwan Bae

Agile. How would you implement agile methodologies and tools for web projects? What do you see as the benefits and challenges to doing this?

MIS Systems & Infrastructure Lifecycle Management 1. Week 10 March 24, 2016

CONTENTS. Introduction to Software Engineering. Software Process and Life Cycle Models. Software Life-Cycle Model-2. Chapter 1. Chapter 2.

Agile Software Development. Agile Software Development Basics. Principles of the Agile Alliance. Agile Manifesto. Agenda. Agile software development

Part 1. Software engineering Facts. CSC 4181 Compiler Construction Software Engineering Lectures. What is software engineering? What is software?

Objectives. Rapid software development. Topics covered. Rapid software development. Requirements. Characteristics of RAD processes

Software engineering Facts. CSC Compiler Construction Software Engineering Topics. What is software engineering? What is software?

Scrum - Introduction. Petri Heiramo. Agile Coach, CST

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

Lecture 29: Agile Design and Extreme Programming

Function Point Analysis and Agile Methodology

Introduction to Agile/Extreme Programming

The Importance of Story

Software development processes: from the waterfall to the Unified Process

Agile Software Development:

Software Development Life Cycle

Agile Development Processes. CSCE Lecture 3-08/31/2017

COMP 6481 Fall 2006 System Requirement Specifications

Dr J Paul Gibson, Dept. INF, TSP, Evry, France

Agile 101. Brent Hurley Chief Problem Solver Gira Solutions. Values, Principles

CS 4387/5387 SOFTWARE V&V LECTURE 6 TEST-DRIVEN DEVELOPMENT

Agile Software Development

Software Engineering Chap.3 - Agile Software Development

Agile Methodologies. Introduction ISSSR 2013/2014

Software LEIC. Lecture 23

Agile Projects 7. Agile Project Management 21

Software Engineering & Project Management Engr. Abdul-Rahman Mahmood MS, PMP, MCP, QMR(ISO9001:2000)

The ABC of Agile Business Change. James Yoxall BCS 17 September, 2013

Software Engineering Part 2

13. Team evolutionary developement

AGILE SOLUTIONS. Agile Basics

Software Engineering G Session 12 Sub-Topic 1 Risk Management in Adaptive Software Engineering. Dr. Jean-Claude Franchitti

SOFTWARE ENGINEERING SOFTWARE-LIFE CYCLE AND PROCESS MODELS. Saulius Ragaišis.

Extreme programming. Why XP?

Agile Software Development in a Regulated Environment. Natalie Custer

Chapter 3 Software Process Model

Software Process. Overview

SOFTWARE DEVELOPMENT. Process, Models, Methods, Diagrams Software Development Life Cyles. Part - V

AGILE methodology- Scrum

Success of Agile Environment in Complex Projects

Agile and Secure Can We Be Both? San Antonio AITP. August 15 th, 2007

Introduction to Agile Software Development

FIT2101 Software Engineering Process and Management

Agile & Lean / Kanban

ABHELSINKI UNIVERSITY OF TECHNOLOGY

18-642: Software Development Processes

Tuesday, October 25. Announcements

This document is copyrighted, the distribution of this document is punishable by law.

Processes and Life- Cycles. Kristian Sandahl

Scrum er ikke en religion

Russell Pannone February 10, 2009

Build Agile Knowledge - Participate in a sprint!

Chapter 3 Agile Software Development. Part 1b

Agile Program Development. Agile Manifesto 9/3/2013. What is Agile Development? 12 Principles of Agile Development 1 of 4

Chapter 3 Agile Software Development

Development Methodologies

From Adoption to Transition

EVERYTHING YOU VE HEARD ABOUT AGILE DEVELOPMENT IS WRONG

Public Procurement Beyond Defined Scope: A Primer on the Opportunities and Challenges of Modular/Agile Procurement

Agile/Lean & Safety: Perfect Match or Impossible Combination?

Processes and Life- Cycles. Kristian Sandahl

Software Engineering. M Umair.

Introduction. Failure. Why Projects Fail. Agile in an Hour

Assistant Professor, Integral University, Lucknow, India. Quality Parameters. Correctness. Efficiency. Portability. Usability.

Questioning Extreme Programming

Learning Objectives. Agile Modeling and. Major Topics. Prototyping. Patched Up Prototype. Agile Modeling, but First. Prototyping

CS314 Software Engineering Project Management

! How work in building software is done: ! e.g., waterfall process. ! e.g., object-oriented development. ! e.g., requirements inspection process

Introduction. Failure. Why Projects Fail. Agile in an Hour

Dissatisfaction with the overheads involved in software design methods of the 1980s and 1990s led to the creation of agile methods.

Agile Methods. Background

AGILE AND AGILE TESTING KAIZANIA 9 DECEMBER Lionel Bisschoff / Arrie van der Dussen. Kaizania 2009

AGILE DEVELOPMENT AND ITS IMPACT ON PRODUCTIVITY

Mike Vincent. mvasoftware.net

Certified Scrum Product Owner Course. Pre-Course Reading and Exercises

Non-object-oriented design methods. Software Requirements and Design CITS 4401 Lecture 15

Agile Software Architecture how much is enough?

Agile project management in Extreme Programming projects. Carl Erickson Atomic Object LLC

Transcription:

Extreme Programming, an agile software development process Paul Jackson School of Informatics University of Edinburgh

Recall: Waterfall and Spiral Models 1.Determine objectives Cumulative cost Progress 2. Identify and resolve risks Review Requirements plan Prototype 1 Prototype 2 Operational prototype Concept of Concept of operation requirements Requirements Draft Detailed design Development Verification plan & Validation Code Integration Test plan Verification & Validation Test Implementation 4. Plan the next iteration Release 3. Development and Test 2 / 26

Agile processes 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. 3 / 26

Agile flowchart 4 / 26

12 principles of Agile Customer satisfaction by rapid delivery of useful software Welcome changing requirements, even late in development Working software is delivered frequently (weeks rather than months) Working software is the principal measure of progress Sustainable development, able to maintain a constant pace Close, daily co-operation between business people and developers... 5 / 26

12 principles of Agile (continued)... Face-to-face conversation is the best form of communication (co-location) Projects are built around motivated individuals, who should be trusted to get job done, given right support Continuous attention to technical excellence and good design Simplicity the art of maximizing the amount of work not done is essential Best requirements and designs from self-organizing teams Regular reflection on process and tuning of behaviour 6 / 26

Extreme Programming One variant: 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 7 / 26

Example risks and the XP responses schedule slips: Short iterations give frequent feedback; features prioritised project cancelled after many slips: Customer chooses smallest release with biggest value release has so many defects that it is never used: Tests written with both unit-level and customer perspectives system degrades after release: Frequent rerunning of tests maintains quality business misunderstood: Customer representative embedded in development team system rich in unimportant features Only highest priority tasks addressed staff turnover: Programmers estimate task times; new programmers nurtured 8 / 26

XP classification of software development activities Coding Central. Includes understanding, communicating, learning Testing Embodying requirements, assessing quality, driving coding Listening Understanding the customer, communicating efficiently Designing Creating structure, organising system logic 9 / 26

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 10 / 26

The Planning Game Release planning game customer and developers. Iteration planning game just developers Customer understands scope, priority, business needs for releases: sorts cards by priority. Developers estimate risk and effort: sorts cards by risk, split cards if more than 2-4 weeks. 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. 11 / 26

On-site customer A customer someone capable of making the business s decisions in the planning game sits with the development team always ready to clarify, write functional tests, make small-scale priority and scope decisions. Customer maybe does their normal work when not needed to interact with the development team. 12 / 26

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 lets the customer have the most essential functionality asap. Every week or every month Outside XP releases commonly every 6 months or longer. 13 / 26

Metaphor About an easily-communicated overarching view of system. E.g. Desktop Encompasses concept of software architecture. Provides a sense of cohesion Often suggests a consistent vocabulary 14 / 26

Continuous integration Code is integrated, debugged and tested in full system build at most a few hours or one day after being written. Maintains a working system at all times Responsibility for integration failures easy to trace If integration difficult, maybe new feature was not understood well, so integration should be abandoned 15 / 26

Simple design Motto: do the simplest thing that could possibly work. Don t design for tomorrow: you might not need it. 16 / 26

Testing Any program feature without an automated test simply doesn t exist. Test everything that could break. Programmers write unit tests use 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. 17 / 26

Refactoring Refactoring is especially vital for XP because of the way it dives almost straight into coding. Later redesign is essential. A maxim for not getting buried in refactoring is Three strikes and you refactor. 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) 18 / 26

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. The one with the keyboard and the mouse, is coding. 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? 19 / 26

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. 20 / 26

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). 21 / 26

Sustainable pace aka 40 hour week, but this means not 60, rather than not 35! People need to be fresh, creative, careful and confident 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. 22 / 26

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! 23 / 26

Where is XP applicable? The scope of situations in which XP is appropriate is somewhat controversial. Two examples 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 it seemed clear that it wouldn t work for Microsoft: big releases were an essential part of the business; even the frequency of updates they did used to annoy people. Now we have automated updates to OSs, and Microsoft is a Gold Sponsor of an Agile conference XP does need: team in one place, customer on site, etc. Agile is broader. Other Agile processes include Scrum and DSDM. 24 / 26

Relating different processes 25 / 26

Reading Suggested : Extreme Programming explained: Embrace change. Kent Beck. Suggested : Sommerville. Significantly more in 9th and 10th Eds (Ch 3). than 8th Ed. (17.1, 17.2). Good for balance. 26 / 26