SlideShare a Scribd company logo
Ganesh Samarthyam (ganesh@konfhub.com)
2
Technical debt
“Technical debt is the debt that accrues
when you knowingly or unknowingly make
wrong or non-optimal design decisions”
Reference: Refatoring for Software Design Smells– Girish et al Morgan Kaufman 2014
3
Why care about technical debt?
Reference: Zen and the art of software quality – Jim Highsmith Agile 2009 conference
4
What constitutes technical debt?
…
Code debt
Static
analysis tool
violations
Inconsistent
coding style
Design debt
Design smells
Violations of
design rules
Test debt
Lack of tests
Inadequate
test coverage
Architecture debt
Lacking
structure (big
ball of mud)
Violation of
Architecture
Rules
5
What is refactoring?
Refactoring (noun): a change
made to the internal structure of
software to make it easier to
understand and cheaper to
modify without changing its
observable behavior
Refactor (verb): to restructure
software by applying a series
of refactorings without
changing its observable
behavior
6
How to improve design quality in practice?
7
We need tool help
8
Tools to explore
Jhawk
(Java)
CodeCity
(C++, Java, C#)
CppDepend
(C++)
Sotograph
(C++, Java, C#)
Imagix 4D
(C, C++, Java)
Lattix
(C/C++, Java, C#)
SolidSX
(C++, Java, C#)
Bauhaus
(C/C++, Java, C#)
Structure101
(Java, C#)
Understand
(C/C++, Java, C#)
Simian
(C/C++, Java, C#, …)
Jarchitect
(Java)
Ndepend
(C#)
Stan4J
(Java)
InFusion
(C/C++, Java)
InCode
(C/C++, Java)
9
Structural Analysis for Java (stan4j)
10
JArchitect
11
InFusion/InCode
12
PMD CPD
13
SotoArc
14
Lattix DSM
15
CodeCity
16
JHawk
17
SolidSx
18
Structure 101
19
Understand
20
Imagix 4D
21
Bauhaus
22
Eclipse IDE
23
Tool links
• Structure101: https://structure101.com/
• Jarchitect: https://www.jarchitect.com/
• Designite: http://www.designite-
tools.com/DesigniteJava/
• PMD CPD: https://pmd.github.io
• Stan4J: http://stan4j.com/
• IntelliJ IDEA: https://www.jetbrains.com/idea/
• Sotograph/SotoArc:
https://www.hello2morrow.com/products/sotograph
• Lattix: https://lattix.com/
• SolidSX: http://www.solidsourceit.com/

More Related Content

What's hot (20)

PPTX
Mobile engineering at GOJEK Scale
raditya gumay
 
PDF
Vertical vs horizontal software architecture ruby conf india 2016
Christian Hujer
 
PPTX
Behavior Driven Development with AngularJS & Jasmine
Remus Langu
 
PDF
Architecture refactoring - accelerating business success
Ganesh Samarthyam
 
PPTX
How to sustain a tool building community-driven effort
Jordi Cabot
 
PPTX
Importance of the quality of code
Shwe Yee
 
PDF
Agile archiecture iltam 2014
Dani Mannes
 
KEY
TorontoRb Intro to BDD
nunick
 
PDF
Code quality as a built-in process
Elad Maimon
 
PDF
Modern Agile Software Architecture
Kannan Durairaj
 
KEY
Jsx language-notes
Goro Fuji
 
PDF
Design patterns through refactoring
Ganesh Samarthyam
 
PDF
Understanding, measuring and improving code quality in JavaScript
Mark Daggett
 
PPTX
Code quality
Provectus
 
PPT
Design Smells
Giorgio Vespucci
 
PPTX
A UML profile for OData Web APIs
Jordi Cabot
 
PPTX
Tdd 2 : opinions, alternatives et compléments
Denis Laliberté
 
PPTX
Basics of Software Architecture for .NET Developers
Dan Douglas
 
PPT
Agile development with Ruby
khelll
 
POT
Quality metrics and angular js applications
nadeembtech
 
Mobile engineering at GOJEK Scale
raditya gumay
 
Vertical vs horizontal software architecture ruby conf india 2016
Christian Hujer
 
Behavior Driven Development with AngularJS & Jasmine
Remus Langu
 
Architecture refactoring - accelerating business success
Ganesh Samarthyam
 
How to sustain a tool building community-driven effort
Jordi Cabot
 
Importance of the quality of code
Shwe Yee
 
Agile archiecture iltam 2014
Dani Mannes
 
TorontoRb Intro to BDD
nunick
 
Code quality as a built-in process
Elad Maimon
 
Modern Agile Software Architecture
Kannan Durairaj
 
Jsx language-notes
Goro Fuji
 
Design patterns through refactoring
Ganesh Samarthyam
 
Understanding, measuring and improving code quality in JavaScript
Mark Daggett
 
Code quality
Provectus
 
Design Smells
Giorgio Vespucci
 
A UML profile for OData Web APIs
Jordi Cabot
 
Tdd 2 : opinions, alternatives et compléments
Denis Laliberté
 
Basics of Software Architecture for .NET Developers
Dan Douglas
 
Agile development with Ruby
khelll
 
Quality metrics and angular js applications
nadeembtech
 

Similar to Applying Refactoring Tools in Practice (20)

PPTX
Restructuring Technical Debt - A Software and System Quality Approach
Adnan Masood
 
PDF
Refactoring guided by design principles driven by technical debt
Ganesh Samarthyam
 
PDF
An Exploratory Study on the Occurrence of Self-Admitted Technical Debt in And...
University of Hawai‘i at Mānoa
 
PDF
Technical debt management strategies
Raquel Pau
 
PDF
Technical debt strategy
Masas Dani
 
PDF
What scrum masters and product owners should know about software quality and ...
STX Next
 
PDF
Refactoring Debt: Myth or Reality? An Exploratory Study on the Relationship B...
University of Hawai‘i at Mānoa
 
PDF
Why care about technical debt?
Tushar Sharma
 
PDF
Choked by technical debt?
STAG Software Private Limited
 
PDF
Refactoring for Software Design Smells - 1 day Workshop
Ganesh Samarthyam
 
PPTX
Technical Debt
Gary Short
 
PDF
Moving App to the Next Stage
Rakuten Group, Inc.
 
PDF
Technical Debt 2.0
Rakuten Group, Inc.
 
PDF
Tools for Refactoring
Ganesh Samarthyam
 
PDF
From Technical Debt to Technical Health
Mikael Vesavuori
 
PDF
Cómo reducir la fricción en el desarrollo de software
Software Guru
 
PPTX
Week 2 SREE.pptx Software reengieering ucp sllides
mustafadriveonly
 
PDF
Managing technical debt
Fadi Stephan
 
PDF
ECOOP05 WOORa.ppt
Ptidej Team
 
PDF
How to justify technical debt mitigations in Software Engineering
André Agostinho
 
Restructuring Technical Debt - A Software and System Quality Approach
Adnan Masood
 
Refactoring guided by design principles driven by technical debt
Ganesh Samarthyam
 
An Exploratory Study on the Occurrence of Self-Admitted Technical Debt in And...
University of Hawai‘i at Mānoa
 
Technical debt management strategies
Raquel Pau
 
Technical debt strategy
Masas Dani
 
What scrum masters and product owners should know about software quality and ...
STX Next
 
Refactoring Debt: Myth or Reality? An Exploratory Study on the Relationship B...
University of Hawai‘i at Mānoa
 
Why care about technical debt?
Tushar Sharma
 
Choked by technical debt?
STAG Software Private Limited
 
Refactoring for Software Design Smells - 1 day Workshop
Ganesh Samarthyam
 
Technical Debt
Gary Short
 
Moving App to the Next Stage
Rakuten Group, Inc.
 
Technical Debt 2.0
Rakuten Group, Inc.
 
Tools for Refactoring
Ganesh Samarthyam
 
From Technical Debt to Technical Health
Mikael Vesavuori
 
Cómo reducir la fricción en el desarrollo de software
Software Guru
 
Week 2 SREE.pptx Software reengieering ucp sllides
mustafadriveonly
 
Managing technical debt
Fadi Stephan
 
ECOOP05 WOORa.ppt
Ptidej Team
 
How to justify technical debt mitigations in Software Engineering
André Agostinho
 
Ad

More from Ganesh Samarthyam (20)

PDF
Wonders of the Sea
Ganesh Samarthyam
 
PDF
Animals - for kids
Ganesh Samarthyam
 
PDF
CFP - 1st Workshop on “AI Meets Blockchain”
Ganesh Samarthyam
 
PDF
Great Coding Skills Aren't Enough
Ganesh Samarthyam
 
PDF
College Project - Java Disassembler - Description
Ganesh Samarthyam
 
PDF
Coding Guidelines - Crafting Clean Code
Ganesh Samarthyam
 
PDF
Design Patterns - Compiler Case Study - Hands-on Examples
Ganesh Samarthyam
 
PDF
Bangalore Container Conference 2017 - Brief Presentation
Ganesh Samarthyam
 
PDF
Bangalore Container Conference 2017 - Poster
Ganesh Samarthyam
 
PDF
Software Design in Practice (with Java examples)
Ganesh Samarthyam
 
PDF
OO Design and Design Patterns in C++
Ganesh Samarthyam
 
PDF
Bangalore Container Conference 2017 - Sponsorship Deck
Ganesh Samarthyam
 
PDF
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
PPT
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
PDF
Java Generics - Quiz Questions
Ganesh Samarthyam
 
PDF
Java Generics - by Example
Ganesh Samarthyam
 
PDF
Software Architecture - Quiz Questions
Ganesh Samarthyam
 
PDF
Docker by Example - Quiz
Ganesh Samarthyam
 
PDF
Core Java: Best practices and bytecodes quiz
Ganesh Samarthyam
 
PDF
Advanced Debugging Using Java Bytecodes
Ganesh Samarthyam
 
Wonders of the Sea
Ganesh Samarthyam
 
Animals - for kids
Ganesh Samarthyam
 
CFP - 1st Workshop on “AI Meets Blockchain”
Ganesh Samarthyam
 
Great Coding Skills Aren't Enough
Ganesh Samarthyam
 
College Project - Java Disassembler - Description
Ganesh Samarthyam
 
Coding Guidelines - Crafting Clean Code
Ganesh Samarthyam
 
Design Patterns - Compiler Case Study - Hands-on Examples
Ganesh Samarthyam
 
Bangalore Container Conference 2017 - Brief Presentation
Ganesh Samarthyam
 
Bangalore Container Conference 2017 - Poster
Ganesh Samarthyam
 
Software Design in Practice (with Java examples)
Ganesh Samarthyam
 
OO Design and Design Patterns in C++
Ganesh Samarthyam
 
Bangalore Container Conference 2017 - Sponsorship Deck
Ganesh Samarthyam
 
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
Java Generics - Quiz Questions
Ganesh Samarthyam
 
Java Generics - by Example
Ganesh Samarthyam
 
Software Architecture - Quiz Questions
Ganesh Samarthyam
 
Docker by Example - Quiz
Ganesh Samarthyam
 
Core Java: Best practices and bytecodes quiz
Ganesh Samarthyam
 
Advanced Debugging Using Java Bytecodes
Ganesh Samarthyam
 
Ad

Recently uploaded (20)

PPTX
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
PPTX
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PPTX
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PPTX
Engineering the Java Web Application (MVC)
abhishekoza1981
 
PDF
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
PDF
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
Engineering the Java Web Application (MVC)
abhishekoza1981
 
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 

Applying Refactoring Tools in Practice

  • 2. 2 Technical debt “Technical debt is the debt that accrues when you knowingly or unknowingly make wrong or non-optimal design decisions” Reference: Refatoring for Software Design Smells– Girish et al Morgan Kaufman 2014
  • 3. 3 Why care about technical debt? Reference: Zen and the art of software quality – Jim Highsmith Agile 2009 conference
  • 4. 4 What constitutes technical debt? … Code debt Static analysis tool violations Inconsistent coding style Design debt Design smells Violations of design rules Test debt Lack of tests Inadequate test coverage Architecture debt Lacking structure (big ball of mud) Violation of Architecture Rules
  • 5. 5 What is refactoring? Refactoring (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior Refactor (verb): to restructure software by applying a series of refactorings without changing its observable behavior
  • 6. 6 How to improve design quality in practice?
  • 8. 8 Tools to explore Jhawk (Java) CodeCity (C++, Java, C#) CppDepend (C++) Sotograph (C++, Java, C#) Imagix 4D (C, C++, Java) Lattix (C/C++, Java, C#) SolidSX (C++, Java, C#) Bauhaus (C/C++, Java, C#) Structure101 (Java, C#) Understand (C/C++, Java, C#) Simian (C/C++, Java, C#, …) Jarchitect (Java) Ndepend (C#) Stan4J (Java) InFusion (C/C++, Java) InCode (C/C++, Java)
  • 23. 23 Tool links • Structure101: https://structure101.com/ • Jarchitect: https://www.jarchitect.com/ • Designite: http://www.designite- tools.com/DesigniteJava/ • PMD CPD: https://pmd.github.io • Stan4J: http://stan4j.com/ • IntelliJ IDEA: https://www.jetbrains.com/idea/ • Sotograph/SotoArc: https://www.hello2morrow.com/products/sotograph • Lattix: https://lattix.com/ • SolidSX: http://www.solidsourceit.com/