workshop slides - introduction to dependency-oriented thinking" feb 15, 2014, sydney

220
(C) Ganesh Prasad, Eigner Pty Ltd Dependency-Oriented Thinking Session 1 – Inculcating Dependency-Oriented Thinking

Upload: ganesh-prasad

Post on 07-May-2015

1.241 views

Category:

Technology


2 download

DESCRIPTION

This is the full slide pack containing all the slides from my all day workshop on Dependency-Oriented Thinking. If people don't have the patience to read the 264 page document (http://slidesha.re/1cPwPD2), they can flip through this first.

TRANSCRIPT

Page 1: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 1 – Inculcating Dependency-Oriented

Thinking

Page 2: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● Introduction – Presenter bio, Participants' backgrounds

● Prior experiences with SOA● Expectations from this workshop● Case studies (interactive)● Notation (UML) for inter-system dependencies● Surrogate principles and why they don't always

apply● Exercises (interactive)

Page 3: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

SOA is not just Technology● Technology is the implementation of business intent

● A lot of analysis and design is required before business intent can be implemented

Page 4: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

How did SOA get to be seen as Technology?● “Service” is a weasel word

Page 5: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Understanding the term “dependency”

● Not a fancy technical term; just a regular English word

● We can represent it using a formal notation

Page 6: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Why are dependencies important?

● A system with a large number of interconnections (dependencies)

● Some of the dependencies are not even obvious

● Now move the orange block without disturbing any of the others

● How confident are you?

Page 7: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The impact of reducing dependencies● A system with far fewer interconnections (dependencies)

● No dependencies are unknown or hidden

● How confident are you of making changes without breaking anything?

● How fast can you move the block?

● How much do you need to plan for the move?

Page 8: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The trap of surrogate principles

● “Point-to-point connections considered harmful” considered harmful

Page 9: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The converse trap

● Mediated connections considered harmful

Page 10: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Logical mediation

● A “point-to-point” connection can in fact be mediated

Page 11: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency view● The dependency view of a true point-to-point connection

Page 12: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency view● The dependency view of a mediated “point-to-point” connection

Page 13: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Logical tight coupling● A “mediated” connection may in fact be tightly coupled

Page 14: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency view

● The dependency view of a tightly coupled mediated system

Page 15: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Reducing dependencies – the Linux way

● Linux uses the Unix mechanism of symbolic links to abstract changes

Page 16: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 2 – Dependency-Oriented Thinking as a

Formal Approach

Page 17: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● The BAIT Model of the enterprise● Entities and Relationships in the TOGAF Model● The core elements applicable to Analysis and

Design (Design Artifacts)● Dependency Principles● The Method

Page 18: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A Few Words on BAIT

Page 19: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

How should an architect view “applications”?● The literal view of systems does not provide architectural insights

● The Application layer of BAIT is to be viewed functionally, not physically

Page 20: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Layered view of Applications● The correct way to see the Application layer is as logical groupings of

business capabilities

● Physical systems (hardware and software) are Technology layer entities used to implement these capabilities

Page 21: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Interdependencies between BAIT layers● The Application and Information layers always go hand in hand

Page 22: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

BAIT as a “Four I” model of SOA

● Intent – what is to be done

● Internal Cohesion – how functions hang together

● Interfaces and Integration – how functions interoperate

● Implementation – what the tangible, working system looks like

Page 23: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

BAIT and “Operation-Oriented Architecture”

● Operations are the fundamental building blocks of an enterprise

● Determine operations (the steps of business processes)

● Group related operations together (based on internals and interfaces)

● Expose operations to external consumers

● Execute operations, either alone or in combination with others

Page 24: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

BAIT versus TOGAF

● BAIT is only a framework● It shows how to view an enterprise but doesn't

show what comprises each layer● We need a model that is based on BAIT to

define a generic set of entities at each layer● A good model to use is TOGAF● TOGAF is based on industry experience and

practice, and is comprehensive yet generic

Page 25: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

TOGAF as a well-known set of dependencies● TOGAF's vocabulary includes “viewpoints”, which are subsets of the

entities that make up the model of an enterprise

● We can mine this rich set of data to search for dependency relationships

Page 26: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Enterprise-Level Entities and Relationships

Page 27: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Business Layer Entities and Relationships

Page 28: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Business Layer Design Artifacts

● Not all Business Layer entities are important to an analyst or designer

Page 29: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Application Layer Entities and Relationships

Page 30: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A Detailed Look at “Applications”

Page 31: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Application Layer Design Artifacts

● Note the two types of “applications” formed by grouping Operations in two different ways

