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



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

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

Agile processes. Extreme Programming, an agile software development process

Extreme Programming, an agile software development process

Extreme Programming, an agile software development process

Introduction to extreme Programming (XP)

An Introduction to Extreme Programming

RUP and XP, Part I: Finding Common Ground

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

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

Agile with XP and Scrum

Extreme Programming: Strengths and Weaknesses

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

Extreme Programming. As software organizations continue to move

Agile and Secure: Can We Be Both?

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

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

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

Extreme Programming and Embedded Software Development

Comparing Agile Software Processes Based on the Software Development Project Requirements

Agile Testing and Extreme Programming

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

Java course - IAG0040. Unit testing & Agile Software Development

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

Quality Assurance Software Development Processes

extreme Programming An Overview

SOFTWARE ENGINEERING CSC 423 B - MWF EXTREME PROGRAMMING

Agile So)ware Development

Rapid Software Development

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

Basic Trends of Modern Software Development

Agile Software Development Methodologies and Its Quality Assurance

EPL603 Topics in Software Engineering

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

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

Agile Methodologies and Its Processes

Human Aspects of Software Engineering: The Case of Extreme Programming

Embracing Change with Squeak: Extreme Programming (XP)

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

Agile Development Overview

Génie Logiciel Avancé Cours 6 Extreme Programming

Singhania University, Jhunjhunu, Rajasthan, India. 2 Department of Information Technology King Abdul Aziz University, Jeddah, Saudi Arabia

Effective unit testing with JUnit

Agile Development with C#

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Agile Software Development in the Large

Build your Project using Extreme Programming #2 of a Series, by Pavan Kumar Gorakavi, M.S., M.B.A, G.M.C.P, C.A.P.M.

The Role of Agile Methodology in Project Management

CSE 435 Software Engineering. Sept 16, 2015

Introduction to Agile Software Development

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

Software Development Life Cycle (SDLC)

CMMI - The AGILE Way By Hitesh Sanghavi

Agile Models. Software Engineering Marco Scotto Software Engineering

Test-Driven Development

Agile methods. Objectives

Large Scale Systems Design G52LSS

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

Agile Software Development

Introduction to Agile Software Development Process. Software Development Life Cycles

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

A Capability Maturity Model (CMM)

Novel Hybrid Model: Integrating Scrum and XP

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

An Overview of Quality Assurance Practices in Agile Methodologies

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

Software Quality and Agile Methods

Agile Methodologies XP and Scrum

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

Agile Methods: extreme Programming (XP)

History of Agile Methods

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

CSSE 372 Software Project Management: More Agile Project Management

Software Development Methodologies

Agile Software Development. Venkat Subramaniam Agile Software Development

Web Application Development Process

Agile and Secure: OWASP AppSec Seattle Oct The OWASP Foundation

Introducing Extreme Programming An Experience Report

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

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

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

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

.NET and J2EE Intro to Software Engineering

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

EXTREME PROGRAMMING AND RATIONAL UNIFIED PROCESS CONTRASTS OR SYNONYMS?

Introduction to Agile Software Development. EECS 690 Agile Software Development

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

Transcription:

An Introduction to extreme Programming Jonathan I. Maletic, Ph.D. <SDML> Department of Computer Science Kent State University Introduction Extreme Programming (XP) is a (very) lightweight incremental software development process. It involves a high-degree of discipline from the development team Popularized by K. Beck (late 90 s) Comprised of 12 core practices Most novel aspect of XP (as a process) is the use of pair programming J. Maletic Kent State University 2 Motivational Principles Rapid feedback from customer Assume simplicity keep designs simple Incremental change small changes keep things manageable Embracing change keep your options open Quality work strive for high quality products J. Maletic Kent State University 3 J. Maletic Kent State University 4 1

XP Core Practices The Planning Game Planning Small Releases System Metaphor Simple Design Continuous Testing Refactoring Pair Programming Collective Code Ownership Continuous Integration 40-Hour Work Week On-site Customer Coding Standards Business (customers) and development (programmers) cooperate to produce the maximum business value as rapidly as possible. The planning game happens at various scales, but the basic rules are pretty much the same. J. Maletic Kent State University 5 J. Maletic Kent State University 6 Planning Rules Business comes up with a list of desired features for the system. Each feature is written out as a User Story, which gives the feature a name, and describes, broadly, what is required. Development estimates how much effort each story will take, and how much effort the team can produce in a given time interval (an iteration). Business then decides which stories to implement in what order, as well as when and how often to produce a production releases of the system. J. Maletic Kent State University 7 J. Maletic Kent State University 8 2

