SlideShare una empresa de Scribd logo
1 de 90
Bridging the Divide between
Architecture and Code
Chris Chedgey
Structure101
?
✗
✗
✗
✗
The Divide is a problem because…
The Divide is a problem because…
• Invisible, emergent, accidental structure fights
against developers
The Divide is a problem because…
• Invisible, emergent, accidental structure fights
against developers
• Invisible, disconnected architecture could
guide developers … but doesn’t
The Divide is a problem because…
• Invisible, emergent, accidental structure
fights against developers
• Invisible, disconnected architecture could
guide developers … but doesn’t
Invisible structure fights developers
because…
• Invisible structure becomes tangled
V 0.7.2
V 0.8.6
V 0.8.7
V 0.8.8
V 1.0.0
V 1.3.0
V 1.3.5
• Invisible structure becomes tangled
Invisible structure fights developers
because…
• Invisible structure becomes tangled
• Tangles increase complexity
Invisible structure fights developers
because…
Tangles increase complexity
CCD = (1*1) + (11*2) + (7*3) + …
~ 164
CCD = 362 = 1,296 !!!
Cumulative Component Dependency
(John Lakos)
• Invisible structure becomes tangled
• Tangles increase complexity
Invisible structure fights developers
because…
• Invisible structure becomes tangled
• Tangles increase complexity
• Complexity is hard to understand
Invisible structure fights developers
because…
Complexity is hard to understand
• Invisible structure becomes tangled
• Tangles increase complexity
• Complexity is hard to understand
Invisible structure fights developers
because…
• Invisible structure becomes tangled
• Tangles increase complexity
• Complexity is hard to understand
• Tangles make a monolith
Invisible structure fights developers
because…
Tangles make a monolith
Tangles make a monolith
Tangles make a monolith
Tangles make a monolith
Tangles make a monolith
✗
• Invisible structure becomes tangled
• Tangles increase complexity
• Complexity is hard to understand
• Tangles make a monolith
Invisible structure fights developers
because…
The Divide is a problem because…
• Invisible, emergent, accidental structure
fights against developers
• Invisible, disconnected architecture could
guide developers … but doesn’t
The Divide is a problem because…
• Invisible, emergent, accidental structure fights
against developers
• Invisible, disconnected architecture could
guide developers … but doesn’t
Architecture could guide developers
Architecture could guide developers
• Define/enforce layering
Architecture could guide developers
• Define/enforce layering
Architecture could guide developers
• Define/enforce layering
Architecture could guide developers
• Define/enforce layering
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
• Prevent dependency proliferation
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
• Prevent dependency proliferation
• Allow for future module replacement
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
• Prevent dependency proliferation
• Allow for future module replacement
• Guide new developers
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
• Prevent dependency proliferation
• Allow for future module replacement
• Guide new developers
• Phased/parallel development
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
• Prevent dependency proliferation
• Allow for future module replacement
• Guide new developers
• Phased/parallel development
• Modularity!
Architecture could guide developers
• Define/enforce layering
• Group related modules/packages
• Define/enforce interface-implementation
• Prevent dependency proliferation
• Allow for future module replacement
• Guide new developers
• Phased/parallel development
• Modularity!
• …
Bridging the divide
Bridging the divide
Bridging the divide
Bridging the divide
Bridging the divide
Bridging the divide
Bridging the divide
Bridging the divide
1. Start visualizing the structure you have now
Bridging the divide
1. Start visualizing the structure you have now
2. Lock-in any useful architecture you have now
– overlay the visualization
Bridging the divide
1. Start visualizing the structure you have now
2. Lock-in any useful architecture you have now
– overlay the visualization
3. Improve/extend the architecture –
development gets easier and easier
• You’re going to need a tool…
• That parses code
• Hierarchical dependency model
• Architectural overlays
• You’re going to need a tool…
• That parses code
• Hierarchical dependency model
• Architectural overlays
• SonarGraph
Hierarchical
dependency graph
DSM - Dependency Structure Matrix
• You’re going to need a tool…
• That parses code
• Hierarchical dependency model
• Architectural overlays
• SonarGraph
• Lattix
• IntelliJ Idea Ultimate
Hierarchical
dependency graph
DSM - Dependency Structure Matrix
LSM – Levelized Structure Map
• You’re going to need a tool…
• That parses code
• Hierarchical dependency model
• Architectural overlays
• SonarGraph
• Lattix
• IntelliJ Idea Ultimate
• Structure101
Hierarchical
dependency graph
Step 1: Visualize what you have
Step 1: Visualize what you have
• Immediate productivity boost
– A map of the codebase
Step 1: Visualize what you have
• Immediate productivity boost
– A map of the codebase
• See the details in the context of the de facto
architecture, e.g.
– Eclipse projects
– IntelliJ modules
– Maven POMs
– Java 9 modules
– …
Step 1: Visualize what you have
• Immediate productivity boost
– A map of the codebase
• See the details in the context of the de facto
architecture, e.g.
– Eclipse projects
– IntelliJ modules
– Maven POMs
– Java 9 modules
– …
• Raise structural awareness
– Start simplifying the codebase - reduce coupling and
complexity
Step 1: Visualization Demo
Step 2: Lock in and shore up de facto
architecture
Step 2: Lock in and shore up de facto
architecture
• Organize modules into groups
Step 2: Lock in and shore up de facto
architecture
• Organize modules into groups
• Specify module dependency constraints
Step 2: Lock in and shore up de facto
architecture
• Organize modules into groups
• Specify module dependency constraints
• Overlay onto the visualization
– Understand the details in the context of the spec’d
architecture
– Warned immediately if edits violate spec
Step 2: Structure Spec Demo
Step 3: Incrementally improve the
architecture/structure
Step 3: Incrementally improve the
architecture/structure
• Deal with the monoliths
– Increase %specified
Step 3: Incrementally improve the
architecture/structure
• Deal with the monoliths
– Increase %specified
• Lift lower packages into modules
Step 3: Incrementally improve the
architecture/structure
• Deal with the monoliths
– Increase %specified
• Lift lower packages into modules
• Disentangle packages…
– Small/easy: In the code
– Broader: Simulate first
– Move classes, then refactor for dependencies
Step 3: Incrementally improve the
architecture/structure
• Deal with the monoliths
– Increase %specified
• Lift lower packages into modules
• Disentangle packages…
– Small/easy: In the code
– Broader: Simulate first
– Move classes, then refactor for dependencies
• … and/or Extract modules
– Simulate first
– Add new module to spec
– Refactor for dependencies, then move classes
Step 3: Structure101 Studio Demo
Bridging the gap…
Summary
Bridging the gap…
Summary
1. Start visualizing the structure you have now
Bridging the gap…
Summary
1. Start visualizing the structure you have now
2. Lock-in and shore-up any useful architecture
you have now – overlay the visualization
Bridging the gap…
Summary
1. Start visualizing the structure you have now
2. Lock-in and shore-up any useful architecture
you have now – overlay the visualization
3. Improve/extend the architecture –
development gets easier and easier
Questions?
@chedgey
chris@structure101.com
structure101.com
Early access to Workspace:
2018.structure101.com

