DBMS, October 1996
Oracle's Impressive Designer/2000
Oracle's Analysis and Design toolkit takes a big step in
usability.
I recently changed jobs, leaving a company that develops
application software packages to become a member of a consulting
firm. One of my first projects was to assemble our standard
developers workbench. I wanted to work with fairly high-level
modeling tools that we could use to capture business requirements
and convert them into design forms. We wanted to map these
directly to a runtime environment that would let us control how
we deploy applications. Such a toolset would minimize the amount
of code we had to write. It didn't take long before we
reallocated my time to several revenue-generating projects, so I
failed to complete the workbench, but I do have some interim
findings.
In the decade since I started developing business applications
and searching for good tools to support this work, the
development product model has changed somewhat. In the mid to
late 1980s, I worked with PC-based products that bundled a data
file manager, programming language, form design tool, and report designer
into a single package. Nowadays the database engine is separate
from the application development product that includes those
other capabilities, but in most cases a single-user version of a
database engine is bundled with the development tool. The
Internet puts a great deal of stress on this development tool model;
that stress is impacting the communities that are using products
such as Delphi and PowerBuilder, whose historically rigid
two-tier approach to deployment is out of synch with the requirements
of a distributed world.
More fundamentally, this product model fails to capture the
upfront analysis and design work that needs to occur in the
development of larger systems. The addition of third-party
modeling tools has produced mixed results. As data modeling tools
have matured, their vendors have tightly integrated the modeling environments
with existing database and application development products. Such
integration makes the external tool an effective member of the
development workbench. Other tools that support analysis and
design methodologies, such as Popkin's System Architect and
Embarcadero's ER/1, have not matured to the point at which they
integrate with popular development tools in a way that
significantly increases developer productivity.
I have to admit that between the shifting paradigms of
information engineering, object-oriented development, and rapid
application development on the one hand and the evolution of
host-based, LAN-based, client/server, and Internet architectures
on the other, it's been pretty difficult for tool sets to keep
pace. Development platforms evolve quickly, and third-party
developers of analysis and design products have difficulty
supporting more than one platform. They must pick a target platform
into which they can get sufficient penetration to recoup their
investment. On the other hand, development product vendors have
completely filled their production schedules, improving the
integration of their languages with their data and form
definition tools, and enhancing application deployment options
and performance. In the past I have not looked to them to improve
the richness of their upstream tools.
Enter Oracle
Against this backdrop, a friend convinced me to evaluate version
1.3 of Oracle's Designer/2000 suite. He got my interest by
pointing out that this new 32-bit version of Designer/2000
generates Visual Basic (VB) version 4.0 application components,
C++ header files, and Web-based applications as well as
applications for deployment with Oracle's own Developer/2000
product. I decided to check it out when I realized that the price
was no higher than the combination of tools I was already
considering. What convinced me to write about it was the
comprehensiveness of the toolkit, its support for multiple
deployment environments, and the effectiveness with which all of
the components of the suite work together to support a variety of
development models. Oracle products have come a long way in usability since
I started using the database server a couple of years ago. Still,
the installation process is agonizing. Although I have done it successfully
on several occasions, I still find installing Oracle's SQL*Net
middleware (which is necessary to connect a client workstation to a
server) to be an adventure. Unless you have the services of an
experienced Oracle administrator, get a large hard disk and run Designer/2000
together with Personal Oracle on your PC!
Designer/2000 provides a collection of business and system
modeling applications in which you can record business processes,
application requirements, and business standards and conventions,
convert these into specifications, and automate the generation of
applications. (These are summarized in Table 1.) The Designer/2000
toolset is organized into four groups. The first, a group of just
one application, consists of Process Modeler, which provides
tools for diagramming complex business processes. The second
group, the Systems Modeler, provides Entity Relationship,
Function Hierarchy, and Data Flow diagramming tools, as well as a
general-purpose cross-referencing tool called the Matrix
Diagrammer. The third group, the Systems Designer, contains five
diagrammers that target the design and implementation phases of
development. These include the Data Diagrammer, the Module Data
Diagrammer, the Module Structure Diagrammer, the Module Logic
Diagrammer, and the Preference Navigator. Finally, Designer/2000
provides a set of generators for converting the design
information into Oracle Forms screens and logic, Oracle Reports,
DBMS Server objects, Visual Basic application components, Web
applications, and C++ class definitions. The shared repository is
the foundation for the tight integration between the components,
and it supports a system-wide repository navigator that offers an
integrated view of all of the entities, functions, and processes
in the system. A collection of wizards further integrate the
tools by automating the conversion of analysis models into design models.
The inclusion of a business process modeling tool appears to be
driven by the increasing acceptance of structured management
techniques that promise to improve business operations. The idea
of drawing business process models looks pretty obvious from a
systems engineering standpoint. Just as the engineer in me wants
to model software applications before I build them, I also like
the prospect of drawing models of businesses processes and trying
out changes on the model before applying them to the
organization. Oracle's Process Modeler presents a framework for
considering business processes as the interaction of six
elements: organization units, which represent individuals,
workgroups, or departments that can take independent action process
steps, or tasks, which may involve data entry, decision making,
or generating outputs flows, which present the movement of
information or material or the passage of time stores, which
represent collections of information or materials triggers,
events that cause process steps to occur outcomes, the results of
a process or process steps Process Modeler can present a property
sheet for each of these diagram elements, allowing an analyst to
capture time and cost information for each one.
Most businesses are relatively complex, so a model is likely to
consist of a number of diagrams, each showing part of a process,
with perhaps one diagram showing an overview of the whole process
at the top level. A static diagram can illustrate a business
process very well, but a diagram is much more effective if you can
actually see information and materials moving through the
process. Diagram animation is one of the major features provided
by Process Modeler. You can create a richly animated process
model by using Object Linking and Embedding to associate relevant
audio and video clips with process steps. Running the animation
highlights each of the flows and processes in turn, illustrating
graphically how each works. For each process step, store, or
flow, the icon is animated and plays the associated sound (you
must start embedded video clips manually). Each item's animation
continues for a time proportional to the time value specified in
its property sheet. During animation, a process step flashes in a
different color if it is waiting for previous processes or flows
to complete before it can start. This feature is extremely useful
in highlighting bottlenecks in a process.
System Modeler
Although the Process Modeler is innovative and engaging, process
modeling is often outside of the scope of a development project.
It's more traditional to start by modeling entities, data flows,
and functions, and Designer/2000 works perfectly well if you
start here. (See Figure 1.) As a bonus, if you did choose to use
the Process Modeler, it stores diagram elements in the shared
repository; so the Entity Relationship, Data Flow, and Function
Hierarchy Diagrammer will use the definitions of those elements
if they are there. Designer/2000 presents entity-relationship
modeling as a process for identifying the important things in an organization
(entities), the properties of those things (attributes), and how
they are related to one another (relationships) in a way that is
independent of any data storage or access method. I've always
identified entities, attributes, and relationships in the context
of data modeling tasks, so it was a struggle for me to dissociate the
analysis task from the design task of mapping the analysis into
data models.
The Function Hierarchy Diagrammer provides an organizational
chart-style interface that lets you create hierarchies of all the
functions that are performed by a business. You can start at a
very high level, by defining very general functions or by reusing
the analysis performed with the Process Modeler. From there you
can drill down, decompose business functions, define elementary
business functions, identify which can be automated, and indicate
how they interact with data. Elementary business functions
ultimately map to individual screens, forms, reports, and
utilities in the application system. For each of these, the
Function Hierarchy Diagrammer presents a property sheet that captures
a full, detailed description of the function, the frequency of
execution, the speed of response required, the event that acts as
a trigger for the function, any events that are the outcome of
the function, and the business rules and logic associated with
the function.
With the entity-relationship model in hand, you can drill down on each function to specify the information that each function will retrieve, create, or change. Performing this analysis in conjunction with the ultimate users of the system may uncover shortcomings in the entity-relationship model that should be addressed before the system moves from analysis to design. Designer/2000 provides a series of matrices for entry of relationship information, including "CRUD" (create, retrieve, update, delete) rules. (See Figure 2.) The analyst can access the matrix through the Function Hierarchy Diagrammer or the Repository Object Manager. With CRUD matrices, an analyst can specify when a function will create, retrieve, update, delete, or archive an instance of an entity and can drill down to define CRUD rules for specific attributes. Reviewing these matrices provides a good check for entities that never get created or deleted and for functions that lack operations. Once complete, this information will drive the Application Design Wizard to determine how application modules use tables.
The final piece of the Systems Modeler is the Data Flow Diagrammer. It's not likely that you would use both the Data Flow Diagrammer and the Function Hierarchy Diagrammer heavily, because they both seek to define how the target organization's business processes interact with the entities that are the object of those processes. Data flow diagramming tools provide somewhat richer semantics, directly addressing the interaction of functions with the flow and storage of information. Most data flow diagramming tools suffer from a lack of integration with other development tools; Oracle's diagramming tool is unique in that it becomes an effective practitioner (and makes your investment worthwhile) by reusing the specifications you enter throughout the successive steps of the process.
From Analysis to Design
Once you are satisfied that the analysis performed with Systems
Modeler tools accurately depicts the business for which you are developing
an application, you run the application design and database
design wizards that populate the design tools that you will work with
in Systems Designer. The Database Design Wizard creates and
maintains database designs based on entity models captured in the Entity
Relationship Modeler and recorded in the repository. It creates
tables to record instances of each entity, columns to store the attributes,
and constraints to implement the relationships between entities.
It also creates constraints to enforce any unique identifiers
that you have defined, and indexes to support foreign keys. Other
tools will subsequently use the information that's been added to
the repository by the database design wizard to generate the SQL
statements required to create the database itself.
The Wizard uses a tabbed dialog with matrices for each type of mapping (entities to tables, IDs to keys, relationships to constraints, and so on) to give the designer substantial control over the scope of the conversion and the mappings employed during the conversion process. Most interesting is the flexibility with which you can map subtypes; the Wizard lets you resolve subtype scenarios into a single table with a discriminator column, child tables with only columns specific to the subtype (the Wizard calls this an "arc"), and separate tables with a parent table that retains common information about the subtypes.
To move effectively into the System Designer, you need to understand Designer/2000's concept of a module, which is actually a fairly common systems view in which a module represents a computer program that implements a discrete business function. A module network specifies the order in which the modules are called. System Designer classifies modules as Menu, Screen, Report, PL/SQL, or Utility modules and supports definition of several specific types of screen and report modules. Menu modules provide top-level application partitioning and control functions. Screen modules represent the user interface for entity maintenance and transaction entry procedures. PL/SQL and utility modules perform processing tasks in the database, which may or may not be synchronized with the work of a screen or report module.
The Application Design Wizard deduces which program modules are needed to support the functions captured in the function hierarchy, data flow, and process models, and what data these modules should access. Based on its analysis, the Application Design Wizard creates first-cut application designs in the formats used by the System Designer's Module Structure Diagrammer and Module Data Diagrammer. It converts functions into candidate modules, which can then be implemented as screens, reports, manual procedures, or utilities; it employs a set of configurable rules to determine how to represent a specific function. The Wizard also converts function data usages to module data usages, which define how a module uses the tables and columns in the database. The Application Design Wizard then uses the module-to-business-unit association to create candidate menu modules and menu structures. The resulting modules and their usages can be used for generating applications via the generators.
Systems Designer
If you've been working along the path from analysis to design to
generation, it's a simple matter of opening the Systems Designer
tools to view and adjust the design output from the wizards.
Again, you have a choice: You can choose not to use the Systems
Modeler tools and start your project in the design phase. If you follow
this course, you should start by using the Database Designer to
define data structures and the Module Structure Diagrammer or
Module Data Diagrammer to define processes that act on the data.
The Database Designer will look familiar if you've worked with
database schema design tools. You get boxes that describe tables
(with a primary-key region on top and non-key attributes below)
and connecting lines with varying numbers of crow's-feet to
denote different types of cardinality and dependency
relationships. You can design views and snapshots using the
diagramming tools, working in dialogs to specify the columns to include and
the query conditions that should qualify the result set; views
and snapshots created this way can themselves become the subject of
forms and reports.
To distinguish itself from the Systems Modeler's Entity
Relationship Diagrammer, the Data Designer provides entry forms
for specifying physical attributes of the table and defaults for
use of a table or view by a module. Physical attributes include
the database and tablespace in which the table should be defined
and how much space to reserve for it, as well as whether a
journal table should be created. If it should, the Forms
Generator creates triggers in each of the forms that uses the
table to record every insert, update, or delete operation in the
journal table. Drilling down to column definitions, you can
identify the default type of user interface (UI) control that
should represent the column on forms, a default display size, and
display sequence, as well as the usual data type and amount of
storage to allocate. The Data Designer also permits specification
of behavior that the Forms Generator should implement to enforce
constraints, starting with whether to enforce them at the client,
the server, or both, and the message to display when violations
occur.
It's easy to get confused about the three tools whose names start
with "Module." The Module Logic Navigator is a PL/SQL
coding assistant that provides syntax checking and user-defined
code formatting, and the ability to drag and drop valid PL/SQL
constructs from a selection tree, import, and export. The Module Structure
Diagrammer manages the hierarchy of functions in an application,
whereas the Module Data Designer manages the detailed information
required to generate a specific module. This is where the rubber
really meets the road: Here the data structure and information
about physical implementation recorded by the Data Designer merge
with the functional hierarchy of the application.
There will be one Module Data Diagram per module. A Module Data
Diagram looks like a portion of the data designer diagram, with boxes
drawn around entities that will share windows or blocks within
windows in the generated application. Using a tabbed dialog
interface to collect these specifications, the Module Data Diagram
describes how the module uses tables, views, snapshots, and
columns. By specifying the mode in which tables or views should
be linked, you can create master-detail, matrix, and LOV (List of
Values) style entry forms and master-detail, matrix, control
break, and label-style reports. Although the nomenclature of this
application is arcane (it refers to detailed table usages,
blocks, and placement items), the objective is to complete a
series of property sheets that specify how the generated application
will treat each data element.
After defining the data structures and mappings of data to
functions through the other System Designer diagrammers, it's
almost time to generate your application. One final, critical
step requires entering the Preferences Navigator and setting
preferences. Preferences serve as defaults for the values
assigned to variable settings during the generation process;
there are dozens of them, covering everything from coding style
to the type of code to use for validation to the justification of prompts
regarding items that themselves have specific styles. All of the
preferences have default values, which Designer/2000 refers to as
the "factory" settings. You can override the factory
settings at any level so that your custom preferences will apply
throughout the application, only to usage of specific data
elements, or only to certain forms. Preference Navigator presents
a Windows explorer-style interface, which exposes a property
sheet for the currently selected preference item. Custom settings
cascade down the preference hierarchy, and an icon next to the
preference value indicates whether it represents a factory or
custom setting.
It's Generation Time
Having made it this far, I was extremely eager to try to
generate an application. Designer/2000 provides a collection of
generators. Of course there is a server generator that generates
data definition language (DDL) statements to create database
objects from definitions recorded in the Designer/2000
Repository. These statements are written to command files and can
be executed on the target database. Of great interest to most
shops that use the Oracle design and development workbench is the
Forms generator, which takes the specifications and preferences
entered in System Designer and then creates entry forms, menus,
and modules to make those specifications and preferences into a
live application. Oracle developers using the Forms generator
will likely use the Reports generator as well to create reports
that can be used with the Oracle reporting engine.
Looking at Designer/2000 as a potential general-purpose
application design suite, I'm more interested in its ability to
generate Visual Basic forms, Windows Help, Oracle's WebServer
applications, and (to a somewhat lesser extent) C++ class
definitions. For instance, the VB generator creates a VB form for
each module defined in the design system. It creates a separate
region on the form, which Oracle calls a zone, for each
"base" table usage in the module. It then creates a UI control
for each of its column usages, plus the column usages of "lookup"
tables; the choice of control depends on preference settings.
Much of the generated interface is driven from the properties of these
usages - for example, captions, types of control, and zone
styles. Templates determine the look and feel of the forms,
zones, dialogs, frames, and controls that make up the generated
Visual Basic application. They are defined as a Visual Basic
project and hence are created or modified using the Visual Basic
design environment. Oracle includes a set of standard templates
with the product; the designer can extend or replace these templates.
Of course, using Designer/2000 in conjunction with Visual Basic
compromises one of the objectives I stated at the outset: the
integration of implementation and application deployment into the
toolset. Once Designer/2000 generates the VB forms and menu
system, optimization and deployment is up to you. You would achieve
much tighter analysis to deployment with Developer 2000, but
issues beyond the scope of this column make VB developers
unlikely to switch, even if they use Oracle tools to design their
applications and manage the data. Even so, Designer/2000 brings a
great deal of value to the design side of the process. Although the
user interface for some of the diagrammers is clumsy, and the
repetitive use of a grid for capturing details is two-dimensional
and arguably not a particularly creative way to capture this information,
sharing a comprehensive design repository makes these very
effective tools. Overall, Designer/2000 comes the closest to converting
a non-procedural specification into an application of any tools
that I have investigated. I'm glad I checked it out; it will
raise the standard I set for additional products of this nature.
Tom Spitzer is managing consultant for application solutions in
the San Francisco office of AmeriData Consulting. You can email
Tom at
tspitzer@ameridata.com.
* Oracle Corp., 500 Oracle Pkwy., Redwood Shores, CA 95065;
800-672-2537, 415-506-7000, or fax 415-506-7200;
http://www.oracle.com.
TABLE 1
Designer/2000 Products and Functions
Product | Functions |
Process Modeler | Process modeling |
Systems Modeler | Entity Relationship, Function Hierarchy, Data Flow Diagramming, and Matrix Diagramming |
Systems Designer | Data Diagrammer, Module Data Diagrammer, Module Structure Diagrammer, Module Logic Diagrammer, andPreference Navigator |
Generators | Generates Oracle Forms screens and logic, Oracle Reports, DBMS Server objects, Visual Basic application components, Web applications, and C++ class definitions |
Repository | Stores analysis and design information accessible to the other Designer/2000 products |
FIGURE 1
--The Entity Relationship Diagrammer makes you focus on
defining the relationships between entities in your business
environment and
their attributes.
FIGURE 2
--The Matrix Diagrammer lets you define a variety of matrices
by specifying logical row and column pairs. Here, the analyst has
listed
Business Functions by row and Entities by column to create an
Entity to Business Function CRUD matrix.
Copyright © 1996 Miller Freeman, Inc. ALL RIGHTS RESERVED
Redistribution without permission is prohibited.
Please send questions or comments to mfrank@mfi.com
Updated Wednesday, September 25, 1996