agile steps to improve the status quo

116
agile steps to improve the status quo www.tudorgirba.com

Upload: tudor-girba

Post on 10-May-2015

587 views

Category:

Education


2 download

DESCRIPTION

I used this set of slides for a talk I gave at the SCRUM Breakfast in Bern on June 30, 2010.

TRANSCRIPT

Page 1: Agile steps to improve the status quo

agile stepsto improvethe status quo

www.tudorgirba.com

Page 4: Agile steps to improve the status quo

PhD2002 2005

www.tudorgirba.com

Page 5: Agile steps to improve the status quo

PhD2002 2005 2009

PostDoc

www.tudorgirba.com

Page 6: Agile steps to improve the status quo

PhD2002 2005 2009

PostDoc

Consultant

www.tudorgirba.com

Page 7: Agile steps to improve the status quo
Page 8: Agile steps to improve the status quo

agile stepsto improvethe status quo

www.tudorgirba.com

Page 9: Agile steps to improve the status quo

agile stepsto improvethe status quo

www.tudorgirba.com

challengedemolisten

enable

Page 10: Agile steps to improve the status quo

the status quo

Page 11: Agile steps to improve the status quo

the status quothe existing state of affairs

Page 13: Agile steps to improve the status quo
Page 14: Agile steps to improve the status quo
Page 16: Agile steps to improve the status quo
Page 17: Agile steps to improve the status quo
Page 18: Agile steps to improve the status quo

E = m c. 2

Page 19: Agile steps to improve the status quo
Page 20: Agile steps to improve the status quo
Page 21: Agile steps to improve the status quo

post-it

Page 22: Agile steps to improve the status quo
Page 23: Agile steps to improve the status quo

the status quothe existing state of affairs

Page 24: Agile steps to improve the status quo

the status quothe sum of our assumptions

Page 25: Agile steps to improve the status quo

Tom de Marco

It’s not what you don’t know that kills you,it’s what you know that isn’t so

Page 26: Agile steps to improve the status quo

challenge

Page 27: Agile steps to improve the status quo

challengepresent

Page 28: Agile steps to improve the status quo

presenting is storytelling

Page 29: Agile steps to improve the status quo

story = fairy tale

Page 30: Agile steps to improve the status quo

designyour story

Page 31: Agile steps to improve the status quo

messagemessage

messagemessage

message

messagemessage

message

message

messagemessage

message

messagemessagemessage

message

message

messagemessage

message

message

message

message

message

messagemessage

message

message

message

message

messagemessage

message

messagemessage

message

message

Page 32: Agile steps to improve the status quo

messagemessage

messagemessage

message

messagemessage

message

message

messagemessage

message

messagemessagemessage

message

message

messagemessage

message

message

message

message

message

messagemessage

message

message

message

message

messagemessage

message

messagemessage

message

message

Page 33: Agile steps to improve the status quo

messageone

Page 34: Agile steps to improve the status quo
Page 35: Agile steps to improve the status quo
Page 36: Agile steps to improve the status quo
Page 37: Agile steps to improve the status quo

to Understand Software Evolution

Modeling History

vorgelegt von

Tudor Gîrba

von Rumänien

Inauguraldissertation der Philosophisch-naturwissenschaftlichen

Fakultät der Universität Bern

Leiter der Arbeit:

Prof. Dr. Stéphane DucasseProf. Dr. Oscar Nierstrasz

Institut für Informatik und angewandte Mathematik

Page 38: Agile steps to improve the status quo

To provide a genericmeta-model for expressing software evolution analyses, we need to recognize evolution as an explicit phenomenon and model it as a first class entity.

to Understand Software Evolution

Modeling History

vorgelegt von

Tudor Gîrba

von Rumänien

Inauguraldissertation der Philosophisch-naturwissenschaftlichen

Fakultät der Universität Bern

Leiter der Arbeit:

Prof. Dr. Stéphane DucasseProf. Dr. Oscar Nierstrasz

Institut für Informatik und angewandte Mathematik

Page 39: Agile steps to improve the status quo

messageone

Page 40: Agile steps to improve the status quo

messageonedeliver

Page 41: Agile steps to improve the status quo

slides

