Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
1
Copyright © Capgemini 2016 – Internal use only. All Rights
Reserved
Presentation Title | Date
Revitalisering av föråldra...
Be innovative!
Joakim Svensson, Cap
Who am I?
Jobbat inom Capgemini sedan 1985, IT-lösningar sedan
jag var 13 år
Middleware, integration,...
Modernisering
Revitalisering
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
C...
Mobile first…
API
och glöm inte
På väg mot #ZeroDayForever
Men ändå...
20 år
Investering
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...
IT Legacy is #1 obstacle for innovation
Major corporations depend on core systems that
- Are 25-45 years old
- 1-2 persons...
Techdebt
Erfarenheter
6 projekt / 11 år
1
Den stora
omskrivningen
eller
Hur halverar man
transaktionskostnaden?
Bankgirot
2 olika stordatorer
Ta bort en stordator,
skriv om front-end i .NET
Skriv om produkt för produkt
150 personer, 2 år
Extrem påverkan
Code-freeze – right!
Krav? Finns i sjön...
Arkitektur – bara systemdesign
Bara delta-do...
Förändringar överallt
Test – process, miljö, data
2.11  1.6
Städa – även produkter
2
En-dags migreringen
eller
“Uppskjut inte till
morgondagen…”
Global retailer
Bra system!
Sista kunden kvar på operativsystemet
Kompilatorer, etc. - många, många releaser back
Hierarki...
Big Bang genom
regelmotor-driven totalmigrering
40 man-års förberedelse – 1 dags migrering
Code freeze – 1 vecka (eller da...
Databas-emulator
DL1 över DB2
Komplexitetsanalys
Test
Total regressionstest – 45 gånger
Stor automationsgrad
Öva cut-over fullskaligt 3 gånger
3
Rä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/Extract
Flow Identification
Model generation
Code gene...
Build Phase
Design
 Creation of skeletal structure for
target architecture
 Fitting mined code in to target
architecture...
Project overview
 Separation of migration and new requirements
 Accelerated application rewrite using tool based reverse...
Byt arkitektur
BL
DAL
PL
frmX
AS-IS
model
TO-BE
model
frmX
1:1
BL
DA X
DA
X
SP SP
SP View
Code behind, from frmX
Consolida...
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 stru...
Utmaningar
Kompetens – MDA, kodgenerering
Test – så klart
Arkitektur – design
Patterns – 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...
Utmaningar
Hur vet vi då när vi är färdiga?
Skapa omfattande dokumentation
Regel
Regel vs. Marknad
Regel vs. Flöde
4
Revitalisera död produkt
Beslutad nedläggning, men det gick inte
Ersättningssystem minst 5 år sena
Dubblad förändringsvolym
50% Personal: 50  75
5...
Initial analys
Vad är egentligen problemet?
Organisation, WoW  Agile
Dokumentation
Personal, kompetens, onboarding
Verkty...
1. Introduktion av ny personal
tog uppemot ett år
Ingen (bra) dokumentation
Monolitisk design
Mycket gammal, nästan-död ko...
1. Introduktion av ny personal
Dokumentation - Wiki
Städa, simplifiera
Refaktorera
Playground
1. Introduktion av ny personal
Feature branching & kvalitetssäkring
Senior/junior + onshore/offshore
Coaching, Q-gate
Desi...
2. Kodkvalité
Oklar kvalité
Spretiga lösningar, överlappande mönster
3 olika dependency injection-mönster
2. Kodkvalité
CAST, SonarQube, ReSharper
Baseline
Bra kvalité enligt verktygen
Men...
Vad är skillnaden mellan CreateOrder...
3. Organisation & arbetssätt
Agila team + testteam
Onshore/Offshore
Tunga Kommunikationsvägar, verktyg
Agil model ≈ vatten...
3. Organisation & arbetssätt
X-funk team
Översyn verktyg
Mail  Bitbucket Server, Slack/Mattermost
Införa agila practises ...
4. Beroenden
Gammal plattform
3: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 kod
Beroendeanalys
Gap-analys mot framtida capabil...
5. Arkitektur
Stegvis refaktorering
Nya områden byggs direkt som
microservices
Refaktorering svårt  sluta flytta kod
Nysk...
5. Arkitektur
Skapa erfarenhet i teamen
Från åratal av ”steady-state”
till omfattande förändringar
6. DevOps
Inför DevOps practises
Deployment  Continous Deploy
Auto test
5
Hoppa 50 år
eller
“Uppskjut verkligen inte till
morgondagen…”
Myndighet
Bra system!!!
Världens första 4GL – från 60-talet
Plattformen död sedan 15-20 år
Ingen utveckling, utbildning, r...
Automatisk översättning
Språk, databas
Men arkitekturen är ju samma - emulering
Code freeze? – Law freeze!
Regeringsförhan...
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 2
Fastpris
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
CMCoordination&StakeholderManagement...
Riskbaserad test
A Realistic Risk-Based test strategy is key
Comments
 Manual testing helps build
confidence in migration...
6
Byt (nästan) allt i små steg
eller
Hur byter man motor på
hundratals plan – i luften?
Hårdvara, operativsystem – end of life
Vax, OpenVMS  Linux
Ingen Big Bang  OpenVMS + Linux
Pascal, gammal databas
30 års...
Städa, städa
50-60% bort!
Del av störe program
Massiv BD parallellt
Business
Logic
100% Automation Fully
manual
Semi-Automatic
Pascal
C++
DCL
Python
OpenVMS
Routines
Common
routines
(POSIX/
...
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 rul...
Läsbar kod?
Test - sekvensering
Functional area
testing scope
Migration &
testing scope
Interdependencies across no clear lines
a
T1 T...
Test & verifiering
Största förändringen någonsin
Ändra allt – testa allt
Utan dokumentation
Utan testfall
Utan automation
Utan miljöer/test-d...
Summering
Det går att revitalisera/modernisera
Var medveten om vad du får och inte får
Mycket mer än t.ex. byta programmer...
Contact
Joakim
Lindbom
CTO | Certified Chief Architect
Joakim.Lindbom@capgemini.com
08-5368 3934
0708-166404
twitter: Joak...
Image sources, marked as OK to use commercially
https://upload.wikimedia.org/wikipedia/commons/8/8b/Buck_Mountain_Grand_Te...
Image sources, marked as OK to use commercially
https://upload.wikimedia.org/wikipedia/commons/6/61/Irish_jaunting_car,_ca...
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Prochain SlideShare
Chargement dans…5
×

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

151 vues

Publié le

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.

Publié dans : Logiciels
  • I pasted a website that might be helpful to you: ⇒ www.HelpWriting.net ⇐ Good luck!
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Soyez le premier à aimer ceci

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

  1. 1. 1 Copyright © Capgemini 2016 – Internal use only. All Rights Reserved Presentation Title | Date Revitalisering av föråldrade system– är det möjligt? NFi Systemförvaltning 2016 Stockholm 2016-12-07 Joakim Lindbom CTO, Certified Chief Architect
  2. 2. Be innovative!
  3. 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
  4. 4. Modernisering Revitalisering Möjligt? Önskvärt?
  5. 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
  6. 6. Mobile first… API
  7. 7. och glöm inte
  8. 8. På väg mot #ZeroDayForever
  9. 9. Men ändå... 20 år Investering Optimering & polering
  10. 10. Men ändå...
  11. 11. 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
  12. 12. 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
  13. 13. Techdebt
  14. 14. Erfarenheter 6 projekt / 11 år
  15. 15. 1 Den stora omskrivningen eller Hur halverar man transaktionskostnaden?
  16. 16. Bankgirot 2 olika stordatorer Ta bort en stordator, skriv om front-end i .NET Skriv om produkt för produkt
  17. 17. 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!
  18. 18. Förändringar överallt Test – process, miljö, data 2.11  1.6 Städa – även produkter
  19. 19. 2 En-dags migreringen eller “Uppskjut inte till morgondagen…”
  20. 20. 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
  21. 21. 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!
  22. 22. Databas-emulator DL1 över DB2 Komplexitetsanalys
  23. 23. Test Total regressionstest – 45 gånger Stor automationsgrad Öva cut-over fullskaligt 3 gånger
  24. 24. 3 Rädda en misslyckad migrering eller Hur byter man skelett?
  25. 25. Bra system! Automatmigrerat SQL Windows  C# Right, det var ju smart.... Emulering Som innan, fast sämre
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. Byt arkitektur BL DAL PL frmX AS-IS model TO-BE model frmX 1:1 BL DA X DA X SP SP SP View Code behind, from frmX Consolidate db calls (Prepare + Check/Do) Angular/TS MVC GetCustomerInfo() C# C# frmY DA Y SP SP View SP SP SP View DB
  30. 30. Static code analysis
  31. 31. Dynamic execution analysis
  32. 32. Business rule linked to code
  33. 33. UI migrering 1 2 3 4 Group boxes, usually inside sections. Typically transferred in order below. If no other order or structure is specified.
  34. 34. Utmaningar Kompetens – MDA, kodgenerering Test – så klart Arkitektur – design Patterns – exampel - ner på detaljnivå
  35. 35. 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”
  36. 36. Utmaningar Hur vet vi då när vi är färdiga? Skapa omfattande dokumentation Regel Regel vs. Marknad Regel vs. Flöde
  37. 37. 4 Revitalisera död produkt
  38. 38. Beslutad nedläggning, men det gick inte Ersättningssystem minst 5 år sena Dubblad förändringsvolym 50% Personal: 50  75 50% ”Allt annat”
  39. 39. Initial analys Vad är egentligen problemet? Organisation, WoW  Agile Dokumentation Personal, kompetens, onboarding Verktyg, automation Källkod Arkitektur Short – mid – long term
  40. 40. 1. Introduktion av ny personal tog uppemot ett år Ingen (bra) dokumentation Monolitisk design Mycket gammal, nästan-död kod Knöliga rutiner
  41. 41. 1. Introduktion av ny personal Dokumentation - Wiki Städa, simplifiera Refaktorera Playground
  42. 42. 1. Introduktion av ny personal Feature branching & kvalitetssäkring Senior/junior + onshore/offshore Coaching, Q-gate Design, kvalité, standarder
  43. 43. 2. Kodkvalité Oklar kvalité Spretiga lösningar, överlappande mönster 3 olika dependency injection-mönster
  44. 44. 2. Kodkvalité CAST, SonarQube, ReSharper Baseline Bra kvalité enligt verktygen Men... Vad är skillnaden mellan CreateOrder, CreateOrder2, CreateOrder3, CreateOrder4 och CreateOrder5?
  45. 45. 3. Organisation & arbetssätt Agila team + testteam Onshore/Offshore Tunga Kommunikationsvägar, verktyg Agil model ≈ vattenfall...
  46. 46. 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!
  47. 47. 4. Beroenden Gammal plattform 3:e parts & open source-verktyg
  48. 48. 5. Arkitektur SOA - men i praktiken monolitisk MEGAservice vs. microservice Ett av grunderna för problem med skalning
  49. 49. 5. Arkitektur Stegvis refaktorering Städa, flytta uppenbart felplacerad kod Beroendeanalys Gap-analys mot framtida capabilities Skapa API-ytor
  50. 50. 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
  51. 51. 5. Arkitektur Skapa erfarenhet i teamen Från åratal av ”steady-state” till omfattande förändringar
  52. 52. 6. DevOps Inför DevOps practises Deployment  Continous Deploy Auto test
  53. 53. 5 Hoppa 50 år eller “Uppskjut verkligen inte till morgondagen…”
  54. 54. Myndighet Bra system!!! Världens första 4GL – från 60-talet Plattformen död sedan 15-20 år Ingen utveckling, utbildning, rekrytering
  55. 55. Automatisk översättning Språk, databas Men arkitekturen är ju samma - emulering Code freeze? – Law freeze! Regeringsförhandling 3 parallella förstudier
  56. 56. Misstag 1 Kräv referens på någon som gjort exakt samma = En möjlig leverantör 1:1-migrering – läsbarhet = klart tveksam
  57. 57. Språk? C#
  58. 58. Misstag 2 Fastpris Omfattning Tid Kvalité Ni kan bara få två – vad väljer ni bort?
  59. 59. 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
  60. 60. 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)
  61. 61. 6 Byt (nästan) allt i små steg eller Hur byter man motor på hundratals plan – i luften?
  62. 62. 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
  63. 63. Städa, städa 50-60% bort! Del av störe program Massiv BD parallellt
  64. 64. 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
  65. 65. Auto-migrering! Regelmotor! ”Morphing, concept based translation” inte rad för rad
  66. 66. 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
  67. 67. Läsbar kod?
  68. 68. 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
  69. 69. Test & verifiering
  70. 70. Största förändringen någonsin Ändra allt – testa allt Utan dokumentation Utan testfall Utan automation Utan miljöer/test-data management
  71. 71. 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”
  72. 72. Contact Joakim Lindbom CTO | Certified Chief Architect Joakim.Lindbom@capgemini.com 08-5368 3934 0708-166404 twitter: JoakimLindbom http://www.slideshare.net/JoakimLindbom http://www.linkedin.com/in/joakimlindbom VLOG Architecture Corner: https://www.youtube.com/playlist?list=PLrb_rbUWzApENbqc085Vk7Qj- amEOmvDN
  73. 73. 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
  74. 74. 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

×