• Like
Strategic guidance
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Strategic guidance


Strategic Guidance for AVR Classic

Strategic Guidance for AVR Classic

Published in Technology , News & Politics
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide
  • asjadlj
  • Have you had your boss say, “How quickly can you put that AVR Classic in a browser or on a mobile device?” Are you looking forward to telling him, “years”?
  • Have you had your boss say, “How quickly can you put that AVR Classic in a browser or on a mobile device?” Are you looking forward to telling him, “years”?
  • If you attempt to use the UA, start with a small application!


  • 1. Strategic Guidance for AVR Classic legacy applications Presented by: Roger Pence Education Director, ASNA
  • 2. A critical legacy dependency• Many customers have developed substantial Windows applications with AVR Classic• These applications… – Have enterprise dependence – Have been very custom-tailored to solving unique business problems – Are widely deployed and used – Are usually several years old • Most of these customers have one simple4:20 question…Copyright © 2012 by ASNA. 2
  • 3. Now what?4:20 Copyright © 2012 by ASNA. 3
  • 4. There isn’t a magic answer! • Alas, there isn’t a magic answer to the question • The answer depends on what your needs and motives are for the application • So, yes, there isn’t a magic answer, but there are answers!4:20 Copyright © 2012 by ASNA. 4
  • 5. COM has served us long and well • COM is old and getting older! – COM was introduced in 1993—it is 18 years old – AVR 1.0 was released in 1994—it is 17 years old • Migrating code from COM to .NET is very troublesome (more on this later) – MS offers no tools for migrating VB COM to VB.NET • COM has served us long and well, but its role in modern application development is rapidly diminishing4:20 Copyright © 2010 by ASNA. 5
  • 6. COM will be with us for a longtime, but make no mistake, the sun is clearly setting on COM Copyright © 2012 by ASNA. 6
  • 7. COM is the programming equivalent of Mick Jagger… • Both have been with us for a long time • Both are old friends • Both have worked very hard for us • Both are really starting to show their age • Clearly, both have reached the end of their prime!4:20 Copyright © 2010 by ASNA. 7
  • 8. COM then COM now Copyright © 2012 by ASNA. 8
  • 9. This session’s mission • What you should or shouldn’t do is very dependent on lots of issues • We can’t give you the answer • What we can do is share some potential answers • You don’t have to do anything we suggest • But…4:20 Copyright © 2012 by ASNA. 9
  • 10. You have todo something! Copyright © 2012 by ASNA. 10
  • 11. A rational plan now… • Protects you from needing to make hasty decisions • Keeps you from reacting to events beyond your control • Lets you act with a well-crafted strategy to prepare for the future • You need a rational plan…now!4:20 Copyright © 2010 by ASNA. 11
  • 12. ASNA’s 5 R strategy for future-proofing AVR Classic apps 1. Relax 2. Refine 3. Restrain 4. Reinvest 5. Reimagine4:20 Copyright © 2012 by ASNA. 12
  • 13. Relax > Refine > Restrain > Reinvest > Reimagine Relax • We do know that COM is in the winter of its life, but… – COM isn’t going away anytime soon • MS has a good long-term strategy in place for your COM investment protection • After all, MS has the same problem you do… – Legacy COM code. Lots of it.4:20 Copyright © 2012 by ASNA. 13
  • 14. Relax > Refine > Restrain > Reinvest > Reimagine Don’t overreact • We feel it’s very important that you craft a good long-term strategy for your AVR Classic apps • But you don’t need to do it before 8pm this evening! • The COM click is ticking but it’s nowhere near its final count down • You have time to think through your decisions before you make them4:20 Copyright © 2012 by ASNA. 14
  • 15. Relax > Refine > Restrain > Reinvest > Reimagine Leaving XP behind? Win7 has your back • MS had big problems with COM interoperability with Vista—but has learned from those mistakes – MS built a great COM-escape hatch into Windows 7 – Each copy of Windows 7 offers a free XP virtual machine • Each copy of Win 7 includes an XP license for the Win 7 XP VM mode • You can launch the entire XP VM or launch XP VM-specific shortcuts from the Win 7 host4:20 Copyright © 2012 by ASNA. 15
  • 16. Relax > Refine > Restrain > Reinvest > Reimagine Windows 7 Windows XP mode with Virtual PC in action • Show Windows XP mode in action • Getting Windows XP mode for Win 7 – Download what you need here: http://www.microsoft.com/windows/virtual-pc/ • You’ll need both Windows XP Mode and Windows Virtual PC4:20 Copyright © 2012 by ASNA. 16
  • 17. http://www.microsoft.com/windows/virtual-pc/ Copyright © 2012 by ASNA. 17
  • 18. Relax > Refine > Restrain > Reinvest > Reimagine Windows XP Mode • To surface XP shortcuts to your Win 7 host: – Create a folder named ―Programs on the XP VM‖ user c:Documents and SettingsAll UsersStart Menu • Then create shorts to your EXEs and other files with the Shortcut wizard – Dragged and dropped shortcuts won’t work! – These shortcuts are then automatically surfaced in your Win 7 host’s Start Menu – Installed programs automatically surface in the Win 7 host’s Start Menu4:20 Copyright © 2010 by ASNA. 18
  • 19. Windows XP Shortcut wizard is available fromthe Windows Explorer context menu. Copyright © 2012 by ASNA. 19
  • 20. Relax > Refine > Restrain > Reinvest > Reimagine Refine • Get your AVR Classic applications to code complete status as quickly as possible – The goal is to be able to say, ―This version is done, with no new features planned or to be available for it.― – Fixes may be added, but no new code! Code complete: A release is called code complete when the development team agrees that no entirely new source code will be added to this release.4:20 Copyright © 2012 by ASNA. 20
  • 21. Relax > Refine > Restrain > Reinvest > Reimagine Minimize third-party dependencies • Third-party components represent a weak spot in your exposure of what might continue to work in the future – Mabry and Graph Control are gone – Minimize your use of third-party controls – Minimize your use of programming with the MS Office COM objects—Office version dependencies are a huge source of moving code forward!4:20 Copyright © 2012 by ASNA. 21
  • 22. Relax > Refine > Restrain > Reinvest > Reimagine Understand COM <-> .NET interoperability • COM and .NET do coexist nicely – AVR Classic apps can consume .NET DLLs quite easily – .NET apps can consume AVR Classic DLLs with just a little effort – This might help you leverage .NET work as you make your Classic apps code complete • Current .NET DG versions also support Classic • Tim Jannsen’s .NET and AVR Classic Interoperability session covers this in detail4:20 Copyright © 2012 by ASNA. 22
  • 23. Relax > Refine > Restrain > Reinvest > Reimagine Restrain • When you have your AVR Classic apps code complete, restrain yourself from changing them or adding new features to them! • You have to draw a line in the sand between the old and new! – That must be a part of your strategy! • Also, restrain yourself from writing anything new with AVR Classic!4:20 Copyright © 2012 by ASNA. 23
  • 24. Relax > Refine > Restrain > Reinvest > Reimagine Reinvest • As you chart your corporate and personal course for life after COM, consider the training and skills you and your team need to acquire • Chart a specific course to learn: – .NET in general – Web development (both server-side and client-side) – SOA architecture – Windows forms alternatives (more on this in a moment) – Database design4:20 Copyright © 2012 by ASNA. 24
  • 25. Relax > Refine > Restrain > Reinvest > Reimagine Learn about good application architectures and patterns • Many of the apps built with AVR Classic owe more to serendipity than to engineering and architecture • The application lifecycle was – Code a little – Deploy a little – Goto TOP • Today’s applications require more discipline and design—and the application of solid programming fundamentals4:20 Copyright © 2012 by ASNA. 25
  • 26. Relax > Refine > Restrain > Reinvest > Reimagine Invest in your team’s skills • Recommended books – Robert Martin – Clean Code – Steve McConnell – Code Complete (2nd Edition) – Douglas Crockford – JavaScript: The Good Parts – Elisabeth Freeman – Head First Design Patterns – Martin Fowler – Refactoring: Improving the Design of Existing Code – Cwalina and Abrams – Framework Design Guidelines4:20 Copyright © 2012 by ASNA. 26
  • 27. Relax > Refine > Restrain > Reinvest > Reimagine Invest in your team’s tools • Source control – Subversion, Git, SourceGear Vault • Automated build process – MS Build, PowerShell, Cruise Control, Team City • Formal bug logging – Bugzilla, BugTracker.NET, Fogbugz • Unit testing – nUnit, xUnit4:20 Copyright © 2012 by ASNA. 27
  • 28. Relax > Refine > Restrain > Reinvest > Reimagine Don’t make this mistake! • Don’t consider the need to migrate or rewrite your AVR Classic app in .NET an opportunity to learn .NET • It’s vital that you learn .NET first! – As you move your COM app to .NET you’ll need to make many informed decisions on the .NET platform – You can’t make good decisions until you know and understand .NET4:20 Copyright © 2012 by ASNA. 28
  • 29. Relax > Refine > Restrain > Reinvest > Reimagine Reimagine • We built AVR Classic apps with several, nearly universal, practices: – Monolithic – no separation of concerns between UI, logic, and IO – Global variables all over the place – Very busy event handlers – Little or no modularity – Applications were very stateful • All of which are the polar opposite of what any modern software construction book recommends!4:20 Copyright © 2012 by ASNA. 29
  • 30. Relax > Refine > Restrain > Reinvest > Reimagine Reimagine • You have an opportunity now to either: – Create a long-term software asset or… – Write another legacy application heavily dependent on a specific UI • Which would you rather do? • Before you rewrite, migrate, or build around your existing applications, stop and think a bit about their longer-term purpose4:20 Copyright © 2012 by ASNA. 30
  • 31. Relax > Refine > Restrain > Reinvest > Reimagine Pocket computers are changing everything • Everyone in the room today has a computer in their pocket or purse! Maybe two. • The redistribution of computer availability is changing everything • Make no mistake: mobile enterprise doesn’t loom on the horizon – It’s here – It’s doable – It’s important – And your competition is doing it4:20 Copyright © 2012 by ASNA. 31
  • 32. Relax > Refine > Restrain > Reinvest > Reimagine What UI should you target? • You shouldn’t target any UI! • Build non-UI dependent services so that separate UI layers are possible • Who knows what UI you’ll be asked for next? – Win forms? – Web forms? – HTML/HTML5 for mobile? – Silverlight for a Win phone? – Native mobile for Android or iPhone or iPad? – WPF? – Windows 8 Metro?4:20 Copyright © 2012 by ASNA. 32
  • 33. Relax > Refine > Restrain > Reinvest > Reimagine Architecture of most AVR Classic apps today • There is little, if any, separation between the UI, DB, and business logic layers • All three layers are heavily embedded with each other • Virtually impossible to4:20 factor out the UI Copyright © 2012 by ASNA. 33
  • 34. Copyright © 2012 by ASNA. 34
  • 35. Relax > Refine > Restrain > Reinvest > Reimagine Creating an application with discrete layers • Writing your apps in discrete layers makes it more flexible • Here there is a very clear separation of concerns between the layers4:20 Copyright © 2012 by ASNA. 35
  • 36. Relax > Refine > Restrain > Reinvest > Reimagine Adding support for Web forms • With business logic and DB access as discrete layers, it’s possible to write a separate layer UI for Web forms4:20 Copyright © 2012 by ASNA. 36
  • 37. Relax > Refine > Restrain > Reinvest > Reimagine HTML/HTML5 • Using HTML5 is a good, general purpose strategy for mobile development • Apps run in mobile device’s browser • CSS media queries help structure UI layout4:20 Copyright © 2012 by ASNA. 37
  • 38. Relax > Refine > Restrain > Reinvest > Reimagine Silverlight on the Win phone • Silverlight and WPF may or may not make it generally • But it’s looking like Silverlight will at least persist as the Win phone UI for the enterprise4:20 Copyright © 2012 by ASNA. 38
  • 39. Relax > Refine > Restrain > Reinvest > Reimagine Maybe even native mobile • Writing native mobile apps is a pretty hefty gamble • But if you need it, a layered software approach makes it possible4:20 Copyright © 2012 by ASNA. 39
  • 40. Relax > Refine > Restrain > Reinvest > Reimagine A layered architecture makes it possible to say “Yes” • Without a good layered architecture, you simple don’t have a ―yes‖ option in your programming kit bag4:20 Copyright © 2012 by ASNA. 40
  • 41. Relax > Refine > Restrain > Reinvest > Reimagine Who knows what’s next? Be prepared! • A layered architecture turns what would have otherwise been a legacy asset into a long-term software asset4:20 Copyright © 2012 by ASNA. 41
  • 42. Relax > Refine > Restrain > Reinvest > Reimagine The AVR Upgrade Assistant • If you are on maintenance, and own AVR 4.1 and AVR for .NET, there is an Upgrade Assistant (UA) available in AVR 4.1 • The operative word here is ―Assistant‖! • The UA isn’t an application migration facility, but, for the right apps, it can help lay the groundwork for converting an AVR Classic app to .NET4:20 Copyright © 2012 by ASNA. 42
  • 43. Relax > Refine > Restrain > Reinvest > Reimagine The UA requires intermediate .NET knowledge • Don’t assume that you can use the UA to learn .NET—you can’t! • You must be well-versed in both AVR for .NET and AVR Classic to get good UA results • The UA only gets you started, you must make lots of decisions as you remediate the app— those decisions require .NET knowledge4:20 Copyright © 2012 by ASNA. 43
  • 44. Relax > Refine > Restrain > Reinvest > Reimagine UA issues • Third-party controls are troublesome – Beware: many COM controls companies are now gone! • MS Office dependencies • OSFile and MiscCtrls dependencies • The UA doesn’t map things to .NET that required controls or DLLs in AVR Classic – Date and time conversions – String operations – Edit words and edit codes4:20 Copyright © 2012 by ASNA. 44
  • 45. Relax > Refine > Restrain > Reinvest > Reimagine UA issues • Subfiles are troublesome to migrate well – And subfiles are at the heart of many applications – We’ve tried twice to automate subfile migration – The ―subfile‖ model is so fundamentally different in .NET • DB connections aren’t localized in .NET – Special care must be taken to keep from launching many OS/400 jobs with migrated code (or even slopping .NET from-scratch code) • Win forms are the only target—no browser UI target4:20 Copyright © 2012 by ASNA. 45
  • 46. Relax > Refine > Restrain > Reinvest > Reimagine The UA might work for you • The UA is good for very small, well-focused applications • But for larger applications we’re not sure it’s the best long-term answer to the question • The UA imposes a fixed model that might be troublesome to grow out of • We know that it is very hard to automate COM to .NET migrations – MS long ago gave up doing so with VB6 to .NET4:20 Copyright © 2012 by ASNA. 46
  • 47. General advice summary • COM isn’t going away anytime soon – Use Win 7 XP mode when necessary • Finish your COM apps and then freeze them – Develop the discipline to not write any new AVR Classic apps • Start now building .NET services that replace or augment your AVR Classic apps – Give very serious thought to persisting the Win forms model – Learning .NET is high on your to-do list4:20 Copyright © 2012 by ASNA. 47
  • 48. General advice summary • Start building tangential apps using those services to augment your AVR Classic apps – These are front-end apps—your services should do the heavy lifting – Maybe start with a browser-based UI • Don’t over-expect what the UA can do – It’s usefulness is rather narrow and specific – Understand its model – Learn .NET before you use the UA – Identify things AVR Classic is doing that .NET does very differently4:20 Copyright © 2012 by ASNA. 48