Montages Partner Meeting - Zurich – Nov 4-5, 2006 Modernize Legacy IT System with SOA and MDA Chung Yeung Pang [email protected]
Dec 01, 2014
Montages Partner Meeting - Zurich – Nov 4-5, 2006
Modernize Legacy IT Systemwith SOA and MDA
Chung Yeung [email protected]
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 2
Relation to MAMA
MAMA Service Methodology
MA
MA
Ser
vice
Met
hodo
logy
MA
MA
Service M
ethodology
MAMA Service Methodology
Model DrivenConsulting
Model DrivenAnalysis
Model DrivenEngineering
TransitionConsulting
RequirementsConsulting
ChangeConsulting
Fast Prototyping
ModellingArchitecture
QualityAnalysis
ProcessAnalysis
BusinessAnalysis
FrameworkEngineering
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 3
Situation in Software Development
• Mainframes are still alive and survive y2k.
• Unmanageable & undocumented code.
• Modeling gains its importance through the use of MDA and SOA best practice.
• Shortage of good IT expert for mainframe.
• Most mission critical applications have been written in COBOL.– The dependency on the interfaces, performance,
transaction scopes prohibits the change and mixing of other programming languages.
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 4
Facts
• IBM reported the usage of zSeries mainframes grew 28% year-to-year in 2005.
• Forrester Research publishes findings:– Insurance companies stay with mainframe– “A global bank shed one mainframe for another to
consolidate” (September 2006, Phil Murphy in Forrester Best Practices)
• The COBOL Center publishes:– Investment in COBOL is over $1.5 Trillion.– Number of transaction in COBOL > hits on the
Internet.
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 5
What Do We Have?
• Over 6 years of experience in mega project with budget over 1.0 billion Euro in a Swiss bank.
• Success stories from 6 IT projects from the Strategic Solution.– Treasury Products, Credit, Payments, and Securities.
– Project size: 10-30 team members.
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 6
What Did We Experience?
• Turned failure projects to success.– From
• Undocumented systems• Ad-hoc software development style• Low productivity• Error prone• Inflexible for code adaptation to standards• Low/no reusability• Require experienced programmers for the development
– To• Documented systems with modeling• Architect & Analyst driven development• High productivity• Minimum error• Flexible code adaptation to standards• High reusability• Automation through the use of models and effectively reduce the
number of experienced programmers for the development
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 7
What Do We Offer?
• Modernization of COBOL development.
• Integration to modern systems via SOA framework.
• Establishment of software factories.
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 8
Modern? How?
• UML Modeling
• Code generation
• Maximize reuse
• Unified Process best practices
ServiceMediator
Initialization
«Paragraph»
Read-Input-File
«Paragraph»
Parse-Input
«Paragraph»
Map-SOAService-Record
«Paragraph»
Process-Service
«Code Segment»
Write-Output-File
«Paragraph»
Set-SOA-Tree
«Paragraph»
Render-Output
«Paragraph»
Initialization
«Paragraph»
Read-Input-File
«Paragraph»
Parse-Input
«Paragraph»
Map-SOAService-Record
«Paragraph»
Process-Service
«Code Segment»
Write-Output-File
«Paragraph»
Set-SOA-Tree
«Paragraph»
Render-Output
«Paragraph»
Pattern
Add-Struct-To-Context
«Code Pattern»
Do-Process-Flow
«Code Pattern»
Render-Context-Tree
«Code Pattern»
Write-File
«Code Pattern»
Add-Logical-Ref
«Code Pattern»
Parse-XML
«Code Pattern»
Read-File
«Code Pattern»
Add-Struct-To-Context
«Code Pattern»
Do-Process-Flow
«Code Pattern»
Render-Context-Tree
«Code Pattern»
Write-File
«Code Pattern»
Add-Logical-Ref
«Code Pattern»
Parse-XML
«Code Pattern»
Read-File
«Code Pattern»
FD=F-XML-InpFD-Buf=V-InpData-Buf=W-XML
Tree=SOA-TreeXML-String-Ref=ADDRESS OF W-XMLXML-String-Len=W-Len ...
Record-Struct=SOAServiceModule-Name='DEMOM000'Context-Name='SOAService'Tree=SOA-Tree
Process-Flow=Module-Name
Context-Name='Output'
FD=F-XML-OutFD-Buf=V-OutData-Buf=W-XMLData-Len=SOA-Len
Logical-Name='Input-Tree'Record-Ref=SOA-Tree
«Section»
Resolve-Process-Flow
*+---+---+---+---+---+---+----------+----------------------------* LINKAGE SECTION. *+---+---+---+---+---+---+----------+----------------------------* 01 PC-Data. COPY FWPC0000. *----------------------------------------------------------------* PROCEDURE DIVISION USING PC-Data . *+---+---+---+---+---+---+----------+----------------------------* * Mainprocessing * MAIN SECTION. PERFORM Initialization PERFORM Read-Input-File PERFORM Resolve-Process-Flow PERFORM Set-SOA-Tree MOVE Module-Name TO SOA-Module-Name CALL SOA-Module-Name USING PC-Data PERFORM Render-Output PERFORM Write-Output-File .
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 9
Model and Generate Cobol Modules based on Class and Activity Diagrams
• Section• Paragraph• Programming logics
– Statement– Decision– Iteration
• Code templates & patterns
• Data structure definition
ActionChain
Map-Input
«Paragraph»
Display-Input
«Code Segment»
EVALUATE Type
Set-Company
«Code Segment»
Set-Private
«Code Segment»
Err
«Code Segment»
Init
«Paragraph»
Joint
Get-Input-Tree
«Paragraph»
Map-Input
«Paragraph»
Display-Input
«Code Segment»
EVALUATE Type
Set-Company
«Code Segment»
Set-Private
«Code Segment»
Err
«Code Segment»
Init
«Paragraph»
Joint
Get-Input-Tree
«Paragraph»
Pattern
Add-Struct-To-Context
«Code Pattern»
Print-Tree
«Code Pattern»
Init-Action-Chain
«Code Pattern»
Set-Event
«Code Pattern»
Get-Logical-Ref
«Code Pattern»
Add-Struct-To-Context
«Code Pattern»
Print-Tree
«Code Pattern»
Init-Action-Chain
«Code Pattern»
Set-Event
«Code Pattern»
Get-Logical-Ref
«Code Pattern»
Record-Struct=Input-DataModule-Name='DEMOM001'Context-Name='Input'Tree=SOA-Tree
Tree=SOA-Tree
['Company']
['Private']
[OTHER]
event='Customer is Company'
event='Customer is Private'
Logical-Name='Input-Tree'Record-Ref=SOA-Tree
Working Storage
«SOAF Start Class»Demo::Data Structure List::SOA Service XML::SOAService
«SOAF Start Class»ServiceMediator-Var
W-XML : an5000
«SOAF Start Class»Demo::Data Structure List::SOA Service XML::SOAService
«SOAF Start Class»ServiceMediator-Var
W-XML : an5000
Linkage
Local Storage File
«SOAF Start Class»«SOAF File»
{File Handle Name = F-Xml-Input}{File Name = Input.xml}
{File Organization = LINE SEQUENTIAL}V-Input
F-In-Xml : an5000
«SOAF Start Class»«SOAF File»
{File Handle Name = F-Xml-Output}{File Name = Output.xml}
{File Organization = LINE SEQUENTIAL}V-Output
F-Out-Xml : an5000
«SOAF Start Class»«SOAF File»
{File Handle Name = F-Xml-Input}{File Name = Input.xml}
{File Organization = LINE SEQUENTIAL}V-Input
F-In-Xml : an5000
«SOAF Start Class»«SOAF File»
{File Handle Name = F-Xml-Output}{File Name = Output.xml}
{File Organization = LINE SEQUENTIAL}V-Output
F-Out-Xml : an5000
Parameter
«SOAF Start Class»Param-List
Parameter-1 : Personal Title
«SOAF Start Class»Param-List
Parameter-1 : Personal Title
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 10
Software Architecture
• Software system is not built from a set of independent program modules.
• It needs an architecture to lay out the fundamental organization of the system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 11
Traditional Modular Architecture
• Strong coupling of modules with no central control of business logic.
• Difficult to test individual modules.
• Does not allow plug and play of modules.
• Difficult to enhance and maintain.
A
B C
D E F G H
Service Interface
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 12
Example of Enterprise IT System Topology
Mainframe Data
Message Queue
Client Servers
External Systems
Web Server
Workstations
Mainframe
ExternalSystems
Web Servers
ApplicationServers
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 13
Component Based Service Oriented Architecture
Service Mediator
Sec
urity
Con
trol
ler
Context Container
Service Controller
Business Component 1
Business Component 2
Business Component 3
Service Interfaces in XML
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 14
XML-Cobol Transformation
• COBOL XML parser– Parse the incoming XML message in COBOL.
• XML to COBOL mapping– Map the XML data into COBOL data structure based on meta-
information (mapping schema).• COBOL to XML rendering
– Render the XML data from COBOL data structure based on meta-information (mapping schema).
• Meta-information (mapping schema) generator– Generate meta-information from UML class diagrams.
• COBOL copybook generator– Generate the COBOL copybook from UML class diagram.
• Support XPath for XML navigation.
Service MediatorS
ecu
rity
Con
tro
ller
Context Container
Service Controller
Business Component 1
Business Component 2
Business Component 3
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 15
Service Mediator
• Service mediator COBOL module– Control transaction, retrieve XML message,
set up the context container, resolve and instantiate the requested service and return XML message.
– This module must be tailored to the customer's platform and error handling mechanism.
Service MediatorS
ecu
rity
Con
tro
ller
Context Container
Service Controller
Business Component 1
Business Component 2
Business Component 3
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 16
Service Controller
• Finite state machine COBOL module– Centralized controlling of the process of the
business service based on process description with state, event and transition.
• Process flow– Generation of the process flow description of
the business service from UML activity diagram.
Service MediatorS
ecu
rity
Con
tro
ller
Context Container
Service Controller
Business Component 1
Business Component 2
Business Component 3
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 17
Context Container
• Context tree COBOL structure– Context tree has a data structure of a tree form.– Each node within the tree has a node name.– It can contain a sub-tree, a value, or a complete
COBOL record structure with an associated meta-information.
• Context tree API COBOL modules– A set of COBOL modules is available to create,
remove and edit tree nodes as well as complete navigation (stepwise or using xpath) in a context tree.
Service MediatorS
ecu
rity
Con
tro
ller
Context Container
Service Controller
Business Component 1
Business Component 2
Business Component 3
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 18
Business Component
• COBOL code generator– COBOL modules for business components can be
modeled through class and activity diagrams and COBOL code are generated from these diagrams.
• Templates and patterns– a set of standard templates and patterns are provided
for the COBOL code generator.– These templates and patterns can be tailored and
extended to the specific requirements of the projects.– Standard patterns are provided for the usages of the
framework such as the API for context tree.
Service MediatorS
ecu
rity
Con
tro
ller
Context Container
Service Controller
Business Component 1
Business Component 2
Business Component 3
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 19
Development Lifecycle
Requirement Statement
Use Case Model Sequence Diagram
LogicalActivity Model
Process Flow
Business DomainModel
Data StructureAction Module
Interface Definition
COBOL Code COBOL Code XML/DTD/XSDData Structure
Mapping
Documentation
Implementation
COBOLData Structure
COBOL Code
Workflow Model
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 20
Typical Business Case
time
A customer comes to the Bank
The customer inquiries a
product
The client advisor calculate the product price
The customer takes a look at the product specification
& price
The customer sign the deal to purchase the
product
No buy
1 2 3 4 5
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 21
Interface Definition
• Class diagram with– Service definition
– Input parameters
– Output parameters «SOAF Start Class»SOAService
«SOAF Class»Process_Flow
«SOAF Attribute» Name : Process Flow Name
«SOAF Attribute» Module_Name : Module Name
«SOAF Start Class»Input
«SOAF Class»Customer
«SOAF Attribute» Customer Id : Customer Id
«SOAF Attribute» Type : Customer Type
Output
«SOAF Class»Customer
«SOAF Attribute» Customer Id : Customer Id
«SOAF Attribute» Type : Customer Type
«SOAF Start Class»Corporate
«SOAF Attribute» Company Name : Name
«SOAF Start Class»Private
«SOAF Start Class»Process_Result
Process_Result_Info : Process_Result_Info
1
1
1
1
1
1
*
1
1
1
1
1
XML/DTD/XSD
Data StructureMapping
COBOLData Structure (Copy book)
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 22
Data Structure
• Standard UML class diagram with stereotype
• Structure and composition
«SOAF Class»Customer
«SOAF Attribute» Customer Id : Customer Id
«SOAF Attribute» Type : Customer Type
«SOAF Class»Address
«SOAF Attribute» Address : Address
«SOAF Attribute» City : City
«SOAF Attribute» Country : Country
«SOAF Start Class»Private
«SOAF Start Class»Corporate
«SOAF Attribute» Company Name : Name
«SOAF Class»Personal_Data
«SOAF Attribute» Title : Personal Title
«SOAF Attribute» First Name : Name
«SOAF Attribute» Last Name : Name
11
1
1
1
1
Contact Person
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 23
Simple Process
CalculateDiscount
Get Price
ValidateDeal Input
• All or none
• Single commit
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 24
Process Over Time
Get CustomerProfile
Initialize Deal
Validate Deal
Open Deal
CalculateDiscount
Get Price
ValidateDeal Input
time
• May continue from last consistent point
• Multi commits
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 25
Process Flow
• Based on Activity Diagram
• It describes:– Process
– Event/Action
• Compositional plug and play of modules
Process
Resolve Input
«Action Module»
Module NameDEMOPF01
Process Corporate Customer Data
«Action Module»
Module NameDEMOPF02
Process Private Customer Data
«Action Module»
Module NameDEMOPF03
Generate Output
«Action Module»
Module NameDEMOPF04
Resolve Input
«Action Module»
Module NameDEMOPF01
Process Corporate Customer Data
«Action Module»
Module NameDEMOPF02
Process Private Customer Data
«Action Module»
Module NameDEMOPF03
Generate Output
«Action Module»
Module NameDEMOPF04
Init
Customer is Company Customer is Private
Is OK Is OK
Is OK
COBOL Code
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 26
Business Workflow
• Service orchestration
• Modelling of Workflow using State Diagram
COBOL Code
Deal_Initialization
Deal_In_Process Deal_Cancellation
Deal_Established
Initial
new_deal/ init_deal
process_deal/enter_dealcancel_deal/cancel_init
cancel_deal/cancel_deal
es tablish_deal/accept_deal
m odify_deal/edit_deal
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 27
Benefits
• Best practices.• Well documented system.• Plug & play SOA.• Simplify testing and integration.• Maximize reuse.• Scalable development.• Reduce development &
maintenance cost.• Traceable from requirement to the
code.
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 28
Demo
• Model Definition
• Code Generation
Copyright © 2006 – Chung Yeung Pang. All Rights Reserved Worldwide Slide 29
Links
• http://www.infogoal.com/cbd/
• http://www.forrester.com