Page 32: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Information Layer Entities and Relationships

Page 33: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Information Layer Design Artifacts

Page 34: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Technology Layer Entities and Relationships

Page 35: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Technology Layer Design Artifacts

Page 36: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Design Artifacts by BAIT Layer

Page 37: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency Principles by BAIT Layer

Page 38: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Formal Dependency-Oriented Method● Starting at the Business layer, identify the Key Design Artifacts and

apply Dependency Principles to arrive at an optimal design

● Rinse and repeat at the next lower level

Page 39: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 3 – The Business Layer

Page 40: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● Business Intent● The Chain from Vision to Process Step● Traceability and Minimalism● The role of Domain Insight● Dealing with changing requirements (intent

versus detail)

Page 41: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Business Layer Design Artifacts

Page 42: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Vision and Mission

● Vision – your idea of Utopia● Mission – your role in bringing about that Utopia● Together referred to as “Goal” in TOGAF

Page 43: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The hidden role of Strategy● Strategy shapes organisations

● The same Mission may be accomplished in different ways

Page 44: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Business Functions are largely Stable

● Changes in Strategy tend to impact Business Processes, but curiously, need not impact Business Functions once established

● Changes in Business Function are known as “restructures”

Page 45: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Function, Process and Process Step

● Function is both Structure and mini-Mission● Processes are what Functions “do”● Processes are composed of Steps (which may

or may not be reusable)

Page 46: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Traceability Principle● Think of Traceability as a chain of “existential dependencies”

● It's a discipline that makes a business “lean and mean”

Page 47: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Minimalism Principle● “The simplest way to get a job done”

● A discipline that leads to agility

Page 48: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Domain Insight

● Helps in applying the Traceability and Minimalism principles

● More Art than Science● Think of examples from your own organisation

Page 49: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Changing Requirements

● Intent versus Detail

Page 50: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 4 – Process Design

Page 51: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● The generic business process● Human workflow and asynchronous process

steps● Orchestration and Choreography● "Orchestrable" and "Choreographable"

Operations

Page 52: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Crucial Design Step between Process and Process Step

● How should Process Steps be coordinated into a Process?

● Design Exercise

Page 53: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Top-Down Design of the Business Layer

Page 54: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Orchestrated Processes● The dependency relationships in an orchestrated process mirror the

flow of control

Page 55: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Choreographed Processes● The dependency relationships bear no resemblance to the flow of

control

Page 56: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A Simple Business Process

● An Event Trigger followed by one or more Process Steps

Page 57: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A Generic Business Process

● A generic process does not run to completion in one go

● It may pause, and resume based on intermediate event triggers

Page 58: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

“Non-blocking” Processes and Callback

● It's often efficient for a paused process to do something else instead of idly waiting for an event trigger

● This model enables the design of long-running processes

Page 59: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Human workflow as a long-running process● Non-blocking process design can be used to design human workflow

● Pause and Resume junctures occur wherever human interaction is required

Page 60: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependencies in Orchestrable and Choreographable Operations

● Recall the different graphs for dependency versus flow of control

● The dependencies are similar, just in different places

Page 61: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Overhyped Notion of “Reuse”

● Reuse is not a first-class benefit● It's unreasonable to expect reuse from a SOA

initiative if the process steps of a business are not inherently reusable

Page 62: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The potential for reuse is first seen at the Business layer

Page 63: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Lower layers should confirm if reuse is in fact possible

Page 64: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 5 – The Application Layer

Page 65: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● What is an "Application"?● The principles of High Cohesion and

Decoupling of Internals from Interfaces● "Goldilocks" Signatures (Stability versus

Precision of Interfaces)● Variants, Versions and dealing with change● Shared Semantics for effective Choreography

Page 66: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Application Layer Design Artifacts● Process Steps at the Business layer map to Operations at the

Application layer

Page 67: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Application Layer vs Technology Layer● The Technology layer provides a detailed “street view”

● The Application layer provides a high-level “map view”

Page 68: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Relationship between Design Artifacts at the Application and Information Layers

● Products are defined by a shared Internal Data Model

● Services are defined by a shared Interface Data Model

Page 69: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Cohesion and Coupling Principles● At each layer, there is an internal focus (Cohesion) and an external

focus (Coupling)

Page 70: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Cohesion Exercise 1

Page 71: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 72: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 73: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Cohesion Exercise 2

Page 74: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 75: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 76: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 77: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Cohesion Exercise 3

Page 78: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 79: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 80: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Simultaneous Groupings● It is possible to group entities in more than one way at the same time

Page 81: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Simultaneous Grouping of Operations● A dynamic grouping of Operations is a Process

