HTML form architecture ? review of DECFORMS/ANSI/ISO FIMS

Craig Hubley of CH&A (craig@hubley.com)
Fri, 5 May 95 06:45:42 EDT

Earlier I mentioned the Forms Interface Management Standard (FIMS) of which
DECFORMS was the first full implementation. I wrote this report on it in 1991,
and it goes into some painful detail about some of the issues in forms systems.

I omitted a *lot* of DECFORMS-specific information (2/3!) from this report
but have
left in analysis that makes it clear what this product/standard did right
and wrong,
especially when compared to object-oriented approaches. Glossary, terminology,
etc. are here for those who are not so familiar with forms management in
general.

The detailed feature list, which might provide a laundry list of features
for HTML forms,
is in my next (separate) message.

The major innovation of DECFORMS/FIMS was that field and form level
validation (e.g.
ranges of values, two values that are constrained by each other, etc.) are
handled by
the form itself. Also, runtime conditions can determine whether certain
features appear.

My main criticism of it was that it fit poorly with object-oriented
application interfaces, and
it didn't really protect application developers from dealing with type
differences in
languages (a problem actually solved by the OO APIs, such as CORBA/OLE/CGI
today)

Unfortunately incorporating field level validation starts to turn a form
into a spreadsheet,
with equivalent complexity in the formulae, but if CGI-BIN functionality is
ultimately to be
retrieved from some repository via a URI, I see no problem with this.
Inter-field validation
is harder but if the form is backed by some kind of a data structure all of
the CGI-BIN
scripts can refer to it, and a final validation check can be made before the
form is actually
accepted.

-----------------------------
(excerpt from DECFORMS/FIMS report of summer 1991)

Strengths
---------
- form handles entire interactive dialog with the user
- form can validate and filter input
- form can adapt to runtime conditions
- multiple interfaces can be developed for the same application
- exchanges data with almost all VAX programming languages
- layered architecture shields developers from unnecessary details
- choice of binding mechanisms increases flexibility
- runs on the entire VAX/VMS server and VT terminal product lines
- provides upgrade path from prior VAX form products, FMS and TDMS
- rich graphic Forms Development Environment, including converters
- complies with proposed CODASYL/ANSI/ISO forms standard

Limitations
-----------
- currently (version 1.3) available only for VAX
- lacks library support for common/recommended styles
- very specific dividing line between form and application
- communication between application and form can be complex
- exported data types do not hide difference between languages
- internal interfaces subject to change as FIMS evolves
- external interfaces a poor fit with object-oriented ACA model

Relationship to other markets:

Those who need to support a wide variety of different terminal devices
and users with one program, keeping front and back end separate, can
approach the problem in a variety of ways. The range of products
available reflects those choices:

Object request brokers (as in HP's NewWave, DEC's ACA Services and the
OMG standard combining both) allow developers to divide a system into
many separate parts that communicate efficiently over a network.

User interface toolkits (including C libraries like XVT and C++
frameworks like ImageSoft CommonView, AT&T/Solbourne OI, and Apple
MacApp) allow developers to build a sophisticated user interface once
without rewriting it for each presentation device/platform on which it
is used. Applications are designed as a set of responses to events.
Few support character terminals, or multiple programming languages.

Distributed forms management products solve both problems to a limited
degree, with a single product. They support only a simple kind of
interface (i.e. a form) and a simple kind of client-server communication
(i.e. form to application and back again). They do not help developers
support interactive graphics or break the application up into more than
two (front end, back end) pieces.

This relatively large niche market is occupied by unique products like
DECforms, other forms packages (e.g. SQLforms, JetForms), somewhat less
specialized language products such as 4GLs and databases, and the very
general tools mentioned above.

Language, platform, and capability restrictions prevent most of these
products from competing directly with DECforms. However, combining UI
and client-server tools is a powerful alternative to a forms system.
DEC proved this by basing All-in-1 Phase II directly on ACA, bypassing
DECforms even though the original All-in-1 was based on FMS. DECforms
and ACA can also coexist, as they do in DEC's COHESION CASE environment.