Small Releases Start with the smallest useful feature set. Release early and often, adding a few features each time. Each iteration ends in a release. System Metaphor Each project has an organizing metaphor, which provides an easy to remember naming convention. The names should be derived from the vocabulary of the problem and solution domains J. Maletic Kent State University 9 J. Maletic Kent State University 10 Simple Design Always use the simplest possible design that gets the job done. The requirements will change tomorrow, so only do what's needed to meet today's requirements. Uses the fewest number of classes and methods Continuous Testing Before programmers add a feature, they write a test for it. When the suite runs, the job is done. Tests in XP come in two basic flavors. Unit Tests Acceptance Tests J. Maletic Kent State University 11 J. Maletic Kent State University 12 3

Unit Testing Acceptance Testing Unit Tests are automated tests written by the developers to test functionality as they write it. Each unit test typically tests only a single class, or a small cluster of classes. Unit tests are typically written using a unit testing framework (e.g., JUNIT, ParaSoft). J. Maletic Kent State University 13 Acceptance Tests (Functional Tests) are specified by the customer to test that the overall system is functioning as specified. They typically test the entire system, or some large part. When all the acceptance tests pass for a given user story, that story is considered complete. At the very least, an acceptance test could consist of a script of user interface actions and expected results that a human can run. Ideally acceptance tests should be automated, either using a unit testing framework, or a separate acceptance testing framework. J. Maletic Kent State University 14 Refactoring Refactor out any duplicate code generated in a coding session. You can do this with confidence that you didn't break anything because you have the tests. Refactoring- Improving the Design of Existing Code, by M. Fowler, 1999 Addison-Wesley J. Maletic Kent State University 15 Example of Refactoring Remove Assignments to Parameters int discount (int inputval, int quantity, int yeartodate) { if (inputval > 50) inputval -= 2;... int discount (int inputval, int quantity, int yeartodate) { int result = inputval; if (inputval > 50) result -= 2;... J. Maletic Kent State University 16 4

Pair Programming All production code is written by two programmers sitting at one machine. Essentially, all code is reviewed as it is written. Helm keyboard and mouse doing implementation Tactician Thinking about the implications and possible problems Experiences using Pair Programming Reported productivity person month [R. Jensen] Single programmer 77 source lines (historical base line) Pair programming 175 source lines Cockburn & Williams Development costs are an additional 15% Resulting code has about 15% fewer defects J. Maletic Kent State University 17 J. Maletic Kent State University 18 Collective Code Ownership No single person "owns" a module. Any developer is expect to be able to work on any part of the code base at any time. Improvement of existing code can happen at anytime by any pair Continuous Integration All changes are integrated into the code base at least daily. The tests have to run 100% both before and after integration. J. Maletic Kent State University 19 J. Maletic Kent State University 20 5

40-Hour Work Week Programmers go home on time. In crunch mode, up to one week of overtime is allowed. Multiple consecutive weeks of overtime are treated as a sign that something is very wrong with the process. On-site Customer Development team has continuous access to a real live customer, that is, someone who will actually be using the system. For commercial software with lots of customers, a customer proxy (usually the product manager) is used instead. J. Maletic Kent State University 21 J. Maletic Kent State University 22 Coding Standards Everyone codes to the same standards. Ideally, you shouldn't be able to tell by looking at it who on the team has touched a specific piece of code. Scalability (Team Size) XP works well with teams up to 12-15 developers. It tends to degrade with teams sizes past 20 Work has been done in splitting large projects/teams into smaller groups and applying XP within each group. J. Maletic Kent State University 23 J. Maletic Kent State University 24 6

Environment Programmers must be located physically close, often in the same room and desk. Iterations typically last 1-3 weeks. Teams will typically use the same duration for all iterations. Tests are written before the code is written. End of iteration delivers a working system J. Maletic Kent State University 25 References and Resources Extreme Programming Explained, Kent Beck, 2000, Addison Wesley There are a number of XP books by AWL (e.g., XP Installed, XP Explored, and XP Exaggerated) www.jera.com/techinfo/xpfaq.html www.extremeprogramming.org/ www.xprogramming.com/ www.pairprogramming.com/ J. Maletic Kent State University 26 7