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++}}

Program development environments

Public domain


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++}}

Research


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.