E xtr B e y CS R m oy 6704, e T a P n a Spring r n o d J g ia n 2002 r g a S m hu m ing

Similar documents
Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck

XP Evolution Rachel Davies

Introduction to Extreme Programming

כללי Extreme Programming

Extreme programming XP 6

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg

xtreme Programming (summary of Kent Beck s XP book) Stefan Resmerita, WS2015

Test Driven Development. René Barto SES Agile Development - Test Driven Development

Software Development Methodologies

XP: Planning, coding and testing. Planning. Release planning. Release Planning. User stories. Release planning Step 1.

Software Development Process Models

Analysis of the Test Driven Development by Example

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

2014 Intelliware Development Inc.

Test Driven Development TDD

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

Testing in Agile Software Development

Activities Common to Software Projects. Software Life Cycle. Activities Common to Software Projects. Activities Common to Software Projects

COMP 354 TDD and Refactoring

HCI in the software process

HCI in the software. chapter 6. HCI in the software process. The waterfall model. the software lifecycle

Human Computer Interaction Lecture 14. HCI in Software Process. HCI in the software process

Usability. CSE 331 Spring Slides originally from Robert Miller

Agile Development

Lecture 7: Software Processes. Refresher: Software Always Evolves

Human Computer Interaction Lecture 06 [ HCI in Software Process ] HCI in the software process

Practical Objects: Test Driven Software Development using JUnit

Review: Cohesion and Coupling, Mutable, Inheritance Screen Layouts. Object-Oriented Design CRC Cards - UML class diagrams

Using Storyotypes to Split Bloated XP Stories

02291: System Integration

Systems Analysis & Design

Software Evolution. Dr. James A. Bednar. With material from

CS 4349 Lecture October 18th, 2017

Practical Object-Oriented Design in Ruby

CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP. See also: Chapter 6. The Stagewise Model

Credit where Credit is Due. Lecture 29: Test-Driven Development. Test-Driven Development. Goals for this lecture

02161: Software Engineering I

Test-Driven Development

Extreme Programming practices for your team. Paweł Lipiński

Software Engineering I (02161)

Software Design COSC 4353/6353 D R. R A J S I N G H

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture

Lecture Notes CPSC 491 (Fall 2018) Topics. Peer evals. UI Sketches. Homework. Quiz 4 next Tues. HW5 out. S. Bowers 1 of 11

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides

Living and Working with Aging Software. Ralph Johnson. University of Illinois at Urbana-Champaign

Dilbert Scott Adams. CSc 233 Spring 2012

Optimize tomorrow today.

CS 160: Evaluation. Professor John Canny Spring /15/2006 1

Processes, Methodologies and Tools. Fall 2005

CS 160: Evaluation. Outline. Outline. Iterative Design. Preparing for a User Test. User Test

PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between

Alverton Community Primary School

No SVN checkout today. Object-Oriented Design

Test First Software Development

5 Object Oriented Analysis

DAT159 Refactoring (Introduction)

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

18-642: Software Development Processes

McCa!"s Triangle of Quality

Designed in collaboration with Infosys Limited

1: Introduction to Object (1)

Shree.Datta Polytechnic College,Dattanagar, Shirol. Class Test- I

Requirements and Design Overview

An Introduction to Unit Testing

COURSE 11 DESIGN PATTERNS

SE420 - Software Quality Assurance

Heuristic Evaluation of [Pass It On]

SonarJ White Paper. Sonar stands for Software and Architecture. It is meant to support software developers and architects in their daily work.

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Introduction to Software Engineering

San Jose State University - Department of Computer Science

Scrums effects on software maintainability and usability

Topic 01. Software Engineering, Web Engineering, agile methodologies.

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

Java Review via Test Driven Development

EECS 4313 Software Engineering Testing

Experience-based Refactoring for Goal- oriented Software Quality Improvement

Reengineering II. Transforming the System

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall

Chapter 3: Modules. Starting Out with Programming Logic & Design. Second Edition. by Tony Gaddis

Distributed Pair Programming on the Web

Testing and Debugging

Midterm Exam Solutions March 7, 2001 CS162 Operating Systems

Founda'ons of So,ware Engineering. Process: Agile Prac.ces Claire Le Goues

Recitation 13. Software Engineering Practices and Introduction to Design Patterns

User Assessment for Negotiating the Quality of Service for Streaming Media Applications

CHAPTER 1. Objects, UML, and Java

A short introduction to. designing user-friendly interfaces

Computer and Programming: Lab 1

Test Driven Development for Embedded C++

Software Design and Analysis CSCI 2040

02291: System Integration

How technical excellence helps in LeSS adoption. Anton Bevzuk Dodo Pizza Chief Agile Officer

Introduction to. and. Scott W. Ambler Source Documents

Design Concepts and Principles

security model. The framework allowed for quickly creating applications that examine nancial data stored in a database. The applications that are gene

OO Overkill When Simple is Better than Not

Patterns and Testing

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

Transcription:

Extreme Programming CS 6704, Spring 2002 By Roy Tan and Jiang Shu

Contents What is Extreme Programming (XP)? When to use XP? Do we need yet another software methodology? XP s rules and practices XP s relation to UML and Design Patterns Implementation details, critiques, etc.

What is XP? No bungee cords Extreme Programming is a deliberate and disciplined approach to software development. About six years old (originated by Kent Beck and Ward Cunningham) Being applied @ Credit Swiss Life, First Union National Bank, etc.

