How do you put old or almost dead systems in a state where you can handle and further develop them another 10 years? This seminar is discussing the need for modernisation in a digital age and 6 project experiences, both good and bad.
3. Joakim Svensson, Cap
Who am I?
Jobbat inom Capgemini sedan 1985, IT-lösningar sedan
jag var 13 år
Middleware, integration, arkitektur, mobilitet, IoT,
Open Source, DevOps
Arkitekt sedan 20 år
Certified Chief Architect
CTO för Capgemini Sverige under 7 år
Global expert modernisering av legacy
5. We’ll se more change the next 5 years
than the previous 100 in the auto
industry.
Ian Robertson,
Chairman of Rolls Royce
Chief of Sales and Marketing, BMW
15. IT Legacy is #1 obstacle for innovation
Major corporations depend on core systems that
- Are 15-20 years old
- 3-4 persons know
- Some staff is retired, some will be it within 4-5 years
- Technology support is slow
- Are somewhat documented
- Have few formal test cases, but the staff know how to
test
Application
Landscape
Report 2016
16. IT Legacy is #1 obstacle for innovation
Major corporations depend on core systems that
- Are 25-45 years old
- 1-2 persons know
- All key staff is retired, or will be it within 2-3 years
- Technology support is gone
- Are undocumented
- Have no/few formal test cases
Application
Landscape
Report 2016
22. 150 personer, 2 år
Extrem påverkan
Code-freeze – right!
Krav? Finns i sjön...
Arkitektur – bara systemdesign
Bara delta-dokumentation
5-10 gånger längre tid!
25. Global retailer
Bra system!
Sista kunden kvar på operativsystemet
Kompilatorer, etc. - många, många releaser back
Hierarkisk databas – grymt snabb
Utmaning:
Förklara långsiktig effekt av teknisk skuld
26. Big Bang genom
regelmotor-driven totalmigrering
40 man-års förberedelse – 1 dags migrering
Code freeze – 1 vecka (eller dag)
Utbilda, uppdatera personal
Test, test, test!
31. Lösning: Byt arkitektur, behåll koden
Business Rules Identification/Extract
Flow Identification
Model generation
Code generation
BRE - Business Rules Extraction
MDA - Model Driven Architecture
32. Build Phase
Design
Creation of skeletal structure for
target architecture
Fitting mined code in to target
architecture
Baseline Creation
Creation of
Testing
Baseline
Existing
Application
Documentation
Migration Stream
Use case
model
formulation
Reusable
code Mining
Generate
UML Model
Create target
solution
structures
Static
Code Analysis
Dynamic
application
analysis
Design Develop
System
Testing
Re-Engineering Stream
Regression &
Performance
Testing
Functionally
1:1 Migrated
Application
System-migrering
33. Project overview
Separation of migration and new requirements
Accelerated application rewrite using tool based reverse engineering
Incremental delivery with intermediate UATs
Using agile methodologies
Offshore ration ~80%
Prepare phase: September -November 2015
Build Phase: December 2015 – Feb 2017
46 FTE at peak
Forward engineering
38. UI migrering
1 2
3
4
Group boxes, usually
inside sections.
Typically transferred in
order below. If no other
order or structure is
specified.
39. Utmaningar
Kompetens – MDA, kodgenerering
Test – så klart
Arkitektur – design
Patterns – exampel - ner på detaljnivå
40. Utmaningar
”Systemet skall fungera som innan.”
”Men hur vet vi vad systemet gör?”
”Det vet vi inte.”
”Vilka regler används i vilka länder?”
”Vet inte”
41. Utmaningar
Hur vet vi då när vi är färdiga?
Skapa omfattande dokumentation
Regel
Regel vs. Marknad
Regel vs. Flöde
43. Beslutad nedläggning, men det gick inte
Ersättningssystem minst 5 år sena
Dubblad förändringsvolym
50% Personal: 50 75
50% ”Allt annat”
44. Initial analys
Vad är egentligen problemet?
Organisation, WoW Agile
Dokumentation
Personal, kompetens, onboarding
Verktyg, automation
Källkod
Arkitektur
Short – mid – long term
45. 1. Introduktion av ny personal
tog uppemot ett år
Ingen (bra) dokumentation
Monolitisk design
Mycket gammal, nästan-död kod
Knöliga rutiner
46. 1. Introduktion av ny personal
Dokumentation - Wiki
Städa, simplifiera
Refaktorera
Playground
47. 1. Introduktion av ny personal
Feature branching & kvalitetssäkring
Senior/junior + onshore/offshore
Coaching, Q-gate
Design, kvalité, standarder
49. 2. Kodkvalité
CAST, SonarQube, ReSharper
Baseline
Bra kvalité enligt verktygen
Men...
Vad är skillnaden mellan CreateOrder,
CreateOrder2, CreateOrder3, CreateOrder4 och
CreateOrder5?
50. 3. Organisation & arbetssätt
Agila team + testteam
Onshore/Offshore
Tunga Kommunikationsvägar, verktyg
Agil model ≈ vattenfall...
51. 3. Organisation & arbetssätt
X-funk team
Översyn verktyg
Mail Bitbucket Server, Slack/Mattermost
Införa agila practises SAFe
Men beställaren måste också med!
55. 5. Arkitektur
Stegvis refaktorering
Nya områden byggs direkt som
microservices
Refaktorering svårt sluta flytta kod
Nyskrivning som microservices
Allt för mycket ”skräp” kommer med
65. Configuration Management
Source, target and migration CM are similar but not the same
CMCoordination&StakeholderManagement
Source CM
Migration CM
Target Env CM
Secure Transfer
Secure Transfer
Updated Migration Scripts
Source CM
Migration CM
Target CM
66. Riskbaserad test
A Realistic Risk-Based test strategy is key
Comments
Manual testing helps build
confidence in migration but
has small coverage
Record/replay UX + Integration
testing can be cost effective
but is also brittle
Automatic code testing can be
hard to achieve in legacy
system
New automated tests are
needed to provide full
coverage
SU UX
testing
Record/
replay UX
testing
New UX
tests
Record / replay
Interface testing
New interface
tests
Automatic
Code Testing
Manual Inspections
New Code
Testing
Data Combination Test (DCoT)
Elementary Comparison Test (ECT)
Process Cycle Test (PCT)
Real-Life Test (RLT)
Semantic Test (SEM)
Syntactic Test (SYN)
Error Guessing (EG)
Exploratory Testing (ET)
Data Cycle Test (DCyT)
Use Case Test (UCT)
Decision table Test (DTT)
67. 6
Byt (nästan) allt i små steg
eller
Hur byter man motor på
hundratals plan – i luften?
68. Hårdvara, operativsystem – end of life
Vax, OpenVMS Linux
Ingen Big Bang OpenVMS + Linux
Pascal, gammal databas
30 års optimering
Byta plattform, databas,
programmeringsspråk
70. Business
Logic
100% Automation Fully
manual
Semi-Automatic
Pascal
C++
DCL
Python
OpenVMS
Routines
Common
routines
(POSIX/
LSB)
Frameworks &
Integrations
New solutions
E.g.
Xrouter
Replaced
Xrouter
Functionality
CDD
.h
.hpp
RDO SQLMOD
Pro*C
(11.g)
SQLMOD
(RDB)
SQL Access Layer
Reports
Cognos
&
Qlikview
Binary
compatibility
between Pascal
and C++
programs
throughout the
migration
Some
OpenVMS calls
need attention
RDB to 11.gDatabase RDB to Oracle
Platform Open VMS to Linux
DECforms to HTML5 web interface
HTML to HTML5 web interface
User
Experience
72. 1 Automatic translation with
rules engine
Rules Engine
Translation
Defect Handling
4 Defects cause by error in/missing rule
4 Quality issue identified
Identified Deviation
Changed
Source
Code
OpenVMS
Production sources
New or changed rule 5
Test & Verification
SW Quality
3
Migrated
Source
Code
2
Linux
Compile and deploy
Ready for
Migration?
7
Next iteration
6
Create Test
Baseline
Update Testware according to changed Rules Engine
Process for maturing Rules Engine
74. Test - sekvensering
Functional area
testing scope
Migration &
testing scope
Interdependencies across no clear lines
a
T1 T3
M1
T2
b c
d e
M2
f
g
T4
Dependency
Analyser
SMEs
Functional testing
related to scope
Regression testing across system
77. Summering
Det går att revitalisera/modernisera
Var medveten om vad du får och inte får
Mycket mer än t.ex. byta programmeringsspråk
Kan användas som hävstång – men var
försiktig - ”Passa på” på rätt områden
Var ödmjuk – de flesta organisationer gör bara
detta en gång
Σ”bara” ≠ ”bara”
79. Image sources, marked as OK to use commercially
https://upload.wikimedia.org/wikipedia/commons/8/8b/Buck_Mountain_Grand_Teton_NP1.jpg
https://upload.wikimedia.org/wikipedia/commons/d/de/Eisklettern_kl_engstligenfall.jpg
https://c1.staticflickr.com/1/1/1118807_a751d65ba5_z.jpg?zz=1
https://upload.wikimedia.org/wikipedia/commons/4/4f/Eternal_clock.jpg
https://c1.staticflickr.com/9/8062/8189938256_2a683d2334_z.jpg
https://upload.wikimedia.org/wikipedia/commons/8/85/Git_branches_example.png
https://upload.wikimedia.org/wikipedia/commons/9/99/Highway_at_night_slow_shutter_speed_ph
otography_02.jpg
https://c2.staticflickr.com/6/5058/5490790304_dc3d7c2b91_z.jpg
http://www.dailymail.co.uk/tvshowbiz/article-1176568/Andrew-Sachs-thanks-Jonathan-Ross-
Russell-Brand-boosting-career.html
https://upload.wikimedia.org/wikipedia/commons/8/8b/CERN_Server.jpg
http://www.manufacturing-operations-management.com/manufacturing/2014/10/smart-
manufacturing-needs-a-real-time-integrated-enterprise.html
http://www.3ders.org/images/Dizingof-math-arts-3d-printing-2.png
https://upload.wikimedia.org/wikipedia/commons/8/8a/Long_tail.svg
80. Image sources, marked as OK to use commercially
https://upload.wikimedia.org/wikipedia/commons/6/61/Irish_jaunting_car,_ca_1890-1900.jpg
https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Lego_dimensions.svg/2000px-
Lego_dimensions.svg.png
https://upload.wikimedia.org/wikipedia/commons/1/1f/Feel_the_music.jpg
https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/BestBeforeDate.png/640px-
BestBeforeDate.png
https://images-na.ssl-images-amazon.com/images/I/51dTFVDHRbL.jpg
Notes de l'éditeur
Uber, Airbnb
Uber, Airbnb
API First
IT4IT
Eller – slicing an elephant – but how do you reassemble it?!?
Code coverage what test cases/configurations are missing?