SlideShare uma empresa Scribd logo
1 de 28
Francesco Balena – Code Architects, Italy VB6 Migration: Myth, truth, and real-world experiences
Me.About ,[object Object]
 MSDN Regional director, Italy
 VB Migration Partner
 www.vbmigration.com ,[object Object]
the only Microsoft ISVNXT partner specialized in conversion and modernization of VB6 apps
customers in Europe, United States & Canada, Australia and Asia
dozens of millions of lines of code migrated
official Microsoft Case study published on Microsoft.com, ERP system of about 1M lines of code,[object Object]
port & extend
rewrite
“language impedance”
functional equivalence
staged (phased) migrations,[object Object]
“language impedance” 	 data types  type-char suffix  Array lower bounds  Optional params  As New variables  Byval argument passing  Defxxx  array rank  missing As  As Any parameters  block variables  date as double  array assignments  callbacks in Declare  As New arrays  UDT initialization  Variants  default parameterless members  Gosub  On Goto/GoSub  Byref ParamArray  Fixed-length strings  UDT assignments  byte-oriented string functions  enum/number conversions  IsMissing  Empty value  Null propagation  VarPtr, ObjPtr, StrPtr  class termination  IDisposable objects  default members in late-binding  OLE control  Line and Shape controls  control arrays  graphic methods  ScaleMode property  DrawMode property  DAO and RDO data-binding  ADO data-binding  ADO data-bound classes  DataEnvironment  VBControlExtender object  PropertyPages  UserDocuments  “classic” drag-and-drop  OLE drag-and-drop  Extender and Ambient properties  DDE  WebClasses  DHTML Pages  Sub Main in DLLs  SingleUse classes  Global classes  COM+ components  class persistence  Print and Printers  App, Screen, Forms objects  ActiveX EXEs  popup menus 
“language impedance” (UW)  data types  type-char suffix array lower bounds Optional params As New variables  Byval argument passing  Defxxx array rank  missing As  As Any parameters  block variables  date as double  array assignments  callbacks in Declare  As New arrays  UDT initialization  Variants  default parameterless members  Gosub  On Goto/GoSub  ByrefParamArray  Fixed-length strings  UDT assignments  byte-oriented string functions  enum/number conversions  IsMissing  Empty value  Null propagation  VarPtr, ObjPtr, StrPtr class termination  IDisposable objects  default members in late-binding  OLE control  Line and Shape controls  control arrays  ScaleMode property  DrawMode property  DAO and RDO data-binding  ADO data-binding  ADO data-bound classes  DataEnvironment VBControlExtender object  PropertyPages  UserDocuments  “classic” drag-and-drop  OLE drag-and-drop  Extender and Ambient properties  DDE  WebClasses  DHTML Pages  Sub Main in DLLs  SingleUse classes  Global classes  COM+ components  class persistence  Print and Printers  App, Screen, Forms objects  ActiveX EXEs  popup menus 
“language impedance” (VBMP)  data types  type-char suffix  array lower bounds  Optional params  As New variables  Byval argument passing  Defxxx  array rank  missing As  As Any parameters  block variables  date as double  array assignments  callbacks in Declare  As New arrays  UDT initialization  Variants  default parameterless members  Gosub  On Goto/GoSub  ByrefParamArray  Fixed-length strings  UDT assignments  byte-oriented string functions  enum/number conversions  IsMissing  Empty value  Null propagation  VarPtr, ObjPtr, StrPtr  class termination  IDisposable objects  default members in late-binding  OLE control  Line and Shape controls  control arrays  graphic methods  ScaleMode property  DAO and RDO data-binding  ADO data-binding  ADO data-bound classes  DataEnvironment  VBControlExtender object  PropertyPages  UserDocuments  “classic” drag-and-drop  OLE drag-and-drop  Extender and Ambient properties  DDE  WebClasses  DHTML Pages  Sub Main in DLLs  SingleUse classes  Global classes  COM+ components  class persistence  Print and Printers  App, Screen, Forms objects  ActiveX EXEs  popup menus 
truth 	rewriting from scratch can deliver the best quality code 	( sad but true  )
myth 	rewriting from scratch always delivers the best quality code
truth 	the sooner we start, the better
myth 	the sooner we start, the better, therefore 	let’s run the Upgrade Wizard, remove all compilation errors, debug the .net code, do some tests, fix bugs, polish the UI, create the setup, write the manual, and tell the boss we’re ready to ship 
myth 	nearly all migration projects fail miserably
truth 	nearly all migration projects fail miserably if they weren’t planned accurately 	( like any software project... )
what you need, what you have a goal what goes to .NET, what stays in VB6 architectural changes target language, 3rd-party controls a migration tool (if any) a deadline a team VB & .NET expertise, familiarity with the code base, migration skills
the assessment step ,[object Object],http://www.microsoft.com/downloads/details.aspx?FamilyId=10C491A2-FC67-4509-BC10-60C5C039A272&displaylang=en ,[object Object],http://msdn2.microsoft.com/en-us/vbrun/ms789135.aspx ,[object Object],http://www.vbmigration.com/Resources/VB6Analyzer.aspx ,[object Object]
always prepare a Proof-of-Concept,[object Object]
myth 	all .NET language are equally powerful, therefore it doesn’t really matter whether we select VB.NET or C# in our migration projects
VB.NET challenges Variants Null propagation in expressions ActiveX EXE components Gosub, VarPtr, StrPtr, ObjPtr

