soa and mda hand-in-glove or square-peg, round-hole?
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 PresentationTRANSCRIPT
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…