soa and mda hand-in-glove or square-peg, round-hole?

21
SOA and MDA Hand-in- Glove or Square-Peg, Round-Hole? David Piper Principal Consultant

Upload: gretchen-torres

Post on 30-Dec-2015

21 views

Category:

Documents


0 download

DESCRIPTION

SOA and MDA Hand-in-Glove or Square-Peg, Round-Hole?. David Piper Principal Consultant. Agenda. Service Oriented Architecture Focus Architecture, Requirements, Solutions, Services MDA Focus Purpose and Structure Capabilities Uniting SOA and MDA Architecture, Requirements, Solutions, - PowerPoint PPT Presentation

TRANSCRIPT

SOA and MDAHand-in-Glove

orSquare-Peg, Round-Hole?

David Piper

Principal Consultant

SOA and MDA

© Select Business Solutions, Inc. 2005

2

Agenda

• Service Oriented Architecture Focus– Architecture, Requirements, Solutions, Services

• MDA Focus– Purpose and Structure– Capabilities

• Uniting SOA and MDA– Architecture,– Requirements,– Solutions,– Services

• Sample SOA-MDA Pattern

SOA and MDA

© Select Business Solutions, Inc. 2005

3

SOA Focus – Model Stereotypes«Architecture»

«R

eq

uire

me

nts

»

«Solution»

«S

ervice»

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetails

DeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatus

ListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetails

DeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatus

ListAccounts

Business

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetails

DeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatus

ListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetails

DeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatus

ListAccounts

Technical

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Data«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetails

DeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatus

ListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetails

DeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatus

ListAccounts

Project«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetailsDeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetailsDeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatusListAccounts

Project«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Project «Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Solution

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Solution

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Solution

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Solution

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Solution

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Service

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Service«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccounts

CustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomer

CustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetailsDeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatusListAccounts

«interface»ICustomerAccount

ListAccounts

CustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomer

CustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetailsDeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatusListAccounts

Service

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Service«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccounts

CustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomer

CustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetailsDeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatusListAccounts

«interface»ICustomerAccount

ListAccounts

CustomerStatus

AccountSummary

«interface»ICustomer

RegisterCustomer

CustomerDetails

ChangeContactDetails

DeregisterCustomer

«Service Class»scCustomer

ChangeContactDetails

CustomerDetailsDeregisterCustomer

RegisterCustomer

«Service Class»scCustomerAccount

AccountSummary

CustomerStatusListAccounts

Service

«Component»

AccountCustomer

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

«interface»ICustomerAccount

ListAccountsCustomerStatusAccountSummary

«interface»ICustomer

RegisterCustomerCustomerDetailsChangeContactDetailsDeregisterCustomer

«Service Class»scCustomer

ChangeContactDetailsCustomerDetailsDeregisterCustomerRegisterCustomer

«Service Class»scCustomerAccount

AccountSummaryCustomerStatusListAccounts

Service

ServiceCatalogue

SOA and MDA

© Select Business Solutions, Inc. 2005

4

Architectures and Requirements

«iteration»

Until Order Confirmed

«iteration»

For Each Desired Item

«elementary»

Add Item ToOrder

*

«elementary»

Confirm OrCancel Item Order

*

«elementary»

BrowseCatalogue

*

«elementary»

ProvidePersonal Details

*

«elementary»

Review OrderDetails

*

«iteration»

For Each Desired Item

«elementary»

Add Item ToOrder

*

«elementary»

Confirm OrCancel Item Order

*

«elementary»

BrowseCatalogue

*

«elementary»

ProvidePersonal Details

*

«elementary»

Add Item ToOrder

*

«elementary»

Confirm OrCancel Item Order

*

«elementary»

BrowseCatalogue

*

«elementary»

ProvidePersonal Details

*

«elementary»

Review OrderDetails

*

Customer

«elementary»

Make UnassistedPayment

*

Customer WantsTo Buy Items

Order Cancelled

Order Submitted

«elementary»

Make UnassistedPayment

*

Customer WantsTo Buy Items

Order Cancelled

Order Submitted

Cashier

«elementary»

Take Payment

*

«elementary»

Take Payment

*

Desired Item Status

Desired Item Found

