SlideShare a Scribd company logo
1 of 68
Moving from Applications to
the Enterprise
Mark Goetsch
enterprise software architect
wheels
Speaker
• Enterprise Software Architect and Chief of the Architectural Council
with Wheels.
• 15+ years in Software Development.
• Last 5 ½ years as either a Software, Business, Data or Enterprise
Architect.
• UML author for DevX.com.
• Given talks at Enterprise Architects Summit, Midwest Software
Engineering Conference and Research Seminars at DePaul
University.
• Founding member of the WWISA (World-Wide Institute for Software
Architects) and a Director and Board member for the Business
Architects Association.
Prerequisites
• Enough experience in development that
you can drive code from concepts.
• Have worked in or seen environments
where multiple applications are interfaced
with one another – even if done poorly.
Plan of Attack!
1. History of Software Development up to
the Enterprise
2. The Software Portfolio and how it is
constructed
3. How to Breakdown a Silo
4. Layering the Enterprise
1. The history
Functions, Structures, Objects,
Components all leading to the
Enterprise
it started with
instructions
functions appeared
added data to the
functions
object orientated ad
was born
there appeared
coMponents
this becaMe the
enterprise
Which does not Protect us from
Silos!
Questions?
• Started with Instructions
• Added Functions
• Used Data Structures to add Processes
• Objects let us vary the Processes
• Components used Interfaces
• …There is the Enterprise
2. the software
portfolio
Aligning IT with Business
what is the portfolio?
• The enterprise is all of the software that
provides services to the business. We
refer to this software as the software
portfolio.
• How the software portfolio maps against
the business defines the IT view of the
enterprise.
software portfolio
Vertical inteGration
Horizontal integration
Service-oriented arcHitecture
Service Bar
Example of using the Software
Portfolio Matrix
Creating Enterprise
Communications
The Inbound/Outbound Matrix for
Wheels
Software Portfolio Matrix
VOTR Collision
Inbound Fax
OCR
Fax
eMail
Outbound Letters Letters
Spell Check
Add Horizontal Integration
Software Portfolio Matrix
VOTR Collision
Inbound
OCR
Fax
eMail
Outbound
Letters
Spell Check
Combining into the Enterprise
What are the Results?
• We save costs on replicated software and
hardware.
• We have one standard for each function of
the enterprise.
• We can add the same facilities to the other
business units.
Questions?
• I looked at Vertical Integration
• I introduced Horizontal Integration
• I talked about SOA
• …and we had an example
3. Breaking Down Silos
Moving from the Software
Portfolio to a Technical
Implementation
How to Break Down Silos
1. Find the right split for the service bar.
2. Create two sets of domains: a solution
domain and a problem domain.
3. Convert the service bar into services.
4. Enforce domain barriers to answer
solution domain questions.
domain Service Bar
What are Domains?
• Problem domains answer the question on
“How the firm does business?”
• Solution domains will answer the question
on “How does the firm implement how it
does business?”
Note on Terminology
Problem: We might have multiple tasks rather than an
application in the Solution Domain.
Architectural Domains
Using Domains to Answer
Questions
• If a solution domain wants to know the
answer to a question such as “Who is the
driver of the vehicle” or “What vehicles
does the driver use” this would use
different problem domains.
“Business will find the patterns they need
from an architectural handbook. If they
[business] don’t use this handbook then
they will not be able to stay in business”
Ralph Johnson
Speech on the Architectural
Handbook given at DePaul
University, 2003
Using Domains to Answer
Questions
• “What Vehicles does
the Driver use” will
only use the Driver
domain.
• “Who is the driver of
the vehicle” will only
use the vehicle
domain.
• Never Cross Problem
Domains.
What if there are no Boundaries?
• Dependencies
between Domains
develop.
• The Services become
hardwired to a
particular object
configuration.
• We develop yet
another Silo although
it might be unique to
one service.
How to Separate Problem
Domains
(Horizontal Separation)
Rules for Separation
• Each domain should have almost no
associations between the support objects.
• If a support class needs to be maintained
between the two domains it may be a
composite/integration object, may represent a
new domain or need to be replicated for each
domain.
• There can only be one main domain object per
domain that can access all the support objects.
• Each main domain object that is in the another
domain needs to be replicated.
Without Domain Separation
Vehicle
Replacement
Parts
Registration
Driv er
Accidents
License
After Domain Separation
Vehicle: Vehicle
Vehicle:
Replacement
Parts
Vehicle:
Registration
Driv er:Driv er
Accidents
Driv er:License
Driv er: Vehicle
Vehicle:Driv er
What does this do for us?
• From an application level probably not
much.
• From an enterprise level we can have a
common reference point for any object.
• We can support different views of the
same object related to different domains.
• We avoid horizontal silos.
Separation between Problem and
Solution Domains
(Vertical Domains)
Two Intertwined Domains
Sheets Sheet
OptionCalculator
+ Volatility: float
+ Time: int
+ InterestRate: float
+ UnderlyingPrice: float
+ StrikePrice: float
+ StepSize: float
+ CalculateBlackScholes() : float
+ CalculateBlackScholesImpliedVolatility() : float
+ CalculateCRR() : float
+ CalculateCRRImpliedVolatility() : float
+ CalculatePropModel1() : float
+ CalculatePropModel2() : float
+ CalculatePropModel1ImpliedVolatility() : float
+ CalculatePropModel2ImpliedVolatility() : float
SheetsConfiguration
SheetConfiguration
The Solution Domain
Sheets Sheet
Nodes
NodeRow
Frame
«enumeration»
Internationalization
+ United States: Country
+ United Kingdom: Country
+ Germany: Country
International
Configuration
The Problem Domain
Nodes
Node
+ Delta: float
+ Gamma: float
+ Theta: float
+ Vega: float
«interface»
OptionModel
+ CalculateOption() : double
+ CalculateImpliedVolatility() : double
+ LoadModel() : void
TreeModel
+ ModelName: int
+ Time: int
+ Volatility: float
+ UnderlyingPrice: float
- StrikePrice: float
+ StepSize: float
+ CalculateOption() : double
+ CalculateImpliedVolatility() : double
+ LoadModel() : void
ClosedFormModel
+ ModelName: int
+ Time: int
+ Volatility: float
+ UnderlyingPrice: float
+ StrikePrice: float
+ CalculateOption() : double
+ CalculateImpliedVolatility() : double
+ LoadModel() : void
«enumeration»
ModelName
- CRR: int
- BlackScholes: int
- PropModel1: int
- PropModel2: int
How Does this Help Us?
• We have reusability of Common Services.
• The Separation from the Processing of the
Data and How the Data is used is clean.
• Even though it looks more complicated
there is now maintainability and it is easier
to test and be reliable.
Questions?
• There are Solution Domains
• Which use Services
• From Problem Domains
• Problem Domains should not
Communicate with each other.
4. Layering the Enterprise
Moving from Domains to Layers
What is a Tier?
A tier is a point of hardware variation. Tiers
however may not be implemented
but represent the scalability concerns of an
architecture.
Architecture
LAyers/tiers
What is a Layer?
• Layers represent logical boundaries.
• Each layer is a separate concern – this is
referred to as “separation of concerns”
• Only use delegation between layers –
never inheritance
Adding LAyers to the
tiers
Resolving the Layers
Problem #1: Inheritance Across
Layers
Problem #1: Inheritance is
Contained
Problem #1: Integrate into
Enterprise
Problem #2: Separation of
Concerns
• The consumer uses
and object to call
some lower level
services.
• Even though the
instance of the object
exists with the
consumer the object
the consumer does
not know or care
about its functionality.
Problem #2: Separation is Violated
• The object is
promoted to the
consumers layer.
• To access the objects
functionality the
consumer must have
the same inheritance
hierarchy as the
object.
• Welcome to your first
Silo!
Problem #2: Can Only Pass Object
• Consumer
instantiates object as
type object.
• Cannot use the object
directly.
• Must pass it down
into a lower layer to
be used.
• Takes extra time.
Example of the Breaking Down of
a Silo in the
Financial Markets
Original Layering
Separate into Problem and Solution
Domains
Add Services
Add some Utilities
The Final Enterprise Layers
Results…
• We were able to generate scenarios and
positions in less than 30 sec. from 15 min.
This allowed us to access our positions
and risk in the marketplace throughout the
day.
• The solution domains were simpler to
replicate which knocked down
development time from 6 months to move
into a new market to under 2 weeks.
Winding Down…
• We covered the history of software
development, how it turned into silos, how
to see those silos using a portfolio matrix,
how to break the silos and finally how to
layer the enterprise to avoid silos.
• We showed examples of how to use the
portfolio matrix and how silos were broken
down with a financial trading application.
Final Questions?
• Speaker: Mark A Goetsch
• Email: mgoetsch@AgileArchitecting.com
• Shameless plug for my UML articles on
devX.com