Page 42: Agile steps to improve the status quo

slides are visual aids

Page 43: Agile steps to improve the status quo

slides are visual aids

Page 44: Agile steps to improve the status quo

Important sign

1. At this sign, stop, look around and proceed if no other car is coming your way.

2. Important!!!! The cars coming from the other directions will not have to stop.

3. This sign was put here by the authorities in charge.

4. This sign concerns vehicles only. Pedestrians should look at the signs dedicated to them.

5. This sign should not be touched or hindered in any way. Any violation is punishable according to the law.

Page 45: Agile steps to improve the status quo

STOP

Page 46: Agile steps to improve the status quo

STOPImportant sign

•At this sign, stop, look around and proceed if no other car is coming your way.

• Important!!!! The cars coming from the other directions will not have to stop.

• This sign was put here by the authorities in charge.

•This sign concerns vehicles only. Pedestrians should look at the signs dedicated to them.

•This sign should not be touched or hindered in any way. Any violation is punishable according to the law.

Page 47: Agile steps to improve the status quo

STOPImportant sign

•At this sign, stop, look around and proceed if no other car is coming your way.

• Important!!!! The cars coming from the other directions will not have to stop.

• This sign was put here by the authorities in charge.

•This sign concerns vehicles only. Pedestrians should look at the signs dedicated to them.

•This sign should not be touched or hindered in any way. Any violation is punishable according to the law.

detailed effective

Page 48: Agile steps to improve the status quo
Page 49: Agile steps to improve the status quo
Page 50: Agile steps to improve the status quo

projector = screen

Page 51: Agile steps to improve the status quo
Page 52: Agile steps to improve the status quo
Page 53: Agile steps to improve the status quo
Page 54: Agile steps to improve the status quo
Page 55: Agile steps to improve the status quo

the story is in between

Page 56: Agile steps to improve the status quo

slides are visual aids

Page 57: Agile steps to improve the status quo

slides are visual aids

Page 58: Agile steps to improve the status quo
Page 59: Agile steps to improve the status quo
Page 60: Agile steps to improve the status quo
Page 61: Agile steps to improve the status quo

presentationzen.com

tudorgirba.com/blog

blog.duarte.com

thebackofthenapkin.com

Page 63: Agile steps to improve the status quo

presenting is storytelling

Page 64: Agile steps to improve the status quo

challengepresent

Page 65: Agile steps to improve the status quo

challengepresent

demo

Page 66: Agile steps to improve the status quo
Page 67: Agile steps to improve the status quo
Page 68: Agile steps to improve the status quo

content

Page 69: Agile steps to improve the status quo

content form

Page 70: Agile steps to improve the status quo

content form

Page 71: Agile steps to improve the status quo

content form

Page 72: Agile steps to improve the status quo

yesterday’s weather

Page 73: Agile steps to improve the status quo
Page 74: Agile steps to improve the status quo

30%

Page 75: Agile steps to improve the status quo

30% 90%

Page 76: Agile steps to improve the status quo

yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENMandTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1).

yesterdayWeatherHits := 0.

(2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'.

previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i).

previousVersionsTopHistories := OrderedCollection new.

x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0.

previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ].

last2VersionsTopHistories := OrderedCollection new.

last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories

Page 77: Agile steps to improve the status quo

(each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ].

last2VersionsTopHistories := OrderedCollection new.

last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories selectFromReferenceVersionCollection: last2Versions) sortBy: [:a :b | a value getWENM >= b value getWENM].

x := last2HistoriesSortedByENM first value getENM. valuesCount := 0. last2HistoriesSortedByENM do: [ :each | (each value getENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getENM]. (valuesCount < topCurrentENM) ifTrue: [ last2VersionsTopHistories addLast: each] ]. previousVersionsTopHistoriesNames := previousVersionsTopHistories collect: [ :each | each value name]. over := false.

last2VersionsTopHistories do: [:each | ((previousVersionsTopHistoriesNames includes: (each value name)) and: [over not]) ifTrue: [ yesterdayWeatherHits := yesterdayWeatherHits + 1. over := true]. ]. ].

^yesterdayWeatherHits/(self size - 1) asFloat.