What is XP? (cont. 1) XP stresses customer satisfaction; deliver the software your customer needs when it is needed XP emphasizes team work XP improves a software project in four essential ways: Communication Simplicity Feedback Courage

What is XP? (cont. 2) What customers will notice: Cut the cost ex: $100,000 * 20% vs. $2,000,000 * 10% Less bugs Tests are created before the code is written, while the code is written, and after the code is written. Attitude XP programmers have towards changing requirements XP enables us to embrace change

When to use XP XP was created in response to problem domains whose requirements change. XP was also set up to address the problems of project risk. XP is set up for small groups of programmers. Between 2 and 12, though larger projects of 30 have reported success. XP requires an extended development team.

Do we need yet another software methodology? XP is an important new methodology for two reasons: First and foremost it is re-examination of software development practices that have become standard operating procedures. It is one of the several new lightweight software methodologies XP goes one step further and defines a process that is simple and enjoyable.

What is a Lightweight Methodology A software methodology is the set of rules and practices used to create computer programs. A heavyweight methodology has many rules, practices, and documents. It requires discipline and time to follow correctly. A lightweight methodology has only a few rules and practices or ones which are easy to follow.

Software Methodology History In the late 1960s and early 1970s it was common practice for computer programmers to create software any way they could. In 1968 Edsger Dijkstra wrote a letter to CACM entitled GOTO Statement Considered Harmful. The 1980s were good times. It seemed like if we could just create enough rules to cover the problems we encounter we could create perfect software and be on time. Now in the 21st century we find these rules are hard to follow, procedures are complex and not well understood and the amount of documentation written in some abstract notation is way out of control.

Software Methodology History (cont.) We don't want to forget what we have learned. We can choose to keep the rules that help us create quality software and throw away those that hinder our progress. We can simplify those rules that seem too complex to follow correctly. Extreme Programming is one of several new lightweight methodologies. http://www.martinfowler.com/articles/newmethodology.html

XP s Rules and Practices It is a lot like a jig saw puzzle. There are many small pieces. Individually the pieces make no sense, but when combined together a complete picture can be seen.

Rules and Practices (cont. 1) There are total 12 core practices. Planning Game Pair Programming Small Release Collective Code Ownership System Metaphor Continuous Integration Simple Design 40-Hour Work Week Continuous Testing On-site Customer Refactoring Coding Standards

Rules and Practices (cont. 2) Planning Planning Game Designing System Metaphor Refactoring Coding Pair Programming Collective Code Ownership Testing Continuous Testing Jiang Roy

Planning Game Business and development cooperate to produce the maximum business value as rapidly as possible. The planning game happens at various scales, but the basic rules are always the same: 1. 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 in broad strokes what is required. 2. Development estimates how much effort each story will take, and how much effort the team can produce in a given time interval (the iteration). 3. 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.

System Metaphor Choose a system metaphor to keep the team on the same page by naming classes and methods consistently. What you name your objects is very important for understanding the overall design of the system and code reuse as well. Being able to guess at what something might be named if it already existed and being right is a real time saver.

Refactoring We continue to use and reuse code that is no longer maintainable because it still works in some way and we are afraid to modify it. XP argues: When we remove redundancy, eliminate unused functionality, and rejuvenate obsolete designs, we are refactoring. Refactoring throughout the entire project life cycle saves time and increases quality. You can do this with confidence that you didn't break anything because you have the tests.

Reference John Brewer and Jera Design Extreme Programming FAQ http://www.jera.com/techinfo/xpfaq.html O Reilly Open Source Convention http://linux.oreillynet.com/pub/a/linux/2001/05/04/xp_intr o.html Extreme Programming Roadmap http://c2.com/cgi/wiki?extremeprogrammingroadmap

Pair Programming

Pair Programming Two people, 1 keyboard Person at keyboard thinks about tactics Person not at keyboard thinks strategy The programming pairs switch often

Pair Programming In The Classroom

Pair Programming In The Classroom Works with human nature Programmers like to show off Programmers slack off less 90% say they enjoyed working in pairs better than working alone

Testing Testing is important Nobody wants to write tests Write only tests for things that might break Tests should be: Isolated Automatic

Unit Testing Write unit tests first All code must have unit tests All unit tests must pass before code is released When a bug is found, a test is created for it

Who Writes The Tests? Programmer Unit Tests Must pass 100% Customers Customers write acceptance tests Write tests from user stories Dedicated testing person May be less than 100%

Putting it together

Implementing XP 1. Pick your worst problem 2. Solve it the XP way 3. When it s no longer your worst problem, repeat Testing is a good place to start

XP and UML XP is centered around code Kent Beck is uncomfortable with formal diagramming notation Use UML to communicate, do not attempt to be comprehensive Do not think the design is done Once picture is codified, throw it away

XP and Design Patterns You aren t gonna need it [Beck] When to apply Design Patterns: Not too early Implement the pattern in the simplest form possible Design Patterns provides targets for your refactoring [Gamma]

References http://extremeprogramming.org Kent Beck, Extreme Programming Explained, Addison Wesley, 2000. Laurie Williams, Robert R. Kessler, Ward Cunningham, and Ron Jeffries, Strengthening the Case for Pair-Programming, IEEE Software, July/Aug 2000. Williams, Laurie, Kessler, Robert R., Experimenting with Industry's "Pair- Programming" Model in the Computer Science Classroom, Journal on Computer Science Education, March 2001.