More Related Content

What's hot

LotusUserGroup.org Virtual User Group Meeting - The Real World Integration
LotusUserGroup.org Virtual User Group Meeting - The Real World IntegrationLotusUserGroup.org Virtual User Group Meeting - The Real World Integration
LotusUserGroup.org Virtual User Group Meeting - The Real World IntegrationJohn Head
 
IBM Connect 2016 - IS1406 #UserBLAST
IBM Connect 2016 - IS1406 #UserBLASTIBM Connect 2016 - IS1406 #UserBLAST
IBM Connect 2016 - IS1406 #UserBLASTMat Newman
 
Flex 4 Deep Dive
Flex 4 Deep DiveFlex 4 Deep Dive
Flex 4 Deep DiveEffectiveUI
 
Leveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectLeveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectThomas Jaskula
 
Office add ins community call - april 2019
Office add ins community call - april 2019Office add ins community call - april 2019
Office add ins community call - april 2019Microsoft 365 Developer
 
IBM ConnectED 2015 MAS101: #UserBLAST2015
IBM ConnectED 2015 MAS101: #UserBLAST2015IBM ConnectED 2015 MAS101: #UserBLAST2015
IBM ConnectED 2015 MAS101: #UserBLAST2015Mat Newman
 
The Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGThe Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGJohn Head
 