Decision Points
---------------
product requirement comment
------- ----------- -------
DECforms FMS migration converter provided
DECforms TDMS migration converter provided
DECforms ANSI/ISO compliance DECforms is sole FIMS implementation
DECforms low-cost delivery runtime expensive for small groups
DECforms support available DEC offers services, no third party
DECforms stable product will evolve due to standards process
DECforms standard product yes, may lose out to OO approaches
DECforms consistent UI style good guidelines, no libraries yet
DECforms globalization multi-language forms and options
DECforms simple forms definition layered (editor, IFDL, escapes...)
DECforms customized UIs most UI changes can be made in IFDL
DECforms modules and binding several mechanisms, can be complex
DECforms programming language all major VAX languages supported
DECforms CDD/Plus integration improving, area needs more standards
DECforms ACMS, DECintact support available but callout is synchronous
DECforms LSE support diagnostics, compile and review
DECforms distributed system promised in v1.4 (NAS protocols)
DECforms Ultrix support promised in v1.4 (Fortran, C only)
DECforms X terminal support promised in V1.4
DECforms VT terminal support excellent, covers whole product line
DECforms non-DEC workstations supported only as VTxxx emulators
DECforms VAX server support excellent, covers whole product line
DECforms non-DEC servers not supported

5. SPECIFICATION (DECforms)

Intro:

DECforms is DEC's "single form solution for the 90s" and implements the
CODASYL FIMS specification which is accredited by ANSI and ISO as a
draft standard. It is a true user interface management system (UIMS):
it manages dialog with the user, presenting a user interface that is
defined in a specialized language/notation, using interactive tools.
Developers can build several form-and-menu-based user interfaces to the
same application, which can be substituted for each other freely at
runtime. These communicate identically with the application regardless
of terminal, user, or form characteristics in effect at runtime.

Terminology:

"Form Interface Management Standard" (FIMS)
CODASYL specification for building form- and menu-based user
interfaces. Accredited by ANSI and ISO as a draft standard. DECforms
implements the 1988 draft.

"Independent Form Description Language" (IFDL)
A semi-procedural language to describe forms in FIMS and DECforms.

"Form Manager"
The DECforms runtime engine - handles the form's interaction with
the user, the terminal, and the application program. Comparable to the
FMS "Form Driver" or TDMS "Request Processor".

"Form Control System" (FCS)
The FIMS term for a Forms Manager.

"Forms Development Environment" (FDE)
Tools for building, editing, and converting forms.

"session"
A connection between a terminal and an application using a form.

"action"
An actual user action initiated by the terminal operator.

"request"
One of six routines used by application programs to control forms:

request description
------- -----------
enable create a session and enable a form.
disable end the session
send move data from the application program to the form.
receive move data from the form to the application program.
transceive combined SEND/RECEIVE (for network efficiency)
cancel cancel all outstanding requests

"event"
An action (by the user) or request (by the application).

"response"
The Forms Manager's (programmed or default) response to an event.

"display device"
A two-dimensional output device (e.g. a VT220 terminal).

"screen"
The actual display area of the display device (e.g. 80x25)

"display"
The rectangular area on a display device that is available to a
particular form (e.g. 80x24)

"viewport"
A rectangular section of the display area. Convenient for naming
(possibly overlapping) areas of the display. Similar to a window.

"panel"
A rectangular panel with visible elements (as listed in the table
below). What VAX FMS and TDMS refer to as a "form". Similar to a
dialog box. A panel is displayed in a viewport of equal or larger
size.

element description
------- -----------
literals background items that do not change while the
application is running
fields changeable items
icons literals that support cursor positioning and selection
groups logical collections of fields, icons, and
literals (often used for array structures)
attributes field validation, highlighting, etc.

"layout"
A group of panels that, taken together, constitute a complete user
interface to a program - e.g. all panels in Spanish, or all bitmap
panels for use on an X terminal. Use of different layouts can insulate
application programs from end-user or terminal characteristics.

"procedural escape"
A callout from an IFDL form to another programming language.

"form data item"
A form variable with a unique name and data type. May be
displayed in a panel, passed between form and program, or used
internally in form processing. Persists for one session only (from
'enable' to 'disable') and is therefore similar to a local variable.

"form data"
The complete set of variables contained within the form.

"form record"
A structure of variable fields in the application program (e.g. a
Pascal record or C struct). Stores data to be transferred to/from the
form. An instance of a form record description.

"form record description"
A mapping between form data (visible to the form) and the form
record (visible to the application program). Usually invisible.

"form"
The complete forms-and-menu-based user interface to an application
program, including panels, form data and form record description. A
DECforms form includes the entire user interface specification, possibly
including validation, several layouts corresponding to different display
devices and/or natural languages, form-specific processing in IFDL and
procedural escapes to other languages.
Craig Hubley | Business that runs on knowledge +
Craig Hubley & Associates | needs software that runs on the net +
mailto:craig@hubley.com 416-778-6136 FAX 416-778-1965
Seventy Eaton Avenue Toronto ON M4J 2Z5 Canada