● A static grouping of Operations is an Application (Product or Service)

Page 82: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Anatomy of a Product● Grouping by internals is the design principle

● External access is “canned” through a relatively rigid native interface

Page 83: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Anatomy of a Service● Grouping by Interfaces is the design principle

● External access is the very raison d'être!

Page 84: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

SOFEA – Architecture for Front-ends● For the best of both worlds, build user interfaces on top of services

Page 85: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Demystifying Versioning

● Variants and Versions

● Interfaces and Internals

Page 86: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Variants● A Variant is an operation “flavour” that may coexist with other flavours

without deprecating them

Page 87: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Versions

● There is always a latest Version that deprecates earlier ones

Page 88: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Interfaces as Abstractions of Operations● An Interface represents the Business Intent of an Operation

● Details are taken care of by implementation variants (“internals”)

Page 89: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Impact of Changing Interfaces

● Consumers of operations have a dependency on the interface

● Changes to operations may impact consumers to different degrees

Page 90: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Impacts classified by Version Type● Versions can be thought of as “x.y.z”

● The only criterion for classification is the level of impact from a change

● A term like “bug fix version” makes no sense from a dependency perspective

Page 91: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Changes to Internals● A change to the internal logic of an operation with no visibility at the

interface changes only the implementation version, not the minor or major versions

Page 92: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

“Minor” Changes to Interfaces● Some kinds of changes to operations are visible at the interface, but

do not impact consumers in a practical sense

● They only change the minor version number

● Minor version changes are “backward compatible” (continue to support older consumers while supporting new ones)

Page 93: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Types of changes that do not break an interface

● Interfaces that become more lenient tend not to impact consumers

Page 94: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Major Changes to Interfaces● A change to an operation that is not only visible at the interface but

also forces a change to the consumer is a change to the major version number

Page 95: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Types of changes that break an interface● An interface that becomes stricter or more restrictive tends to impact

consumers

Page 96: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Version Mapping Convention● Exploit the dependency level expressed by the “x.y.z” version numbering

scheme

● The minor version number should always refer to the latest implementation version

Page 97: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Version Mapping Convention, cont'd● The major version number should always map to the latest minor

version

Page 98: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Version Routing Exercise● Which implementation version will be executed by this call?

Page 99: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Solution● Thumb rule – It's always the latest version at the lower level

Page 100: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 101: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Page 102: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The “Minor Version Lockstep Dependency”● When dealing with multiple variants, changes to the minor version

number of one variant will require corresponding changes to the minor version numbers of all the other variants!

Page 103: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The “Goldilocks Signature” Principle● A balance is required between the stability and the precision of an

operation's interface

Page 104: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

What is a “Well-Designed” Interface?

● Well-designed interfaces are stable in the face of change

● i.e., they do not create unnecessary dependencies

Page 105: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Why the scheme works

Page 106: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Managing Breaking Changes

Page 107: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Managing Breaking Changes, cont'd

Page 108: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Managing Non-Breaking Changes

Page 109: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 6 – The Information Layer

Page 110: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● "Data on the Outside versus Data on the Inside"

● Elements of Low Coupling● Type Hierarchy and Interface Abstraction● Identity Association● Context versus Content

Page 111: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Information Layer Design Artifacts

● Only two major categories – “Data on the Outside” and “Data on the Inside”

● Deceptively simple!

Page 112: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Variants from a Data Perspective● A single abstract interface can map to multiple concrete

implementation variants

● But the -------- ------ remains the same

Page 113: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Notion of “Context”

● “Context” is a way of formalising aspects of an operation that are not core to its business intent

Page 114: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Low Coupling, or “Need to Know”

● A form of minimalism applied to data

Page 115: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Decoupling of Internal Data from Interface Data

● To be decoupled, interface and internal data models cannot have dependencies on each other

Page 116: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Domain-Specific Data Dictionary

● Efficiencies are still possible!

● The internal and interface data models do talk about similar entities

Page 117: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

What a Data Dictionary Looks Like

● Entities and Value Objects are defined here

Page 118: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Types and Instances● Both internal and interface data models define instances of types

● Types common to both should be in the common data dictionary

Page 119: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Data Model Example● Internal and interface data models have some elements in common

and some elements that are unique to each

Page 120: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Relationship between Interface/Internals and Type Hierarchy

● This is why Application and Information layer design is done together!

Page 121: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A Problem We Glossed Over!

● Abstract interfaces are stable and shield consumers from many internal changes, but...

● How does a consumer know which concrete data elements to send and receive?

● The answer becomes clear if we jettison a fallacy of SOA – that a formal “interface contract” is sufficient for a consumer to begin transacting with an operation