Order Review Outcome

Order Not ConfirmedOr No Order Raised

Order Review Outcome

Confirm Order WithUnassisted Payment

Order Review Outcome

Confirm Order WithAssisted Payment

Order Payment Status

Order Payment NotReceived

Order Payment Status

Order Payment NotCompleted

Catalogue Item Stock Status

Catalogue ItemInsufficiently Stocked

Order Payment Status

Order PaymentReceived

Order Payment Status

Order PaymentReceived

Order Payment Status

Order Payment NotReceived

«Human»

Customer

«System»

OLA

«System»

Address

«System»

Message

BrowseCatalogue

Manage ItemOn Order

Confirm Order

Make CustomerPayment

Set PersonalDetails

Choose CollectionTimeslot

Cancel Order

Pay By Card

ProvidePersonal Details

«include»

«include»

«include»

«include»

«include»

«include»

«include»

CARGOSS Store System

Project«Requirements»

«group»

CARGOSS DiscountWarehouse

«group»

Sell

«thread»

Sell Items InStore

*

«thread»

Collect OrderFrom Store

*

«group»

Administrate

«thread»

Close At EndOf Day

*

«thread»

Pick Order

*

Business«Architecture»

As-Is Process

To-Be Process

Global Constraints

Technical«Architecture»

«business»PartQuantity

MinimumQuantity

MaximumQuantity

Unbounded

«business»CatalogueItem

ItemNumber

Price

Deleted

DeleteOn

MinimumOrder

UnitSize

«business»KeyWord

Value

Type

«business»SingleItem

«business»CompositeItem

1..*

*

compositeItem

subItem

* 1..*Classifies

*

1

Offer On

normal item

discounted item

«business»StockItem

ItemNumber

Description

UnitCost

DefaultOrderQuantity

SupplyPeriod

StockQuantity

ReorderQuantity

1 1

Describes

SOA and MDA

© Select Business Solutions, Inc. 2005

5

Requirements and Solutions

«iteration»

Until Order Confirmed

«iteration»

For Each Desired Item

«elementary»

Add Item ToOrder

*

«elementary»

Confirm OrCancel Item Order

*

«elementary»

BrowseCatalogue

*

«elementary»

ProvidePersonal Details

*

«elementary»

Review OrderDetails

*

«iteration»

For Each Desired Item

«elementary»

Add Item ToOrder

*

«elementary»

Confirm OrCancel Item Order

*

«elementary»

BrowseCatalogue

*

«elementary»

ProvidePersonal Details

*

«elementary»

Add Item ToOrder

*

«elementary»

Confirm OrCancel Item Order

*

«elementary»

BrowseCatalogue

*

«elementary»

ProvidePersonal Details

*

«elementary»

Review OrderDetails

*

Customer

«elementary»

Make UnassistedPayment

*

Customer WantsTo Buy Items

Order Cancelled

Order Submitted

«elementary»

Make UnassistedPayment

*

Customer WantsTo Buy Items

Order Cancelled

Order Submitted

Cashier

«elementary»

Take Payment

*

«elementary»

Take Payment

*

Desired Item Status

Desired Item Found

Order Review Outcome

Order Not ConfirmedOr No Order Raised

Order Review Outcome

Confirm Order WithUnassisted Payment

Order Review Outcome

Confirm Order WithAssisted Payment

Order Payment Status

Order Payment NotReceived

Order Payment Status

Order Payment NotCompleted

Catalogue Item Stock Status

Catalogue ItemInsufficiently Stocked

Order Payment Status

Order PaymentReceived

Order Payment Status

Order PaymentReceived

Order Payment Status

Order Payment NotReceived

«Human»

Customer

«System»

OLA

«System»

Address

«System»

Message

BrowseCatalogue

Manage ItemOn Order

Confirm Order

Make CustomerPayment

Set PersonalDetails

Choose CollectionTimeslot

Cancel Order

Pay By Card

ProvidePersonal Details

«include»

«include»

«include»

«include»

«include»

«include»

«include»

CARGOSS Store System

Project«Requirements»

«interface»:IOrder

«interface»:ICatalogue

«interface»:IProduct

«interface»:IStock

Get current order summary GetOrderSummaryGet item summary GetItemSummary

