"He who rides a tiger can never get off or the tiger will devour him."

Software developers know the truth of this Chinese proverb. We ourselves have created an environment that forces us to cope with ever-increasing complexity. Twenty-five years as a software developer, manager and architect has taught me that every day has something to teach me. Here's what I'm learning now in the hope that it helps someone somewhere stay in the saddle and off the menu.

Thursday, February 4, 2010

Presentation Architecture: Web UI vs. GUI

This article sets out the factors bearing on the decision to implement a given user interface using a web UI or GUI presentation architecture in an enterprise architecture. It is not intended to be an exhaustive list of the pros and cons of each architecture. Rather, it presents the major differentiators that should always be considered in this decision.

Refacing Legacy Systems

Refacing is a term used to describe the process of enabling legacy applications (usually COBOL) using terminal display protocols (for example, 3270 or 5250) to present a user interface using more modern technology, typically web or GUI. In the usual sense, the term implies that the legacy display programs themselves are to remain unmodified. A typical approach is the use of software tools to generate the user interface descriptions from the display files and the use of server software to translate the user interface at run-time.

Standards for COBOL Service Interface Definitions

A service interface is the combination of:
  • The set of service operations supported by a service-enabled COBOL program
  • The set of data structures describing the input and output messages exchanged between a service-enabled COBOL program and its clients for each supported service operation
  • The interaction mechanisms by which these messages are exchanged
  • The set of guarantees that the service-enabled COBOL program asserts for each operation
The service interface describes the interface contract between the service-enabled COBOL program and all of its possible clients including data-terminal based user interfaces, batch process monitors, report programs, and web services. As long as this interface contract is unchanged, developers may change the implementation of the client without having to change the server or vice versa.

SOA Modernization of Legacy Applications

Legacy applications are generally implemented as a set of COBOL programs running directly under a mainframe operating system (for example, z/OS or i/OS). These programs use terminal I/O protocols (for example 3270 or 5250) and native print spooling facilities. Often the programs use an I/O module which abstracts access to tables in the mainframe database (for example, DB2) or even flat files under an access method (for example, VSAM). Batch programs are invoked by a batch supervisor process (for example, JECL or CL).

ESB as a Strategy for SOA Migration

Practical considerations often dictate that an organization migrate to a service-oriented architecture in stages, rather than as a monolithic project. Usually, this requires that the service-oriented architecture serve as the scaffolding for progressive re-engineering of a legacy application as well as serving as the infrastructure for new applications and extensions.

One strategy that can meet this need is to use an Enterprise Service Bus (ESB) to implement the service-oriented architecture. Assuming the required capabilities in the ESB, an architect might approach the SOA migration in several general stages.