Más contenido relacionado La actualidad más candente (16) Similar a Strategic guidance (20) Strategic guidance2. 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 simple
4:20
question…
Copyright © 2012 by ASNA. 2
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
diminishing
4:20
Copyright © 2010 by ASNA. 5
6. COM will be with us for a long
time, 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
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. Reimagine
4: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 them
4: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 host
4: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 PC
4:20
Copyright © 2012 by ASNA. 16
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 Menu
4:20
Copyright © 2010 by ASNA. 18
19. Windows XP Shortcut wizard is available from
the 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 detail
4: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 design
4: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 fundamentals
4: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 Guidelines
4: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, xUnit
4: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 .NET
4: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 purpose
4: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 it
4: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 to
4:20
factor out the UI
Copyright © 2012 by ASNA. 33
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 layers
4: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 forms
4: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
layout
4: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 enterprise
4: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 possible
4: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 bag
4: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
asset
4: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
.NET
4: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 knowledge
4: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 codes
4: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
target
4: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 .NET
4: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 list
4: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 differently
4:20
Copyright © 2012 by ASNA. 48
Notas del editor 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!