Page 78: Agile steps to improve the status quo

yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENMandTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1).

yesterdayWeatherHits := 0.

(2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'.

previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i).

previousVersionsTopHistories := OrderedCollection new.

x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0.

previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ].

last2VersionsTopHistories := OrderedCollection new.

last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories

Page 79: Agile steps to improve the status quo

yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENMandTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1).

yesterdayWeatherHits := 0.

(2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'.

previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i).

previousVersionsTopHistories := OrderedCollection new.

x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0.

previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ].

last2VersionsTopHistories := OrderedCollection new.

last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories

Page 80: Agile steps to improve the status quo
Page 81: Agile steps to improve the status quo
Page 82: Agile steps to improve the status quo

present

Page 83: Agile steps to improve the status quo

present

past

Page 84: Agile steps to improve the status quo

present

past future

Page 85: Agile steps to improve the status quo

present

past future

Page 86: Agile steps to improve the status quo

present

past future

Page 87: Agile steps to improve the status quo

present

past future

prediction hit

Page 88: Agile steps to improve the status quo

present

past future

YesterdayWeatherHit(present):

past:=all.topChanged(beginning, present) future:=all.topChanged(present, end)

past.intersect(future).notEmpty()

prediction hit

Page 89: Agile steps to improve the status quo

hit hit hit

YW = 3 / 8 = 37%

hit hit hit hit hit hit hit

YW = 7 / 8 = 87%

Page 90: Agile steps to improve the status quo

yWFor: yesterdayCheck for: tomorrowCheck | hits | hits := (self detailedYWFor: yesterdayCheck for: tomorrowCheck) sum: [ :each | each isEmpty ifTrue: [0] ifFalse: [1]]. ^ hits / (self versions size - 2)

yWFor: yesterdayCheck for: tomorrowCheck ^ ( 3 to: self versions size ) collect: [ :i | | yesterday tomorrow | yesterday := self selectByExpression: yesterdayCheck appliedFromVersionIndex: 1 toVersionIndexAndPresentInIt: i - 1. tomorrow := self selectByExpression: tomorrowCheck appliedFromVersionIndexAndPresentInIt: i - 1 toVersionIndex: self versions size. yesterday intersectWith: tomorrow ]

Page 91: Agile steps to improve the status quo

content form

Page 92: Agile steps to improve the status quo
Page 93: Agile steps to improve the status quo
Page 94: Agile steps to improve the status quo

content form

Page 95: Agile steps to improve the status quo

challengedemo

Page 96: Agile steps to improve the status quo

challengedemolisten

Page 97: Agile steps to improve the status quo

challengedemolisten

enable

Page 98: Agile steps to improve the status quo
Page 99: Agile steps to improve the status quo

It’s not Lupus

Page 100: Agile steps to improve the status quo
Page 101: Agile steps to improve the status quo

established technology

Page 102: Agile steps to improve the status quo

established technology

Page 103: Agile steps to improve the status quo

established technology

Page 104: Agile steps to improve the status quo

disr

uptiv

ete

chno

logy

established technology

Page 105: Agile steps to improve the status quo
Page 106: Agile steps to improve the status quo

1 2 3 4

5 6 7 8

9 10 11

1213 14

15

Page 107: Agile steps to improve the status quo

1 2 3 4

5 6 7 8

9 10 11

1213 14

15

Page 108: Agile steps to improve the status quo

1 2 3 4

5 6 7 8

9 10 11

1213 14 15

Page 109: Agile steps to improve the status quo

1 2 3 4

5 6 7 8

9 10 11

1213 14 15

Page 110: Agile steps to improve the status quo

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15

Page 111: Agile steps to improve the status quo

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

Page 112: Agile steps to improve the status quo

1 2 3 4

5 6 7 8

9 10 11 12

Page 113: Agile steps to improve the status quo

WhatWhereWhenWhoHow

Page 114: Agile steps to improve the status quo

WhatWhereWhenWhoHow Why

Page 115: Agile steps to improve the status quo

challengedemolisten

enable

Page 116: Agile steps to improve the status quo

agile stepsto improvethe status quo

www.tudorgirba.com

challengedemolisten

enable