SlideShare a Scribd company logo
1 of 55
© 2015 Nunsys
Refactoring long-living legacy applications
Manuel Alagarda Esteve
© 2015 Nunsys
A few things about me
Jorge Capel Planells
Consultor Business Software at NUNSYS
Jorge.capel@nunsys.com
@jcapelplanells
© 2015 Nunsys
The Life path of a long-living application
Una evolución poco sostenible hoy, un sistema inviable mañana.
Infeasibility Stage
Sibylle Peter, Sven Ehrke, Canoo Engineering AG, www.canoo.com
http://www.methodsandtools.com/archive/archive.php?id=98
Do you have a legacy application problem?
• Are you working in a critical application for your business or Company?
• Does your company grow faster than your application?
• Is your application able to achieve business goals in time?
• Do you spend a lot of time and effort working in a new feature?
• Could a simple change take weeks?
• Do you invest a lot of time and effort fixing bugs?
• Do you have a safety net of automated regression tests ?
• Deliver a new version makes your heart sink?
Yes, you have a problem
Infeasibility application
….hero work
Why do you have a legacy problem?
© 2015 Nunsys
Refactor or Rewrite??
Factores en los que nos basamos para tomar a esta decisión
Refactoring
“Refactoring is the process of changing a software system in such a way that it does not alter the
external behavior of the code yet improves its internal structure.”
Refactoring: Improving the Design of Existing Code
Martin Fowler
Key factors
1 Time to market
2 Continuous changes
3 Techical debt
4 Application size
5 Complexity
6 Cost of application redesign
Refactor or Rewrite??
Technical debt
Changes
Time-to-market
Size
Complex
Cost new application
Refactor o Rewrite?
REESCRIBIR
High technical debt
Low cost of new application
REWRITE
Technical debt 9
Changes 9
Time-to-market 10
Size 1
Complex 1
Cost of new application 3
Refactor or Rewrite?
Technical debt
Changes
Time-to-market
Size
Complexity
Cost of new application
Refactor o rewrite?
REFACTOR
Always refactor with low
technical debt
Technical debt 2
Changes 9
Time-to-market 10
Size 7
Complex 8
Cost of new application 8
Refactor or Rewrite?
Technical debt
Changes
Time-to-market
Size
Complex
Cost of new application
Refactor or Rewrite?
Very high Technical debt
Low changes
Technical debt 8
Changes 2
Time-to-market 2
Size 5
Complex 5
Cost of new application 5
Refactor or Rewrite?
Technical debt
Changes
Time-to-market
Size
Complex
Cost of new application
Refactor or Rewrite?
REFACTOR
Technical debt 6
Changes 10
Time-to-market 10
Size 10
Complex 8
Cost of new application 10
© 2015 Nunsys
Case study
Técnicas especificas de un proyecto de refactorización
o Multinational car rental company located in 8 countries
o With its own IT departament and development team
o This team maintains and develops Company’s software
assets
o Software asset under study is a desktop application
 8 years old
 Aprox. 3,000,000 lines of code
 Installed in 200 Workstation
 300 users
