pressman chapter 3, mmm plan to throw one awaypressman chapter 3, mmm "plan to throw one...

21
Readings: Pressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation Testing Maintenance The case for the waterfall model: Software development can be carefully monitored by management. Least effort is wasted by knowing what to do before doing it. Resulting software product is of the highest quality. But... The elephant in the room Wednesday, September 09, 2009 2:37 PM Agility Page 1

Upload: others

Post on 18-Mar-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Readings: � Pressman Chapter 3, � MMM "Plan to throw one away"

Recall the waterfall model: � Systems engineering� Requirements analysis� Design� Implementation� Testing� Maintenance

The case for the waterfall model:� Software development can be carefully monitored by

management.� Least effort is wasted by knowing what to do before

doing it. � Resulting software product is of the highest quality.

But...

The elephant in the room Wednesday, September 09, 20092:37 PM

Agility Page 1

Page 2: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Software quality isn't everything! Other factors include: � Time to market. � Timely response to changing requirements. � Length of expected product lifecycle.

Somebody has to make money!

But... Wednesday, September 09, 20092:39 PM

Agility Page 2

Page 3: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

The elephant in the room� Software Engineering is all about minimizing cost of

development.� The elephant in the room is that this is meaningless

without a concept of value. Profit = value - cost. � If a product has low value, then the software

engineering process may be meaningless. � If it has a guaranteed high value, then traditional

software engineering will work. � But if a product has a contextual value, this can

change everything about the best process to use to implement it.

Cost and Value Thursday, September 10, 200910:59 AM

Agility Page 3

Page 4: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Concepts of value and profit: � Lifecycle return = total value - total cost. � Short-term return = short-term value - short-term

cost.� Time-critical value = 0 unless some external deadline

is met.

Concepts of value Thursday, September 10, 200911:06 AM

Agility Page 4

Page 5: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

The release of any new product is a risk.� People may not buy it. � It might not work. � Another product might eclipse it. � Another product might be released first.� People might not have enough motivation to switch from

an inferior product (products have "inertia").

Estimating the value of a product is a matter of quantifyingthese risks.

Understanding risk Thursday, September 10, 200911:09 AM

Agility Page 5

Page 6: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

It is not survival of the fittest; it is survival of those who fit!

Darwinism Monday, September 14, 20094:47 PM

Agility Page 6

Page 7: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Alternative models of software engineering� Agile development: optimize time-to-market.� Component-based design: optimize for reuse of

existing components. � Prototyping: determine underspecified requirements

via direct experiment.

"Alternatve" software engineering Wednesday, September 09, 20092:36 PM

Agility Page 7

Page 8: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

What if being first in the market is everything?� MySpace is awful, but it was first, and people still use

it even though better alternatives are available! � No one has managed to create the second ebay!

Answer: we need a software development process that weighs being first over software quality!

Agile development Wednesday, September 09, 20092:42 PM

Agility Page 8

Page 9: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Principles of agile development� Start design before requirements are etched in stone. � Start development before design is etched in stone. � Start testing before development is etched in stone.

Get the darn product out...

Principles of agile development Wednesday, September 09, 20092:44 PM

Agility Page 9

Page 10: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Agility requires more total work:� Design has to be done multiple times, as

requirements change in the short term. � Ditto for implementation and testing.

Proponents of agility believe that:� The overall product is more robust because its ability

to adapt to changes has been tested during the agile process.

� The time to market is less than required for traditional waterfall approaches.

� One can utilize more people to shorten development time.

Faster TTM versus "more work" Monday, September 14, 20092:08 PM

Agility Page 10

Page 11: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

An agile process: � Copes with uncertainty by never committing

prematurely to a design. � Lowers time-to-market (TTM) by placing less emphasis

on absolutely correct requirements. � Defers development costs until product success can be

predicted from data.� Constantly tests robustness of the output of each phase

of the process.

Properties of agile process Wednesday, September 09, 20092:50 PM

Agility Page 11

Page 12: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

A prototype (of a product) is a version developed without the software engineering process.

This is very different than a version of an agile process.

Prototype hasNo documentationNo test plan(No design!)

Agile product hasIteratively refined documentation. Iteratively refined test plan. Iteratively refined design.

Prototyping Monday, September 14, 20092:57 PM

Agility Page 12

Page 13: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

The capability to do something with a software product depends upon the model of development under which it was created.

Key issue Monday, September 14, 20095:08 PM

Agility Page 13

Page 14: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

So, which is best? � Agile development lowers TTM but raises total cost if

product succeeds. � Traditional development raises TTM but overall cost

is lower. Do you really want to spend a lot on a product that can fail?� Are you a betting person? � Are you feeling lucky?

Agile versus traditional SE Wednesday, September 09, 20093:01 PM

Agility Page 14

Page 15: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Understanding the big picture Monday, September 14, 20092:14 PM

Agility Page 15

Page 16: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Agility Monday, September 14, 20092:14 PM

Agility Page 16

Page 17: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

How would you develop: � A new computer game? � An online banking application? � A new social networking site? � An e-commerce site?

In-class discussion Wednesday, September 09, 20092:46 PM

Agility Page 17

Page 18: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Alex Lamb: Software engineering is planning for change.

Things that can change include:� Customer requirements (e.g., for product) � Software environment (e.g., evolving threats) � Market (e.g., potential for new customers)

The traditional waterfall model attempts to minimizechange during the development process.

An agile process instead tests for adaptability of the current product to ever-changing needs. The product gets a trial-by-fire during the development process.

Planning for change Monday, September 14, 20092:23 PM

Agility Page 18

Page 19: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Is there a reason for a model? � Some projects are so small, that the traditional

waterfall model does not seem to profitably apply. � But there is value in knowing the model under which

software was developed. � This can guide strategic decisions about the future of a

product.

There is a huge difference between a product and a prototype!

Should there be a development model? Monday, September 14, 20092:28 PM

Agility Page 19

Page 20: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

In Brooks' essay "Plan to throw one away", Brooks advocates exploratory software development to discoverrequirements. But: � Don't get confused about the difference between a

prototype and a product.� Be prepared to throw away prototypes. � Keep management and the customer informed about

that difference.

Reason: there are things about a product that cannot easily be recovered if product development isn't documented.

Plan to throw one away Monday, September 14, 20092:30 PM

Agility Page 20

Page 21: Pressman Chapter 3, MMM Plan to throw one awayPressman Chapter 3, MMM "Plan to throw one away" Recall the waterfall model: Systems engineering Requirements analysis Design Implementation

Lessons learned� Choice of model depends upon what's important. � Largely this is a decision about when to spend money

on the project, and what timing constraints there are. � The model used determines the potential value of a

product.� It is a dire mistake to consider a prototype as a

product, or to confuse products developed according to rigorous engineering models with software developed without an engineering model.

Lessons learned from alternative models

Wednesday, September 09, 20093:06 PM

Agility Page 21