methods of software development versioning

42
1 Institute for Software Research, International 1 Methods of Software Development Versioning Chris Scaffidi

Upload: lonato

Post on 21-Jan-2016

19 views

Category:

Documents


0 download

DESCRIPTION

Methods of Software Development Versioning. Chris Scaffidi. Questions?. Was the reading clear? You can talk intelligently about the terms… “factor” and “actor” “production function” and “utility function” “quality attribute”, “metric”, and “validity” “qualitative” and “quantitative” - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Methods of Software Development Versioning

1Institute for Software Research, International

1

Methods of Software Development

Versioning

Chris Scaffidi

Page 2: Methods of Software Development Versioning

2

Institute for Software Research, International

2

Was the reading clear?

You can talk intelligently about the terms… “factor” and “actor” “production function” and “utility function” “quality attribute”, “metric”, and “validity” “qualitative” and “quantitative” “ATAM” and “COCOMO II” “process” and “CMM”

Questions?

Page 3: Methods of Software Development Versioning

3

Institute for Software Research, International

3

Why version? Pricing is a challenge Differentiation is one key

How to version? Identify important attributes Design to optimize on those attributes Implement to achieve the design

Overview

Page 4: Methods of Software Development Versioning

4

Institute for Software Research, International

4

What is this curve?

Pricing is a challenge

Why Version?

Page 5: Methods of Software Development Versioning

5

Institute for Software Research, International

5

A demand curve is a utility curve between product and money.

Price versus quantity

Why Version? > Pricing is a challenge

Quantity

Pri

ce

Page 6: Methods of Software Development Versioning

6

Institute for Software Research, International

6

Why does it start high and then slope down?

Price versus quantity

Why Version? > Pricing is a challenge

Quantity

Pri

ce

Page 7: Methods of Software Development Versioning

7

Institute for Software Research, International

7

Value versus quantity

Why Version? > Pricing is a challenge

Only a few people find enough value (utility) in the product to justify paying higher prices.

But lots of people find enough value in the product to justify paying lower prices.

Quantity

Pri

ce

Page 8: Methods of Software Development Versioning

8

Institute for Software Research, International

8

Maximizing profit

Why Version? > Pricing is a challenge

Challenge: Maximize your profit by picking the best price to charge.

Quantity

Pri

ce

Production Cost Per Unit

Page 9: Methods of Software Development Versioning

9

Institute for Software Research, International

9

The challenge is complicated by competition.

You compete with other vendors. You compete with yourself!

One tractable solution is differentiation.

Versions can vary in functionality. Versions can vary in price.

Differentiation is one key

Why Version?

Page 10: Methods of Software Development Versioning

10

Institute for Software Research, International

10

Scenario #1: One version

Why Version? > Differentiation is one key

•Make one version.•Pick a price.•That tells quantity sold.•Profit is shown in shaded box.

(Minus flat costs, of course.)

Quantity

Pri

ce

Production Cost Per Unit

Page 11: Methods of Software Development Versioning

11

Institute for Software Research, International

11

Scenario #2: Two versions

Why Version? > Differentiation is one key

•Make two versions: Different price & functionality.

•This entices a few more buyers.•You get a little extra profit.

Danger: Self-Competition

Quantity

Pri

ce

Production Cost Per Unit

Page 12: Methods of Software Development Versioning

12

Institute for Software Research, International

12

Scenario #2: Two versions

Why Version? > Differentiation is one key

This is what happens when you compete with yourself too much.

Danger: Self-Competition

Quantity

Pri

ce

Production Cost Per Unit

Page 13: Methods of Software Development Versioning

13

Institute for Software Research, International

13

Scenario #3: Several versions

Why Version? > Differentiation is one key

If two is good, more is better?

Quantity

Pri

ce

Production Cost Per Unit

Page 14: Methods of Software Development Versioning

14

Institute for Software Research, International

14

Scenario #4: Infinitely many versions

Why Version? > Differentiation is one key

Quantity

Pri

ce

Production Cost Per Unit

“1st Degree Price Discrimination”

Perfectly personalized productsPerfectly matches the curveMaximizes the profit?

What’s wrong with this picture?

Page 15: Methods of Software Development Versioning

15

Institute for Software Research, International

15

“1st degree price discrimination”= Personalized pricing

Fits the demand curve closely May raise production costs a lot May be impossible with some products

“2nd degree price discrimination”= Versioning (or volume discounts)

Approximates the demand curve May raise production costs

1st vs 2nd degree price discrimination

Why Version? > Differentiation is one key

Page 16: Methods of Software Development Versioning

16

Institute for Software Research, International

16

“3rd degree price discrimination”= Group pricing

Targets each version at a group of buyers Can simplify design and marketing process Can boost network effects (value) Most useful when buyers fall into clean

categories

