60

SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task
Page 3: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

▫▫▫▫▫▫

Page 4: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Requirements Understand/Establish performance requirements; Establish a performance budget for each scenario

Design Design reviews that ensure proposed designs meet performance requirements; Modeling; Prototyping

Coding Instrumentation; Build and run Timing tests; Performance Quality gates

Integration End-to-end performance testing

QA Load testing; stress testing

DevOps Performance monitoring

Page 5: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 6: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

Page 7: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

7

Page 8: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

8

Minimize the total processing load

Maximize the ratio of useful work to overhead

Group-related components based on their usage

Share resources without creating bottlenecks

Use parallelism when the gains outweigh the overhead/costs

Reduce delays by substituting faster resources

Page 9: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

9

When an excessive number of requests is required to perform a task

Maximize the ratio of useful work to overhead

Occurs when processing time increases as the system is used.

Processes are delayed while they wait for their turn at a single-use bottleneck

Occurs when one problem causes a processing backlog that persists long after the initial cause

when a system “thrashes” rather than accomplishing real work because there are too many processes relative to available Resources

Page 10: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

10

Page 11: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

11

Page 12: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

12

Page 13: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

Page 14: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 15: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 16: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 17: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 18: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 19: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

C x E

Page 20: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Dictionary

List

SortedList

SortedDictionary

Queue

Stack

Page 21: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 22: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 23: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

2323

0

100

200

300

r

e

s

p

o

n

s

e

t

i

m

e

(

m

s)

n

constant

linear

exponential

Page 24: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

2424

0

100

200

300

r

e

s

p

o

n

s

e

t

i

m

e

(

m

s)

n

linear

n log n

exponential

Page 25: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

2525

0

100

200

300

r

e

s

p

o

n

s

e

t

i

m

e

(

m

s)

n

constant

linear

log n

Page 26: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 27: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

ICollection<T>Interface

Add()

Remove()

Clear()

Contains(); ContainsKey()

GetEnumerator(); Current

MoveNext()

Page 28: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Size Method

Init Add Delete Contains Enumerate

100

1000

10,000

100,000

1,000,000

10,000,000

Page 29: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

2929

0

500

1000

1500

2000

2500

3000

3500

InitializeEnumerate

Add

Contains

Remove

Seco

nd

s

Page 30: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

3030

0.01

0.1

1

10

100

1000

100 1,000 10,000 100,000 1,000,000

Mil

lise

co

nd

s

Cardinality

HashTable.Contains()

Dictionary.Contains()

Page 31: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

3131

Page 32: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

▫ C x D x E

Page 33: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 34: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 35: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Available at https://www.amazon.com/Designing-Engineering-Time-Psychology-Perception/dp/0321509188

Page 36: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 37: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 38: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Category Range in Seconds

Instantaneous 0.1 – 0.2Applies when you are simulating a physical operation; e.g., a key down event or a button push; all animations, any real-time, interactive gaming application

Immediate 0.5 – 1Seamless because it is similar to human-human interactions

Continuous 2 – 5Tolerable because it is still within the limits of normal human-human interaction

Captive 7 – 10Slow, but still within an acceptable range. However, response time > 10 seconds cause loss of attention and users start to drift away

Page 39: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 40: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

•▫

Page 41: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

▫ ☺

Page 42: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

Page 43: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

Page 44: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 45: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 46: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 47: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

Scenario.Start() Scenario.End()

•▫

Page 50: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

•▫

▫▫▫

Page 51: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫

•▫

Stopwatch.StartNew Start Stop

Stopwatch.Elapsed

Page 52: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

CodeTimer timer = new CodeTimer(1000);string myString = "aString";string outString;

timer.Measure("Measurement Name", delegate {outString = myString + myString; // measuring concatenation.

});

Page 53: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

MeasurementBlock mb

= new MeasurementBlock();

mb.Begin();

mb.End()

Page 54: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

MeasurementBlock mb

= new MeasurementBlock();

mb.Begin();

this.stopwatch.Start

… [execute test scenario]

mb.End()

this.stopwatch.Stop

ETW.write()

Page 55: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 56: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

•▫▫▫▫

Page 57: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 58: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

Page 59: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

59

Page 60: SPE: Dev Life cycle 10/31/201 - University of Washington · 2018. 10. 31. · SPE: Dev Life cycle 10/31/201 8 9 • When an excessive number of requests is required to perform a task

SPE: Dev Life cycle 10/31/2018

60