A case study
o Deliver new functionality to production every 2 weeks
o Plenty of showstopper bugs in production
o At least two hotfixes for each release
o We spend at least 20 percent of our time each iteration fixing production bugs
o High time to market
o High risk of failure. High cost of defects
o No automated tests
o No testing process
State
© 2015 Nunsys
Prerequisites for succesful Refactoring Projects
Condiciones y tareas previas requeridas para poder dar comienzo con un proyecto de
refactorización
Management support
Management support is vital to success
• Understand the value of investing in legacy systems is difficult.
• We have to invest more time and money in an application that after all
it works as required
• It’s an opportunity to explain what improvements can help your
business achieve.
Numbers - ROI
0
5000
10000
15000
20000
25000
30000
0 50 100 150 200 250 300 350 400 450
Cost
Features
Total cost per features
No refactor Refactoring Rewrite
Cost
Refactoring 5.000
Rewrite 15.000
Cost/Feauture
Without
Refactor 60
Refactoring 30
Rewrite 10
Refactoring master plan
ASSESSMENT PERIOD
•Investigate the reasons for the deteriorated state of the application
•Identify differentiators areas that constantly change
•Identify differentiators areas that are critical for business achieve
•Identify areas that changes are expensive
Refactoring master plan
GOALS
•A clear separation between layers
•Clean up the presentation layer
•Replace GUI framework
Refactoring master plan
METRICS
• Quality KPI’s(Technical debt, cyclomatic complexity,cohesion,…)
• Tools: Sonar, Understand,…
Define own KPI’s
•Cost per feature
•Cost per defect
•DRE (Defect removal efficiency)
Team
Trained and experienced
professionals
…and with the resources
needed
Iterative and incremental development
Project must have its own team refactoring “Refactor team”
“Refactor team” must not develop new features
PREPARATORY PHASE IMPLEMENTATION PHASE
User
cases
Master
Plan
Design Parallel Tests
tool
Iteration 0
Analysis Refactor Refactor P.T
Validaton Iteraction 1
Analysis Refactor Refactor PP
Validation Iteration n
Analysis Refactor Refactor PP
Validación
Version control and continuos integration
RELEASE
REFACTORING
trunk
RAMA FUNCIONALIDAD NUEVA
Versión probadaTested version
New feature branch
Custom framework and working method
•Standard development guide
–SOLID
–CLEAN CODE
•Define application architecture
•Use adequate technologies
•Use frameworks
Test automation
• Automate more critical user cases with Functional GUI Testing
automation
• Parallel testing “Pruebas paralelas”
© 2015 Nunsys
Main problems
Técnicas especificas de un proyecto de refactorización
© 2015 Nunsys
How can I extract the knowledge?
Reverse engineering
Reverse engineering
Flow diagrams
© 2015 Nunsys
Where should I Start?
Mikado Method
Technique used to identify and to plan
refactoring tasks
Mikado Method
Let’s do it
Our process
© 2015 Nunsys
I can´t do it in only one iteration
I can´t do it in only one iteration
Branch by abstraction
Starting point
?????
Final implementation
© 2015 Nunsys
I’ Cant test the legacy application
© 2015 Nunsys
Testing legacy applications
Evitar errores mediante la automatización de pruebas
Parallel Testing
• It’s an “integration test” that runs twice with differents versions
• Reference version (code before refactoring)
• Refactor version (code after refactoring)
• Test must be designed to execute a critical process against a high data volumen.
Test must cover all critical paths
• Two executions are independents and each one access to a identical DB.
• Finally DBs are compared in order to look for differences
Parallel Testing
Parallel Testing
Which version is our reference?
RELEASE
REFACTORING
trunk
RAMA FUNCIONALIDAD NUEVA
Versión probadaTested version
New feature branch
Functional GUI Testing automation
https://www.youtube.com/watch?v=JzAvIrk6uVI
https://www.youtube.com/watch?v=ciDVHebNphc&list=PLEB
B611A728FE430E
Demostración
More info about refactoring
 Refactoring: Improving the Design of Existing Code – Martin Fowler
 Working Efectivelly with Legacy Code - Michael Feathers
 https://sourcemaking.com/refactoring
Presentation refactoring large legacy applications

More Related Content

What's hot

React vs Angular
React vs Angular React vs Angular
React vs Angular Appinventiv
 
Refactoring 101
Refactoring 101Refactoring 101
Refactoring 101Adam Culp
 
Refine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testRefine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testMalang QA Community
 
Coding Best Practices
Coding Best PracticesCoding Best Practices
Coding Best Practicesmh_azad
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development CodeOps Technologies LLP
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API💻 Spencer Schneidenbach
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDDKnoldus Inc.
 
Semmle Codeql
Semmle Codeql Semmle Codeql
Semmle Codeql M. S.
 
Angular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdfAngular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdfJohnLeo57
 
Unit Test Presentation
Unit Test PresentationUnit Test Presentation
Unit Test PresentationSayedur Rahman
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentTung Nguyen Thanh
 
Introduction to Bdd and cucumber
Introduction to Bdd and cucumberIntroduction to Bdd and cucumber
Introduction to Bdd and cucumberNibu Baby
 

What's hot (20)

Angularjs PPT
Angularjs PPTAngularjs PPT
Angularjs PPT
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScript
 
TypeScript - An Introduction
TypeScript - An IntroductionTypeScript - An Introduction
TypeScript - An Introduction
 
React vs Angular
React vs Angular React vs Angular
React vs Angular
 
Refactoring 101
Refactoring 101Refactoring 101
Refactoring 101
 
Refactoring
RefactoringRefactoring
Refactoring
 
Refine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testRefine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated test
 
Coding Best Practices
Coding Best PracticesCoding Best Practices
Coding Best Practices
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
 
RESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web APIRESTful API Design Best Practices Using ASP.NET Web API
RESTful API Design Best Practices Using ASP.NET Web API
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDD
 
