Design Considerations For Distributed Systems
Design Considerations For Distributed Systems
for distributed
applications
by J. J. Rofrano, Jr.
Probably the hardest part about developing a A distributed application requires more logic
distributed application is determining where to than just the communications between a work-
start. There are multiple hardware and software
platforms to understand, network traffic station and a back-end server or host. Different
implications, and numerous tools and programming paradigms must be blended and in-
technologies to consider. One question, however, terfaced. One paradigm views the rws as an ex-
transcends the importance of what platform to tension of the host world; the other views the host
pick or what tool to use: that is, how do you as an extension of the rws world. We examine the
design it? This paper represents the results of
two years of work with customers regarding this two approaches in greater detail but, regardless of
question. The paper explores some of the one's perspective, the graphical user interface
implications of working in a distributed found on the present programmable workstations
environment, reviews some rules for data and has an impact on the design of the application.
function placement, and introduces a
methodology for distributed application design.
The mix of skills needed to implement distributed
applications may have an impact on the organi-
zation of current software development depart-
ments. Most end-user's jobs were probably de-
fined by existing computer applications, whereas
new applications should expand the existing
T wo popular terms, cooperative processing
and client/server, are used to describe dis-
tributed applications. These two terms, however,
scope. In fact, if the application does not change
the work habits of people, then the technology is
not being exploited. Many things are to be con-
often mean various things to different people. In sidered in designing the physical connection be-
the context of Systems Application Architecture* tween the portions of the distributed application,
(SAA *), an SAA application is one that runs on an such as scalability, configurability, and perfor-
SAA platform, conforms to Common User Ac- mance.
cess" (CUA*), uses the Common Programming In-
terface (CPI), and is designed for cooperative pro- This paper reviews some of the issues involved in
cessing. 1 Most people understand hardware and understanding the distributed processing envi-
software platforms and what a common program- ronment and designing applications to take ad-
ming interface is. However, the expression "de-
signed for cooperative processing" brings to mind ©Copyright 1992 by International Business Machines Corpo-
ration. Copying in printed form for private use is permitted
a broad definition of an application that can be without payment of royalty provided that (1) each reproduc-
split between a programmable workstation (rws) tion is done without alteration and (2) the Journal reference
and a host. Likewise, the term client/server has and IBM copyright notice are included on the first page. The
been often broadly defined as an application title and abstract, but no other portions, of this paper may be
copied or distributed royalty free without further permission
whose "client" part makes requests from a "serv- by computer-based and other information-service systems.
er" part that resides somewhere in a local area Permission to republish any other portion of this paper must
network (LAN) environment. be obtained from the Editor.
MVS
IONS
IONS
IONS
DISTRIBUTED APPLICATIONS
USER'S VIEW
OS/2
NEW APPROACH
TO APPLICATION DESIGN
DISTRIBUTED APPLICATIONS
rT~::;:::'::;:5'=j- - - - - - --'-------------'
chronously. There may be a work-load shift, but The addition of a consistent graphical user inter-
not necessarily in the intended direction. face for applications seems most powerful of all
the extended possibilities in distributed process-
Greater connectivity options. The PWS will also ing. The increased user productivity will affect all
provide the ability, in some instances, to continue applications.
processing if a host link fails or to have the option
of working remotely without a host link and batch Distributed application design
upload to the host later. The possibilities are lim-
ited only by our understanding of the capabilities While distributed processing introduces transpar-
of each platform. ent application execution to the end user, the ap-
- USEOBJECT-ORIENTED DESIGN
(Le.,MODULAR/ENCAPSULATED)
plication programmer has some conscious deci- discussed in greater detail when we explore func-
sions to make, as outlined in the lower righthand tion placement.
corner of Figure 1. A new approach to application
design is required, along with a new application Having function execute on multiple platforms
structure to support placement of function and raises the problem of how to determine the split
data across multiple platforms. In the past, the point. The easiest solution is not to think in terms
programmer never worried about where to place of split points, but to design the application from
the data or end-user interface or where the code the start with separate functions that will execute
would run-it all ran in the same place. This on an unknown platform (see Figure 2). The plat-
changes in a distributed environment. The devel- form will probably be determined by what the
oper must acquire skills to know when and where function does or what object it must manipulate.
to split application function and must decide on (For example, the manipulated functions include
what platforms to run them. Tools are necessary the data functions on the same platform as the
to help make and execute these design decisions. data, the compute-intensive calculation function
on the processor with a floating-point accelerator,
Ideally, the functions should be placed on the or the end-user interface function on the work-
platform where they perform best or where shar- station.)
ing is desired. The benefits are in reuse of code by
multiple applications, as well as good perfor- The application becomes a collection of self-con-
mance by executing code on the platform it runs tained functions that, when executed in a partic-
best. "Best" is whatever is best for the enter- ular sequence, perform a business process. These
prise; in some instances this means best perfor- same functions executed in another fashion may
mance, in others it means the cheapest platform. perform a completely different process. The abil-
Whatever the goals are, function should be placed ity to reuse functions in multiple applications is
where it will best meet these goals. This topic is very advantageous in today's environment of
.t
APPLICATION FUNCTIONS ~IIIIIIIIIIIIIIIIIIIIIIIIII
SHOULD BE PLACED WHERE
THEY EXECUTE BEST
J:::::
r-:---:--..,.....,
?•
o - SOME DECISIONS
ARE OBVIOUS, WHILE
OTHERS ARE NOT
growing application backlogs. Using object-ori- on a particular platform should not stop the pro-
ented design is a good way to achieve this goal. grammer from writing the modular, portable code
These functions could even be available as end- that will take advantage of these common serv-
user computing tools. Think about the power of ices as they become available.
end-user tools like spreadsheets hooking into
company functions, like calculating commission Applications then, are broken down into a series
rates using the latest rate tables. of requests to be carried out on some platform.
These requests should be made through an inter-
Platform portability can be attained by using com- face that is common to all platforms and trans-
mon programming interfaces for both languages parent to the application programmer.
and services. This makes both of them portable as
the objects they manipulate move. There is a re- At some point the programmer will want to as-
quirement to have a common way to call these semble these functions (or code modules) into an
functions in all environments, directory services, application (see Figure 3). When it is assembled,
and routers to keep track of where data and func- there will be some placement decisions that will
tion objects reside. The absence of these enablers be obvious, while other placement decisions will
r-, /
ORDER ENTRY
1. LOCATECUSTOMER
2. ENTERAN ORDER
3. OUERYPARTS
4. REVIEWORDERS
~
~
f-1=-l1 T ~
tr <,
--- ---
HARD
COOED
~;::::::::J
not. In general, we want to place those parts of dure that displays its submenu, which calls an-
the application that deal with the end user on the other procedure that displays the data entry
programmable workstation. It is also desirable to screen, and so on. To select a different menu
place those parts of the application that require item, the user must back out of the chain of
host processing or database sharing on a host sys- screens and start down a new path. This is re-
tem where they can run most efficiently. The LAN ferred to as modal operation because the inter-
environment is also a "host." If the database action proceeds in one mode at a time, i.e., the
sharing needs can be satisfied on a LAN server, user may be using the "data entry mode" or "re-
then that becomes the host to the particular ap- port mode" or "electronic mail mode." To look at
plication. Two models for application design are a report as a result of some mail that was re-
discussed next, one of which might be better ceived, the user has to back out of mail mode and
suited for distributed applications. go into report mode. One could argue that a jump
key or fast path can change the status in the menu
Hierarchical application structure. Procedure- tree, but it must be preplanned by the program-
driven or "panel-oriented" applications are hier- mer.
archical by design. They interact with an end user
on a screen-by-screen basis, usually in a hierar- The problem with this design is that user input is
chy of menus (Figure 4). Each procedure within solicited by each menu procedure that is called.
the hierarchy that needs input from the user, ac- Although structured programming and top-down
tively seeks it on its own behalf. The application design procedures have been used, no central
displays a selection menu that may call a proce- point is specified to gather user input. It is very
r---
---,
API
PRESENTA· b
TION
SERVICE
--.J
I I
I'\.
~l a
-
L
L--
difficult to write a distributed application with the Event-driven application structure. The applica-
user interface on the rws and compute-intensive tion structure for the event-driven model is quite
data processing on a back-end host or server us- different, as seen in Figure 5. This model breaks
ing this monolithic design. It is also almost im- the modal barriers of the hierarchical design by
possible to take an existing panel-oriented appli- exploiting the graphical user interface and pre-
cation and change it to be distributed. There are senting the user with simultaneous choices that
too many routines that want to get at both the end can be accessed in a modeless fashion. Multiple
user and the data from the same block of code. options are available simultaneously and are rep-
How can these functions be placed on a back-end resented as windows or icons on the screen.
host when they need to prompt for input at the Rather than a function actively seeking input from
PWS? the user as in the hierarchical model, user input is
solicited by a front-end code via the presentation
The answer is to structure the program so that services, and a back-end function reacts to these
application functions have the data passed to user events. This not only enhances usability by
them by a "front-end" procedure. This procedure offering the end user the freedom to work more
collects the data from the user on the function's naturally in a modeless fashion, but it also takes
behalf. The functions then become reactive to in- the burden of program navigation off of the ap-
put instead of actively seeking it. But how is plication programmer. Each function in the code
front-end processing accomplished? Obviously a is atomic and simply performs when called upon.
new structure is needed for distributed applica- This is called an event-driven application struc-
tions. A solution is to write event-driven appli- ture." There is nothing really new about writing
cations. event-driven applications; programmers have
00
to solicit input.
0
once in the end-user interface code and will no
longer need to be part of each and every trans-
action. This will yield a savings in host program-
mer time and contribute to reuse of code at the
o
workstation. Because of this structure, the same
a'
I--
DATA transaction can process in both real time and
o
batch mode. One of the added values in designing
an application using this technique occurs when a
L.-
communication link goes down. The system al-
lows the user to keep working on the front end
and do a batch and upload when the link comes
back up. The host transactions will not know that
there is no end user at the other end of the line,
because they now react only to input.
A DATA
REQUESTOR SERVER ~
n, REQ(A,p)
- APPC(TP,A,p)
CASE A:
CALLA(p)
- S
CASES:
CALLBO C
APPC(TP,B)
--z.-
ur
CASEC:
•••
-
REa(e,i)
~ APPC(TP,C,I)
OTHER X
~
- X
the requestor program on the rws. This particular The result is a callable interface that keeps the
example uses APPC as its communications proto- communications transparent to the user program.
col. The user should architect personalized com- A programmer writes the APPC code once, and
mands to perform the functions needed and pass everyone else uses that interface. In environ-
the parameters along with the command. The ad- ments where there exists a remote procedure call
vantage is that programmers only have to learn (RPC) interface, such as with TCP/IP, this layer of
the command set that is implemented, not the un- code mayor may not be necessary, depending on
derlying APPC. The APPC could be changed to whether the programmer may want to move the
TCP/IP or RPC and not affect the calling application application to other environments that may not
functions. have TCP/IP available. If so, RPC would be substi-
tuted for APPC and the original interface syntax
left the same.
In the example, a request is being made for func-
tion A to be performed passing a pointer P as a Conversational. If the requestor/server approach
parameter. The requestor code would then take is not appropriate for the given application, then
the data pointed to by P and ship it via APPC to the one may want to implement a simplified verb set
server function. The server code is just a router interface to APPC for programmers to code to (i.e.,
switch that calls the actual function on the host, START, STOP, SEND, RECEIVE, ERROR_CHECK,
passing it the parameters shipped to it by the re- TOGGLE_STATE). This way only a few program-
questor function. When the function is complete, mers have to write the error handling code in APPC
the server code will return the results to the re- and everyone else uses a higher level API to access
questor code via APPC, which would then place it them. Finally, if this does not yield enough func-
back into a data structure so that the application tion for the program the programmers will have to
code could extract it via a pointer. This is how the code at the native APPC level. This is not as de-
Server Requestor Programming Interface (SRPI) sirable because it makes the application "plat-
works on PC-DOS and OS/2 via LV 2 communica- form-specific" and it will not move easily to other
tions instead of APPC. environments.
FOR EACHUNIQUE USEROF THE APPLICATION: Business needs. There may be business needs for
1 DEFINETHEOBJECTS THE USERCAN MANIPULATE
data placement. A company may have a need to
decentralize and want all databases to be man-
2 DEFINE THE ACTIONS ALLOWED ON THOSEOBJECTS aged on a midrange or work group LAN system.
3 CREATEAN OBJECT/ACTION MATRIX Or there may be a policy that all data are to reside
4 SHOWHOWOBJECTS ARE RELATED TO ACTIONSBY
in one location for ease of backup, so centraliza-
PLACING Xs WHERETHEY INTERSECT IN THE MATRIX tion is key. Whatever the need, the business need
must be balanced with what is available via cur-
5 DETERMINE DATAPLACEMENT BASEDON SHARING,
UPDATE, SECURITY, CAPACITY, AND BUSINESS NEED rent technology to satisfy the local data require-
ments. Quite often, the business needs prevail
6 USINGTHE OBJECT/ACTION MATRIX, UNDERSTAND
THE MESSAGE TRAFFICBETWEEN: and data placement will be determined by factors
-THE END USERANDTHE APPLICATION outside of the application. In these cases, trade-
- THE INTERNAL APPLICATION FUNCTIONS
- THE APPLICATION ANDTHE DATA
offs must be made as to where to place the ap-
plication function given the current data place-
7 DETERMINE FUNCTION SPLITBY FINDING THE POINT
WITH THE LOWEST TRAFFIC(NOTE: THIS MAY
ment.
INCLUDE NO SPLITAT ALL BY USINGSOME FORMOF
DISTRIBUTED NETWORK SERVICES)
Determining function placement
8 REPLACE EACHX IN THE OBJECT/ACTION MATRIX
WITHTHE NAMEOF THE PLATFORM ON WHICHTHAT
FUNCTION SHOULD EXECUTE
The general rule for function placement is to keep
the function near the object it manipulates. If the
9 REPEAT PROCESS TO A GREATER LEVELOF 'ACTION'
DETAIL
function manipulates screen objects, it is kept on
the workstation where the display is being done.
If the function manipulates data objects, it is kept
on the node with the data. This can best be shown
by using an application sample, applying the rules
for both data and function placement as previ-
Table 1 Database descriptions ously discussed. A tool called an object/action
matrix is introduced to help determine the best
Database Description platform for function placement. The steps for
determining function placement can be seen in
Customer details Company-wide customer
information Figure 7.
Inventory of parts Warehouse inventory
Price catalog Company-wide prices for parts We now take a set of functions in a sample ap-
Daily orders Current orders in process plication and apply this methodology. The exam-
Pending orders Orders committed but not filled
ple is the order entry function of a parts supplier
warehouse. It is important to note that this ap-
plication may, in fact, perform more than just this
The rule-of-thumb is: if the developer determines one function or be used by more than one user
the best placement for data, only to find that there group. This methodology takes the perspective of
is not enough capacity for the data on that plat- a single user of the application for a particular
form, then the developer must either increase the application function. In the example we are only
capacity on that platform or move the data back concerned with the order entry function. There
to the next up-stream platform that has the ca- may also be an order analysis function or an in-
pacity. In a distributed environment, LANs play ventory function, but the order entry clerk does
an important role to fill the resource sharing role not use it in the process of taking an order. Those
that mainframes now perform. It does not make functions should be addressed as a separate ma-
sense to have 500 workstations directly attached trix. The key is to break the functions down into
to a mainframe, with 500 copies of all the appli- simple steps.
2 Take customer details New customer? CREATE information and ADD to customer file
Existing customer? SEARCH customer file, verify information, and UPDATE if necessary
5 Check customer credit CHECK total amount of order and any pending order against credit
If OK, process order
If not, cancel or SAVE invoice for later approval
These steps should be performed for each user of enter an order into the system can be seen in Ta-
the system. It is very important to take one user's ble 2. In computer terms, getting a form is simply
view at a time. One matrix is made for the order creating a blank order form that will become the
entry clerk and another for the stockroom clerk. invoice. Taking the customer details involves two
Trying to combine several user's views of the bus- options. For a new customer, the clerk creates
iness in one matrix yields too much detail. the information and adds it to the customer file.
For an existing customer, the clerk searches the
For a new system, the first step is to gather re- customer file for information and verifies over the
quirements. For modification of an existing sys- phone that the information is still correct; if not,
tem, however, there may be a tendency to assume the information is updated, if necessary. In both
that the existing application functions are the base cases, this information is added to the invoice.
requirements. This is a dangerous assumption.
Perhaps the existing functions perform as they do
Next the clerk asks the customer for the items to
because of the limits of technology 10 or 20 years be ordered, searches the catalog for the parts and
ago when the application was first written. The
adds them to the invoice. At some point the clerk
developer should take the attitude that he or she
will check the warehouse inventory to make sure
is designing a new system and gather the user's
the parts are available; to process this order the
requirements for existing functions all over again.
clerk will need to update the inventory accord-
When technology poses limitations, we tend to ingly to commit those resources. The clerk will
make the requirements fit the solution. Taking a
also want to check the customer's credit against
new look at the application ensures that the so-
the final invoice amount to be sure the customer
lution will fit the requirements.
is in good standing. The algorithm for this is sim-
ple: Check the total amount ofthe order, plus any
Work flow and data definition. The first thing we
pending orders the customer has not yet been
need to do, as in any application design process,
billed for, against the customer's credit limit. If
is to understand the current business process. In
the credit is good, then process the order; if not
our example, this is the order processing proce-
the clerk may want to save the order details for
dure. The data associated with entering an order
further credit authorization from a manager or
can be found in Table 1. We start with this ex-
supervisor.
ample and decide how we can make use of dis-
tributed processing.
Finally, when the checking is complete, the clerk
In response to a phone call from a customer the processes the order by adding it to the pending
order entry clerk begins the order entry process. order file. Each action in the activity portion of
The steps that the order entry clerk follows to Table 2 is highlighted by using all uppercase let-
OBJECTS
ACTIONS
CUSTOMERS INVENTORY PRICE CATALOG DAilY ORDERS PENDING ORDERS
~
CREATE
~ ~
SAVE/RESTORE
~
UPDATE
~ ~ ~
SEARCH
~ ~ ~ ~
ADO
~ ~ ~
CREDIT CHECK
~ ~ ~
ters. This defines all of the actions the order entry would be the order entry clerk's "database view"
clerk performs. of the customer file.
Object/action matrix. Now that the actions that On the left side of the matrix are listed all the
are carried out during the order entry process actions that are allowed on those data objects by
have been defined, and the data files are identi- the clerk. The terminology used for these actions
fied, it is time to understand the interaction be- is not of primary importance. It is best to use
tween the two. By thinking of the data as "ob- colloquial terms that reflect the user's perspec-
jects" and the things done to the data as tive. While it is very easy to get caught up in the
"actions," a matrix can be built to show the in- definition of terms, what is important is that the
teraction between the two. We call this the ob- clerk has logged the action needed.
ject/action matrix (see Figure 8).
Once the matrix is set up, we place an "X" in each
Across the top of this matrix are listed the data box where an action is allowed on an object, to
objects that the order entry clerk is allowed to show a relationship between the two. This serves
manipulate to process an order. These objects are a dual purpose. First, the developer can quickly
defined at the database or file (record) level for see which functions will need to be written. Sec-
simplicity. In reality, objects may have to be de- ond, the developer can see that actions like
fined at the field level. Perhaps the order entry "search" and "update" are used quite often. This
clerk is not allowed to see all the information in is an indication that some code can be reused by
the customer file. In this case the data object making the core of these functions generic enough
The level of sharing for the customer details file Although the price catalog is another file whose
is at the warehouse level so the tendency is to sharing scope is company wide, it is only updated
leave it on the warehouse host. It is updated daily weekly, so we download a copy to the LAN server
and the system may not have the capacity on the and access it via a remote server function or lo-
LAN server to download it and then refresh it each cally from the rws. Since the order entry clerk is
- MAINTAINS CORPORATE
HOSTSYSTEM CUSTOMER DETAILS
PRICECATALOG
CUSTOMER DETAILS
PRICECATALOG
INVENTORY OF PARTS
- THEREARE 3 REGIONS
- EACHMAINTAINS ITS OWNHOST PENDING ORDERS
DAILYORDERS
IIIIIIIIIIIIIIIIIIIIIIIIII
-11111111111111111111111111
::.-----1B IIIII1
IIIII1
TOKEN-RING
LAN
CUSTOMER DETAILS Extract for warehouse and download to Local access to extract
Shared by company LAN server (access too frequent for Use remote data access for exceptions
Updated daily remote data access)
PRICE CATALOG Batch download weekly to LAN server Local to LAN server
Shared by company
Updated weekly
not allowed to update prices, the database is a livery and a three-day backlog exists, then one
read-only database that should not be a problem, must ask if a batch update at the end of the day
given that the system has the disk capacity on the is really going to cause an impact. In the sample,
LAN server. This is the approach that should be this company's policy is the latter, so the decision
taken for most read-only files like rate tables and is to keep the pending orders file on the host for
other static files. We get them as close to the user sharing reasons, but add to it from the daily or-
as possible for performance and refresh them only ders file on the PWS in batch mode each evening.
as needed.
This is a case where the designer questions cur-
The daily orders file is created on the host and rent practices based on business need. It may
stays just long enough for some authorization pro- have been easy to design the application with
cess before it is appended to the pending orders real-time updates in the past because the appli-
file. The file is currently viewed as data that are cation ran on one system, but was there a busi-
shared at the warehouse level because other ness need for it? The author strongly suggests that
workers need to share the data for authorization designers look at the business requirements and
purposes or to fill the order. As suggested earlier, not rely on how the previous application handled
while the data are in the hands of the order entry a particular problem.
clerk, they can be viewed as private data until
ready for submission. It is for this reason that we New physical layout. Figure 10 shows the new
place the data on the workstation and then add the physical layout of the data placement. The parts
data to the pending orders file at some predeter- inventory file is maintained at the host, as is the
mined interval. pending orders file. Rather than updating the
pending orders in real time, we batch and upload
Since the shipping department needs the pending the updates on a daily basis. A full copy of the
orders file to fill the orders, it is shared at the price catalog is downloaded to the LAN server, as
warehouse level. The developer could also prob- well as a regional extract of the customer details
ably add to it in real time from the daily orders file file. The daily orders are maintained on the PWS
today, but does the business really require real- until they are batched and uploaded to the host.
time access? If the business policy is next-day
shipping, then perhaps this is true, but if the bus- Application function placement. Now that the
iness policy is to allow six-to-eight weeks for de- functions (or actions) that need to be written have
INVENTORY
CUSTOMER FILE
FILE
(MASTER)
PRICE CATALOG
(MASTER)
PENDING
ORDERS
BATCH
BATCH BATCH
DAILY DAILY WEEKLY
ORDERS
[~
~
I I I I I I I I I I I I I I I I I I II I I I I I I
~ 111111111111111111111 PRICE CATALOG
(FULL COPY)
.>--""" 111I11
I11111
TOKEN-RING
LAN
CUSTOMER FILE
(REGIONAL EXTRACT)
shown in Figure 12. Since the customer file and that the traffic is too much, this is not a good
the daily orders file are both on the PWS, the func- choice.
tion can run on the rws and access the pending
orders file remotely. If this is not a lot of data, this This is an example of how using some form of
may still be a good idea; but if the data are too remote request works to a point. If the system is
large, or the frequency of credit checks is such in a small company that does not have many
OBJECTS
/-:--'"""" ,f~H -, ": I, '.'fjll'l' ,'Ct •• ',., "
DATA
CUSTOMERS INVENTORY PRICECATALOG DAILYORDERS PENDING ORDERS PLACEMENT
(LANSERVER) (HOSTS) (LANSERVER) (PWS) (HOST)
ACTIONS (EXTRACT) (FULLCOPY)
,
~
, , .': '"
" ";';', '
"
' "'e
_" ~t
pending orders, this method might work fine; but transaction rates and is preferred for this partic-
if we have a large corporation with hundreds of ular type of request.
pending orders, this method might break if the
data coming across the link from a distributed
request are too much to handle. This is not a ro- It is important to only use distributed data in a
bust design. line-of-business application when one can safely
predict or limit the volume of data to be trans-
A better solution is to write the credit check func- mitted from a given request. The network may be
tion to run on the host with the master customer able to absorb a few ad hoc queries, but busi-
file and pending orders file. After all, the only nesses do not want all the order entry people mak-
thing needed from the rws is the customer num- ing voluminous queries all day, every day, for
ber and the amount of the invoice. The only re- every customer invoice.
sponse required is the customer number and an
accept or reject notification. If the credit check
function is run as an synchronous task, the cus- Methodology summary. To summarize, we start
tomer number is not needed because the user is by taking the view of one end user. This may be
waiting for the answer. This also eliminates the the data entry person's view, the analyst's view,
worry of how many data are returned from the or the executive's view, but we hold to that view.
credit search, because this is all contained within We then go back and make a new matrix for each
the host environment (i.e., the size of the results different user of the application, avoiding the
are always predictable). This design will not be temptation to combine all actions and objects for
affected by a growing order backlog or increased all users into one large matrix.
IIETHOD1
PWSAPPLICATION HOSTAPPLICATION
CALLCREDITCHK
CUSTNO, YES/NO
RECEIVE RESULT SENDRESULT
••• •••
DEALLOCATE
First define the objects that the user can manip- Now the designer is ready to analyze and under-
ulate. These should not be restricted to data ob- stand the message traffic between the end user
jects, as in the example. Data objects can also be and the application, application-to-application,
defined at the record or field level if needed. In the and the application and the data. The traffic be-
example they are defined at the database level for tween the application and the data is probably the
simplicity, but in reality some people may not highest. This is why we suggest that the parts of
have access to a whole record. the application be kept close to the objects they
manipulate. If one is manipulating a screen ob-
Once the objects are defined, next define the ac- ject, keep the code on the workstation; if one is
tions allowed on those objects. These can be de- manipulating a data object, keep the code on the
rived from an examination of the work flow, much processor that contains the data. Also, be very
the same as one would do for any application de- careful to understand the size of the results from
velopment. What is important is the next step, a distributed request if distributed access is the
which is to define how the objects and actions are preferred choice. Since the traffic between the
related through the use of an object/action matrix. application functions is probably the lowest, the
designer will want to choose a point within the
application that makes sense to distribute.
At this stage, examine the data placement and see
if the data can be placed as close to the user as Once the matrix is built, the designer must ex-
possible for performance reasons. Remember, plore the possibilities for making the connections.
data placement is primarily a function of sharing.
It is desirable to keep the data at the lowest level Checklist for getting started. A checklist for get-
of sharing possible. Go back to the object/action ting started is shown in Figure 13. First and fore-
matrix once this is done and add the location of most, assemble a team with the proper skills. The
the data under each object heading. core team should consist of three to five of the
~
SELECT
RIGHT
understand the implications of network traffic.
APPLICATION Network traffic is going to change. We used to
- ONETHAT LENDSITSELFTO EXPLOITING CAPABILITIES
think of PWS traffic as infrequent but occurring in
OF THE PWS large chunks. This is because we mostly down-
- DO NOT RECODE AN OLD APPLICATION TO DO THE SAME
FUNCTION
loaded files, worked with them, and uploaded the
- BE INNOVATIVEI results. The trend in distributed processing is to
• USE DIRECTMANIPULATION have a much shorter message duration but with
• ADDGRAPHICS REPRESENTATIONS TO DATA
• EXPLOITMULTITASKING CAPABILITIES OF OS/2 increased message traffic. This can be equally
devastating to a network. It is better to work on
one function and refine it until the calculations for
~
BUILD
A WORKING traffic can be trusted, than to code all functions
PROTOTYPE
first and then find out the network cannot handle
-
-
BUILDAND AGREEON USERINTERFACE FIRST
USE'REAL' FUNCTION ON 'REAL' NETWORK
the result in final test stage.
- SKILLSARE ACQUIRED DURING PROTOTYPE PROCESS
- CODECAN BE USEDIN FINALAPPLICATION
Skills are acquired during the prototyping pro-
cess. Although you may need to recode your first
prototype, most others can be used in the final
application. An object/action application is de-
signed with the user interface (objects) first and
best people available. Allow for a four- to six- function (actions) added later.
month learning curve in the respective areas of
rws, APPC, and host back-end skills.
Conclusion
Next, select an application that lends itself to ex-
ploiting the capabilities of the PWS. It should be When applications are developed that are distrib-
something small enough to manage easily. Do not uted across multiple platforms, there are always
simply recode an old application to do the same tradeoffs to be made. Clearly if one must capital-
function in a distributed manner. No one will see ize on system services that are specific to one
the benefit. Add additional function that exploits platform, the design will suffer if it needs to be
the PWS so people will say, "You can't do that moved to other platforms. Still, distributed pro-
with a nonprogrammable terminal!" Be innova- cessing can be a powerful base for application
tive, use direct manipulation, add graphic repre- design, where the resulting application should
sentations to data that were only shown in tabular provide a better result than could have been
format before. Exploit the multitasking capabili- achieved with either the rws or mainframe tech-
ties of OS/2 so that things like credit checks and nology alone. All this is achievable with today's
table lookups are performed asynchronously and technology.
work goes on in the foreground while back-end
processors operate. Applications can be written to perform well
regardless of the underlying topology. The appli-
Build a working prototype. Because all applica- cation design should provide scalability, accept-
tion function will be driven by the end-user in- able performance, and reconfigurability for future
terface, build and agree on the user interface first. growth in the enterprise. A good application de-
Acknowledgments
I would like to thank Allan L. Scherr who not only
provided the basis for this work, but from whom
I have learned so much in the time I have worked
for him. I would also like to thank the customers
who worked with me in validating my methodol-
ogy for function placement. Finally I would like
to thank Oliver Simms, IBM United Kingdom
Technical Support, for the use of some of his
charts and figures and for sharing his ideas on the
event-driven application model.
'Trademark or registered trademark of International Business
Machines Corporation.
"Trademark or registered trademark of Microsoft Corpora-
tion.
Cited references
1. SAA Guide for Evaluating Applications, G320-9803, IBM
Corporation; available from IBM branch offices.
2. A. L. Scherr, "SAA Distributed Processing," IBM Sys-
tems Journal 27, No.3, 370-383 (1988).
3. R. N. Manicom, The Mainframe Versus PC Battle, White
Paper, IBM Canada Limited (1990).
4. O. Simms, "The New World," unpublished, IBM UK
Technical Support.