SlideShare a Scribd company logo
Refactoring for Software
Architecture Smells
International
Workshop on
Refactoring
Singapore,Sept.4 2016
Ganesh Samarthyam
CodeOps Technologies
ganesh@codeops.tech
www.codeops.tech
Refactoring for Software
Architecture Smells
“Functional Chaos!”
City Metaphor for Refactoring
“Cities grow, cities evolve, cities
have parts that simply die while other
parts flourish; each city has to be
renewed in order to meet the needs of its
populace… Software-intensive systems
are like that. They grow, they evolve,
sometimes they wither away, and
sometimes they flourish…”
Grady Booch in the foreword for “Refactoring for Software Design Smells: Managing Technical Debt”, Girish Suryanarayana, Ganesh Samarthyam, Tushar Sharma, Morgan Kaufmann/Elsevier, 2014.
Code refactoring
margin = c.getMargin();
if (c instanceof AbstractButton) {
margin = ((AbstractButton)c).getMargin();
} else if (c instanceof JToolBar) {
margin = ((JToolBar)c).getMargin();
} else if (c instanceof JTextComponent) {
margin = ((JTextComponent)c).getMargin();
}
Refactoring design smells
Earlier (relatively) mature
work
Tangles in
JDK
Refactoring for Architecture
Smells
Remove one of the dependencies
Change dependency direction
Move one of the dependencies
Architectural refactoring
Architectural refactoring …
Key reasons for architecture
refactoring
Business
needs
Increase
feature
velocity
Address
architecture
decay
Realizing
NFRs
Modernize
Reduce costs
Increase feature velocity
Reduce costs
Address architecture decay
Modernize
Refactoring Windows
Refactoring Windows
Refactoring Windows
“A large number of dependencies at the module level
could be reduced and optimized to:
* make modular reasoning of the system more efficient
* maximize parallel development efficiency
* avoid unwanted parallel change interference
* selectively rebuild and retest subsystems effectively”
Refactoring performed to reduce
and optimize dependencies - by
creating and enforcing layering
Source: Kim, Miryung, Thomas Zimmermann, and Nachiappan Nagappan. "An Empirical Study of RefactoringChallenges and Benefits at Microsoft."
IEEE Transactions on Software Engineering 7 (2014): 1-1.
Refactoring Windows:
Significant Characteristics
Refactoring decisions made after substantial
analysis of existing dependency structure
Refactoring effort was centralized and top
down with designated team for refactoring
Use of custom refactoring tools (MaX)
and processes (quality gate check)
Source: Kim, Miryung, Thomas Zimmermann, and Nachiappan Nagappan. "An Empirical Study of RefactoringChallenges and Benefits at Microsoft."
IEEE Transactions on Software Engineering 7 (2014): 1-1.
Refactoring Windows
Source: Kim, Miryung, Thomas Zimmermann, and Nachiappan Nagappan. "An Empirical Study of RefactoringChallenges and Benefits at Microsoft."
IEEE Transactions on Software Engineering 7 (2014): 1-1.
Refactoring JDK
Tangles in
JDK
Copyright © 2015, Oracle and/or its affiliates. All rights reserved
Copyright © 2015, Oracle and/or its affiliates. All rights reserved
Copyright © 2015, Oracle and/or its affiliates. All rights reserved
Project Jigsaw in Java 9
Modularize JDK & JRE
Hide platform internal details such as sun.misc
Provide a module system for Java developers
Related work
"architectural bad smells"
"architecture smells"
"anti-patterns"
"architecturally-relevant code smells"
"contra-indicated patterns"
"architectural defects"
"[accidental] architectural anti-patterns"
Related work
"high-impact refactorings"
"architecture transformation"
"large refactorings"
"architecture-oriented refactorings"
Related work
• Catalog architecture smells or refactorings
• Architecture smell catalog by Garcia et al.
• Catalog of smells and refactoring by M. Stal (2007)
• Specific categories of architecture smells
• Ouni et al. “web service antipatterns" in the context
of Service Oriented Architectures
• Rama et al. discusses “modularity smells”
Related work
•Architecture refactoring case studies performed on
industrial projects
• Exploratory studies on emerging topics in architecture
refactoring
• Architecture refactoring in software product lines
• Architecture technical debt
• …
Potential Research
Directions
Catalog of architecture
smells and refactoring
Tool support
Economics of architecture
refactoring (quantifying
architecture technical debt)
Refactoring and emerging
architecture styles
and patterns
Example: Lack of tool
support
Unlike code refactoring, most
architectural refactoring is manual
due to lack of tool support!
Automated code smell
detection and refactoring
Refactoring for Software Architecture Smells - International Workshop on Refactoring - Sept 2016
Refactoring for Software Architecture Smells - International Workshop on Refactoring - Sept 2016
ganesh@codeops.tech @GSamarthyam
www.codeops.tech slideshare.net/sgganesh
+91 98801 64463 bit.ly/ganeshsg

More Related Content