● In practice, designers of consuming applications always discuss with the designers of operations and negotiate data exchange

● Use this knowledge to design pragmatic design processes

Page 122: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Building an abstract interface to an existing implementation

Page 123: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

When a new consumer is supported by an existing variant

Page 124: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

When a new consumer is not supported by an existing variant

Page 125: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Internal Data Model● Deals with Entities rather than Value objects

Page 126: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Interface Data Model● Never references Entities! (That would be tight coupling)

● Value objects are packaged into messages that are exchanged

● Value objects can also be called “representations”

Page 127: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Identity Association Principle

● A common design error

Page 128: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

How Identity Association Works

● Consumers must not develop dependencies on internal data entities

Page 129: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Revisiting the Goldilocks Signature Principle● Think about stability and precision afresh from the viewpoint of data

Page 130: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Message Data Model

● The Goldilocks Signature principle is supported by this model

Page 131: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A Terrible Way to Implement Extensible Interfaces

● Extensions gradually destroy structure and meaning

Page 132: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Extensibility with Control● Setting up a Type Hierarchy supports change gracefully

Page 133: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Isolation of Context from Content● Keep extraneous considerations separate from the core business

intent

Page 134: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Context Type Hierarchy● Context has its own hierarchy with a single, optional base type called

“Context Type”

Page 135: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Supporting New Variants that Differ only in Context

● Building in an optional context element into every interface is insurance against breaking change

Page 136: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Context of Output Data● Context of input data is used to determine appropriate variants to

invoke

● Context of output data can support choreographable operations

Page 137: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Service Content and Process Context● When considering a single operation, some data elements may be

considered content rather than context (i.e., they follow from the business intent)

Page 138: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Modelling Service Content as Context

● Sometimes, a process may have operations with common content

● This content could be considered to be their common context

Page 139: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Context By Reference● Operations sharing “content context” with other operations can then deal

with references to common data

● These reference IDs are a form of context that is common to the process

Page 140: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Context By Reference, cont'd

● Subsequent operations refer to common content through the context ID

Page 141: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Example – Bringing Application and Data Layer Principles Together

Page 142: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Type Hierarchy supporting Late Binding

Page 143: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

“Schema Validation”

Page 144: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Routing/Binding from Interface to Implementation

Page 145: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 7 – The Technology Layer

Page 146: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● Standards, Bundling and Tooling● Standards and Standards Families - SOAP and

REST● Bundling - Data, Logic, Physical Components

and their association● Tooling - the core and supporting components

of a distributed solution● Implementing a logical design

Page 147: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Technology Layer – The Design of Implementation

● Not implementation itself, but the design of implementation

Page 148: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Technology Layer Design Artifacts● At the most abstract level, Technology consists of three elements

● They are Standards, Tooling and Bundling

Page 149: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Bundling Decisions

● “Where to place what” is a bundling decision

Page 150: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Logic Bundling Principle● This is a variant of the Cohesion principle – what belongs together

must go together

Page 151: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The State or “Stickiness” Principle● Placing logic on one physical component as opposed to another could

be the difference between a stateless and a stateful system

● Stateless systems have significant architectural advantages on account of their reduced bundling dependencies (scalability, failure recovery)

Page 152: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Topology “Hotspots”● The way physical components are connected or “wired” together can

create bundling dependencies of another kind

● Performance bottlenecks and single points of failure are common results of topology-related bundling decisions

Page 153: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Reference Architecture of a Deployable Application

Page 154: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Determining Standards for Orchestrable Operations

Page 155: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Determining Standards for Choreographable Operations

Page 156: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Determining Tooling Components

Page 157: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Determining Deployment Bundles

Page 158: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Determining Description Bundles

Page 159: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Service Provider

Page 160: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Service Consumer

Page 161: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Legacy Systems

Page 162: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Functional Symbols for Tooling● From Gregor Hohpe's “Enterprise Integration Patterns”

Page 163: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Additional Symbol for Tooling● Internal logic has no symbol in “Enterprise Integration Patterns”

● We have to “roll our own”!

Page 164: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Core Technology Layer Components

● Service Container

● Broker

● Process Coordinator

Page 165: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Service Container● Implements Business Logic and exposes it

Page 166: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

How a Service Container is Used

● The logic implemented by the Service Container and exposed as an operation is consumed by a service consumer

Page 167: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Broker

● Mediates access to existing logic

Page 168: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

How a Broker is Used● The special protocols and interfaces of legacy systems are hidden

through “adapters”

● Data formats are converted through “transformer” logic

