Upload
joakim-lindbom
View
50
Download
1
Embed Size (px)
Citation preview
1Copyright © Capgemini 2016 – Internal use only. All Rights
Reserved
Presentation Title | Date
Revitalisering av föråldrade system– är det möjligt?
NFi Systemförvaltning 2016Stockholm 2016-12-07
Joakim LindbomCTO, Certified Chief Architect
Be innovative!
Joakim Svensson, Cap Gemini, Division South - - Page 3
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 årCertified Chief Architect
CTO för Capgemini Sverige under 7 år
Global expert modernisering av legacy
ModerniseringRevitalisering
Möjligt?Önskvärt?
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
Mobile first…API
och glöm inte
På väg mot #ZeroDayForever
Men ändå...
20 årInvestering
Optimering & polering
Men ändå...
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 LandscapeReport 2016
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 LandscapeReport 2016
Techdebt
Erfarenheter
6 projekt / 11 år
1Den stora
omskrivningen
eller
Hur halverar man transaktionskostnaden?
Bankgirot2 olika stordatorer
Ta bort en stordator, skriv om front-end i .NET
Skriv om produkt för produkt
150 personer, 2 årExtrem påverkan
Code-freeze – right!
Krav? Finns i sjön...Arkitektur – bara systemdesign
Bara delta-dokumentation5-10 gånger längre tid!
Förändringar överallt
Test – process, miljö, data2.11 1.6
Städa – även produkter
2En-dags migreringen
eller
“Uppskjut inte till morgondagen…”
Global retailerBra system!
Sista kunden kvar på operativsystemetKompilatorer, etc. - många, många releaser back
Hierarkisk databas – grymt snabb
Utmaning:Förklara långsiktig effekt av teknisk skuld
Big Bang genomregelmotor-driven totalmigrering
40 man-års förberedelse – 1 dags migreringCode freeze – 1 vecka (eller dag)
Utbilda, uppdatera personal
Test, test, test!
Databas-emulatorDL1 över DB2
Komplexitetsanalys
Test
Total regressionstest – 45 gångerStor automationsgrad
Öva cut-over fullskaligt 3 gånger
3Rädda en misslyckad
migrering
eller
Hur byter man skelett?
Bra system!
Automatmigrerat SQL Windows C#
Right, det var ju smart....Emulering
Som innan, fast sämre
Lösning: Byt arkitektur, behåll koden
Business Rules Identification/ExtractFlow IdentificationModel generationCode generation
BRE - Business Rules ExtractionMDA - Model Driven Architecture
Build Phase
Design Creation of skeletal structure for
target architecture Fitting mined code in to target
architecture
Baseline CreationCreation 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 SystemTesting
Re-Engineering Stream
Regression &Performance
Testing
Functionally 1:1 Migrated Application
System-migrering
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
Byt arkitektur
BL
DAL
PL
frmX
AS-IS model
TO-BE model
frmX1:1
BL
DA X
DAX
SP SP
SP View
Code behind, from frmXConsolidate db calls(Prepare + Check/Do)
Angular/TSMVC
GetCustomerInfo()
C#
C#
frmY
DAY
SP SP
View
SP SP
SP View
DB
Static code analysis
Dynamic execution analysis
Business rule linked to code
UI migrering
1 2
3
4
Group boxes, usually inside sections.
Typically transferred in order below. If no other order or structure is specified.
Utmaningar
Kompetens – MDA, kodgenerering
Test – så klart
Arkitektur – designPatterns – exampel - ner på detaljnivå
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”
Utmaningar
Hur vet vi då när vi är färdiga?
Skapa omfattande dokumentationRegel
Regel vs. MarknadRegel vs. Flöde
4Revitalisera död produkt
Beslutad nedläggning, men det gick inte
Ersättningssystem minst 5 år sena
Dubblad förändringsvolym50% Personal: 50 75
50% ”Allt annat”
Initial analysVad är egentligen problemet?
Organisation, WoW AgileDokumentation
Personal, kompetens, onboardingVerktyg, automation
KällkodArkitektur
Short – mid – long term
1. Introduktion av ny personaltog uppemot ett år
Ingen (bra) dokumentationMonolitisk design
Mycket gammal, nästan-död kodKnöliga rutiner
1. Introduktion av ny personal
Dokumentation - WikiStäda, simplifiera
RefaktoreraPlayground
1. Introduktion av ny personal
Feature branching & kvalitetssäkring
Senior/junior + onshore/offshore
Coaching, Q-gateDesign, kvalité, standarder
2. Kodkvalité
Oklar kvalitéSpretiga lösningar, överlappande mönster
3 olika dependency injection-mönster
2. Kodkvalité
CAST, SonarQube, ReSharperBaseline
Bra kvalité enligt verktygenMen...
Vad är skillnaden mellan CreateOrder, CreateOrder2, CreateOrder3, CreateOrder4 och
CreateOrder5?
3. Organisation & arbetssätt
Agila team + testteamOnshore/Offshore
Tunga Kommunikationsvägar, verktygAgil model ≈ vattenfall...
3. Organisation & arbetssätt
X-funk team
Översyn verktygMail Bitbucket Server, Slack/Mattermost
Införa agila practises SAFeMen beställaren måste också med!
4. Beroenden
Gammal plattform3:e parts & open source-verktyg
5. Arkitektur
SOA - men i praktiken monolitisk
MEGAservice vs. microservice
Ett av grunderna för problem med skalning
5. Arkitektur
Stegvis refaktorering
Städa, flytta uppenbart felplacerad kodBeroendeanalys
Gap-analys mot framtida capabilitiesSkapa API-ytor
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
5. Arkitektur
Skapa erfarenhet i teamen
Från åratal av ”steady-state” till omfattande förändringar
6. DevOps
Inför DevOps practisesDeployment Continous Deploy
Auto test
5Hoppa 50 år
eller
“Uppskjut verkligen inte till morgondagen…”
MyndighetBra system!!!
Världens första 4GL – från 60-taletPlattformen död sedan 15-20 år
Ingen utveckling, utbildning, rekrytering
Automatisk översättningSpråk, databas
Men arkitekturen är ju samma - emulering
Code freeze? – Law freeze!Regeringsförhandling
3 parallella förstudier
Misstag 1
Kräv referens på någon som gjort exakt samma= En möjlig leverantör
1:1-migrering – läsbarhet = klart tveksam
Språk?C#
Misstag 2Fastpris
Omfattning Tid
Kvalité
Ni kan bara få två – vad väljer ni bort?
Configuration Management
Source, target and migration CM are similar but not the same
CM C
oord
inati
on &
Sta
keho
lder
Man
agem
ent
Source CM
Migration CM
Target Env CM
Secure Transfer
Secure Transfer
Updated Migration Scripts
Source CM
Migration CM
Target CM
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
1. Data Combination Test (DCoT)2. Elementary Comparison Test (ECT)3. Process Cycle Test (PCT)4. Real-Life Test (RLT)5. Semantic Test (SEM)6. Syntactic Test (SYN)7. Error Guessing (EG)8. Exploratory Testing (ET)9. Data Cycle Test (DCyT)10. Use Case Test (UCT)11. Decision table Test (DTT)
6Byt (nästan) allt i små steg
eller
Hur byter man motor på hundratals plan – i luften?
Hårdvara, operativsystem – end of lifeVax, OpenVMS Linux
Ingen Big Bang OpenVMS + LinuxPascal, gammal databas
30 års optimering
Byta plattform, databas, programmeringsspråk
Städa, städa50-60% bort!
Del av störe programMassiv BD parallellt
Business Logic
100% Automation Fullymanual
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 interfaceHTML to HTML5 web interface
User Experience
Auto-migrering!
Regelmotor!
”Morphing, concept based translation”inte
rad för rad
1 Automatic translation with rules engine
Rules Engine
Translation
Defect Handling 4 Defects cause by error in/missing rule
4 Quality issue identifiedIdentified Deviation
ChangedSource Code
OpenVMS
Production sources
New or changed rule 5
Test & Verification
SW Quality
3
MigratedSource 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
Läsbar kod?
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
Test & verifiering
Största förändringen någonsin
Ändra allt – testa alltUtan dokumentation
Utan testfallUtan automation
Utan miljöer/test-data management
Summering
Det går att revitalisera/moderniseraVar medveten om vad du får och inte fårMycket mer än t.ex. byta programmeringsspråkKan användas som hävstång – men var försiktig - ”Passa på” på rätt områdenVar ödmjuk – de flesta organisationer gör bara detta en gångΣ”bara” ≠ ”bara”
Contact
JoakimLindbomCTO | Certified Chief Architect
08-5368 39340708-166404
twitter: JoakimLindbom
http://www.slideshare.net/JoakimLindbomhttp://www.linkedin.com/in/joakimlindbom
VLOG Architecture Corner:https://www.youtube.com/playlist?list=PLrb_rbUWzApENbqc085Vk7Qj-amEOmvDN
Image sources, marked as OK to use commercially
https://upload.wikimedia.org/wikipedia/commons/8/8b/Buck_Mountain_Grand_Teton_NP1.jpghttps://upload.wikimedia.org/wikipedia/commons/d/de/Eisklettern_kl_engstligenfall.jpghttps://c1.staticflickr.com/1/1/1118807_a751d65ba5_z.jpg?zz=1https://upload.wikimedia.org/wikipedia/commons/4/4f/Eternal_clock.jpghttps://c1.staticflickr.com/9/8062/8189938256_2a683d2334_z.jpghttps://upload.wikimedia.org/wikipedia/commons/8/85/Git_branches_example.pnghttps://upload.wikimedia.org/wikipedia/commons/9/99/Highway_at_night_slow_shutter_speed_photography_02.jpghttps://c2.staticflickr.com/6/5058/5490790304_dc3d7c2b91_z.jpghttp://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
Image sources, marked as OK to use commercially
https://upload.wikimedia.org/wikipedia/commons/6/61/Irish_jaunting_car,_ca_1890-1900.jpghttps://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