Program development environments -- OODBMS
A method provides guidelines with respect
to the development of a system,
possibly including maintenance and project management.
We speak of a CASE (Computer Aided Software Engineering)
tool, when the tool supports a method in its various aspects.
Support may even include the generation of code.
Usually, a distinction is made between Upper CASE tools,
supporting the first phases of software development,
and Lower CASE tools, providing support primarily for
the later phases, include code generation.
At the lower end of the spectrum of tools we have
program development environments.
A program development environment is a collection of more
or less well-integrated software tools that
support the various activities that arise
in the course of realizing the project aims in actual software.
Program development environments may include
configuration management facilities,
a graphical interface builder, various browsers
(for example for the class inheritance structure, cross referencing
and source code module dependencies), and
facilities for interactive debugging.
An example of a CASE tool is the tool accompanying
the Objectory method.
Paradigm Plus may be characterized as a meta CASE tool,
in that it supports multiple diagraming techniques,
including those of OMT and Fusion.
See slide [11-pde].
CASE tools
\zline{\fbox{C++}}
- Rational Rose -- www.rational.com
- Paradigm Plus -- OMT, Fusion
- HP/Softbench -- Fusion
Program development environments
- ObjectCenter -- SaberC++ \zline{CenterLine}
- Objectworks/C++
- Microsoft Visual C++ -- Foundation Classes
- Sniff \zline{info@takefive.co.at}
Public domain
- ET++PE \zline{iamsun.unibe.ch:/C++}
- Cweb \zline{labrea.stanford.edu:/pub/cweb}
slide: Program development environments
HP/Softbench may be characterized as a broad spectrum tool.
It supports a variety of diagram techniques
(via third party Softbench-compatible tools,
such as Protosoft's Paradigm Plus),
among which are the techniques employed
in the HP Fusion method.
Moreover, it provides a C++ workbench,
including editors, browsers, profilers
as well as additional libraries with utilities.
A veritable programming environment is CenterLine's ObjectCenter.
ObjectCenter is a descendant of SaberC++.
It includes a variety of browsers, a configuration
management facility and quite impressive interactive
debugging facilities.
An interesting feature of ObjectCenter
is that it supports both interpreted
and compiled code, thus facilitating
rapid incremental development.
Apart from the latter facility, which is quite a unique feature,
ObjectCenter provides a rather shallow interface to standard
Unix facilities.
Beware, using ObjectCenter requires a powerful
workstation with lots of memory.
For an evaluation of ObjectCenter, consult [ObjectCenter].
Another example of a program development
environment is
Objectworks/C++, which provides a functionality
similar to Objectworks/Smalltalk,
including class hierarchy browsers, editors
and debugging facilities.
Not really a program development,
but rather a graphical user interface
development tool, is provided
by Microsoft Visual C++.
Visual C++, together with the Microsoft
Foundation Classes, allows one to develop an
application, including the
graphical user interface interactively.
The advantage of such an approach is
that it relieves the programmer of coding
the graphical layout and organizing the
code related to the window-based events.
Sniff is another interactive program development environment
with a visual flavor.
It supports a repository-based approach and allows for browsing and editing
in a unified fashion.
Information may be obtained by email from {\tt info@takefive.co.at}.
In the public domain, we have, for example,
ET++PE,
which is closely coupled with a C++ library for the development of
graphical interfaces. See section [libraries].
An essential ingredient of any
CASE tool is documentation support.
Some even go so far as to denounce
CASE tools altogether by stating that
these tools do {\em produce nothing but
PostScript (documentation)}.
As a package that in principle may valuably be incorporated
in a program development tool,
the Cweb package may be mentioned which
may be used
for producing literate C++ code.
See section [static].
Documentation tools are also part of the OSE library
that is mentioned in section [libraries].
OODBMS
Many applications require data storage facilities as offered by (object)
data base systems.
The list of systems in slide [11-oodbms] is taken from
[Harmon93].
Object database systems
\zline{\fbox{C++}}
- ObjectDesign \zline{ObjectStore}
- Ontos \zline{Ontos Inc.}
- Objectivity \zline{Objectivity Inc.}
- O2 \zline{O2 Technology}
- GemStone \zline{Servio Corp.}
- Versant ODBS \zline{Versant \c{Object Technology}}
Research
- OBST -- Stone \zline{ftp.fzi.de}
- ODE/O++ -- AT&T \zline{netlib.att.com}
slide: Object database systems
Above, we have listed some of the
popular object database systems with
an interface to C++.
These include ObjectDesign,
Ontos, Objectivity,
O2,
GemStone
and
Versant ODBS.
As packages available for research we may mention
OBST (which is the result of an ESPRIT
research project)
and ODE/O++ which provides an extension of
C++ with persistent objects and transactions.