22
www.agilegurgaon.com

Change Vector Tracking...Ranjith Tharayil 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

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Page 2: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Change Vector Tracking

A reflective approach towards designing large scale software

BYRanjith TharayilSenior Agile Consultant & Technical Coach [email protected]

Page 3: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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...Ranjith Tharayil 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

www.agilegurgaon.com

About Me

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

Ranjith Tharayil

Page 5: Change Vector Tracking...Ranjith Tharayil 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

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.

Page 6: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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

Page 7: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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 8: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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

Page 9: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Is this the best design ?

Onion

computeQuality()computeCost ()

» Is this following SRP ? Single responsibility principle

» What if the pricing strategy of a product varies from time to time ?

Page 10: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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 11: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Another design

Product

PricingStrategyQualityRule

PricingStrategy

CompteCost()

Strategy 1

Strategy 2

Strategy 3

QualityRule

Quality()

Rule 1

Rule 2

Page 12: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Which design is better ?

Page 13: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Which design is better ?

• Answer is : it depends

• Dependents on what ?

• Lest try to define this context

Context

Page 14: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Which design is better ?

• We will be adding new products

• We Need to modify pricing strategy for existing products

• We will be only adding new products

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

Page 15: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Design should depend on how the system is behaving currently

• 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 16: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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 17: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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

Page 18: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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 19: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Change vector tracking in context of micro services

Page 20: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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 • Analyse product backlog

• Document Change vector

• Identify if any design debt

• Prioritize (design debt ) and push a story to your back log

Change requests

DevTrack

Change vector

Refactor

Page 21: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

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 22: Change Vector Tracking...Ranjith Tharayil 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

www.agilegurgaon.com

Questions

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