change vector tracking in emergent design

25
talk @ Agile Gurgaon 2016

Upload: ranjith-tharayil

Post on 20-Feb-2017

186 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Page 2: Change vector tracking in emergent design

Copyright © 2015 SolutionsIQ Inc. All rights reserved.

6801 185th Ave NE, Suite 200Redmond, WA 98052solutionsiq.com1.800.235.4091

Change Vector Tracking A reflective approach towards designing large scale software

BYRanjith TharayilSenior Agile Consultant & Technical Coach [email protected]

Terri Sharp
Background artwork, logo and address block are locked.Customize it: Unused text placeholders can be deleted if not needed. The title placeholder will hold up to three lines of text, sub title holds up to two lines of text. For readability, it would be better not to change the size of the text on the title slides.
Page 3: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Expectations and take always

Understand the problem wrt design debt in large scale software systems.

Exposure to a novel technique called Change Vector Tracking (CVT)

Can start applying it right away

Knowledge of how change can be modelled as a weighted vector

Using CVT to make informed decision on architecture refactoring.

Page 4: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

About Me

https://in.linkedin.com/in/ranjiththarayil

Ranjith Tharayil

Page 5: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Design Is a Wicked Problem , a “wicked” problem is one that

could be clearly defined only by solving it, or by solving part of it

.This paradox implies, essentially, that you have to “solve” the

problem once in order to clearly define it and then solve it again

to create a solution that works

”- McConnell, Steve. Code complete. Pearson Education,

2004.

Terri Sharp
The gray background box is locked. A blank version (no gray box) is available if needed.Customize it: Move the quote marks to fit around your text. The text placeholder can be changed as needed, if you wish to use smaller text and add an image or graphic.
Page 6: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Architecture style wrt embracing change

Organic Architecture

Architecture first

Just enough Architecture

Emergent Architecture

embracing change better

Page 7: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Emergent design

Test Code Refactor Test Code Refactor Test Code Refactor Test Code Refactor Test Code Refactor Test Code Refactor Test Code Refactor Test Code Refactor Design

Terri Sharp
This slide shows the first three levels of the bullet list heirarchy. You can unbold the subhead line if you wish, or use the Increase List Level button to move through the levels:Level one, Calibri 19pt boldLevel two, Calibri 19pt regularLevel three, Calibri 19pt regular with double carat bulletLevel four, Calibri 17pt regular with hyphen bulletLevel five, Calibri 17pt regular with square bulletCustomize it: Change text size if needed to fit for an extremely text-heavy layout.
Page 8: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Problem : Refactoring less focus on architecture

System

Sub-system

Modules

Modules

Modules

Sub-system

Modules

Modules

Modules

Sub-system

Modules

Sub-system

Modules

modules

Refactoring , observed trends

» More focus on classes inside

modules

» Less focus on Modules ,sub-

Subsystem and system

» Inexperience team members

» Accumulate design debt

» Technical debt

Page 9: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Example : Super MarketI 'am using a simple example to explain the problem , same is applicable for bigger complex systems

The super market has many products to sell

Each product has a

quality

cost

The rules for computation of Quality and Cost are different for each product

Abstract Product

computeQuality()computeCost ()

Concreate product 1

Concreate product 2

Concreate product n-1

Concreate product N

Example of a concreate product

Page 10: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Is this the best design ?

Onion

computeQuality()computeCost ()

» Is this following SRP ? Single responsibility principle

» SRP : A class should have only one reason to change

» What if the pricing strategy of a product varies

from time to time ?

Page 11: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

How about a different design

Abstract Product

Pricing strategy

computeQuality()

Concreate product 1

Concreate product 2

Concreate product n-1

Concreate product N

PricingStrategy

CompteCost()

Strategy 1

Strategy 2

Strategy 3

Page 12: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Another design

Product

PricingStrategy QualityRule

PricingStrategy

CompteCost()

Strategy 1

Strategy 2

Strategy 3

QualityRule

Quality()

Rule 1

Rule 2

Page 13: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Which design is better ?

Page 14: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Which design is better ?

Answer is : it depends

Dependents on what ?

Lest try to define this context

Context

Page 15: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Which design is better ?

If mostly we will be only adding / removing products

Page 16: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Which design is better ?

• We will be constantly adding new products , also • We need to modify pricing strategy every now and then

for existing products

Page 17: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Which design is better ?

• We need to often modify both pricing strategy & quality rule for existing products

Page 18: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Design should depend on how the system should behave

The behaviour of a system changes with time Due to

new requirements

enhancements

Change is constant and can disrupt design & architecture

Need to track change and its effect on design/architecture

Page 19: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Modelling change as a vector

Change has multiple dimensions

Hence it can be quantified using a vector like ax+by+cz

Example:

3(New Products) + 2(Modify Pricing strategy)

4(New Products) + 1(Miscellaneous)

2(Modify Pricing strategy) +2(Modify Quality rule) +1(Miscellaneous)

Page 20: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

How change can be modelled as a weighted vector ?

We need to periodically review & document change vector for our system

3(New Products) +

2(Modify Pricing strategy)4(New Products)

+ 1(Miscellaneous)

Few Months

Change: new requirement , Enhancement

Change requests

DevTrack

Change vector

Refactor

Ranjith Tharayil
Page 21: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Change vector tracking from Architecture to class

System

Sub-system

Modules

classes

Modules

classes

Sub-system

Modules

classes

Change requests

DevTrack

Change vector

Refactor

Page 22: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Change vector tracking in context of micro services

Page 23: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Process and Ceremonies

• Change vector tracking meeting

• with TL , Architects

• Every month initially

• Cadence decide by need

• Time boxed

• Analyse change request from

• Source control (Past)

• Analyse product backlog (Future)

• Document Change vector

• Identify if any design debt , ideally you should have none

Change requests

DevTrack

Change vector

Refactor

Page 24: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Re-visiting expectations

Understand the problem wrt design debt in large scale software systems.

Exposure to a novel technique called Change Vector Tracking (CVT)

Can start applying it right away

» Add this jargon to your resume :P

Knowledge of how change can be modelled as a weighted vector

Using CVT to make informed decision on architecture refactoring.

Page 25: Change vector tracking in emergent design

talk @ Agile Gurgaon 2016

Questions

Acknowledgments : After hearing out this technique Sharad Julka coined the term reflective design .