+ All Categories
Home > Documents > SDWest2005Goetsch

SDWest2005Goetsch

Date post: 18-Aug-2015
Category:
Upload: mark-goetsch
View: 26 times
Download: 0 times
Share this document with a friend
Popular Tags:
68
Moving from Applications to the Enterprise Mark Goetsch Enterprise Software Architect Wheels
Transcript
Page 1: SDWest2005Goetsch

Moving from Applications to the Enterprise

Mark GoetschEnterprise Software Architect

Wheels

Page 2: SDWest2005Goetsch

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.

Page 3: SDWest2005Goetsch

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.

Page 4: SDWest2005Goetsch

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

Page 5: SDWest2005Goetsch

1. The History

Functions, Structures, Objects, Components all leading to the

Enterprise

Page 6: SDWest2005Goetsch

It Started with Instructions

Page 7: SDWest2005Goetsch

Functions Appeared

Page 8: SDWest2005Goetsch

Added Data to the Functions

Page 9: SDWest2005Goetsch

Object Orientated AD was Born

Page 10: SDWest2005Goetsch

There Appeared Components

Page 11: SDWest2005Goetsch

This Became the Enterprise

Page 12: SDWest2005Goetsch

Which does not Protect us from Silos!

Page 13: SDWest2005Goetsch

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

Page 14: SDWest2005Goetsch

2. The Software Portfolio

Aligning IT with Business

Page 15: SDWest2005Goetsch

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.

Page 16: SDWest2005Goetsch

Software Portfolio

Page 17: SDWest2005Goetsch

Vertical Integration

Page 18: SDWest2005Goetsch

Horizontal Integration

Page 19: SDWest2005Goetsch

Service-Oriented Architecture

Page 20: SDWest2005Goetsch

Service Bar

Page 21: SDWest2005Goetsch

Example of using the Software Portfolio Matrix

Creating Enterprise Communications

Page 22: SDWest2005Goetsch

The Inbound/Outbound Matrix for Wheels

Software Portfolio Matrix

VOTR Collision

Inbound Fax OCR

FaxeMail

Outbound Letters LettersSpell Check

Page 23: SDWest2005Goetsch

Add Horizontal Integration

Software Portfolio Matrix

VOTR Collision

InboundOCRFax

eMail

OutboundLetters

Spell Check

Page 24: SDWest2005Goetsch

Combining into the Enterprise

Page 25: SDWest2005Goetsch

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.

Page 26: SDWest2005Goetsch

Questions?

• I looked at Vertical Integration

• I introduced Horizontal Integration

• I talked about SOA

• …and we had an example

Page 27: SDWest2005Goetsch

3. Breaking Down Silos

Moving from the Software Portfolio to a Technical

Implementation

Page 28: SDWest2005Goetsch

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.

Page 29: SDWest2005Goetsch

Domain Service Bar

Page 30: SDWest2005Goetsch

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?”

Page 31: SDWest2005Goetsch

Note on Terminology

Solution Domain

Application

Problem Domain

Domain

Problem: We might have multiple tasks rather than an application in the Solution Domain.

Page 32: SDWest2005Goetsch

Architectural Domains

Page 33: SDWest2005Goetsch

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.

Page 34: SDWest2005Goetsch

“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

Page 35: SDWest2005Goetsch

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.

Page 36: SDWest2005Goetsch

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.

Page 37: SDWest2005Goetsch

How to Separate Problem Domains

(Horizontal Separation)

Page 38: SDWest2005Goetsch

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.

Page 39: SDWest2005Goetsch

Without Domain SeparationVehicle

Replacement Parts

Registration

Driver

Accidents

License

Page 40: SDWest2005Goetsch

After Domain Separation

Vehicle: Vehicle

Vehicle:Replacement

Parts

Vehicle:Registration

Driver:Driv er

Accidents

Driver:License

Driver: Vehicle

Vehicle:Driver

Page 41: SDWest2005Goetsch

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.

Page 42: SDWest2005Goetsch

Separation between Problem and Solution Domains(Vertical Domains)

Page 43: SDWest2005Goetsch

Two Intertwined DomainsSheets Sheet

OptionCalculator

+ Volatil i ty: float+ Time: int+ InterestRate: float+ UnderlyingPrice: float+ StrikePrice: float+ StepSize: float

+ CalculateBlackScholes() : float+ CalculateBlackScholesImpliedVolatil ity() : float+ CalculateCRR() : float+ CalculateCRRImpliedVolatil i ty() : float+ CalculatePropModel1() : float+ CalculatePropModel2() : float+ CalculatePropModel1ImpliedVolatil ity() : float+ CalculatePropModel2ImpliedVolatil ity() : float

SheetsConfiguration

SheetConfiguration

Page 44: SDWest2005Goetsch

The Solution DomainSheets Sheet

Nodes

NodeRow

Frame

«enumeration»Internationalization

+ United States: Country+ United Kingdom: Country+ Germany: Country

International

Configuration

Page 45: SDWest2005Goetsch

The Problem DomainNodes

Node

+ Delta: float+ Gamma: float+ Theta: float+ Vega: float

«interface»OptionModel

+ CalculateOption() : double+ CalculateImpliedVolatil ity() : double+ LoadModel() : void

TreeModel

+ ModelName: int+ Time: int+ Volatil ity: float+ UnderlyingPrice: float- StrikePrice: float+ StepSize: float

+ CalculateOption() : double+ CalculateImpliedVolatil ity() : double+ LoadModel() : void

ClosedFormModel

+ ModelName: int+ Time: int+ Volatil ity: float+ UnderlyingPrice: float+ StrikePrice: float

+ CalculateOption() : double+ CalculateImpliedVolatil ity() : double+ LoadModel() : void

«enumeration»ModelName

- CRR: int- BlackScholes: int- PropModel1: int- PropModel2: int

Page 46: SDWest2005Goetsch

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.

Page 47: SDWest2005Goetsch

Questions?

• There are Solution Domains

• Which use Services

• From Problem Domains

• Problem Domains should not Communicate with each other.

Page 48: SDWest2005Goetsch

4. Layering the Enterprise

Moving from Domains to Layers

Page 49: SDWest2005Goetsch

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.

Page 50: SDWest2005Goetsch

Architecture Layers/Tiers

Page 51: SDWest2005Goetsch

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

Page 52: SDWest2005Goetsch

Adding Layers to the Tiers

Page 53: SDWest2005Goetsch

Resolving the Layers

Page 54: SDWest2005Goetsch

Problem #1: Inheritance Across Layers

Page 55: SDWest2005Goetsch

Problem #1: Inheritance is Contained

Page 56: SDWest2005Goetsch

Problem #1: Integrate into Enterprise

Page 57: SDWest2005Goetsch

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.

Page 58: SDWest2005Goetsch

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!

Page 59: SDWest2005Goetsch

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.

Page 60: SDWest2005Goetsch

Example of the Breaking Down of a Silo in the

Financial Markets

Page 61: SDWest2005Goetsch

Original Layering

Page 62: SDWest2005Goetsch

Separate into Problem and Solution Domains

Page 63: SDWest2005Goetsch

Add Services

Page 64: SDWest2005Goetsch

Add some Utilities

Page 65: SDWest2005Goetsch

The Final Enterprise Layers

Page 66: SDWest2005Goetsch

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.

Page 67: SDWest2005Goetsch

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.

Page 68: SDWest2005Goetsch

Final Questions?

• Speaker: Mark A Goetsch

• Email: [email protected]

• Shameless plug for my UML articles on devX.com