copyright 2001 - larry dribin, ph.d. se470_xp_v1_1.ppt se470 xp - 1 excellence in software...

22
Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 1 Excellence in Software Engineering Repeatable Level Defined Level Manage d Level Initial Level Optimized Level SE470 - Extreme Programming Overview Excellence in Software Engineering Repeatable Level Defined Level Managed Level Initial Level Optimized Level Larry Dribin, Ph.D. - DePaul University Phone: (847)807-7390 - Fax: (847)459-1650 Email: [email protected] Copyright 2001 - Larry Dribin, Ph.D. - v1.1 - 9/16/01

Post on 22-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 1

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

SE470 - Extreme Programming Overview

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Larry Dribin, Ph.D. - DePaul University

Phone: (847)807-7390 - Fax: (847)459-1650

Email: [email protected]

Copyright 2001 - Larry Dribin, Ph.D. - v1.1 - 9/16/01

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 2

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Agenda

Lecture / discussion on XP A1 - Informal presentation of each person’s experiences A2 - Present, discuss and plan

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 3

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Symptoms and Root Causes

Some Symptoms: Requirements in flux Users needs not met Poor quality Schedule slips Projects cancelled Cost over runs Difficulty in maintaining software Software that work in pilot does not

work in production Business changes faster than

systems can keep up Staff turnover

Some Root Causes: Insufficient and misunderstood

requirement Ambiguous communication Lack of good software architectures Undetected inconsistencies Poor testing Overwhelming complexity Uncontrolled changes Manual practices Exponentially increasing cost of

change

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 4

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Our Goal is to fix the Root Causes through the use of Good Software Engineering Practices

Definition of Software Engineering:

“The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.”

Fritz Bauer -1969

Sound Engineering principles consist of: Processes - Procedures and Life Cycles Techniques - or Methods Practices - Repeated performances of activities Tools - to support Processes, Techniques and Practices

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 5

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Rational’s View of Best Practices

The Best Practices reinforce each other and tools are used to guide and support the best practices.

The Best Practices reinforce each other and tools are used to guide and support the best practices.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 6

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Best Practices

Rational’s View of Best Practices: Develop Iteratively Manage Requirements Use Component Architectures Model Visually Continuously Verify Quality Control Change

XP View of Best Practices: The Planning Game Small releases Metaphor Simple design Testing Refractoring Pair Programming Collective ownership Continuous integration 40-hour work week On-site customer Coding standards

“An organized and documented set of principles, methods and processes that increase quality and productivity of software development.”

Source: Rational - “Principles of Managing Iterative Development v2.0”

“An organized and documented set of principles, methods and processes that increase quality and productivity of software development.”

Source: Rational - “Principles of Managing Iterative Development v2.0”

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 7

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Extreme Programming

Developed by Kent Beck and Ward Cunningham Based on Kent and Ward’s initial experiences developing Smalltalk

software at Tektronix First large project was the C3 Payroll Project at Chrysler

1993 project started with a Business Modeling Phase 1994 development begun with a small 40 person consulting firm & Smalltalk 1995 Performance problems - Kent Beck brought in to improve quality 1996 Kent Beck took over project and began implementing project in an new

methodology in what we now call Extreme Programming

Extreme Programming tends to be less tool and process oriented and more focused on “light weight” processes than many other methodologies.

Extreme Programming tends to be less tool and process oriented and more focused on “light weight” processes than many other methodologies.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 8

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Extreme Programming Background

Part of a movement toward new approaches to software development Other new approaches include:

Crystal SSSCRUM DSDM Adaptive Software Development Feature-Driven Development Pragmatic Programming

On February 11-12, 2001 seventeen of these proponents met at Snowbird ski resort and what emerged was the:

Agile “Software Development’ Alliance See www.agilealliance.org for more details

Still have the goal of bringing engineering discipline to software development..Still have the goal of bringing engineering discipline to software development..

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 9

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Goto www.agilealliance.org

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 10

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Manifesto for Agile Software Development 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.

Kent Beck James Grenning Robert C. MartinMike Beedle Jim Highsmith Steve MellorArie van Bennekum Andrew Hunt Ken SchwaberAlistair Cockburn Ron Jeffries Jeff SutherlandWard Cunningham Jon Kern Dave ThomasMartin Fowler Brian Marick

© 2001, the above signatories this declaration may be freely copied in any form, but only in its entirety through this notice.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 11

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

As Members of The Agile Alliance, We follow the following principles:

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a