Más contenido relacionado

Similar a Bridging the Divide between Architecture and Code (Germany JUGs version)

Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for ArchitectsEberhard Wolff
 
S/W Design and Modularity using Maven
S/W Design and Modularity using MavenS/W Design and Modularity using Maven
S/W Design and Modularity using MavenScheidt & Bachmann
 
Building modular software with OSGi - Ulf Fildebrandt
Building modular software with OSGi - Ulf FildebrandtBuilding modular software with OSGi - Ulf Fildebrandt
Building modular software with OSGi - Ulf Fildebrandtmfrancis
 
Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service DesignUwe Friedrichsen
 
How Agile changed Software Development
How Agile changed Software DevelopmentHow Agile changed Software Development
How Agile changed Software DevelopmentSteve Maraspin
 
Advanced CSS Troubleshooting
Advanced CSS TroubleshootingAdvanced CSS Troubleshooting
Advanced CSS TroubleshootingDenise Jacobs
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayTony Ng
 
Docker in the Enterprise
Docker in the EnterpriseDocker in the Enterprise
Docker in the EnterpriseSaul Caganoff
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deploymentheyrocker
 
Super chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsSuper chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsNikola Gotsev
 
Supercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsSupercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsNikola Gotsev
 
Architecture in action 01
Architecture in action 01Architecture in action 01
Architecture in action 01Krishna Sankar
 