Semmle Codeql
Semmle Codeql Semmle Codeql
Semmle Codeql
 
Bdd
BddBdd
Bdd
 
Angular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdfAngular Interview Questions-PDF.pdf
Angular Interview Questions-PDF.pdf
 
TypeScript Presentation
TypeScript PresentationTypeScript Presentation
TypeScript Presentation
 
Cucumber & gherkin language
Cucumber & gherkin languageCucumber & gherkin language
Cucumber & gherkin language
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Unit Test Presentation
Unit Test PresentationUnit Test Presentation
Unit Test Presentation
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Introduction to Bdd and cucumber
Introduction to Bdd and cucumberIntroduction to Bdd and cucumber
Introduction to Bdd and cucumber
 

Similar to Presentation refactoring large legacy applications

Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...
Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...
Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...Mirco Hering
 
Sgin2013 scrum accomplished-industrialagilecasestudy-avinashrao
Sgin2013 scrum accomplished-industrialagilecasestudy-avinashraoSgin2013 scrum accomplished-industrialagilecasestudy-avinashrao
Sgin2013 scrum accomplished-industrialagilecasestudy-avinashraoIndia Scrum Enthusiasts Community
 
Extending and improving bps romania 30th of nov 2010
Extending and improving bps   romania 30th of nov 2010Extending and improving bps   romania 30th of nov 2010
Extending and improving bps romania 30th of nov 2010Doina Draganescu
 
How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...
How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...
How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...AppDynamics
 
Modernize Siebel CRM with Open UI
Modernize Siebel CRM with Open UIModernize Siebel CRM with Open UI
Modernize Siebel CRM with Open UIPerficient, Inc.
 
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...RapidValue
 
Enterprise DevOps Transformation
Enterprise DevOps TransformationEnterprise DevOps Transformation
Enterprise DevOps TransformationBart Driscoll
 
DevOps in the Hybrid Cloud
DevOps in the Hybrid CloudDevOps in the Hybrid Cloud
DevOps in the Hybrid CloudRichard Irving
 
Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...
Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...
Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...Global Business Events
 
Performance Testing in the Agile Lifecycle
Performance Testing in the Agile LifecyclePerformance Testing in the Agile Lifecycle
Performance Testing in the Agile LifecycleLee Barnes
 
Moving Applications to the cloud
Moving Applications to the cloudMoving Applications to the cloud
Moving Applications to the cloudAarno Aukia
 
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...Planview
 
Introduction to 5w’s of DevOps
Introduction to 5w’s of DevOpsIntroduction to 5w’s of DevOps
Introduction to 5w’s of DevOpsCygnet Infotech
 
Accelerate Application Migration - August 5, 2020
Accelerate Application Migration - August 5, 2020Accelerate Application Migration - August 5, 2020
Accelerate Application Migration - August 5, 2020VMware Tanzu
 
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...Planview
 
Why DevOps is important for start-ups? | Calidad Infotech
Why DevOps is important for start-ups? | Calidad InfotechWhy DevOps is important for start-ups? | Calidad Infotech
Why DevOps is important for start-ups? | Calidad InfotechCalidad Infotech
 
Are your cloud applications performing? How Application Performance Managemen...
Are your cloud applications performing? How Application Performance Managemen...Are your cloud applications performing? How Application Performance Managemen...
Are your cloud applications performing? How Application Performance Managemen...DevOps.com
 
ds-suitesuccess-NetSuite
ds-suitesuccess-NetSuiteds-suitesuccess-NetSuite
ds-suitesuccess-NetSuiteColby Arkin
 

Similar to Presentation refactoring large legacy applications (20)

Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...
Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...
Next Generation IT Delivery - What it means to deliver atthe speed of the Dig...
 
What is DevOps? What is DevOps CoE?
What is DevOps? What is DevOps CoE? What is DevOps? What is DevOps CoE?
What is DevOps? What is DevOps CoE?
 
Sgin2013 scrum accomplished-industrialagilecasestudy-avinashrao
Sgin2013 scrum accomplished-industrialagilecasestudy-avinashraoSgin2013 scrum accomplished-industrialagilecasestudy-avinashrao
Sgin2013 scrum accomplished-industrialagilecasestudy-avinashrao
 
Extending and improving bps romania 30th of nov 2010
Extending and improving bps   romania 30th of nov 2010Extending and improving bps   romania 30th of nov 2010
Extending and improving bps romania 30th of nov 2010
 
How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...
How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...
How Oceanwide Accelerated its DevOps Adoption Journey with AppDynamics - AppS...
 