Get product details for the item GetItemSummaryGet current Stock GetStock

Get product details for the item GetItemSummaryGet current Stock GetStockGet current Stock GetStock

Add quantity of item to order AddItemIf Quantity updated

Set item quantity SetItemQuantityEnd If

Set item quantity SetItemQuantity

If Special Offer specified

Specify Special Offer SetItemOfferCodeEnd If

Specify Special Offer SetItemOfferCode

If Item Confirmed

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

End If

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDelivery

Get the expected delivery date GetItemDeliveryGet the latest delivery date GetDeliveryGet the latest delivery date GetDelivery

Else

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

If Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItemsUnreserve the Stock Items UnReserveItems

Existing«Solution»

«interface»:IOrder

«interface»:ICatalogue

«interface»:IProduct

«interface»:IStock

Get current order summary GetOrderSummaryGet item summary GetItemSummary

Get product details for the item GetItemSummaryGet current Stock GetStock

Get product details for the item GetItemSummaryGet current Stock GetStockGet current Stock GetStock

Add quantity of item to order AddItemIf Quantity updated

Set item quantity SetItemQuantityEnd If

Set item quantity SetItemQuantity

If Special Offer specified

Specify Special Offer SetItemOfferCodeEnd If

Specify Special Offer SetItemOfferCode

If Item Confirmed

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

End If

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDelivery

Get the expected delivery date GetItemDeliveryGet the latest delivery date GetDeliveryGet the latest delivery date GetDelivery

Else

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

If Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItemsUnreserve the Stock Items UnReserveItems

New«Solution»

Delta Use Cases

New Use Cases

Requirements

SOA and MDA

© Select Business Solutions, Inc. 2005

6

Solutions and Service Catalogue«interface»

:IOrder«interface»:ICatalogue

«interface»:IProduct

«interface»:IStock

Get current order summary GetOrderSummaryGet item summary GetItemSummary

Get product details for the item GetItemSummaryGet current Stock GetStock

Get product details for the item GetItemSummaryGet current Stock GetStockGet current Stock GetStock

Add quantity of item to order AddItemIf Quantity updated

Set item quantity SetItemQuantityEnd If

Set item quantity SetItemQuantity

If Special Offer specified

Specify Special Offer SetItemOfferCodeEnd If

Specify Special Offer SetItemOfferCode

If Item Confirmed

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

End If

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDelivery

Get the expected delivery date GetItemDeliveryGet the latest delivery date GetDeliveryGet the latest delivery date GetDelivery

Else

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

If Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItemsUnreserve the Stock Items UnReserveItems

Existing«Solution»

«interface»:IOrder

«interface»:ICatalogue

«interface»:IProduct

«interface»:IStock

Get current order summary GetOrderSummaryGet item summary GetItemSummary

Get product details for the item GetItemSummaryGet current Stock GetStock

Get product details for the item GetItemSummaryGet current Stock GetStockGet current Stock GetStock

Add quantity of item to order AddItemIf Quantity updated

Set item quantity SetItemQuantityEnd If

Set item quantity SetItemQuantity

If Special Offer specified

Specify Special Offer SetItemOfferCodeEnd If

Specify Special Offer SetItemOfferCode

If Item Confirmed

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

End If

Confirm Item ConfirmItemIf Insufficient Stock

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

End If

If Item Ordered

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDeliveryElse

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

End If

Schedule Order for the Item OrderItemGet the expected delivery date GetItemDelivery

Get the latest delivery date GetDelivery

Get the expected delivery date GetItemDeliveryGet the latest delivery date GetDeliveryGet the latest delivery date GetDelivery

Else

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Reduce Item Quantity SetItemQuantityConfirm Item ConfirmItem

Else

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Remove Item from Order RemoveItemIf Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

If Item is Reserved

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItems

End If

Unreserve the Item UnReserveItemUnreserve the Stock Items UnReserveItemsUnreserve the Stock Items UnReserveItems

New«Solution»

ServiceCatalogue

New Service Specs

Re-used Services

SOA and MDA

© Select Business Solutions, Inc. 2005

7

Service Catalogue and Services

«Service»

MessageMaster

«interface»IMessage

e