PDF
Software Architecture - Quiz Questions
PDF
OO Design and Design Patterns in C++
PDF
Python - code quality and production monitoring
DOCX
C++ & Design Patterns Quicky
PDF
Euro python 2015 writing quality code
PPT
Software Accessibility Siddhesh
PPTX
eMee at HR Tech Europe, 26 March, London
PDF
Software Architecture Erosion and Modernization
Software Architecture - Quiz Questions
OO Design and Design Patterns in C++
Python - code quality and production monitoring
C++ & Design Patterns Quicky
Euro python 2015 writing quality code
Software Accessibility Siddhesh
eMee at HR Tech Europe, 26 March, London
Software Architecture Erosion and Modernization

Viewers also liked (17)

DOC
Lead Allocation System's Attribute Driven Design (ADD)
PPTX
Introduction to AntiPatterns & CodeSmells
PPT
Anti Patterns Siddhesh Lecture2 Of3
PPT
Anti Patterns Siddhesh Lecture1 Of3
KEY
Anti Patterns
PPT
Anti Patterns Siddhesh Lecture3 Of3
PDF
Software Architecture Anti-Patterns
PPTX
Anti patterns part 1
PPT
Lead Allocation System - Attribute Driven Design (ADD)
PPTX
Industry expectations from new recruits
PDF
The eMee Value Proposition
PDF
Software Design - Architectural Kata
PDF
Attribute Driven Styles: The Good, the Bad, and the Unknown (SassConf 2015 Di...
KEY
Api anti patterns
DOCX
Designing and documenting software architecture unit 5
PPTX
Fundamentals Of Software Architecture
PDF
Bangalore Container Conference 2017 - Poster
Lead Allocation System's Attribute Driven Design (ADD)
Introduction to AntiPatterns & CodeSmells
Anti Patterns Siddhesh Lecture2 Of3
Anti Patterns Siddhesh Lecture1 Of3
Anti Patterns
Anti Patterns Siddhesh Lecture3 Of3
Software Architecture Anti-Patterns
Anti patterns part 1
Lead Allocation System - Attribute Driven Design (ADD)
Industry expectations from new recruits
The eMee Value Proposition
Software Design - Architectural Kata
Attribute Driven Styles: The Good, the Bad, and the Unknown (SassConf 2015 Di...
Api anti patterns
Designing and documenting software architecture unit 5
Fundamentals Of Software Architecture
Bangalore Container Conference 2017 - Poster
Ad

Similar to Refactoring for Software Architecture Smells - International Workshop on Refactoring - Sept 2016 (20)

PDF
Illogical engineers
PDF
Illogical engineers
PDF
ScaMaha: A Tool for Parsing, Analyzing, and Visualizing Object-Oriented Softw...
PDF
Neal Ford Emergent Design And Evolutionary Architecture
PDF
Neal Ford Emergent Design And Evolutionary Architecture
PDF
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
PDF
Refactoring for Software Design Smells - Tech Talk
PDF
An Integrated Prototyping Environment For Programmable Automation
PDF
A Software Problem (and a maybe-solution)
PDF
Secrets of going codeless - How to build enterprise apps without coding
PDF
ScaMaha: A Tool for Parsing, Analyzing, and Visualizing Object-Oriented Softw...
PPT
Ensuring code quality
PDF
Refactoring for Software Design Smells - Tech Talk
PDF
Refactoring for Software Design Smells - Tech Talk
PDF
Effective Architecting: Best Practices for Software Architects
PPT
phases of compiler PPT includes phases of compiler
PDF
Software Modernization
PPT
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
KEY
Skillshare - From Noob to Tech CEO - nov 7th, 2011
PPTX
ACM Chicago March 2019 meeting: Software Engineering and AI - Prof. Tao Xie, ...
Illogical engineers
Illogical engineers
ScaMaha: A Tool for Parsing, Analyzing, and Visualizing Object-Oriented Softw...
Neal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary Architecture
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
Refactoring for Software Design Smells - Tech Talk
An Integrated Prototyping Environment For Programmable Automation
A Software Problem (and a maybe-solution)
Secrets of going codeless - How to build enterprise apps without coding
ScaMaha: A Tool for Parsing, Analyzing, and Visualizing Object-Oriented Softw...
Ensuring code quality
Refactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech Talk
Effective Architecting: Best Practices for Software Architects
phases of compiler PPT includes phases of compiler
Software Modernization
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
Skillshare - From Noob to Tech CEO - nov 7th, 2011
ACM Chicago March 2019 meeting: Software Engineering and AI - Prof. Tao Xie, ...
Ad

More from Ganesh Samarthyam (20)

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

Recently uploaded (20)

PDF
Nekopoi APK 2025 free lastest update
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
ai tools demonstartion for schools and inter college
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
Introduction to Artificial Intelligence
PPTX
L1 - Introduction to python Backend.pptx
PDF
top salesforce developer skills in 2025.pdf
PPTX
Transform Your Business with a Software ERP System
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
AI in Product Development-omnex systems
PPTX
CHAPTER 2 - PM Management and IT Context
Nekopoi APK 2025 free lastest update
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Softaken Excel to vCard Converter Software.pdf
How to Migrate SBCGlobal Email to Yahoo Easily
Design an Analysis of Algorithms I-SECS-1021-03
Navsoft: AI-Powered Business Solutions & Custom Software Development
2025 Textile ERP Trends: SAP, Odoo & Oracle
ai tools demonstartion for schools and inter college
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Introduction to Artificial Intelligence
L1 - Introduction to python Backend.pptx
top salesforce developer skills in 2025.pdf
Transform Your Business with a Software ERP System
VVF-Customer-Presentation2025-Ver1.9.pptx
Design an Analysis of Algorithms II-SECS-1021-03
Upgrade and Innovation Strategies for SAP ERP Customers
AI in Product Development-omnex systems
CHAPTER 2 - PM Management and IT Context

Refactoring for Software Architecture Smells - International Workshop on Refactoring - Sept 2016

  • 1. Refactoring for Software Architecture Smells International Workshop on Refactoring Singapore,Sept.4 2016 Ganesh Samarthyam CodeOps Technologies ganesh@codeops.tech www.codeops.tech Refactoring for Software Architecture Smells
  • 3. City Metaphor for Refactoring “Cities grow, cities evolve, cities have parts that simply die while other parts flourish; each city has to be renewed in order to meet the needs of its populace… Software-intensive systems are like that. They grow, they evolve, sometimes they wither away, and sometimes they flourish…” Grady Booch in the foreword for “Refactoring for Software Design Smells: Managing Technical Debt”, Girish Suryanarayana, Ganesh Samarthyam, Tushar Sharma, Morgan Kaufmann/Elsevier, 2014.
  • 4. Code refactoring margin = c.getMargin(); if (c instanceof AbstractButton) { margin = ((AbstractButton)c).getMargin(); } else if (c instanceof JToolBar) { margin = ((JToolBar)c).getMargin(); } else if (c instanceof JTextComponent) { margin = ((JTextComponent)c).getMargin(); }
  • 8. Refactoring for Architecture Smells Remove one of the dependencies Change dependency direction Move one of the dependencies
  • 11. Key reasons for architecture refactoring Business needs Increase feature velocity Address architecture decay Realizing NFRs Modernize Reduce costs
  • 18. Refactoring Windows “A large number of dependencies at the module level could be reduced and optimized to: * make modular reasoning of the system more efficient * maximize parallel development efficiency * avoid unwanted parallel change interference * selectively rebuild and retest subsystems effectively” Refactoring performed to reduce and optimize dependencies - by creating and enforcing layering Source: Kim, Miryung, Thomas Zimmermann, and Nachiappan Nagappan. "An Empirical Study of RefactoringChallenges and Benefits at Microsoft." IEEE Transactions on Software Engineering 7 (2014): 1-1.
  • 19. Refactoring Windows: Significant Characteristics Refactoring decisions made after substantial analysis of existing dependency structure Refactoring effort was centralized and top down with designated team for refactoring Use of custom refactoring tools (MaX) and processes (quality gate check) Source: Kim, Miryung, Thomas Zimmermann, and Nachiappan Nagappan. "An Empirical Study of RefactoringChallenges and Benefits at Microsoft." IEEE Transactions on Software Engineering 7 (2014): 1-1.
  • 20. Refactoring Windows Source: Kim, Miryung, Thomas Zimmermann, and Nachiappan Nagappan. "An Empirical Study of RefactoringChallenges and Benefits at Microsoft." IEEE Transactions on Software Engineering 7 (2014): 1-1.
  • 23. Copyright © 2015, Oracle and/or its affiliates. All rights reserved
  • 24. Copyright © 2015, Oracle and/or its affiliates. All rights reserved
  • 25. Copyright © 2015, Oracle and/or its affiliates. All rights reserved
  • 26. Project Jigsaw in Java 9 Modularize JDK & JRE Hide platform internal details such as sun.misc Provide a module system for Java developers
  • 27. Related work "architectural bad smells" "architecture smells" "anti-patterns" "architecturally-relevant code smells" "contra-indicated patterns" "architectural defects" "[accidental] architectural anti-patterns"
  • 28. Related work "high-impact refactorings" "architecture transformation" "large refactorings" "architecture-oriented refactorings"
  • 29. Related work • Catalog architecture smells or refactorings • Architecture smell catalog by Garcia et al. • Catalog of smells and refactoring by M. Stal (2007) • Specific categories of architecture smells • Ouni et al. “web service antipatterns" in the context of Service Oriented Architectures • Rama et al. discusses “modularity smells”
  • 30. Related work •Architecture refactoring case studies performed on industrial projects • Exploratory studies on emerging topics in architecture refactoring • Architecture refactoring in software product lines • Architecture technical debt • …
  • 31. Potential Research Directions Catalog of architecture smells and refactoring Tool support Economics of architecture refactoring (quantifying architecture technical debt) Refactoring and emerging architecture styles and patterns
  • 32. Example: Lack of tool support Unlike code refactoring, most architectural refactoring is manual due to lack of tool support!