Modernize Siebel CRM with Open UI
Modernize Siebel CRM with Open UIModernize Siebel CRM with Open UI
Modernize Siebel CRM with Open UI
 
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
 
Enterprise DevOps Transformation
Enterprise DevOps TransformationEnterprise DevOps Transformation
Enterprise DevOps Transformation
 
Application Modernization
Application ModernizationApplication Modernization
Application Modernization
 
DevOps in the Hybrid Cloud
DevOps in the Hybrid CloudDevOps in the Hybrid Cloud
DevOps in the Hybrid Cloud
 
Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...
Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...
Leonard Munyua, CIO at Simba Corporation - Legacy modernisation and adequate ...
 
Performance Testing in the Agile Lifecycle
Performance Testing in the Agile LifecyclePerformance Testing in the Agile Lifecycle
Performance Testing in the Agile Lifecycle
 
Moving Applications to the cloud
Moving Applications to the cloudMoving Applications to the cloud
Moving Applications to the cloud
 
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
 
Introduction to 5w’s of DevOps
Introduction to 5w’s of DevOpsIntroduction to 5w’s of DevOps
Introduction to 5w’s of DevOps
 
Accelerate Application Migration - August 5, 2020
Accelerate Application Migration - August 5, 2020Accelerate Application Migration - August 5, 2020
Accelerate Application Migration - August 5, 2020
 
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
[Customizable Template] How to Get Stakeholder Buy-In for a Toolchain Integra...
 
Why DevOps is important for start-ups? | Calidad Infotech
Why DevOps is important for start-ups? | Calidad InfotechWhy DevOps is important for start-ups? | Calidad Infotech
Why DevOps is important for start-ups? | Calidad Infotech
 
Are your cloud applications performing? How Application Performance Managemen...
Are your cloud applications performing? How Application Performance Managemen...Are your cloud applications performing? How Application Performance Managemen...
Are your cloud applications performing? How Application Performance Managemen...
 
ds-suitesuccess-NetSuite
ds-suitesuccess-NetSuiteds-suitesuccess-NetSuite
ds-suitesuccess-NetSuite
 

