 May 1998
|
| Caveat App Gen: Let The Developer Beware BY
PETER VARHOL
Application generators are what make sophisticated uses of CTI
accessible to even the smallest enterprise. Rather than a team of dedicated programmers
working for months on a customized application, an application generator, or app gen,
makes it possible for a small team, or even a single developer, to design, build, field,
and maintain a useful application.
Telecom applications that work with modern hardware are becoming commonplace.
Customized voice mail, multiple mailboxes, call monitoring, automated call routing, and
group faxing are ubiquitous in the enterprise. With an increasing number of telephony
applications controlled by PC, companies and even individual departments are developing
their own CTI applications to serve specific or unique requirements.
App gens have been available for general-purpose development of these applications for
several years, and many have been developed specifically for telecom applications. These
telecom and other CTI app gens, which typically work on Windows-based PCs, have textual or
graphical constructs that ease the building of CTI-specific applications.
But just because an app gen can rapidly produce a simple CTI application doesnt
mean that youre home free. Sometimes, telecom app gens dont have the power or
the features youll need to produce complex, multiple- use applications.
Several of the available products produce high-quality, focused applications that are
of value but in a very narrow range of uses. An application produced by most app
gens cant easily be modified or maintained in response to changing telecom needs or
changing equipment. Often, when changes are required, the application has to be rebuilt
almost entirely from scratch.
ROBUST APP GEN REQUIREMENTS
All of these caveats mean it may be time to look for alternatives
to existing app gens for serious CTI application development. With underlying hardware,
telephony application programming interfaces (API), and application requirements changing
rapidly, an app gen needs a combination of structure and flexibility. With both the
advantages and limitations in mind, a next-generation app gen for CTI applications should
support several characteristics.
Graphical And Object-Oriented
App gens should be both graphical and object-oriented. Today, its understandable
why an app gen should be graphical. Graphical interfaces have advanced to the point where
they are as fast and powerful as text interfaces, without the corresponding need to
memorize commands and imagine program sequences from lists of instructions.Advances in
software design mean that its possible for a graphical app gen to be as fully
featured as a script-based one.
The need for a fully object-oriented system is less obvious, but just as real. Objects
provide a model to real life that enables a seamless translation from program requirements
to completed application. They also provide an organization to the application that is
enforced through adherence to the object model. A programmatic object can be functionally
associated with a corresponding graphical object on the display. Objects assist in adding
features to graphical systems that make them comparable to script-based packages. And,
objects lend themselves to a design methodology such as the Unified Modeling Language that
is practically a necessity in the development of complex programs today.
Application Assumptions
The app gen you choose should make few or no assumptions on the
type of application to be developed. Many programs make underlying assumptions, which are
often subtle and invisible, about how the application is going to be used. While some of
these assumptions are necessary, most prevent the application from being used in the way
preferred by the users. The result is a long learning curve, mistakes, and often the
inability to use the application effectively.
Traditional Coding
Graphical app gens should require little or no traditional
coding. While theres nothing inherently wrong with coding, when combined with a
visual approach it represents a mixed development environment. Hand-coding should be
limited to the end of the application development process, to customize your finished
application for a particular use or port it to another platform. Coding also requires a
more detailed developer skill set, which means that the application is either less likely
to be developed, or it will cost more to develop.
Source Codes And Executable Apps
The ability to generate source code as well as an executable
application is also important. There are many advantages to full source code generation
the most important is portability. Source code can be re-compiled to run on
different platforms, even if some code modification is required to take advantage of a
specific programming interface or platform features.The availability of source code also
means that the application can be modified in response to changing needs, and maintained
using the same techniques as any traditional application.
Consistent Models
It should support an understandable and consistent model of the
application. Many programmers, and practically all users, dont think about the
underlying model of an application as they build or use it. A model, however, is what
makes an application familiar to users, and speeds their understanding and use of the
software. It also provides a conceptual framework for developers, which encourages both a
consistent interface and application architecture.
ACHIEVING THE ROBUST APP GEN
One way of achieving all these goals is through using an app gen
that produces a customized language for specific development, rather than a final
application. In other words, imagine an app gen that generates a graphical application
builder, simple enough for non-technical users to manipulate, but robust enough for
serious users. These app gens are referred to as visual language builders. Different
"languages" can be built for specific types of CTI applications, leaving it to
nonprogrammers or even end users to build into unique configurations.
Macro Builders
Think of visual language builders as macro builders. Its an
environment where you can create structures that can then be assembled into a unique
application. The macro isnt the completed application, but rather a higher-level
building block for other applications that are frequently very specific. A macro can
consist of several lower-level, more detailed instructions all bundled into a single
construct.
Macros are useful in two types of scenarios. First, they make it easier for anyone to
build unique applications that have a specific purpose. They enable users to work at a
higher conceptual level, where they can concentrate more on what the application is
supposed to do, rather than how it does it. Second, macros make writing unique
applications more accessible to nonprogrammers. Its often not possible to wait for a
programmer to write a new CTI application, or modify an existing one. Authorized end users
may have to change a configuration, or add a feature to an existing application. In a
traditional programming language, or even in a CTI app gen, this may not be feasible.
There are some differences between a visual language builder and a macro builder, however.
A macro is a collection of textual instructions the macro collects them together
into a single program call. A visual object is a collection of functions, or higher-level
operations, along with the data that is associated with those operations. There is more
substance to a visual object, giving it greater power and flexibility in dealing with a
particular application.
So what a visual language builder delivers is the ability to create visual macro
libraries. Extending the macro analogy, consider spreadsheet macros, popular in any
enterprise that uses spreadsheets extensively. The development of specific spreadsheets is
faster and easier for those who have written general-purpose macros (such as complex
formulas or detailed formatting) in advance. If the enterprise maintains a macro library,
it is possible for anyone to build complex spreadsheets, without worrying about whether
they get the equations and operations correct.
LANGUAGE BUILDER OR APP GEN?
Just how broadly useful is a language builder, especially when
compared to a traditional app gen? It really depends on just how easy it is to generate
the language. Most of the time, users write customized applications using traditional
languages, which are general-purpose but difficult to use. Or, developers use
telecom-specific app gens, which are easy to use but produce specific and limited results.
Alternatively, a language builder can be used to build a language that the end user can
easily customize to a specific use. This puts a more flexible tool into the hands of the
implementers and users of the application.
Theres a further use for a graphical language builder creating a graphical
configuration environment for manipulating parameters and characteristics of existing
applications. Many legacy applications require detailed setups and have difficult
interfaces for setting up and maintaining operating data. A visual language builder can be
used to provide telecom administrators with an easy-to-learn and largely error-free way of
interfacing with older applications.
Why should you consider using a language builder when there are app gens available that
are specific to telecom applications? Because the end result of an app gen can limit your
code generation and configurability in the generated application. A more general, but
flexible app gen such as a language generator requires a greater investment to create
telecom languages, but pays off down the road when visual applications are easily created,
modified, and maintained.
Peter Varhol is a technology writer and consultant in Nashua, New Hampshire. His e-mail
address is [email protected]. DataViews Corp.
is committed to providing leading edge software development tools and components to
improve development of customized dynamic and interactive graphical applications.
DataViews offers C and C++ tools for rapid development of graphical business applications,
network and process monitoring applications, and interactive configuration management
applications across multiple platforms including MS Windows, Web browsers, Unix, and VMS.
For more information, contact the company at 413-586- 4144 or visit their Web site at www.dvcorp.com. |
|