Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
www.agilegurgaon.com
www.agilegurgaon.com
Change Vector Tracking
A reflective approach towards designing large scale software
BYRanjith TharayilSenior Agile Consultant & Technical Coach [email protected]
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.
www.agilegurgaon.com
About Me
https://in.linkedin.com/in/ranjiththarayil
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 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.
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
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
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
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 ?
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
www.agilegurgaon.com
Another design
Product
PricingStrategyQualityRule
PricingStrategy
CompteCost()
Strategy 1
Strategy 2
Strategy 3
QualityRule
Quality()
Rule 1
Rule 2
www.agilegurgaon.com
Which design is better ?
www.agilegurgaon.com
Which design is better ?
• Answer is : it depends
• Dependents on what ?
• Lest try to define this context
Context
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
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
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)
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
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
www.agilegurgaon.com
Change vector tracking in context of micro services
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
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.
www.agilegurgaon.com
Questions
Acknowledgments : After hearing out this technique Sharad Julka coined the term reflective design .