"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg Karasik"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg KarasikFwdays
 
Software is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeSoftware is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeCantina
 
DevSecCon London 2017: when good containers go bad by Tim Mackey
DevSecCon London 2017: when good containers go bad by Tim MackeyDevSecCon London 2017: when good containers go bad by Tim Mackey
DevSecCon London 2017: when good containers go bad by Tim MackeyDevSecCon
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutionsSangjin Lee
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableComsysto Reply GmbH
 
Guide to Destroying Codebases The Demise of Clever Code
Guide to Destroying Codebases   The Demise of Clever CodeGuide to Destroying Codebases   The Demise of Clever Code
Guide to Destroying Codebases The Demise of Clever CodeGabor Varadi
 

Similar a Bridging the Divide between Architecture and Code (Germany JUGs version) (20)

Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
S/W Design and Modularity using Maven
S/W Design and Modularity using MavenS/W Design and Modularity using Maven
S/W Design and Modularity using Maven
 
Building modular software with OSGi - Ulf Fildebrandt
Building modular software with OSGi - Ulf FildebrandtBuilding modular software with OSGi - Ulf Fildebrandt
Building modular software with OSGi - Ulf Fildebrandt
 
Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service Design
 
How Agile changed Software Development
How Agile changed Software DevelopmentHow Agile changed Software Development
How Agile changed Software Development
 
Advanced CSS Troubleshooting
Advanced CSS TroubleshootingAdvanced CSS Troubleshooting
Advanced CSS Troubleshooting
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBay
 
Docker in the Enterprise
Docker in the EnterpriseDocker in the Enterprise
Docker in the Enterprise
 
Decorator design pattern
Decorator design patternDecorator design pattern
Decorator design pattern
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deployment
 
Super chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsSuper chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeployments
 
Supercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsSupercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration Deployments
 
Architecture in action 01
Architecture in action 01Architecture in action 01
Architecture in action 01
 
"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg Karasik"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg Karasik
 
Software is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeSoftware is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for Change
 
Decorator Pattern
Decorator PatternDecorator Pattern
Decorator Pattern
 
DevSecCon London 2017: when good containers go bad by Tim Mackey
DevSecCon London 2017: when good containers go bad by Tim MackeyDevSecCon London 2017: when good containers go bad by Tim Mackey
DevSecCon London 2017: when good containers go bad by Tim Mackey
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutions
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Guide to Destroying Codebases The Demise of Clever Code
Guide to Destroying Codebases   The Demise of Clever CodeGuide to Destroying Codebases   The Demise of Clever Code
Guide to Destroying Codebases The Demise of Clever Code
 

Más de Chris Chedgey

Rediscovering modularity - JavaOne Brazil 2012
Rediscovering modularity - JavaOne Brazil 2012Rediscovering modularity - JavaOne Brazil 2012
Rediscovering modularity - JavaOne Brazil 2012Chris Chedgey
 
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...Chris Chedgey
 
Retrofitting Architecture - Oredev 2012
Retrofitting Architecture - Oredev 2012Retrofitting Architecture - Oredev 2012
Retrofitting Architecture - Oredev 2012Chris Chedgey
 
Rediscovering Modularity - JFall 2012 version
Rediscovering Modularity - JFall 2012 versionRediscovering Modularity - JFall 2012 version
Rediscovering Modularity - JFall 2012 versionChris Chedgey
 
Rediscovering Modularity
Rediscovering ModularityRediscovering Modularity
Rediscovering ModularityChris Chedgey
 
Restructuring- improving the modularity of an existing code-base
Restructuring- improving the modularity of an existing code-baseRestructuring- improving the modularity of an existing code-base
Restructuring- improving the modularity of an existing code-baseChris Chedgey
 

Más de Chris Chedgey (7)

Beautiful Structure
Beautiful StructureBeautiful Structure
Beautiful Structure
 
Rediscovering modularity - JavaOne Brazil 2012
Rediscovering modularity - JavaOne Brazil 2012Rediscovering modularity - JavaOne Brazil 2012
Rediscovering modularity - JavaOne Brazil 2012
 
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...
 
