SlideShare a Scribd company logo
1
2
Why are you here?
LEARN TO HAVE
MORE FUN
THE CLASSIC
A /layouts folder from hell
One Visual Studio solution with
one Visual Studio project
3
4
3 / n tiers architecture
A DIFFERENT
ARCHITECTURAL
APPROACH
PRESENTATION
LOGIC
DATA
 Changing requirements, support and hotfixes
generates technical debt
 The impact of technical debt increase over time
 The costs of adding new features increase over
time
 Software rots
COST OF MAINTENANCE
5
Cost
Time
 Changing requirements, support and hotfixes
generates technical debt
 The impact of technical debt increase over time
 The costs of adding new features increase over
time
 Software rots
COSTS OF MAINTENANCE
6
Cost
Time
Component Architecture á la Pentia
7
8
CREDITS
Theoretical Foundation
9
“Depend in the direction of stability” – Uncle Bob
A stable piece of code is one where its interface does
not change over time.
Code in a customer domain is expected to change
over time hence is less stable.
Instable code is not bad but a reality.
 New requirements always occur in a domain
implementation
 Design and layout are always instable
 Instable code should always be easy to change or
even replace
STABLE DEPENDENCY PRINCIPLE
10
INSTABLE
FLEXIBLE
STABLE
“The dependencies between components must not
form cycles” – Uncle Bob
Enforced by Visual Studio between projects but still
possible
 Not working with strict layering
 Sitecore templates
 Using the same field in several components
 Misusing IoC containers
 Textual dependencies
The devil lies in soft cyclic dependencies
ACYCLIC DEPENDENCIES PRINCIPLE
11
Component A
Component B
Component C
“The classes in a component is reused together. If you
reuse one of the classes in a component, you reuse
them all” – Uncle bob
EXAMPLE:
 You need class A from component X in component
Y.
 Class A relies on class B and C in the same
component
 When class B or C changes so does class A
meaning that even though you only need class A
you are dependent on B and C as well
THE COMMON REUSE PRINCIPLE
12
THE COMMON CLOSURE PRINCIPLE (CCP)
“The classes in a component should be closed
together against the same kinds of changes. A
change that affects a component affects all the
classes in that component and no other components.”
– Uncle Bob
SINGLE RESPONSIBILITY PRINCIPLE (SRP)
“A class should have only one reason to change.”
– Uncle Bob
A class should only have one responsibility
THE COMMON CLOSURE PRINCIPLE
13
CCP is SRP on Component level
All classes within the same concept
that are likely to change for the same
reason should be in the same
component
MORE THEORY?
14
COMPONENT ARCHITECTURE
15
Component
Component
Component
Component
Component
16
Time for
examples
17
18
19
20
21
SERVING
23
FOUND A BUG?
 It does not ruin your whole dish
 Throw it out or keep it confined
24
WANT TO LEARN
MORE? CONTACT…
Anders Laub Christoffersen
Sitecore MVP, Junior Partner
alc@pentia.dk
http://laubplusco.net
@anderslaub
Pentia A/S
Zeppelinerhallen
Islands Brygge 55
2300 København S
25
26

More Related Content

Viewers also liked

Maintainable Sitecore Solutions
Maintainable Sitecore SolutionsMaintainable Sitecore Solutions
Maintainable Sitecore Solutions
Thomas Eldblom
 
EAS-SEC Project
EAS-SEC ProjectEAS-SEC Project
EAS-SEC Project
ERPScan
 
【2016.09】cvpaper.challenge2016
【2016.09】cvpaper.challenge2016【2016.09】cvpaper.challenge2016
【2016.09】cvpaper.challenge2016
cvpaper. challenge
 
cvpaper.challenge@CVPR2015(Re-ID)
cvpaper.challenge@CVPR2015(Re-ID)cvpaper.challenge@CVPR2015(Re-ID)
cvpaper.challenge@CVPR2015(Re-ID)
cvpaper. challenge
 
【2016.07】cvpaper.challenge2016
【2016.07】cvpaper.challenge2016【2016.07】cvpaper.challenge2016
【2016.07】cvpaper.challenge2016
cvpaper. challenge
 