SendDocument( in message : ..Message, inout addresseeList : ..Addressee[*] )

«business»Addressee

e

AddressType : mmAddressType

Address : string

MessageStatus : mmMessageStatus

«business»Message

e

MessageHeader : string

MessageText : string

«Service»

MessageMaster

«interface»IMessage

e

SendDocument( in message : ..Message, inout addresseeList : ..Addressee[*] )

«business»Addressee

e

AddressType : mmAddressType

Address : string

MessageStatus : mmMessageStatus

«business»Message

e

MessageHeader : string

MessageText : string

«Service»

MessageMaster

«interface»IMessage

e

SendDocument( in message : ..Message, inout addresseeList : ..Addressee[*] )

«business»Addressee

e

AddressType : mmAddressType

Address : string

MessageStatus : mmMessageStatus

«business»Message

e

MessageHeader : string

MessageText : string

ServiceCatalogue

Service Specifications

Implemented Services

SOA and MDA

© Select Business Solutions, Inc. 2005

8

MDA Focus – Abstraction Gap

Complex technology (.Net, J2EE etc..)

Complex business process

Analyze

Code

Test

Deploy

Model – Code Gap

SOA and MDA

© Select Business Solutions, Inc. 2005

9

MDA Focus – Levels of Abstraction

ComputationIndependentModel

PlatformIndependentModel

PlatformSpecificModel

ImplementationCode

An expression of the business domain independent of the use of systems to support the processes.

A design for the implementation of solutions to support the processes which is independent of the platform used for the implementation.

A detailed design for the implementation of a solution which takes into account the details of the implementation platform and from which a high proportion of code can be generated.

The code, specific to the implementation environment.

SOA and MDA

© Select Business Solutions, Inc. 2005

10

MDA Capability – Model Transformation

• Pattern based transformations applied within and across levels of abstraction

• True synchronization between levels of abstraction allowing related models to be maintained in-step

CIM

PIM

PSM

Code

SOA and MDA

© Select Business Solutions, Inc. 2005

11

Unifying SOA and MDA

«Architecture» «Requirements» «Solution» «Service»

CIM

PIM

PSM

Code

SOA and MDA

© Select Business Solutions, Inc. 2005

12

MDA and… Architectural Models

ComputationIndependentModel

PlatformIndependentModel

PlatformSpecificModel

ImplementationCode

Business

Business ProcessBusiness Rules…

Corporate Data Model

Physical Data Model

Database Definition

Technical

Technical RequirementsTechnical Patterns

Interface Definitions

Base ClassesUtilities

Technical Services

Class Libraries

Data

Process-ServiceDependency

SOA and MDA

© Select Business Solutions, Inc. 2005

13

Project

MDA and… Requirements Models

Business ProcessBusiness Rules…

Use CasesAbstract Class Model…

Interaction Model

ComputationIndependentModel

PlatformIndependentModel

PlatformSpecificModel

ImplementationCode

SOA and MDA

© Select Business Solutions, Inc. 2005

14

MDA and… Solution Models

New/Existing

Use CasesAbstract Class Model

PIM Service InterfacesInteraction Model…

PSM Service InterfacesUser Interface Class Model

Interaction Model…

User Interface CodeService Interface References

ComputationIndependentModel

PlatformIndependentModel

PlatformSpecificModel

ImplementationCode

SOA and MDA

© Select Business Solutions, Inc. 2005

15

New/Existing

MDA and… Service Models

PIM Service InterfaceAbstract Class ModelInteraction Model…

PSM Service InterfaceDesign Class ModelInteraction Model…

Service CodeDependee Service References

ComputationIndependentModel

PlatformIndependentModel

PlatformSpecificModel

ImplementationCode

SOA and MDA

© Select Business Solutions, Inc. 2005

16

Unified Architecture - Completed

«Architecture»(Business/Data)

«Architecture»(Technical)

«Requirements» «Solution» «Service»

CIMBusiness Process Model

Requirements

Glossary π

Business Process Model

Requirements

Glossary π

PIM Corporate Data Model

Technical Requirements

Technical Patterns

Interface Definitions

Use Cases

Information Model π

Use Cases

Information Model π

Business Architecture