development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace

indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity--the art of maximizing the amount of work not done--is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and

adjusts its behavior accordingly.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 12

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Back to Extreme Programming

Overview of key concepts: Economics of Software Development The Four Variables Cost of Change Learning to Drive Four Values Basic Principles

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 13

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Economics of Software Development What is the value of a software project

Cash flows in Cash flows out Interest rates Project Mortality

How can we create a strategy for maximizing the economic value of a software project:

Spend less Earn more Spend later vs. earlier Increase probability that project will stay

alive to get the big payoff late in the project

Software Project Management Options: Abandon the project, but still get some

value Switch the direction of the project

(change requirements) Defer the project Grow the project

Five factors of involved: Investment to get option Price of the prize Current Value of the project Time till you can exercise the option Uncertainty in the value of the prize

Extreme Programming is about what we have to do as project managers to maximize the value of the project at any time:

Accurate and frequent feedback about progress Many opportunities to dramatically change the requirements As smaller initial investment The opportunity to go faster

Extreme Programming is about what we have to do as project managers to maximize the value of the project at any time:

Accurate and frequent feedback about progress Many opportunities to dramatically change the requirements As smaller initial investment The opportunity to go faster

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 14

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

The Four Variables

Software Project Management’s Four Key Variables: Cost (Effort) Time (Duration) Quality (Number of defects) Scope (Amount of functionality)

Based upon our experiences, these variable are not independent. If the customer gets to pick any three, then the development team gets to

pick the fourth variable

A basic problem occurs when the customer believes that they can pick all four variables.

A basic problem occurs when the customer believes that they can pick all four variables.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 15

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Controlling these Variables

Cost - more money will solve our problems More programmers More computers and software tools

Time - more time will improve all aspects of delivery More time will increase quality and scope May result in software that misses the market window

Quality - is very hard to control If you can increase quality brute force by more testers and more time If you decrease quality, you usually do not get a workable solution

Scope - reduced scope will improve quality, deliver faster at lower costs We can reduce scope to maintain a certain level of cost, time and quality. We can not increase scope without increasing cost, time or reducing quality.

The key variable to control is scope. We can reduce scope to maintain a certain level of cost, time and quality.

The key variable to control is scope. We can reduce scope to maintain a certain level of cost, time and quality.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 16

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

The Traditional View of the Cost to Change Software

Analysis Design Code TestTypical Software Life Cycle Phases

Cos

t

The traditional view is that problems are 100 to 1000 times more expensive to find and repair later in the life cycle than earlier.

The traditional view is that problems are 100 to 1000 times more expensive to find and repair later in the life cycle than earlier.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 17

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

XP View of Cost to Change Software

Analysis Design Code TestTypical Software Life Cycle Phases

Cos

t

Let’s try and find a way to change the curve so that the cost to find and repair software problems does not rise dramatically over time.

Let’s try and find a way to change the curve so that the cost to find and repair software problems does not rise dramatically over time.

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 18

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Some things that would have to change for this cost model to work

Simple design with no extra design elements Automated tests so that we had confidence we would know if we

accidentally changed the existing behavior of the system Lots of practice so that when we wanted the time came to change the

system late in the game, we weren’t not too afraid to try

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 19

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Four Values of XP

Communication - keep the right communication flowing Simplicity - “What is the simplest thing that could possibly work?” Feedback - Concrete feedback about the current state of the system Courage - to do the “right thing” even when it feels like you should be

afraid, like making a major architectural change to a system that breaks 1/2 of the test caste

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 20

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Basic Principles

Rapid feedback Assume simplicity Incremental change Embracing change Quality work

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 21

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Basic Activities

XP focuses on basic activities: Coding Testing Listening Designing

Copyright 2001 - Larry Dribin, Ph.D. SE470_XP_v1_1.ppt SE470 XP - 22

Excellence in Software Engineering

Repeatable Level

Defined Level

Managed Level

Initial Level

Optimized Level

Extreme Programming - Practices

1. The Planning Game - to determine scope

2. Small releases - put into production quickly

3. Metaphor - guides development

4. Simple design - removes extra complexity

5. Testing - continually by programmers and customers

6. Refractoring - t improve the system

7. Pair Programming - to produce all code (artifacts)

8. Collective ownership - anyone can change any code anywhere

9. Continuous integration - build the system many times a day

10. 40-hour Work week - no than 40 per week

11. On-site customer - on the team

12. Coding standards - rules to emphasize communication