Revitalisering av legacy - är det möjligt - Joakim Lindbom

Preview:

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

Joakim.Lindbom@capgemini.com

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

Recommended