SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

Maintainable Sitecore Solutions
Maintainable Sitecore SolutionsMaintainable Sitecore Solutions
Maintainable Sitecore SolutionsThomas Eldblom
 
EAS-SEC Project
EAS-SEC ProjectEAS-SEC Project
EAS-SEC ProjectERPScan
 
【2016.09】cvpaper.challenge2016
【2016.09】cvpaper.challenge2016【2016.09】cvpaper.challenge2016
【2016.09】cvpaper.challenge2016cvpaper. 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.challenge2016cvpaper. 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@CVPR2015cvpaper. challenge
 
Understanding the Sitecore Architecture
Understanding the Sitecore ArchitectureUnderstanding the Sitecore Architecture
Understanding the Sitecore ArchitecturePieter Brinkman
 
【2015.05】cvpaper.challenge@CVPR2015
【2015.05】cvpaper.challenge@CVPR2015【2015.05】cvpaper.challenge@CVPR2015
【2015.05】cvpaper.challenge@CVPR2015cvpaper. challenge
 
【2016.04】cvpaper.challenge2016
【2016.04】cvpaper.challenge2016【2016.04】cvpaper.challenge2016
【2016.04】cvpaper.challenge2016cvpaper. challenge
 
【2016.05】cvpaper.challenge2016
【2016.05】cvpaper.challenge2016【2016.05】cvpaper.challenge2016
【2016.05】cvpaper.challenge2016cvpaper. challenge
 
【2016.03】cvpaper.challenge2016
【2016.03】cvpaper.challenge2016【2016.03】cvpaper.challenge2016
【2016.03】cvpaper.challenge2016cvpaper. 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 KnowAshish Bansal
 
Sitecore xPlatform - Introduction
Sitecore xPlatform - IntroductionSitecore xPlatform - Introduction
Sitecore xPlatform - IntroductionThomas Eldblom
 
【2016.10】cvpaper.challenge2016
【2016.10】cvpaper.challenge2016【2016.10】cvpaper.challenge2016
【2016.10】cvpaper.challenge2016cvpaper. 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.challenge2016cvpaper. 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
 

En vedette (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...
 

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

DesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatternsDesignPrinciples-and-DesignPatterns
DesignPrinciples-and-DesignPatternsBasavaraj 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 testingKMS 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 GroupAdnan Masood
 
SOLID principles-Present
SOLID principles-PresentSOLID principles-Present
SOLID principles-PresentQuang Nguyen
 
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 Principlesrainynovember12
 
Inversion of Control
Inversion of ControlInversion of Control
Inversion of ControlShuhab 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.pptxPrashant 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 VersionPhilip Schwarz
 
eZPublish meets Simfony2 - phpDay2013
eZPublish meets Simfony2  - phpDay2013eZPublish meets Simfony2  - phpDay2013
eZPublish meets Simfony2 - phpDay2013Gaetano Giunta
 
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 BeyondSteve 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 SourceOpen Networking Summit
 
Design poo my_jug_en_ppt
Design poo my_jug_en_pptDesign poo my_jug_en_ppt
Design poo my_jug_en_pptagnes_crepet
 
Dependency Injection in .NET
Dependency Injection in .NETDependency Injection in .NET
Dependency Injection in .NETssusere19c741
 
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 HampshireBill Mannion (LION)
 
Open Closed Principle kata
Open Closed Principle kataOpen Closed Principle kata
Open Closed Principle kataPaul Blundell
 

Similaire à 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
 

Dernier

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Dernier (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

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