Retrofitting Architecture - Oredev 2012
Retrofitting Architecture - Oredev 2012Retrofitting Architecture - Oredev 2012
Retrofitting Architecture - Oredev 2012
 
Rediscovering Modularity - JFall 2012 version
Rediscovering Modularity - JFall 2012 versionRediscovering Modularity - JFall 2012 version
Rediscovering Modularity - JFall 2012 version
 
Rediscovering Modularity
Rediscovering ModularityRediscovering Modularity
Rediscovering Modularity
 
Restructuring- improving the modularity of an existing code-base
Restructuring- improving the modularity of an existing code-baseRestructuring- improving the modularity of an existing code-base
Restructuring- improving the modularity of an existing code-base
 

Último

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 

Último (20)

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 

Bridging the Divide between Architecture and Code (Germany JUGs version)

  • 1. Bridging the Divide between Architecture and Code Chris Chedgey Structure101
  • 2.
  • 3.
  • 4. ?
  • 5.
  • 6.
  • 7.
  • 8.
  • 10. The Divide is a problem because…
  • 11. The Divide is a problem because… • Invisible, emergent, accidental structure fights against developers
  • 12. The Divide is a problem because… • Invisible, emergent, accidental structure fights against developers • Invisible, disconnected architecture could guide developers … but doesn’t
  • 13. The Divide is a problem because… • Invisible, emergent, accidental structure fights against developers • Invisible, disconnected architecture could guide developers … but doesn’t
  • 14. Invisible structure fights developers because… • Invisible structure becomes tangled
  • 22. • Invisible structure becomes tangled Invisible structure fights developers because…
  • 23. • Invisible structure becomes tangled • Tangles increase complexity Invisible structure fights developers because…
  • 24. Tangles increase complexity CCD = (1*1) + (11*2) + (7*3) + … ~ 164 CCD = 362 = 1,296 !!! Cumulative Component Dependency (John Lakos)
  • 25. • Invisible structure becomes tangled • Tangles increase complexity Invisible structure fights developers because…
  • 26. • Invisible structure becomes tangled • Tangles increase complexity • Complexity is hard to understand Invisible structure fights developers because…
  • 27. Complexity is hard to understand
  • 28. • Invisible structure becomes tangled • Tangles increase complexity • Complexity is hard to understand Invisible structure fights developers because…
  • 29. • Invisible structure becomes tangled • Tangles increase complexity • Complexity is hard to understand • Tangles make a monolith Invisible structure fights developers because…
  • 30. Tangles make a monolith
  • 31. Tangles make a monolith
  • 32. Tangles make a monolith
  • 33. Tangles make a monolith
  • 34. Tangles make a monolith ✗
  • 35. • Invisible structure becomes tangled • Tangles increase complexity • Complexity is hard to understand • Tangles make a monolith Invisible structure fights developers because…
  • 36. The Divide is a problem because… • Invisible, emergent, accidental structure fights against developers • Invisible, disconnected architecture could guide developers … but doesn’t
  • 37. The Divide is a problem because… • Invisible, emergent, accidental structure fights against developers • Invisible, disconnected architecture could guide developers … but doesn’t
  • 39. Architecture could guide developers • Define/enforce layering
  • 40. Architecture could guide developers • Define/enforce layering
  • 41. Architecture could guide developers • Define/enforce layering
  • 42. Architecture could guide developers • Define/enforce layering
  • 43. Architecture could guide developers • Define/enforce layering • Group related modules/packages
  • 44. Architecture could guide developers • Define/enforce layering • Group related modules/packages
  • 45. Architecture could guide developers • Define/enforce layering • Group related modules/packages
  • 46. Architecture could guide developers • Define/enforce layering • Group related modules/packages
  • 47. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation
  • 48. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation
  • 49. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation
  • 50. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation • Prevent dependency proliferation
  • 51. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation • Prevent dependency proliferation • Allow for future module replacement
  • 52. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation • Prevent dependency proliferation • Allow for future module replacement • Guide new developers
  • 53. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation • Prevent dependency proliferation • Allow for future module replacement • Guide new developers • Phased/parallel development
  • 54. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation • Prevent dependency proliferation • Allow for future module replacement • Guide new developers • Phased/parallel development • Modularity!
  • 55. Architecture could guide developers • Define/enforce layering • Group related modules/packages • Define/enforce interface-implementation • Prevent dependency proliferation • Allow for future module replacement • Guide new developers • Phased/parallel development • Modularity! • …
  • 63. Bridging the divide 1. Start visualizing the structure you have now
  • 64. Bridging the divide 1. Start visualizing the structure you have now 2. Lock-in any useful architecture you have now – overlay the visualization
  • 65. Bridging the divide 1. Start visualizing the structure you have now 2. Lock-in any useful architecture you have now – overlay the visualization 3. Improve/extend the architecture – development gets easier and easier
  • 66. • You’re going to need a tool… • That parses code • Hierarchical dependency model • Architectural overlays
  • 67. • You’re going to need a tool… • That parses code • Hierarchical dependency model • Architectural overlays • SonarGraph Hierarchical dependency graph
  • 68. DSM - Dependency Structure Matrix • You’re going to need a tool… • That parses code • Hierarchical dependency model • Architectural overlays • SonarGraph • Lattix • IntelliJ Idea Ultimate Hierarchical dependency graph
  • 69. DSM - Dependency Structure Matrix LSM – Levelized Structure Map • You’re going to need a tool… • That parses code • Hierarchical dependency model • Architectural overlays • SonarGraph • Lattix • IntelliJ Idea Ultimate • Structure101 Hierarchical dependency graph
  • 70. Step 1: Visualize what you have
  • 71. Step 1: Visualize what you have • Immediate productivity boost – A map of the codebase
  • 72. Step 1: Visualize what you have • Immediate productivity boost – A map of the codebase • See the details in the context of the de facto architecture, e.g. – Eclipse projects – IntelliJ modules – Maven POMs – Java 9 modules – …
  • 73. Step 1: Visualize what you have • Immediate productivity boost – A map of the codebase • See the details in the context of the de facto architecture, e.g. – Eclipse projects – IntelliJ modules – Maven POMs – Java 9 modules – … • Raise structural awareness – Start simplifying the codebase - reduce coupling and complexity
  • 75. Step 2: Lock in and shore up de facto architecture
  • 76. Step 2: Lock in and shore up de facto architecture • Organize modules into groups
  • 77. Step 2: Lock in and shore up de facto architecture • Organize modules into groups • Specify module dependency constraints
  • 78. Step 2: Lock in and shore up de facto architecture • Organize modules into groups • Specify module dependency constraints • Overlay onto the visualization – Understand the details in the context of the spec’d architecture – Warned immediately if edits violate spec
  • 79. Step 2: Structure Spec Demo
  • 80. Step 3: Incrementally improve the architecture/structure
  • 81. Step 3: Incrementally improve the architecture/structure • Deal with the monoliths – Increase %specified
  • 82. Step 3: Incrementally improve the architecture/structure • Deal with the monoliths – Increase %specified • Lift lower packages into modules
  • 83. Step 3: Incrementally improve the architecture/structure • Deal with the monoliths – Increase %specified • Lift lower packages into modules • Disentangle packages… – Small/easy: In the code – Broader: Simulate first – Move classes, then refactor for dependencies
  • 84. Step 3: Incrementally improve the architecture/structure • Deal with the monoliths – Increase %specified • Lift lower packages into modules • Disentangle packages… – Small/easy: In the code – Broader: Simulate first – Move classes, then refactor for dependencies • … and/or Extract modules – Simulate first – Add new module to spec – Refactor for dependencies, then move classes
  • 85. Step 3: Structure101 Studio Demo
  • 87. Bridging the gap… Summary 1. Start visualizing the structure you have now
  • 88. Bridging the gap… Summary 1. Start visualizing the structure you have now 2. Lock-in and shore-up any useful architecture you have now – overlay the visualization
  • 89. Bridging the gap… Summary 1. Start visualizing the structure you have now 2. Lock-in and shore-up any useful architecture you have now – overlay the visualization 3. Improve/extend the architecture – development gets easier and easier

Notas del editor

  1. You cannot do structure in the IDE alone – structure emerges from the code
  2. You cannot do structure in the IDE alone – structure emerges from the code
  3. You cannot do structure in the IDE alone – structure emerges from the code
  4. You cannot do structure in the IDE alone – structure emerges from the code