Book 1: Prepare For Your Journey: Know Your Goals & Chart A Course
Book 1: Prepare For Your Journey: Know Your Goals & Chart A Course
Sponsored by
Transforming IBM i Applications
Your Journey Beyond “Modernization”
CONTENTS
Prepare for Your Journey 1
Sleepless in Seattle 4
Silver Bullets 5
Business Drivers 8
Other Technological Drivers 9
Guiding Principles 11
Application Assets 13
Enterprise Application Architecture 16
Conclusion 22
Looking Ahead to Books 2 and 3 23
Prepare for Your Journey
Know your goals & chart a course
It’s a wonder IBM i IT managers can sleep at night. To be sure,
the hardware and operating system provide legendary reliability
and virtually (pun intended)
painless transition of applications
to new generations of i hardware
and new operating system releases.
• How will the current applications’ cumbersome user interfaces, “silo” application structures and other
“legacy” design issues be refreshed and reengineered to meet our business unit’s and partner’s growing
expectations? We need to be delivering efficient, integrated capabilities, including workflow, rich media and
“anywhere/any device” access to business data and functionality.
• How will IT staff keep up with the skills and tools – old and new – required to deliver the level of application
innovation and agility demanded by enterprises in this tough, competitive global economy?
• How can these applications be rapidly deployed with equivalent functionality on both the IBM i and Windows
.NET if an enterprise merger or acquisition makes that necessary?
1
2
I’ll address all these elements in a three-part eBook -- a
trilogy. This installment looks closely at the challenges faced
by IBM i organizations and their IT managers, including
specific risks and opportunities. You’ll gain insight into how
major business and technological drivers are forcing many
IBM i organizations to transform their legacy applications
and development strategies to meet the expanding demands
of successful enterprises. I then lay out a path to finding
solutions, starting with a set of guiding principles you should
follow in determining the specific development strategy
that’s right for your organization. This book concludes by
explaining how IT organizations can use an enterprise
application architecture as the foundation for transforming
their IBM i applications and development methods.
3
Sleepless in Seattle
There was a time, not that long ago, when no right-thinking organization that
ran on an AS/400 would even consider another platform for serious business
applications. In that AS/400 “golden era” there was also an abundant supply
of capable programmers who knew and loved RPG, CL and OS/400. In this
simpler IT world, the relative richness of 5250 display features seemed to
satisfy most end-users.
When you see what a company like Google has accomplished by pushing their use of these
capabilities to the limit, you realize other companies – possibly some of your competitors –
won’t be far behind. The potential for leveraging technology is enormous.
But for managers of IBM i shops the risk of being left behind is also obvious. Patching up old,
monolithic, RPG applications that have 5250 interfaces isn’t going to cut it, no matter how reliable,
secure, or easy to manage the IBM i can be. And the diminishing pool of skilled RPG developers makes
even holding your head above water a real challenge.
4
“Silver Bullets”
Facing these kinds of pressures, it’s not surprising that some
organizations have looked to a variety of “silver bullets” for their solution.
“Screen scraping”
In the early days of the Internet, it was understandable that the AS/400’s
lack of a native graphical user interface was seen as the fundamental problem,
and providing a Web browser interface as the complete solution. “Screen
scrapers” became the first “silver bullet,” and they did eventually deliver visually
attractive mappings of an application’s 5250 input and output to Web pages with
“clickable” entry fields and menus.
“Rip-and-replace”
As new mobile devices, programming languages and interoperability protocols made the true power of the Internet more apparent,
IT organizations came to recognize the limitations of screen scraping. What seemed to be needed was a whole new way of creating
applications, and IBM and Microsoft were ready to offer their solutions to the problem – switch to Java or .NET.
5
Both the Java J2EE and the Windows .NET platforms, along with a bevy of supporting tools and utilities,
provide rich foundations for contemporary applications. And, of course, there are additional
alternatives (such as PHP) in what might loosely be considered the UNIX/Linux open source
world. While these platforms provide good underlying infrastructures for “greenfield”
development, they haven’t turned out to be the “modernization” solution that most
IBM i shops need.
While a few IBM i organizations have dabbled in Java, .NET, or PHP applications, to my
knowledge not many have voluntarily leapt entirely to any of these alternatives and left
behind their RPG. There have been a number of cases where an organization that formerly
relied on the IBM i has been absorbed in an acquisition or merger, and the organization has
been forced off the i entirely.
My experience consulting with IBM i development groups suggests that many developers find it difficult to gain mastery
of Java or .NET while still keeping their RPG skills sharply honed. A large part of the problem is that programming for J2EE
or .NET requires not only learning a new language, but also learning an enormous number of methods (i.e., procedures)
and programming techniques to implement basic user interactions, database access and business logic. Exploiting the full range
of Internet, mobile and interoperability capabilities requires even more extensive knowledge of complex J2EE or .NET frameworks.
6
Many IBM i organizations find themselves “stalled” in their development strategies because screen
scraping doesn’t address the big issues and a “rip and replace” switch from RPG to Java or .NET is
prohibitively expensive and risky. Meanwhile more RPG code keeps getting added to the
maintenance burden, and frustrated departments continue to implement their own
“skunk works” applications in .NET or PHP.
For an IBM i manager, the obstacles can seem insurmountable. But let’s take a
deep breath and tackle the problem by first understanding the business and
technological drivers, identifying key principles and objectives and looking
more closely at our application assets. Then we’ll be able to describe our
goals and execute a plan to reach them.
7
Business Drivers
It’s no exaggeration to say the Internet and the huge increases in available
computing power have changed every dimension of business over the past
decade. The Internet makes possible a direct, rich relationship with almost
every customer and trading partner. In addition, the Internet creates a virtual
community in which all of an enterprise’s human and information assets can
be immediately accessible, on a controlled basis, to every employee, customer
and trading partner. Enterprises that have strong assets and know how to use
today’s technology to apply these assets to create better products and deliver
exceptional service will not only survive, they’ll thrive, even during stressful
economic periods such as we’re experiencing now.
Here are some of the ways leading businesses are using truly modern applications:
• Providing sales and service to customers any place, any time on any device
• Helping customers quickly determine their needs and then find high-value solutions through sophisticated Web sites and portals
• Attracting new customers through non-traditional channels, such as social and professional networking sites
• Increasing employee productivity and quality of service through workflow automation
• Integrating documents, images and voice with transactional data to improve the quality of business decisions and service
• Reducing cost of materials by broadening the pool of suppliers and creating faster and less expensive systems for supply chain
ordering and fulfillment
• Integrating product and service offerings more closely with complementary products and services from business partners
There are other important business drivers, as well. The global economy requires being open for business 24x7 with localized applications
dealing in multiple currencies. Industry consolidation through acquisitions and mergers often requires support for running applications on
Microsoft Windows or other platforms in addition to, or in place of, the IBM i. And difficult economic conditions place a premium on
minimizing risk – a failed initiative that 10 years ago would be a temporary setback can sink an enterprise today.
In general, IT organizations are being put between the hammer and anvil, with enterprises looking for more IT capabilities and greater agility,
while keeping costs and risk low. As a result, IT managers are expected to preserve the value of current assets while making steady, incremental
improvements in productivity and better aligning applications with business strategies.
8
Other Technological Drivers
I’ve already mentioned the game-changing aspects of the Internet
and increased computing power. The blistering evolutionary pace of
several pivotal technologies is expanding the reach and capability of
today’s applications. Among the most important trends are the
following:
9
All three of these trends increase the need for, and technical complexity
of, integrating applications that are running in different locations – i.e., in
the “cloud,” on the enterprise’s servers and on personal computers and
mobile clients – and which are not always connected to one another.
One of the most challenging aspects of the continuing evolution of
such distributed computing is keeping data and workflow processes
synchronized across platforms and applications.
10
Guiding Principles
That’s quite a challenge. Before I dive into a strategy to meet that challenge, let’s
enumerate some guiding principles. Most importantly, the solution must be
business-driven. This means you don’t focus solely on the technical dimensions
of platforms, languages, or other technology.
What it does mean is that you create a
strategy that will efficiently deliver the
right information and capabilities to
the right people at the right time, Guiding Principles for a
as determined by changing business needs Transformation Plan
and initiatives. This core principle implies
applications will also provide highly
functional user interfaces and pervasive • Business-driven solutions that
integration with other applications, deliver the right information and
including within business process
capabilities to the right people at
workflows.
the right time
A business-driven strategy must also minimize risks, among which • Minimize risks from inflexible
the most serious risks to avoid are: applications that are too hard to
adapt to changing demands
• Failure or delay in adapting applications to capitalize on time-critical • Capitalize as much as possible on
business opportunities or to respond to competitive initiatives
current application assets
• Inability to meet trading partners’ interoperability requirements
• Inability to deliver applications on a new platform, such as .NET, • Deliver more than just a graphical
should this become essential due to an acquisition, merger, or user interface
other business requirement • Agility, productivity and reliability
are the hallmarks of “new
As mentioned earlier, another fundamental principle for most generation” applications
IBM i organizations is to capitalize as much as possible on
current application assets, both as executable code and as
a fine-grained definition of business rules and processes.
11
From a technical perspective, the strategy must go beyond “modernization” of just the user interface.
While graphical interfaces are clearly a requisite element of a “modern” application, the real
hallmarks of “new generation” applications are agility, reliability and productivity. Agility
provides the ability to meet rapidly changing business and/or technological demands, and
productivity means you can deliver more capability with better quality and at less cost
than you did with previous approaches to legacy applications. Very high reliability is
essential to achieving agility and productivity. You simply cannot keep up with the
pace of change if your organization is constantly diverted into repairing
malfunctioning or deficient applications.
Figure 1 provides a list of specific technical capabilities that “next generation” applications
should support. You can see how each of these elements can play an essential role in delivering
the right capabilities wherever and whenever they’re needed.
12
Application Assets
As I’ve already mentioned, many enterprises have large amounts of legacy code
constituting substantial enterprise assets. While legacy applications may have
outdated user interfaces, lack support for current technologies such as mobile
devices, and be limited to their own “silos,” nevertheless, the code contains
potentially thousands of very precisely defined rules about the enterprise’s
structure and processes. The challenge, of course, is to extract this embedded
knowledge, a hurdle I’ll address below.
13
Exploiting legacy programs requires some means to execute selected parts of the
code as if via a procedure call, even if the desired code isn’t isolated in a
procedure with suitable parameters. As a simple example, let’s consider a pricing
function, which involves business rules and accessing item- and customer-specific
information from a database. When this code is cleanly encapsulated in an ILE
procedure, the only requirement for new applications is that they be able to make
an ILE procedure call, either directly or through an intermediate mechanism, such
as invoking a service.
14
Conceptually, you can think of the approach I’ve just
described as having a “virtual user” behind the scenes who
receives requests for some function or operation and uses
the information in the request to navigate legacy
applications and enter appropriate data. When the legacy
application displays its results, the “virtual user” returns
just the requested information in the format that was
requested. Such a “virtual user” provides potential access
to every function and operation implemented in interactive
legacy applications.
Legacy source code is also written in a form that current staff can comprehend. As
an enterprise transforms its applications, developers responsible for creating the
“new generation” applications must understand the applications’ functional
requirements in order to create and maintain them. This is true no matter which
new languages or tools are used. Exploiting the descriptive value of legacy
applications, however, depends on being able to interpret the code as a
“specification.” Thus, realizing the full value of legacy code depends in large part on
a transformational strategy that uses current development staff to the best
advantage – a point I’ll return to shortly.
15
Enterprise Application Architecture
Keeping business and technology drivers, our guiding principles and the value and characteristics of legacy applications in mind, the first step
in an effective transformational strategy is to identify an enterprise application architecture (or just application architecture, for short). An
application architecture lays the necessary foundation for pervasive agility, productivity and reliability in application delivery and deployment.
An application architecture describes how a set of building blocks and principles should be used to design, implement and adapt applications
that fulfill the enterprise’s business objectives. A well-thought-out application architecture not only provides a conceptual structure to guide
developers; the architecture lays the foundation for a corresponding framework and tool set that can automate much of the application
development effort, an essential prerequisite for greater agility, productivity and reliability.1
A sound enterprise application architecture can take many specific forms, but there
are eight “pillars” that should always be in place. The architecture should:
1 This section is excerpted and condensed from my previous whitepaper, The Eight Pillars of an Enterprise Application Architecture. The full whitepaper provides an
in-depth discussion of application architectures and provides advice on how to establish an application architecture in your own organization.
16
Pillar #1 – Is Based on a Framework
A software framework is a collection of reusable artifacts that cooperate to implement the design inherent in an application architecture.
While the definition of an application architecture itself is abstract, the corresponding framework is concrete, enforces standards and
comprises such elements as executable runtime routines, procedure libraries, source code segments and higher-order (aka “4GL”) languages
and associated code generators.
The essential point here is that to derive actual benefits from an application architecture, a framework must provide most of the code for
applications that conform to the architecture.
The pivotal advantage of a repository is that shared application items can be stored, managed and reused effectively. Items like data element
definitions, business calculations, user interface templates, code snippets and so forth can
be defined once and used across many applications and developers in a consistent manner.
Having one definition for a shared repository item yields application consistency, and having
a “single point of truth” greatly simplifies modifications to applications.
Guidance includes a consistent and flexible set of steps to define an application using the items from the repository and supported by the
framework. Thus, developers can take advantage of the architecture without having to master all the architecture’s details. The heart of
automation is code generation for both the “plumbing” and “glue” code that often constitutes the bulk of an application’s source code, but
adds little or no business value to the application itself. With automated tools, developers can select from templates and repository items and
define much of an application by specifying options for code generation. The developers can then concentrate most of their efforts on the
unique parts of an application that provide business benefit and use the higher-order language of the framework to implement these parts
without having to write the plumbing code.
17
Pillar #4 – Is Based on a Service Oriented Architecture
Basically, a Service Oriented Architecture (SOA) uses a modular structure in which a service is implemented as a chunk of code that returns a
result or causes some side-effect. For example, a service might calculate and return a credit rating for an individual, reserve an airplane seat,
send an email message, or start a piece of equipment.
At the implementation level, a service is fundamentally a more flexible procedure or method — an invocable chunk of code that has a name
and, optionally, parameters and local variables, and that returns a value or produces a side-effect. What distinguishes services is that an
application can invoke a service locally or remotely via an invocation protocol that isn’t tied to any language, operating system, or proprietary
Web application platform. For example, using the Web service protocol, a C# application running in a .NET environment can invoke a service
implemented in ILE RPG running under the IBM i operating system.
Among the benefits of SOA is a protocol for providing or consuming services from other enterprises, either trading partners or service
providers. An SOA architecture is also almost essential for incorporating application functions into an automated workflow environment. A
particular value to IBM i organizations is that SOA and supporting tools provide
a powerful way to integrate legacy functions into a modern application
strategy; in effect, greatly expanding upon the application interoperability
provided by ILE.
18
Pillar #6 – Supports Multiple Application Interfaces
The people that participate in an enterprise’s business processes have varied application interface requirements. Heads-down data entry in a
local office is much different than mobile access by a sales representative at a customer site. Shop floor workers often need specialized
devices and manufacturing and other equipment itself requires an entirely different set of application interfaces. Customers purchasing from
the enterprise’s Web site want an easy-to-use browser interface; while enterprise managers and analysts need a powerful rich client.
An application architecture must address multiple application interfaces in two main ways. First, it must structure applications so that
business logic, data access and application interfaces are separated. Second, it provides the framework, repository capabilities and tooling to
support a wide range of specific devices and protocols. The ultimate goal is that
applications’ capabilities can be easily exploited through any number of alternative
interfaces, including user interfaces and SOA application interfaces.
Deeper integration can be achieved by exploiting a Service Oriented Architecture using the “wrappering” technique described earlier. This
non-invasive approach doesn’t require modifying existing application code. A more fine-grained alternative is to selectively refactor existing
legacy code into procedures and wrapper these procedures with code that makes them available as services.
Working in the other direction, a legacy application that’s embedded in the architecture’s navigation structure can be extended by adding calls
to services implemented either as new code or as legacy code that’s been adapted as described above.
19
Pillar #8 – Manages Application Evolution
The final pillar of an application architecture is a viable means to manage the evolution of applications so at the end of the next 10 years of
development, the IT organization doesn’t find itself faced with another portfolio of outdated applications that need another round of
“modernization.”
There are several keys to this capability. Previously described pillars – framework-based, an application repository and automation and
guidance – provide isolation from underlying technology by supporting a model-centric, rather than language- or technology-centric approach
to defining applications. Another pillar – Service Oriented Architecture – ensures that even code that may not conform internally to a future
version of the application architecture can still interoperate because the SOA invocation
protocols are specifically intended to provide language and platform independence. It’s
conceivable, of course, that the SOA invocation protocols themselves may evolve, which
would require changes to the services wrapper code. This code, however, should be part
of the framework and/or generated code and be updated automatically.
Turning this vision into reality, however, takes time, careful planning and appropriate tools. Figure 2 provides a high-level summary of the
recommended steps to establish an enterprise application architecture. The Eight Pillars of an Enterprise Application Architecture whitepaper,
referenced earlier, covers these steps in more detail.
20
Figure 2. Key steps to establish an enterprise application architecture
Describe current IT practices and tools Implement or acquire and deploy the Embed legacy applications, extend
for delivering and supporting framework, repository and automation selected applications and begin
applications. tools in a production environment. developing new applications.
21
Conclusion
For most enterprises with a large portfolio of IBM i legacy
applications, transforming these applications is a matter of
“when” and “how,” not “whether.” The task may at first seem
too large and complex to accomplish, especially without
considerable expense and risk.
But as I’ve tried to lay out in this book, there are sound ways to
approach the problem. The most pivotal step is to consistently
follow a business-driven strategy. This involves understanding
what drives the need to transform your IBM i applications, both
from your own enterprise’s business requirements and the
dramatically changed technological landscape upon which your
enterprise – and its competitors and partners – conduct
business.
22
Looking Ahead to Books 2 and 3
Be a Savvy Traveler is the next book in this series
and lays out the steps to create an incremental
transformation plan. The ultimate transformation
goal is far reaching – to implement a
comprehensive enterprise application architecture
encompassing all your legacy and new applications.
But the goal should be reached through a series of
non-disruptive steps where each step produces
immediate returns and minimizes risk. This
upcoming book dives deeply into a variety of ways
your enterprise can reuse, recycle and reengineer
legacy applications. I also cover an approach that
puts your current IBM i development staff in the
right position to create success (Hint: This doesn’t
require turning them into Java programmers.) Book
2 also provides advice on minimizing risk and other
aspects of a sound plan.
The third book, Embark with Confidence, completes the trilogy by looking at specific technologies and practices that support
a non-disruptive, low-risk transition process from an organization’s current application portfolio and practices to a “new
generation” of applications and an architecture-based approach to development. The final book takes a close look at
application generators as a potential tool, and provides a set of scenarios and a specific sequence of decisions an IT
organization can work through to assess the level of risk in using an application generator. Embark with Confidence also
presents a list of criteria to evaluate contemporary application generator products. This book concludes the series by
enumerating a set of “best practices” for a successful transition process.
After reading the entire series, you’ll be prepared to help your IT organization put a transformation plan in place and begin to
experience your first successes. Not only will this deliver the level of IT capability your enterprise needs; you’ll also reap
another benefit – the ability to sleep without worrying about the IBM i’s future.
23