What's hot (8)

LotusUserGroup.org Virtual User Group Meeting - The Real World Integration
LotusUserGroup.org Virtual User Group Meeting - The Real World IntegrationLotusUserGroup.org Virtual User Group Meeting - The Real World Integration
LotusUserGroup.org Virtual User Group Meeting - The Real World Integration
 
IBM Connect 2016 - IS1406 #UserBLAST
IBM Connect 2016 - IS1406 #UserBLASTIBM Connect 2016 - IS1406 #UserBLAST
IBM Connect 2016 - IS1406 #UserBLAST
 
Interactive DSML Design
Interactive DSML DesignInteractive DSML Design
Interactive DSML Design
 
Flex 4 Deep Dive
Flex 4 Deep DiveFlex 4 Deep Dive
Flex 4 Deep Dive
 
Leveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup projectLeveraging more then DDD Lite in the startup project
Leveraging more then DDD Lite in the startup project
 
Office add ins community call - april 2019
Office add ins community call - april 2019Office add ins community call - april 2019
Office add ins community call - april 2019
 
IBM ConnectED 2015 MAS101: #UserBLAST2015
IBM ConnectED 2015 MAS101: #UserBLAST2015IBM ConnectED 2015 MAS101: #UserBLAST2015
IBM ConnectED 2015 MAS101: #UserBLAST2015
 
The Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGThe Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUG
 

Similar to SDWest2005Goetsch

Done in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easyDone in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easyRoel Hartman
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsMark Windholtz
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPChris Renner
 
Software Development: Beyond Training wheels
Software Development: Beyond Training wheelsSoftware Development: Beyond Training wheels
Software Development: Beyond Training wheelsNaveenkumar Muguda
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialThomas Daly
 
Web Components
Web ComponentsWeb Components
Web ComponentsFITC
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introductionwojtek_s
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownAvisi B.V.
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5SSW
 
.netcampus2015 office365dev
.netcampus2015 office365dev.netcampus2015 office365dev
.netcampus2015 office365devGiuliano De Luca
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)TIMETOACT GROUP
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"GlobalLogic Ukraine
 
Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"LogeekNightUkraine
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePiotr Pelczar
 

Similar to SDWest2005Goetsch (20)

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Done in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easyDone in 60 seconds - Creating Web 2.0 applications made easy
Done in 60 seconds - Creating Web 2.0 applications made easy
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHP
 
Software Development: Beyond Training wheels
Software Development: Beyond Training wheelsSoftware Development: Beyond Training wheels
Software Development: Beyond Training wheels
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
Web Components
Web ComponentsWeb Components
Web Components
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5
 