Recently uploaded

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Recently uploaded (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Presentation refactoring large legacy applications

  • 1. © 2015 Nunsys Refactoring long-living legacy applications Manuel Alagarda Esteve
  • 2. © 2015 Nunsys A few things about me Jorge Capel Planells Consultor Business Software at NUNSYS Jorge.capel@nunsys.com @jcapelplanells
  • 3. © 2015 Nunsys The Life path of a long-living application Una evolución poco sostenible hoy, un sistema inviable mañana.
  • 4. Infeasibility Stage Sibylle Peter, Sven Ehrke, Canoo Engineering AG, www.canoo.com http://www.methodsandtools.com/archive/archive.php?id=98
  • 5. Do you have a legacy application problem? • Are you working in a critical application for your business or Company? • Does your company grow faster than your application? • Is your application able to achieve business goals in time? • Do you spend a lot of time and effort working in a new feature? • Could a simple change take weeks? • Do you invest a lot of time and effort fixing bugs? • Do you have a safety net of automated regression tests ? • Deliver a new version makes your heart sink?
  • 6. Yes, you have a problem
  • 8. Why do you have a legacy problem?
  • 9. © 2015 Nunsys Refactor or Rewrite?? Factores en los que nos basamos para tomar a esta decisión
  • 10. Refactoring “Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure.” Refactoring: Improving the Design of Existing Code Martin Fowler
  • 11. Key factors 1 Time to market 2 Continuous changes 3 Techical debt 4 Application size 5 Complexity 6 Cost of application redesign
  • 12. Refactor or Rewrite?? Technical debt Changes Time-to-market Size Complex Cost new application Refactor o Rewrite? REESCRIBIR High technical debt Low cost of new application REWRITE Technical debt 9 Changes 9 Time-to-market 10 Size 1 Complex 1 Cost of new application 3
  • 13. Refactor or Rewrite? Technical debt Changes Time-to-market Size Complexity Cost of new application Refactor o rewrite? REFACTOR Always refactor with low technical debt Technical debt 2 Changes 9 Time-to-market 10 Size 7 Complex 8 Cost of new application 8
  • 14. Refactor or Rewrite? Technical debt Changes Time-to-market Size Complex Cost of new application Refactor or Rewrite? Very high Technical debt Low changes Technical debt 8 Changes 2 Time-to-market 2 Size 5 Complex 5 Cost of new application 5
  • 15. Refactor or Rewrite? Technical debt Changes Time-to-market Size Complex Cost of new application Refactor or Rewrite? REFACTOR Technical debt 6 Changes 10 Time-to-market 10 Size 10 Complex 8 Cost of new application 10
  • 16. © 2015 Nunsys Case study Técnicas especificas de un proyecto de refactorización
  • 17. o Multinational car rental company located in 8 countries o With its own IT departament and development team o This team maintains and develops Company’s software assets o Software asset under study is a desktop application  8 years old  Aprox. 3,000,000 lines of code  Installed in 200 Workstation  300 users A case study
  • 18. o Deliver new functionality to production every 2 weeks o Plenty of showstopper bugs in production o At least two hotfixes for each release o We spend at least 20 percent of our time each iteration fixing production bugs o High time to market o High risk of failure. High cost of defects o No automated tests o No testing process State
  • 19. © 2015 Nunsys Prerequisites for succesful Refactoring Projects Condiciones y tareas previas requeridas para poder dar comienzo con un proyecto de refactorización
  • 20. Management support Management support is vital to success • Understand the value of investing in legacy systems is difficult. • We have to invest more time and money in an application that after all it works as required • It’s an opportunity to explain what improvements can help your business achieve.
  • 21. Numbers - ROI 0 5000 10000 15000 20000 25000 30000 0 50 100 150 200 250 300 350 400 450 Cost Features Total cost per features No refactor Refactoring Rewrite Cost Refactoring 5.000 Rewrite 15.000 Cost/Feauture Without Refactor 60 Refactoring 30 Rewrite 10
  • 22. Refactoring master plan ASSESSMENT PERIOD •Investigate the reasons for the deteriorated state of the application •Identify differentiators areas that constantly change •Identify differentiators areas that are critical for business achieve •Identify areas that changes are expensive
  • 23. Refactoring master plan GOALS •A clear separation between layers •Clean up the presentation layer •Replace GUI framework
  • 24. Refactoring master plan METRICS • Quality KPI’s(Technical debt, cyclomatic complexity,cohesion,…) • Tools: Sonar, Understand,… Define own KPI’s •Cost per feature •Cost per defect •DRE (Defect removal efficiency)
  • 26. Iterative and incremental development Project must have its own team refactoring “Refactor team” “Refactor team” must not develop new features PREPARATORY PHASE IMPLEMENTATION PHASE User cases Master Plan Design Parallel Tests tool Iteration 0 Analysis Refactor Refactor P.T Validaton Iteraction 1 Analysis Refactor Refactor PP Validation Iteration n Analysis Refactor Refactor PP Validación
  • 27. Version control and continuos integration RELEASE REFACTORING trunk RAMA FUNCIONALIDAD NUEVA Versión probadaTested version New feature branch
  • 28. Custom framework and working method •Standard development guide –SOLID –CLEAN CODE •Define application architecture •Use adequate technologies •Use frameworks
  • 29. Test automation • Automate more critical user cases with Functional GUI Testing automation • Parallel testing “Pruebas paralelas”
  • 30. © 2015 Nunsys Main problems Técnicas especificas de un proyecto de refactorización
  • 31. © 2015 Nunsys How can I extract the knowledge?
  • 35. © 2015 Nunsys Where should I Start?
  • 36. Mikado Method Technique used to identify and to plan refactoring tasks
  • 39.
  • 41. © 2015 Nunsys I can´t do it in only one iteration
  • 42. I can´t do it in only one iteration
  • 45. ?????
  • 47. © 2015 Nunsys I’ Cant test the legacy application
  • 48. © 2015 Nunsys Testing legacy applications Evitar errores mediante la automatización de pruebas
  • 49. Parallel Testing • It’s an “integration test” that runs twice with differents versions • Reference version (code before refactoring) • Refactor version (code after refactoring) • Test must be designed to execute a critical process against a high data volumen. Test must cover all critical paths • Two executions are independents and each one access to a identical DB. • Finally DBs are compared in order to look for differences
  • 52. Which version is our reference? RELEASE REFACTORING trunk RAMA FUNCIONALIDAD NUEVA Versión probadaTested version New feature branch
  • 53. Functional GUI Testing automation https://www.youtube.com/watch?v=JzAvIrk6uVI https://www.youtube.com/watch?v=ciDVHebNphc&list=PLEB B611A728FE430E Demostración
  • 54. More info about refactoring  Refactoring: Improving the Design of Existing Code – Martin Fowler  Working Efectivelly with Legacy Code - Michael Feathers  https://sourcemaking.com/refactoring