Price discrimination means matching good prices to your product’s differentiated versions.

3rd degree price discrimination

Why Version? > Differentiation is one key

Page 17: Methods of Software Development Versioning

17

Institute for Software Research, International

17

Why version? Pricing is a challenge Differentiation is one key

How to version? Identify important attributes Design to optimize on those attributes Implement to achieve the design

How to Version?

How to Version?

You are here

Page 18: Methods of Software Development Versioning

18

Institute for Software Research, International

18

Versions are differentiated (i.e.: their attributes vary).

You want your versions to have varied utility (why?)

The key: know thy customers’ utility function

If you know how utility depends on attributes, then you know which attributes should vary by version.

Utility curves differ

How to Version? > Identify important attributes

Page 19: Methods of Software Development Versioning

19

Institute for Software Research, International

19

Example: Utility of availability

How to Version? > Identify important attributes

Utility in e-Commerce as a function of availability

B. Boehm, et al. “The ROI of Software Dependability: The iDAVE Model”, IEEE Software, May/June 2004.

Page 20: Methods of Software Development Versioning

20

Institute for Software Research, International

20

Example: Utility of timeliness

How to Version? > Identify important attributes

Timeliness

Uti

lity

Timeliness

Uti

lity

Timeliness

Uti

lity

NASA Mission Control Software

B. Boehm. HDCP Review Talk at CMU. Oct 15, 2004.

Real-Time Control

Weather Prediction

Uti

lity

Timeliness

Page 21: Methods of Software Development Versioning

21

Institute for Software Research, International

21

Utility can be a function of many attributes… Functional attributes

Formats supported Precision supported Searches supported Calculations supported Views / interfaces provided Image resolution

The wide-wide world of attributes

How to Version? > Identify important attributes

Page 22: Methods of Software Development Versioning

22

Institute for Software Research, International

22

Utility can be a function of many attributes… Functional attributes Extra-functional attributes

Timeliness to market Timeliness of the software’s outputs (≈

performance) Availability of technical support Availability of the software itself Maintainability Flexibility & extensibility Platforms supported & portability

The wide-wide world of attributes

How to Version? > Identify important attributes

Page 23: Methods of Software Development Versioning

23

Institute for Software Research, International

23

Utility can be a function of many attributes… Functional attributes Extra-functional attributes

… and also a function of whether that irritating “Please Register this Software”box keeps popping up in demoware versions!

The wide-wide world of attributes

How to Version? > Identify important attributes

Page 24: Methods of Software Development Versioning

24

Institute for Software Research, International

24

Example: Suppose we’re designing an e-Commerce platform.

Our target market is online booksellers.

How should versions vary by availability? What other attributes will probably affect

utility?

Example: e-Commerce platform

How to Version?

Page 25: Methods of Software Development Versioning

25

Institute for Software Research, International

25

Once you know which attributes to vary, the next step is knowing how much you want in versions.

This is a Qualitative-to-Quantitative thought process.

There are many approaches to making this transition.

Examples: ATAM COCOMO II Cobb-Douglas

Design to optimize on those attributes

How to Version?

Page 26: Methods of Software Development Versioning

26

Institute for Software Research, International

26

ATAM utility tree

How to Version? > Design to optimize on those attributes

Build a utility tree

1. Identify attributes2. Operationalize3. Assign priorities4. Design

Repeat until everybody is adequatelyjoyful.

Page 27: Methods of Software Development Versioning

27

Institute for Software Research, International

27

PM = M * Size S

PM = person-months to build (≈ flat building cost)Size = software size in KSLOC

S = 0.91 + 0.01 * Σ si

si = scale factor i, describes your company

COCOMO II

How to Version? > Design to optimize on those attributes

Page 28: Methods of Software Development Versioning

28

Institute for Software Research, International

28

PM = M * Size S

PM = person-months to build (≈ flat building cost)Size = software size in KSLOC

S = 0.91 + 0.01 * Σ si

si = scale factor i, describes your company

M = 2.94 * mi

mi = effort modifier i, describes your company and also attributes of the version

COCOMO II

How to Version? > Design to optimize on those attributes

Page 29: Methods of Software Development Versioning

29

Institute for Software Research, International

29

PM = M * Size S

PM = person-months to build (≈ flat building cost)Size = software size in KSLOC

S = 0.91 + 0.01 * Σ si

si = scale factor i, describes your company

M = 2.94 * mi

mi = effort modifier i, describes your company and also attributes of the version

COCOMO II

How to Version? > Design to optimize on those attributes

Page 30: Methods of Software Development Versioning

30

Institute for Software Research, International

30

Production functions can be approximated as

Z = k * Yi

Z = amount of output generatedk = constantY = amount of input required

i = elasticity of input i (0.0 ≤ i ≤ 1.0)

Cobb-Douglas optimization

