+ All Categories
Home > Software > Transformation Priority Premise @Softwerkskammer MUC

Transformation Priority Premise @Softwerkskammer MUC

Date post: 15-Jan-2017
Category:
Upload: david-voelkel
View: 498 times
Download: 1 times
Share this document with a friend
22
The Transformation Priority Premise Softwerkskammer Meetup Munich 11.02.2016 David Völkel
Transcript
Page 1: Transformation Priority Premise @Softwerkskammer MUC

The Transformation

Priority Premise

Softwerkskammer Meetup Munich

11.02.2016

David Völkel

Page 2: Transformation Priority Premise @Softwerkskammer MUC

Agenda

● Pizza

● Theory

● Kata

● Another Beer

Page 4: Transformation Priority Premise @Softwerkskammer MUC

Solution

Take Baby Steps

Image by Seattle Municipal Archives

Page 6: Transformation Priority Premise @Softwerkskammer MUC

Test Driven Development

red

refactor

green

Page 7: Transformation Priority Premise @Softwerkskammer MUC

Types of Code

Testcode

red

refactor

green

„Transformation“

= Implementation

Refactoring

Design

Page 8: Transformation Priority Premise @Softwerkskammer MUC

Transformation Priorities

● ({}–>nil) no code at all -> code that returns nil

● (nil->constant)

● (constant->constant+) simple to a more complex constant

● (constant->scalar) replacing a constant with a variable

● (statement->statements) adding more unconditional

statements

● (unconditional->if) splitting the execution path

● (scalar->array)

● (array->container)

● (statement->recursion)

● (if->while)

● (expression->function)

● (variable->assignment) replacing the value of a variable.

Page 9: Transformation Priority Premise @Softwerkskammer MUC

Strategy

• When passing a test, prefer

higher priority

transformations

• Choose as next test the one

that can be implemented

with higher priority

transformations

green

refactor

red

Page 10: Transformation Priority Premise @Softwerkskammer MUC

Strategy

• When passing a test, prefer

higher priority

transformations

• Choose as next test the one

that can be implemented

with higher priority

transformations

• Even during refactoring

green

refactor

red

Page 11: Transformation Priority Premise @Softwerkskammer MUC

The Kata

Transformation priorities:

● ({}–>nil) no code at all -> code that returns nil

● (nil->constant)

● (constant->constant+) simple to a more complex constant

● (constant->scalar) replacing a constant with a variable

● (statement->statements) adding more unconditional

statements

● (unconditional->if) splitting the execution path

● (scalar->array)

● (array->container)

● (statement->recursion)

● (if->while)

● (expression->function)

● (variable->assignment) replacing the value of a variable.

http://agilekatas.co.uk/katas/RomanNumerals-Kata

Page 12: Transformation Priority Premise @Softwerkskammer MUC

Share your experience!

Page 13: Transformation Priority Premise @Softwerkskammer MUC

The Kata

Transformation priorities:

● ({}–>nil) no code at all -> code that returns nil

● (nil->constant)

● (constant->constant+) simple to a more complex constant

● (constant->scalar) replacing a constant with a variable

● (statement->statements) adding more unconditional

statements

● (unconditional->if) splitting the execution path

● (scalar->array)

● (array->container)

● (statement->recursion)

● (if->while)

● (expression->function)

● (variable->assignment) replacing the value of a variable.

http://agilekatas.co.uk/katas/RomanNumerals-Kata

Page 14: Transformation Priority Premise @Softwerkskammer MUC

Share your experience!

Page 15: Transformation Priority Premise @Softwerkskammer MUC

Benefits?

Page 16: Transformation Priority Premise @Softwerkskammer MUC

Benefits

Easier and more effective TDD ● Complexity based guideline for choosing

next test & implementation

● Reduces getting stuck with too big steps

● Less tests that are already green

● Less tests left out

Page 17: Transformation Priority Premise @Softwerkskammer MUC

Issues?

Page 18: Transformation Priority Premise @Softwerkskammer MUC

Issues

● Are there other transformations? (almost certainly)

● Are these the right transformations? (probably not)

● Are there better names for the transformations? (almost

certainly)

● Is there really a priority? (I think so, but it might be more

complicated than a simple ordinal sequence)

● If so, what is the principle behind that priority? (some

notion of “complexity”)

● Can it be quantified? (I have no idea)

● Is the priority order presented in this blog correct? (not

likely)

● The transformations as described are informal at best.

Can they be formalized? (That’s the holy grail!)

Raised by Uncle Bob

Page 19: Transformation Priority Premise @Softwerkskammer MUC

Retrospective

Page 20: Transformation Priority Premise @Softwerkskammer MUC

Special Thanks

to Ivan Kusalic

@ikusalic

for your inspiration

Page 22: Transformation Priority Premise @Softwerkskammer MUC

Lizenz

Creative Commons Attribution-ShareAlike 3.0

https://creativecommons.org/licenses/by-sa/3.0/de/


Recommended