Interaction Diagrams

User Classes

Service Interface

Information Model π

Component Architecture

Interaction Diagrams

State Diagrams

PSMPhysical Corporate Data

Model

Base Classes

Utilities

Technical Services

Well Formed User Interface Classes

Applied Patterns

Well Formed Classes

Applied Patterns

Code Database Definition Class Libraries

Synchronized Code

Solution Implementation

Schema, Meta-data

Synchronized Code

Component Implementation

Schema, Meta-data

SOA and MDA

© Select Business Solutions, Inc. 2005

17

SOA and MDA – Transformations…

• Extend the reach of MDA– Different transformations– Model stereotype specific

• SOA specific transformations– Service Internal Architecture– Loose Coupling– Legacy Wrapping– Data Service Wrapping– …

• Service Catalogue and MDA– Recognise levels of abstraction– Publish/Reuse as appropriate level

SOA and MDA

© Select Business Solutions, Inc. 2005

18

Loose Coupling Pattern – PIM

• PIM Features tight coupling– Using explicitly defined types– Focus on ability to trace through the model– Review impact of changing requirements

«interface»IAddress

e

GetAddress( in addressSummary : ..AddressIdentifier, out addressDetail : ..AddressDetail )GetPostCode( in addressDetail : ..AddressDetail, out addressSummary : ..AddressIdentifier )

«business»AddressDetail

e

Street : string

Area : string

City : string

Country : string

AddressIdentifier : ..AddressIdentifier

«business»AddressIdentifier

e

PropertyNumber : unsigned int

PropertyLetter : string

PropertyName : string

FlatNumber : unsigned int

PostCode : ..PostCode

«business»PostCode

e

AreaCode : string

SubAreaIndex : string

WalkPrefix : unsigned int

WalkCode : string

SOA and MDA

© Select Business Solutions, Inc. 2005

19

Loose Coupling Pattern – PSM«interface»IAddress

e

GetAddress( in addressSummary : string, out addressDetail : string )GetPostCode( in addressDetail : string, out addressSummary : string )

<?xml version="1.0" encoding="utf-8" ?> <xs:schema targetNamespace="http://selectbs.com/Addressee.xsd"

elementFormDefault="qualified“ xmlns="http://selectbs.com/Addresee.xsd"xmlns:xs="http://www.w3.org/2001/XMLSchema" ><xs:element name="addressDetail">

<xs:complexType><xs:sequence>

<xs:element ref="addressIdentifier" minOccurs="0" maxOccurs="1"/></xs:sequence><xs:attribute name="street" type="xs:string" use="required"/><xs:attribute name="area" type="xs:string" use="optional"/><xs:attribute name="city" type="xs:string" use="required"/><xs:attribute name="country" type="xs:string" use="required"/>

</xs:complexType></xs:element>...

</xs:schema>

• PSM Features loose coupling– Use of XML Schema (perhaps SOAP…)– Runtime enforced typing

«schema»AddressDetail

e

Street : string

Area : string

City : string

Country : string

AddressIdentifier : AddressIdentifier

0..1

1

0..1

1

PostCode

AreaCode : string

SubAreaIndex : string

WalkPrefix : unsigned int

WalkCode : string

e«schema»

«schema»AddressIdentifier

e

PropertyNumber : unsigned int

PropertyLetter : string

PropertyName : string

FlatNumber : unsigned int

PostCode : PostCode

SOA and MDA

© Select Business Solutions, Inc. 2005

20

Conclusions

• SOA and MDA– Different focus of attention– Model Stereotype (role) for SOA– Abstraction level for MDA

• Combining the two approaches– Maintains separation of concerns for SOA– Maintains unbroken traceability for MDA– Opportunity to take advantage of both sets of benefits

• Extended transformations to support – SOA and MDA– Patterns focused on stereotype and abstraction

SOA and MDA

© Select Business Solutions, Inc. 2005

21

…For Listening.

For more information about MDA, Select Solution for MDA and the industry leading service-oriented development process Select Perspective why not visit Select Business Solutions at booth 7? Alternatively visit our website:

www.selectbs.com

You can also contact the presenter:Email: [email protected]: dbpiperMobile: +44 7965 552231

Thank you…