.netcampus2015 office365dev
.netcampus2015 office365dev.netcampus2015 office365dev
.netcampus2015 office365dev
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
MohamedSalah-Resume
MohamedSalah-ResumeMohamedSalah-Resume
MohamedSalah-Resume
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
 
Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"Andrii Sliusar "Module Architecture of React-Redux Applications"
Andrii Sliusar "Module Architecture of React-Redux Applications"
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 

SDWest2005Goetsch

  • 1. Moving from Applications to the Enterprise Mark Goetsch enterprise software architect wheels
  • 2. Speaker • Enterprise Software Architect and Chief of the Architectural Council with Wheels. • 15+ years in Software Development. • Last 5 ½ years as either a Software, Business, Data or Enterprise Architect. • UML author for DevX.com. • Given talks at Enterprise Architects Summit, Midwest Software Engineering Conference and Research Seminars at DePaul University. • Founding member of the WWISA (World-Wide Institute for Software Architects) and a Director and Board member for the Business Architects Association.
  • 3. Prerequisites • Enough experience in development that you can drive code from concepts. • Have worked in or seen environments where multiple applications are interfaced with one another – even if done poorly.
  • 4. Plan of Attack! 1. History of Software Development up to the Enterprise 2. The Software Portfolio and how it is constructed 3. How to Breakdown a Silo 4. Layering the Enterprise
  • 5. 1. The history Functions, Structures, Objects, Components all leading to the Enterprise
  • 8. added data to the functions
  • 12. Which does not Protect us from Silos!
  • 13. Questions? • Started with Instructions • Added Functions • Used Data Structures to add Processes • Objects let us vary the Processes • Components used Interfaces • …There is the Enterprise
  • 15. what is the portfolio? • The enterprise is all of the software that provides services to the business. We refer to this software as the software portfolio. • How the software portfolio maps against the business defines the IT view of the enterprise.
  • 21. Example of using the Software Portfolio Matrix Creating Enterprise Communications
  • 22. The Inbound/Outbound Matrix for Wheels Software Portfolio Matrix VOTR Collision Inbound Fax OCR Fax eMail Outbound Letters Letters Spell Check
  • 23. Add Horizontal Integration Software Portfolio Matrix VOTR Collision Inbound OCR Fax eMail Outbound Letters Spell Check
  • 24. Combining into the Enterprise
  • 25. What are the Results? • We save costs on replicated software and hardware. • We have one standard for each function of the enterprise. • We can add the same facilities to the other business units.
  • 26. Questions? • I looked at Vertical Integration • I introduced Horizontal Integration • I talked about SOA • …and we had an example
  • 27. 3. Breaking Down Silos Moving from the Software Portfolio to a Technical Implementation
  • 28. How to Break Down Silos 1. Find the right split for the service bar. 2. Create two sets of domains: a solution domain and a problem domain. 3. Convert the service bar into services. 4. Enforce domain barriers to answer solution domain questions.
  • 30. What are Domains? • Problem domains answer the question on “How the firm does business?” • Solution domains will answer the question on “How does the firm implement how it does business?”
  • 31. Note on Terminology Problem: We might have multiple tasks rather than an application in the Solution Domain.
  • 33. Using Domains to Answer Questions • If a solution domain wants to know the answer to a question such as “Who is the driver of the vehicle” or “What vehicles does the driver use” this would use different problem domains.
  • 34. “Business will find the patterns they need from an architectural handbook. If they [business] don’t use this handbook then they will not be able to stay in business” Ralph Johnson Speech on the Architectural Handbook given at DePaul University, 2003
  • 35. Using Domains to Answer Questions • “What Vehicles does the Driver use” will only use the Driver domain. • “Who is the driver of the vehicle” will only use the vehicle domain. • Never Cross Problem Domains.
  • 36. What if there are no Boundaries? • Dependencies between Domains develop. • The Services become hardwired to a particular object configuration. • We develop yet another Silo although it might be unique to one service.
  • 37. How to Separate Problem Domains (Horizontal Separation)
  • 38. Rules for Separation • Each domain should have almost no associations between the support objects. • If a support class needs to be maintained between the two domains it may be a composite/integration object, may represent a new domain or need to be replicated for each domain. • There can only be one main domain object per domain that can access all the support objects. • Each main domain object that is in the another domain needs to be replicated.
  • 40. After Domain Separation Vehicle: Vehicle Vehicle: Replacement Parts Vehicle: Registration Driv er:Driv er Accidents Driv er:License Driv er: Vehicle Vehicle:Driv er
  • 41. What does this do for us? • From an application level probably not much. • From an enterprise level we can have a common reference point for any object. • We can support different views of the same object related to different domains. • We avoid horizontal silos.
  • 42. Separation between Problem and Solution Domains (Vertical Domains)
  • 43. Two Intertwined Domains Sheets Sheet OptionCalculator + Volatility: float + Time: int + InterestRate: float + UnderlyingPrice: float + StrikePrice: float + StepSize: float + CalculateBlackScholes() : float + CalculateBlackScholesImpliedVolatility() : float + CalculateCRR() : float + CalculateCRRImpliedVolatility() : float + CalculatePropModel1() : float + CalculatePropModel2() : float + CalculatePropModel1ImpliedVolatility() : float + CalculatePropModel2ImpliedVolatility() : float SheetsConfiguration SheetConfiguration
  • 44. The Solution Domain Sheets Sheet Nodes NodeRow Frame «enumeration» Internationalization + United States: Country + United Kingdom: Country + Germany: Country International Configuration
  • 45. The Problem Domain Nodes Node + Delta: float + Gamma: float + Theta: float + Vega: float «interface» OptionModel + CalculateOption() : double + CalculateImpliedVolatility() : double + LoadModel() : void TreeModel + ModelName: int + Time: int + Volatility: float + UnderlyingPrice: float - StrikePrice: float + StepSize: float + CalculateOption() : double + CalculateImpliedVolatility() : double + LoadModel() : void ClosedFormModel + ModelName: int + Time: int + Volatility: float + UnderlyingPrice: float + StrikePrice: float + CalculateOption() : double + CalculateImpliedVolatility() : double + LoadModel() : void «enumeration» ModelName - CRR: int - BlackScholes: int - PropModel1: int - PropModel2: int
  • 46. How Does this Help Us? • We have reusability of Common Services. • The Separation from the Processing of the Data and How the Data is used is clean. • Even though it looks more complicated there is now maintainability and it is easier to test and be reliable.
  • 47. Questions? • There are Solution Domains • Which use Services • From Problem Domains • Problem Domains should not Communicate with each other.
  • 48. 4. Layering the Enterprise Moving from Domains to Layers
  • 49. What is a Tier? A tier is a point of hardware variation. Tiers however may not be implemented but represent the scalability concerns of an architecture.
  • 51. What is a Layer? • Layers represent logical boundaries. • Each layer is a separate concern – this is referred to as “separation of concerns” • Only use delegation between layers – never inheritance
  • 52. Adding LAyers to the tiers
  • 54. Problem #1: Inheritance Across Layers
  • 55. Problem #1: Inheritance is Contained
  • 56. Problem #1: Integrate into Enterprise
  • 57. Problem #2: Separation of Concerns • The consumer uses and object to call some lower level services. • Even though the instance of the object exists with the consumer the object the consumer does not know or care about its functionality.
  • 58. Problem #2: Separation is Violated • The object is promoted to the consumers layer. • To access the objects functionality the consumer must have the same inheritance hierarchy as the object. • Welcome to your first Silo!
  • 59. Problem #2: Can Only Pass Object • Consumer instantiates object as type object. • Cannot use the object directly. • Must pass it down into a lower layer to be used. • Takes extra time.
  • 60. Example of the Breaking Down of a Silo in the Financial Markets
  • 62. Separate into Problem and Solution Domains
  • 66. Results… • We were able to generate scenarios and positions in less than 30 sec. from 15 min. This allowed us to access our positions and risk in the marketplace throughout the day. • The solution domains were simpler to replicate which knocked down development time from 6 months to move into a new market to under 2 weeks.
  • 67. Winding Down… • We covered the history of software development, how it turned into silos, how to see those silos using a portfolio matrix, how to break the silos and finally how to layer the enterprise to avoid silos. • We showed examples of how to use the portfolio matrix and how silos were broken down with a financial trading application.
  • 68. Final Questions? • Speaker: Mark A Goetsch • Email: mgoetsch@AgileArchitecting.com • Shameless plug for my UML articles on devX.com