【2015.08】(5/5)cvpaper.challenge@CVPR2015
【2015.08】(5/5)cvpaper.challenge@CVPR2015【2015.08】(5/5)cvpaper.challenge@CVPR2015
【2015.08】(5/5)cvpaper.challenge@CVPR2015
cvpaper. challenge
 
Understanding the Sitecore Architecture
Understanding the Sitecore ArchitectureUnderstanding the Sitecore Architecture
Understanding the Sitecore Architecture
Pieter Brinkman
 
【2015.05】cvpaper.challenge@CVPR2015
【2015.05】cvpaper.challenge@CVPR2015【2015.05】cvpaper.challenge@CVPR2015
【2015.05】cvpaper.challenge@CVPR2015
cvpaper. challenge
 
【2016.04】cvpaper.challenge2016
【2016.04】cvpaper.challenge2016【2016.04】cvpaper.challenge2016
【2016.04】cvpaper.challenge2016
cvpaper. challenge
 
【2016.05】cvpaper.challenge2016
【2016.05】cvpaper.challenge2016【2016.05】cvpaper.challenge2016
【2016.05】cvpaper.challenge2016
cvpaper. challenge
 
【2016.03】cvpaper.challenge2016
【2016.03】cvpaper.challenge2016【2016.03】cvpaper.challenge2016
【2016.03】cvpaper.challenge2016
cvpaper. challenge
 
24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know
Ashish Bansal
 
Sitecore xPlatform - Introduction
Sitecore xPlatform - IntroductionSitecore xPlatform - Introduction
Sitecore xPlatform - Introduction
Thomas Eldblom
 
【2016.10】cvpaper.challenge2016
【2016.10】cvpaper.challenge2016【2016.10】cvpaper.challenge2016
【2016.10】cvpaper.challenge2016
cvpaper. challenge
 
cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)
cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)
cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)
cvpaper. challenge
 
【2016.06】cvpaper.challenge2016
【2016.06】cvpaper.challenge2016【2016.06】cvpaper.challenge2016
【2016.06】cvpaper.challenge2016
cvpaper. challenge
 
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
cvpaper. challenge
 

Viewers also liked (17)

Maintainable Sitecore Solutions
Maintainable Sitecore SolutionsMaintainable Sitecore Solutions
Maintainable Sitecore Solutions
 
EAS-SEC Project
EAS-SEC ProjectEAS-SEC Project
EAS-SEC Project
 
【2016.09】cvpaper.challenge2016
【2016.09】cvpaper.challenge2016【2016.09】cvpaper.challenge2016
【2016.09】cvpaper.challenge2016
 
cvpaper.challenge@CVPR2015(Re-ID)
cvpaper.challenge@CVPR2015(Re-ID)cvpaper.challenge@CVPR2015(Re-ID)
cvpaper.challenge@CVPR2015(Re-ID)
 
【2016.07】cvpaper.challenge2016
【2016.07】cvpaper.challenge2016【2016.07】cvpaper.challenge2016
【2016.07】cvpaper.challenge2016
 
【2015.08】(5/5)cvpaper.challenge@CVPR2015
【2015.08】(5/5)cvpaper.challenge@CVPR2015【2015.08】(5/5)cvpaper.challenge@CVPR2015
【2015.08】(5/5)cvpaper.challenge@CVPR2015
 
Understanding the Sitecore Architecture
Understanding the Sitecore ArchitectureUnderstanding the Sitecore Architecture
Understanding the Sitecore Architecture
 
【2015.05】cvpaper.challenge@CVPR2015
【2015.05】cvpaper.challenge@CVPR2015【2015.05】cvpaper.challenge@CVPR2015
【2015.05】cvpaper.challenge@CVPR2015
 
【2016.04】cvpaper.challenge2016
【2016.04】cvpaper.challenge2016【2016.04】cvpaper.challenge2016
【2016.04】cvpaper.challenge2016
 
【2016.05】cvpaper.challenge2016
【2016.05】cvpaper.challenge2016【2016.05】cvpaper.challenge2016
【2016.05】cvpaper.challenge2016
 
【2016.03】cvpaper.challenge2016
【2016.03】cvpaper.challenge2016【2016.03】cvpaper.challenge2016
【2016.03】cvpaper.challenge2016
 