Mais conteúdo relacionado

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Destaque

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destaque (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

Basta! 2010 - VB6-to-NET Migration: Myth, Truth, and Real-World Experiences

  • 1. Francesco Balena – Code Architects, Italy VB6 Migration: Myth, truth, and real-world experiences
  • 2.
  • 3. MSDN Regional director, Italy
  • 5.
  • 6. the only Microsoft ISVNXT partner specialized in conversion and modernization of VB6 apps
  • 7. customers in Europe, United States & Canada, Australia and Asia
  • 8. dozens of millions of lines of code migrated
  • 9.
  • 14.
  • 15. “language impedance”  data types  type-char suffix  Array lower bounds  Optional params  As New variables  Byval argument passing  Defxxx  array rank  missing As  As Any parameters  block variables  date as double  array assignments  callbacks in Declare  As New arrays  UDT initialization  Variants  default parameterless members  Gosub  On Goto/GoSub  Byref ParamArray  Fixed-length strings  UDT assignments  byte-oriented string functions  enum/number conversions  IsMissing  Empty value  Null propagation  VarPtr, ObjPtr, StrPtr  class termination  IDisposable objects  default members in late-binding  OLE control  Line and Shape controls  control arrays  graphic methods  ScaleMode property  DrawMode property  DAO and RDO data-binding  ADO data-binding  ADO data-bound classes  DataEnvironment  VBControlExtender object  PropertyPages  UserDocuments  “classic” drag-and-drop  OLE drag-and-drop  Extender and Ambient properties  DDE  WebClasses  DHTML Pages  Sub Main in DLLs  SingleUse classes  Global classes  COM+ components  class persistence  Print and Printers  App, Screen, Forms objects  ActiveX EXEs  popup menus 
  • 16. “language impedance” (UW)  data types  type-char suffix array lower bounds Optional params As New variables  Byval argument passing  Defxxx array rank  missing As  As Any parameters  block variables  date as double  array assignments  callbacks in Declare  As New arrays  UDT initialization  Variants  default parameterless members  Gosub  On Goto/GoSub  ByrefParamArray  Fixed-length strings  UDT assignments  byte-oriented string functions  enum/number conversions  IsMissing  Empty value  Null propagation  VarPtr, ObjPtr, StrPtr class termination  IDisposable objects  default members in late-binding  OLE control  Line and Shape controls  control arrays  ScaleMode property  DrawMode property  DAO and RDO data-binding  ADO data-binding  ADO data-bound classes  DataEnvironment VBControlExtender object  PropertyPages  UserDocuments  “classic” drag-and-drop  OLE drag-and-drop  Extender and Ambient properties  DDE  WebClasses  DHTML Pages  Sub Main in DLLs  SingleUse classes  Global classes  COM+ components  class persistence  Print and Printers  App, Screen, Forms objects  ActiveX EXEs  popup menus 
  • 17. “language impedance” (VBMP)  data types  type-char suffix  array lower bounds  Optional params  As New variables  Byval argument passing  Defxxx  array rank  missing As  As Any parameters  block variables  date as double  array assignments  callbacks in Declare  As New arrays  UDT initialization  Variants  default parameterless members  Gosub  On Goto/GoSub  ByrefParamArray  Fixed-length strings  UDT assignments  byte-oriented string functions  enum/number conversions  IsMissing  Empty value  Null propagation  VarPtr, ObjPtr, StrPtr  class termination  IDisposable objects  default members in late-binding  OLE control  Line and Shape controls  control arrays  graphic methods  ScaleMode property  DAO and RDO data-binding  ADO data-binding  ADO data-bound classes  DataEnvironment  VBControlExtender object  PropertyPages  UserDocuments  “classic” drag-and-drop  OLE drag-and-drop  Extender and Ambient properties  DDE  WebClasses  DHTML Pages  Sub Main in DLLs  SingleUse classes  Global classes  COM+ components  class persistence  Print and Printers  App, Screen, Forms objects  ActiveX EXEs  popup menus 
  • 18. truth rewriting from scratch can deliver the best quality code ( sad but true  )
  • 19. myth rewriting from scratch always delivers the best quality code
  • 20. truth the sooner we start, the better
  • 21. myth the sooner we start, the better, therefore let’s run the Upgrade Wizard, remove all compilation errors, debug the .net code, do some tests, fix bugs, polish the UI, create the setup, write the manual, and tell the boss we’re ready to ship 
  • 22. myth nearly all migration projects fail miserably
  • 23. truth nearly all migration projects fail miserably if they weren’t planned accurately ( like any software project... )
  • 24. what you need, what you have a goal what goes to .NET, what stays in VB6 architectural changes target language, 3rd-party controls a migration tool (if any) a deadline a team VB & .NET expertise, familiarity with the code base, migration skills
  • 25.
  • 26.
  • 27. myth all .NET language are equally powerful, therefore it doesn’t really matter whether we select VB.NET or C# in our migration projects
  • 28. VB.NET challenges Variants Null propagation in expressions ActiveX EXE components Gosub, VarPtr, StrPtr, ObjPtr
  • 29. C# challenges Variants Null propagation in expressions ActiveX EXE components Gosub, VarPtr, StrPtr, ObjPtr optional parameters (fixed in 2010) late binding (almost fixed in 2010) error handling
  • 30. C# challenges On Error Resume Next DoSomething(x) If CheckExpr(x) Then DoSomethingElse(x) try { DoSomething(x); } catch (Exception ex) { SetError(ex); } bool test; try { test = CheckExpr(x); } catch (Exception ex) { SetError(ex); } try { if (test) DoSomethingElse(x); } catch (Exception ex) { SetError(ex); }
  • 31. myth (revised) all .NET language are equally powerful, therefore it doesn’t really matter whether we select VB.NET or C# in our migration projects ...unless you are paid by the hour 
  • 32. myth migrated code runs slower than hand-written code
  • 33. (half) truth migrated apps should never use a support library
  • 34. myth migrated apps must never, ever use a support library
  • 35. a support library can dramaticallyreduce compile and runtime errors closely mimic VB6 behavior and UI hide the complexity of .NET produce concise and neater code optimize your app for size/speed simplify bug fixes offer interoperability with VB6 apps ... (read more reasons here)
  • 36.
  • 39. LinkedIn Group on VB6 Migrationwww.linkedin.com/groups?gid=3074090
  • 40.
  • 41. To learn more about your VB6 applications, run VB6 Analyzer on your source code and send us the generated text file.
  • 42. You will receive a detailed report on your VB6 applications and how VB Migration Partner can help you to quickly and effectively migrate it to .NET.www.vbmigration.com/getfreeadvice.aspx