● Physical locations are hidden and variants are abstracted through “mediator” logic

Page 169: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Process Coordinator

● Combines existing operations into business processes

● More relevant for orchestrable operations

Page 170: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

How a Process Coordinator is Used● The Process Coordinator runs stateful process logic (orchestration)

● It invokes operations as required

● The operations themselves are stateless

Page 171: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Components Working Together

● The three core technology components are designed to work together

Page 172: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Broker Design Error 1● Topology Hotspot – the Broker is not meant to be a centralised

component

Page 173: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Broker Design Error 2

● Always use the right tool for the job

● The Broker is a mediator

● Do not use the Broker as a Service Container

● Do not use the Broker as a Process Coordinator

Page 174: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependencies introduced by SOAP● Static Description dependency

● Bundling dependency

● Synchronisation dependency

Page 175: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependencies introduced by REST● Semantic dependency

● Synchronisation dependency

Page 176: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

What is a “Semantic Dependency”?● The requirement for a system to resolve ambiguity

Page 177: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Problem with WSDL

● WSDL is a static description of a group of operations

● Three dependencies arise from this design

Page 178: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The WSDL Dependency Multiplied● A popular service can have many consumers that are then dependent

on its interface contract

Page 179: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Cascading Impacts of Change● WSDL is a dependency hotspot

Page 180: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Calculating the Brittleness of WSDL● A WSDL file describes exactly 1 service consisting of 5 operations, each

with an input and an output document

● If any given document has a 10% probability of changing, what is the probability of the WSDL file changing?

Page 181: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Strategies to minimise change● Dependency principles can be applied to minimise the effects of

change due to the WSDL dependency hotspot

Page 182: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependencies arising from REST's Hypermedia Constraints

● There is no static description of operations in REST (WADL is not RESTian)

● There are still 3 dependencies

Page 183: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Miscellaneous Technology Layer Considerations

Page 184: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The “Canonical Data Model” Fallacy● A Canonical Data Model could be too heavyweight and rigid

Page 185: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Domain Data Models● Domain Data Models are more flexible and federation-friendly

Page 186: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

“The SOA Ecosystem”● The logical view of service providers and consumers

Page 187: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Processes as Service Consumers● Processes are a special type of service consumer

Page 188: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Processes as Operations

● A process abstracts coarse-grained logic

● This coarse-grained logic may in turn be invoked by a service consumer

Page 189: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Processes in the SOA Ecosystem

● A process is both a service provider and a service consumer

Page 190: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Operation Signatures implemented in SOAP and REST

Page 191: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Dependency-Oriented ThinkingSession 8 – Worked-Out Examples

Page 192: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Agenda

● Option 1: Detailed analysis of participants' own design problems

● Option 2: Canned case studies:● Conducting a post-mortem based on dependency

principles● Designing a system based on an orchestrated business

process● Designing a system based on a choreographed

business process● Designing an interface data model to cater to change

(Type Hierarchy and Goldilocks Signatures)

Page 193: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Post-Mortem Example

Page 194: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Exercise – Post-Mortem

● What is wrong with this design?

Page 195: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A More Flexible Design

Page 196: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Synchronous Orchestrated Process

Page 197: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Banking Application Sequence Diagram

Page 198: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Processes, Services and Operations

● Dynamic grouping of operations into a single process “Open Account”

● Static grouping of operations into 3 services

Page 199: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

High-Level Solution Diagram – Banking

Page 200: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Asynchronous Orchestrated Process

Page 201: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Insurance Application Sequence Diagram

Page 202: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Processes, Services and Operations● Two dynamic groupings (processes): Get Quote and Purchase Policy

● 6 static groupings (services)

Page 203: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

High-Level Solution Diagram – Insurance

Page 204: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Choreographed Process

Page 205: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A Maze Game

Page 206: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Allowed Movements

Page 207: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Cell Identifiers – Identity Association● A cell's location must not be derivable from its name or vice-versa

Page 208: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The Design – Hypermedia Constraints

Page 209: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Interaction at the start of the game

Page 210: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Interaction in the middle of the game

Page 211: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Interaction at the end of the game

Page 212: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Managing Change

Page 213: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

The 70s● Banking in a simpler (and more rigid) time

Page 214: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Service Interfaces to Support Arbitrary Clients

Page 215: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Variants of Similar Operations

Page 216: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Standardised Variants, Abstract Interfaces

Page 217: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Processes as Standardised Operation Variants

Page 218: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Supporting a New Variant

Page 219: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

Deployment of Components

Page 220: Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

(C) Ganesh Prasad, Eigner Pty Ltd

A More Likely Scenario!