24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know24 Sitecore Tips that Every Sitecore Architect Needs to Know
24 Sitecore Tips that Every Sitecore Architect Needs to Know
 
Sitecore xPlatform - Introduction
Sitecore xPlatform - IntroductionSitecore xPlatform - Introduction
Sitecore xPlatform - Introduction
 
【2016.10】cvpaper.challenge2016
【2016.10】cvpaper.challenge2016【2016.10】cvpaper.challenge2016
【2016.10】cvpaper.challenge2016
 
cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)
cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)
cvpaper.challenge -サーベイの共有と可能性について- (画像応用技術専門委員会研究会 2016年7月)
 
【2016.06】cvpaper.challenge2016
【2016.06】cvpaper.challenge2016【2016.06】cvpaper.challenge2016
【2016.06】cvpaper.challenge2016
 
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
これからのコンピュータビジョン技術 - cvpaper.challenge in PRMU Grand Challenge 2016 (PRMU研究会 2...
 

Similar to Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON 2015

Solid principle
Solid principleSolid principle
Solid principle
muhammadali0014
 
DesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatternsDesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatterns
Basavaraj Patil
 
Common design principles and design patterns in automation testing
Common design principles and design patterns in automation testingCommon design principles and design patterns in automation testing
Common design principles and design patterns in automation testing
KMS Technology
 
SOLID Principles of Refactoring Presentation - Inland Empire User Group
SOLID Principles of Refactoring Presentation - Inland Empire User GroupSOLID Principles of Refactoring Presentation - Inland Empire User Group
SOLID Principles of Refactoring Presentation - Inland Empire User Group
Adnan Masood
 
SOLID principles-Present
SOLID principles-PresentSOLID principles-Present
SOLID principles-Present
Quang Nguyen
 
Android architecture
Android architectureAndroid architecture
Android architecture
Vandana Srivastava
 
Cs 1023 lec 8 design pattern (week 2)
Cs 1023 lec 8 design pattern (week 2)Cs 1023 lec 8 design pattern (week 2)
Cs 1023 lec 8 design pattern (week 2)
stanbridge
 
Object Oriented Design SOLID Principles
Object Oriented Design SOLID PrinciplesObject Oriented Design SOLID Principles
Object Oriented Design SOLID Principles
rainynovember12
 
Inversion of Control
Inversion of ControlInversion of Control
Inversion of Control
Shuhab Tariq
 
Design principles to modularise a monolith codebase.pptx
Design principles to modularise a monolith codebase.pptxDesign principles to modularise a monolith codebase.pptx
Design principles to modularise a monolith codebase.pptx
Prashant Kalkar
 
The Open-Closed Principle - the Original Version and the Contemporary Version
The Open-Closed Principle - the Original Version and the Contemporary VersionThe Open-Closed Principle - the Original Version and the Contemporary Version
The Open-Closed Principle - the Original Version and the Contemporary Version
Philip Schwarz
 
OO Design Principles
OO Design PrinciplesOO Design Principles
OO Design Principles
Anju Kanjirathingal
 
eZPublish meets Simfony2 - phpDay2013
eZPublish meets Simfony2  - phpDay2013eZPublish meets Simfony2  - phpDay2013
eZPublish meets Simfony2 - phpDay2013
Gaetano Giunta
 
Grasp principles
Grasp principlesGrasp principles
Grasp principles
Yuriy Shapovalov
 
Entity Framework: To the Unit of Work Design Pattern and Beyond
Entity Framework: To the Unit of Work Design Pattern and BeyondEntity Framework: To the Unit of Work Design Pattern and Beyond
Entity Framework: To the Unit of Work Design Pattern and Beyond
Steve Westgarth
 
Building Business on Top of Open Source
Building Business on Top of Open SourceBuilding Business on Top of Open Source
Building Business on Top of Open Source
Open Networking Summit
 
Design poo my_jug_en_ppt
Design poo my_jug_en_pptDesign poo my_jug_en_ppt
Design poo my_jug_en_ppt
agnes_crepet
 
Dependency Injection in .NET
Dependency Injection in .NETDependency Injection in .NET
Dependency Injection in .NET
ssusere19c741
 
CA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New HampshireCA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New Hampshire
Bill Mannion (LION)
 
Open Closed Principle kata
Open Closed Principle kataOpen Closed Principle kata
Open Closed Principle kata
Paul Blundell
 

Similar to Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON 2015 (20)

Solid principle
Solid principleSolid principle
Solid principle
 
DesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatternsDesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatterns
 
Common design principles and design patterns in automation testing
Common design principles and design patterns in automation testingCommon design principles and design patterns in automation testing
Common design principles and design patterns in automation testing
 
SOLID Principles of Refactoring Presentation - Inland Empire User Group
SOLID Principles of Refactoring Presentation - Inland Empire User GroupSOLID Principles of Refactoring Presentation - Inland Empire User Group
SOLID Principles of Refactoring Presentation - Inland Empire User Group
 
SOLID principles-Present
SOLID principles-PresentSOLID principles-Present
SOLID principles-Present
 
Android architecture
Android architectureAndroid architecture
Android architecture
 
Cs 1023 lec 8 design pattern (week 2)
Cs 1023 lec 8 design pattern (week 2)Cs 1023 lec 8 design pattern (week 2)
Cs 1023 lec 8 design pattern (week 2)
 
Object Oriented Design SOLID Principles
Object Oriented Design SOLID PrinciplesObject Oriented Design SOLID Principles
Object Oriented Design SOLID Principles
 
Inversion of Control
Inversion of ControlInversion of Control
Inversion of Control
 
Design principles to modularise a monolith codebase.pptx
Design principles to modularise a monolith codebase.pptxDesign principles to modularise a monolith codebase.pptx
Design principles to modularise a monolith codebase.pptx
 
The Open-Closed Principle - the Original Version and the Contemporary Version
The Open-Closed Principle - the Original Version and the Contemporary VersionThe Open-Closed Principle - the Original Version and the Contemporary Version
The Open-Closed Principle - the Original Version and the Contemporary Version
 
OO Design Principles
OO Design PrinciplesOO Design Principles
OO Design Principles
 
eZPublish meets Simfony2 - phpDay2013
eZPublish meets Simfony2  - phpDay2013eZPublish meets Simfony2  - phpDay2013
eZPublish meets Simfony2 - phpDay2013
 
Grasp principles
Grasp principlesGrasp principles
Grasp principles
 
Entity Framework: To the Unit of Work Design Pattern and Beyond
Entity Framework: To the Unit of Work Design Pattern and BeyondEntity Framework: To the Unit of Work Design Pattern and Beyond
Entity Framework: To the Unit of Work Design Pattern and Beyond
 
Building Business on Top of Open Source
Building Business on Top of Open SourceBuilding Business on Top of Open Source
Building Business on Top of Open Source
 
Design poo my_jug_en_ppt
Design poo my_jug_en_pptDesign poo my_jug_en_ppt
Design poo my_jug_en_ppt
 
Dependency Injection in .NET
Dependency Injection in .NETDependency Injection in .NET
Dependency Injection in .NET
 
CA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New HampshireCA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New Hampshire
 
Open Closed Principle kata
Open Closed Principle kataOpen Closed Principle kata
Open Closed Principle kata
 

Recently uploaded

July Patch Tuesday
July Patch TuesdayJuly Patch Tuesday
July Patch Tuesday
Ivanti
 
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
Edge AI and Vision Alliance
 
Salesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot WorkshopSalesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot Workshop
CEPTES Software Inc
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
sunilverma7884
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and OllamaTirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Zilliz
 
How to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdfHow to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdf
ChristopherTHyatt
 
Opencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of MünsterOpencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of Münster
Matthias Neugebauer
 
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptxIntroduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
313mohammedarshad
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
alexjohnson7307
 
Feature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptxFeature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptx
ssuser1915fe1
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
Priyanka Aash
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes..."Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
Anant Gupta
 
CHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSE
CHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSECHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSE
CHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSE
kumarjarun2010
 

Recently uploaded (20)

July Patch Tuesday
July Patch TuesdayJuly Patch Tuesday
July Patch Tuesday
 
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
“Deploying Large Language Models on a Raspberry Pi,” a Presentation from Usef...
 
Salesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot WorkshopSalesforce AI & Einstein Copilot Workshop
Salesforce AI & Einstein Copilot Workshop
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and OllamaTirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
Tirana Tech Meetup - Agentic RAG with Milvus, Llama3 and Ollama
 
How to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdfHow to build a generative AI solution A step-by-step guide (2).pdf
How to build a generative AI solution A step-by-step guide (2).pdf
 
Opencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of MünsterOpencast Summit 2024 — Opencast @ University of Münster
Opencast Summit 2024 — Opencast @ University of Münster
 
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptxIntroduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
leewayhertz.com-AI agents for healthcare Applications benefits and implementa...
 
Feature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptxFeature sql server terbaru performance.pptx
Feature sql server terbaru performance.pptx
 
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
(CISOPlatform Summit & SACON 2024) Keynote _ Power Digital Identities With AI...
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes..."Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
"Mastering Graphic Design: Essential Tips and Tricks for Beginners and Profes...
 
CHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSE
CHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSECHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSE
CHAPTER-8 COMPONENTS OF COMPUTER SYSTEM CLASS 9 CBSE
 

Following Component Architecture in Sitecore solutions - Anders Laub @ SUGCON 2015

  • 1. 1
  • 2. 2 Why are you here? LEARN TO HAVE MORE FUN
  • 3. THE CLASSIC A /layouts folder from hell One Visual Studio solution with one Visual Studio project 3
  • 4. 4 3 / n tiers architecture A DIFFERENT ARCHITECTURAL APPROACH PRESENTATION LOGIC DATA
  • 5.  Changing requirements, support and hotfixes generates technical debt  The impact of technical debt increase over time  The costs of adding new features increase over time  Software rots COST OF MAINTENANCE 5 Cost Time
  • 6.  Changing requirements, support and hotfixes generates technical debt  The impact of technical debt increase over time  The costs of adding new features increase over time  Software rots COSTS OF MAINTENANCE 6 Cost Time
  • 10. “Depend in the direction of stability” – Uncle Bob A stable piece of code is one where its interface does not change over time. Code in a customer domain is expected to change over time hence is less stable. Instable code is not bad but a reality.  New requirements always occur in a domain implementation  Design and layout are always instable  Instable code should always be easy to change or even replace STABLE DEPENDENCY PRINCIPLE 10 INSTABLE FLEXIBLE STABLE
  • 11. “The dependencies between components must not form cycles” – Uncle Bob Enforced by Visual Studio between projects but still possible  Not working with strict layering  Sitecore templates  Using the same field in several components  Misusing IoC containers  Textual dependencies The devil lies in soft cyclic dependencies ACYCLIC DEPENDENCIES PRINCIPLE 11 Component A Component B Component C
  • 12. “The classes in a component is reused together. If you reuse one of the classes in a component, you reuse them all” – Uncle bob EXAMPLE:  You need class A from component X in component Y.  Class A relies on class B and C in the same component  When class B or C changes so does class A meaning that even though you only need class A you are dependent on B and C as well THE COMMON REUSE PRINCIPLE 12
  • 13. THE COMMON CLOSURE PRINCIPLE (CCP) “The classes in a component should be closed together against the same kinds of changes. A change that affects a component affects all the classes in that component and no other components.” – Uncle Bob SINGLE RESPONSIBILITY PRINCIPLE (SRP) “A class should have only one reason to change.” – Uncle Bob A class should only have one responsibility THE COMMON CLOSURE PRINCIPLE 13 CCP is SRP on Component level All classes within the same concept that are likely to change for the same reason should be in the same component
  • 16. 16
  • 18. 18
  • 19. 19
  • 20. 20
  • 21. 21
  • 23. 23
  • 24. FOUND A BUG?  It does not ruin your whole dish  Throw it out or keep it confined 24
  • 25. WANT TO LEARN MORE? CONTACT… Anders Laub Christoffersen Sitecore MVP, Junior Partner alc@pentia.dk http://laubplusco.net @anderslaub Pentia A/S Zeppelinerhallen Islands Brygge 55 2300 København S 25
  • 26. 26