How to Version? > Design to optimize on those attributes

Page 31: Methods of Software Development Versioning

31

Institute for Software Research, International

31

Production is a suitable approximation for utility.

You can maximize Z, subject to constraints.

Cobb-Douglas optimization

How to Version? > Design to optimize on those attributes

Page 32: Methods of Software Development Versioning

32

Institute for Software Research, International

32

Back to the book-ordering e-Commerce platform.We have a central web server plus a failover

cluster.

Some handy over-simplifications: Each search tool costs 64MB RAM + 1 cluster server Each “9” costs 10MB + 2 cluster servers (e.g.:

99.999%=5)

Total memory cannot exceed 2048MB RAM Our hosting facility provides 15 failover cluster

servers

Cobb-Douglas optimization

How to Version? > Design to optimize on those attributes

Page 33: Methods of Software Development Versioning

33

Institute for Software Research, International

33

Our buddies in marketing and operations tell us that

Z = $500 * T0.2 * A0.1

Z = sales produced per month, in dollarsT = number of search tools (elasticity = 0.2)A = availability, in “9”s (elasticity = 0.1)

Our constraints were64*T + 10*A ≤ 20481*T + 2*A ≤ 15

Cobb-Douglas optimization

How to Version? > Design to optimize on those attributes

Page 34: Methods of Software Development Versioning

34

Institute for Software Research, International

34

Take the logarithm of both sides.

Maximize (ln Z) = 0.2*(ln T) + 0.1*(ln A) + ln $500

Subject to64*T + 10*A ≤ 20481*T + 2*A ≤ 15

Look familiar?

Cobb-Douglas optimization

How to Version? > Design to optimize on those attributes

Page 35: Methods of Software Development Versioning

35

Institute for Software Research, International

35

Good job so far:1. You identified the important attributes.2. You figured out how much of each attribute

you should put into each version.

One step left:3. Implement to actually deliver the

desired quality attributes in the desired quantities.

Implement to achieve the design

How to Version?

Page 36: Methods of Software Development Versioning

36

Institute for Software Research, International

36

Metrics For measuring operationalizations of attributes Can be used to evaluate designs or code Ask Ipek for long version of “Digest” for more

examples

Metrics and CMM

How to Version? > Implement to achieve the design

Page 37: Methods of Software Development Versioning

37

Institute for Software Research, International

37

Metrics For measuring operationalizations of attributes Can be used to evaluate designs or code Ask Ipek for long version of “Digest” for more

examples

CMM Level 1: Chaotic and ad-hoc Level 2: Repeatable process Level 3: Documented process Level 4: Metrics in use Level 5: Optimization underway

Metrics and CMM

How to Version? > Implement to achieve the design

Page 38: Methods of Software Development Versioning

38

Institute for Software Research, International

38

“In many cases, in fact, production of the low-quality version incurs additional costs.”

--

Value-subtracted versions

How to Version? > Implement to achieve the design

C. Shapiro, H. Varian. “Information Rules”, Harvard Business School Press, 1999, p. 63.

Page 39: Methods of Software Development Versioning

39

Institute for Software Research, International

39

“In many cases, in fact, production of the low-quality version incurs additional costs.”

“With information you usually produce the high-quality version first, and then subtract value from it to get to the low-quality version.”

Value-subtracted versions

How to Version? > Implement to achieve the design

C. Shapiro, H. Varian. “Information Rules”, Harvard Business School Press, 1999, p. 63.

Page 40: Methods of Software Development Versioning

40

Institute for Software Research, International

40

What else is there? Complements

You don’t have to build it all at once! Build a version here and another there. Build systems that complement some or all versions.

Partnerships You don’t have to build it all yourself! You may need to build to standards.

Do yourself a favor: Read “Information Rules”

Fill in the gaps

How to Version? > Implement to achieve the design

Page 41: Methods of Software Development Versioning

41

Institute for Software Research, International

41

Why version? Pricing is a challenge

How will you optimize your profits? Differentiation is one key

Lessens competition and facilitates price discrimination

How to version? Identify important attributes

Know thy customers’ utility function Design to optimize on those attributes

ATAM, COCOMO II, Cobb-Douglas, and so forth Implement to achieve the design

Metrics, CMM, value-subtraction, and so forth

Summary

Page 42: Methods of Software Development Versioning

42

Institute for Software Research, International

42

“You must design desirability into the product from the start… Desire is an emotional state, the anticipation of joy, a bittersweet gladness at the prospect of gratified need.

“Imagine and identify the few properties of the software that will gratify the need… Visualize the properties, desire them for yourself… Meditate on the nature of the properties you’ve identified, and evaluate the versions of your design in their light.”

Questions?

J. McCarthy. “Dynamics of Software Development”, Microsoft Press, 1995, p 70.