order

ObjectDomain FAQ

Below you will find answers to frequently asked questions about ObjectDomain R3. The questions and answers are grouped into the following categories:

If you have a question that is not answered below or in the documentation, please send a message to our support team.

Installation

What Java VMs are compatible with ObjectDomain R3?
Are there any problems running ObjectDomain with the Windows 2000 operating system?
Can I use Microsoft JView to run ObjectDomain?
Can I use the IBM runtime for Linux with ObjectDomain R3?
Can I install ObjectDomain manually without using the InstallAnywhere installer?
Where can I find a Java runtime for Linux, Macintosh, etc?
What are the minimum and recommended system requirements to run R3?
Why do I get an "out of environment space" error when I try to run R3 on Windows 95?
What can I do if the installation process fails?

General

What is the technical support policy for the released version?
What is the licensing policy for ObjectDomain?
Is there anything I can do to enhance the performance of the application?
Is there anything I can do to speed up tree scrolling when I have a large model loaded?
How can I speed up the graphic display in the application?
Why does the operating system command console show when I run the ObjectDomain?
Is Object Domain Systems interested in customer ideas about neat features and other enhancements?
What type of information should I include when submitting a bug or technical problem?
Why was Java chosen as the implementation language?
Why does the application sometimes seem to hesitate when opening dialogs, etc?
Looks great -- how do I order?
Why not use the Java collection library instead of the JGL library?

Usage

Does ObjectDomain provide support for XMI import/export?
Is there a way to enter special characters into text fields in ObjectDomain?
We are trying to follow the design by contract paradigm, and really like theability of adding the pre- and post- conditions into the descriptor for each class. However, we are unsure of the sort of support ObjectDomain provides for these tagged values. Any suggestions?
How does R3's Java Reverse Engineering determine whether to reverse engineer a field into an attribute or an association?
How do I allow Java Reverse Engineering (from source code) to find the core JDK classes that are referenced by my source code?
What are the *.txt files generated during Roundtrip Engineering?
How do I create a view of an existing model element?
Can I import/export Rational rose models?
Can I modify the same feature, or set of features, of multiple elements with a single edit?
What is round-trip engineering and forward merging?
When laying down associations, why is the triangle of a generalization at the receiving end while the diamond of an aggregation is at the source end?
How does ObjectDomain R3 handle models that were created using version 2.x (especially repository-based models)?
Can I export ObjectDomain 1.x models to ObjectDomain R3?
How can I avoid the warning from Netscape when using Netscape as my HTML browser (Unix only)?


Installation

What Java VMs are compatible with ObjectDomain R3?

ObjectDomain R3 requires a Java 1.3 or higher compatible runtime. For details on compatible Java runtimes for your operating system, see the Java Runtimes page on our web site.

Back to Top

Are there any problems running ObjectDomain with the Windows 2000 operating system?

No. Although there were some issues with previous beta releases, ObjectDomain R3 is now completely compatible with Windows 2000. If you experience any problems that you think are Windows 2000 specific, please be sure to inform us.

Back to Top

Can I use Microsoft JView to run ObjectDomain R3?

No. Because ObjectDomain R3 now requires a Java 1.3 compatible runtime, it will not run under JView

For more information on this, see the Java Runtimes page on our web site.

Back to Top

Can I use the IBM runtime for Linux with ObjectDomain R3?

Yes, both Sun's and IBM's 1.3 Java runtime are compatible. However, we have seen some re-draw problems with IBM 1.3 on the Windows platform. This may possibly be a problem on Linux as well.

See our Java Runtimes page for more information on this.

Back to Top

Can I run ObjectDomain without using the InstallAnywhere wrapper?

Yes, although the InstallAnywhere automated installation is recommended, if you experience installation problems, you may want to try the manual installation procedure. The download page emailed to you upon registering for the ObjectDomain evaluation provides information regarding manual installation.

If you have not yet registered or have lost your registration email, you will need to register to receive the necessary installation information and links.

Back to Top

Where can I find a Java runtime for Linux, Macintosh, etc.

For best reliability, we strongly recommend that you download ObjectDomain with a bundled runtime whenever possible.

For the latest information on appropriate Java runtimes for your operating system visit the Java Runtimes page.

Back to Top

What are the minimum and recommended system requirements to run OD2?

For Microsoft Windows based platforms, we recommend a 233 MHz, Pentium-based machine with 128 Meg of RAM as a practical minimum configuration. We have not characterized the requirements for other platforms at this time.

Note that memory is very important. For best performance, 64 Meg or more is recommended. Adding 32 Meg will often substantially increase performance (approx. price: $50).

Back to Top

Why do I get an "out of environment space" error when I try to run OD2 on Windows 95?

This is because you don't have enough space allocated in your DOS environment. To correct this:

  • Open a DOS shell (command prompt)
  • right click on the title bar
  • select Properties
  • select "Memory"
  • for the "Initial Environment" select 2048 instead of "auto"
  • exit the DOS shell and try to run OD2 again

Back to Top

What can I do if the installation process fails?

If you are unable to successfully install ObjectDomain using the installer, see the FAQ:

Can I install ObjectDomain manually without using the InstallAnywhere installer?

Back to Top


General

What is the technical support policy for the released version?

Object Domain Systems offers several different support and maintenance policies. For details, see the support and maintenance page.

Back to Top

What is the licensing policy for ObjectDomain?

Object Domain Systems offers two different licensing agreements for the ObjectDomain CASE tool.

Named-user floating license

A named-user floating license of ObjectDomain is intended for a single developer. That developer is free to load the application, for his/her use, on any number of machines that support a Java runtime environment. For example, an engineer can load the application on his Solaris workstation at the office, on his Win NT machine at home, and his Windows 98 laptop.

Under the named-user floating license, a copy of ObjectDomain should be purchased for each developer that will use the application. This distinguishes the licensing agreement from the anonymous-floating license option.

Note, the majority of our customers opt for this license agreement.

Anonymous-user floating license

Although we feel the named-user floating license is the best arrangement for the customer, we offer an anonymous-user floating license at an additional cost per copy.

The anonymous-user floating license agreement allows any number of users to run the application on any machine provided the number of users never exceeds the number of purchased licenses.

For the current cost of each license, see our pricing page.

Back to Top

Is there anything I can do to enhance the performance of ObjectDomain?

Yes, see TechResourceTM Issue 2 - Increasing Performance for information on this topic.

Also, see minimum system requirements.

Back to Top

Is there anything I can do to speed up tree scrolling when I have a large model loaded?

In earlier releases of ObjectDomain, tree scrolling speed was more of an issue. This has been addressed and scrolling performance on most systems is no very close to native applications. If you would like to increase scrolling performance slightly more, you may still want to try one or more of the following:

  • Expand only those parts of the model of current interest.
  • Use the "Collapse All" and "Expand All" features in the context sensitive menus of the browser views recursively collapse/expand browser tree branches.
  • For large models, use "Collapse All" to collapse the entire model. Then navigate to a package of interest and "Expand All".

Back to Top

How can I speed up the graphic display in ObjectDomain?

For Windows-based systems, turn off "Show window contents while dragging" in the "Plus!" tab of the Display Properties. This will allow application windows and dialogs to be moved and resized much more efficiently.

Although not preferable, you may wish to turn off the live-drag feature. This can be changed in the View Preferences tab in the Options Editor (under Tools/Options).

Why does the operating system command console show when I run the OD2?

For Windows platforms, the console is displayed when the application is launched from the domainWithConsole.exe rather than the domain.exe file. For other platforms, the console is always shown.

The console is useful for evaluation and debug purposes. If a bug or other problem is encountered, launch the application using the domainWithConsole.exe file and forward the console output, along with any other relevant information to support - see:

What type of information should I include when submitting a bug or technical problem?

Back to Top

Is ObjectDomain Systems interested in customer ideas about neat features and other enhancements?

Absolutely! ObjectDomain is driven by customer feedback. Rest assured that your ideas are not shelved but placed into a database and prioritized as we continue development. The most requested features will typically be given the highest priority.

Please send comments to support

Back to Top

What type of information should I include when submitting a bug or technical problem?

To help us to quickly address an issue, please try to include as much information as possible. Common information to include when reporting a problem:

  • A copy of the information presented in the system property dialog. To open the system property dialog, click Show System Properties on the Help menu.
  • If you are using Microsoft JView, include the full version number. To get the complete JView version number:
    1. Open a Command Prompt (DOS) session.
    2. Type 'jview'.
    3. Provide us the full version number given in the response text (e.g., version 5.00.3167)
  • CPU make and speed as well as RAM in your computer.
  • A copy of the domain.lax from the ObjectDomain application directory.
  • If possible, a reproducible scenario.

Back to Top

Why was Java chosen as the implementation language?

Although a relatively new language, the industry has quickly embraced Java as one of the preferred languages for developing object-oriented systems. However, the question remains, why did we select Java for ObjectDomain? In many ways C++ did meet our initial design requirements. Java however, more closely aligned with some key design goals for ObjectDomain:

  • Although achievable in other languages, Java more readily and economically provided multi-platform deployment as well as extensive language localization capability.
  • Using Swing, Sun's GUI library, switchable look and feel is made possible allowing customers complete flexibility in the UI selection as well as the ability to create custom look and feels to meet corporate standards.
  • With Java's execution model, our requirement for an open architecture was much more easily obtained. With JPython scripting integration, Java classes can be sub-classed and dynamically loaded into the environment, offering unparalleled flexibility for user extension and third-party add-in.

But what about performance? With the magnitude of research the industry is currently investing in this area, Java performance will soon be a non-issue. With promising new technologies on the horizon, such as Sun's Hotspot with its dynamic optimization, Java applications actually have the potential to out pace solutions developed in C++.

At this time, with a properly equipped machine, many aspects of ObjectDomain are, in fact, faster than competing products. We are, however, constantly investigating ways to make the application smaller and faster. Even in its present incarnation, running under currently available runtimes, we have complete confidence that performance will  be a minimal issue when balanced with the capabilities of ObjectDomain.

Back to Top

Why does the application sometimes seem to hesitate when opening dialogs, etc?

This is most likely the Java Runtime garbage collecting unused memory.  This appears to more prevalent in Sun's JRE, particular so when inadequate memory is allocated to the runtime. Microsoft's JView (Windows platform only) appears to garbage collect continuously and in a manner that appears less obtrusive.

If you are using Sun's JRE, try increasing the maximum memory allocated to the runtime. This is done by increasing the value of the: lax.nl.java.option.java.heap.size.max variable in the domain.lax file.

Back to Top

Looks great -- how do I order?

If you are interested in purchasing ObjectDomain, please see our order page at the following URL:

http://www.objectdomain.com/buy/overview.do

Back to Top

Why not use the Java collection library instead of the JGL library?

We are looking at using the Java collection classes in a future release.

Back to Top


Usage

Does ObjectDomain provide support for XMI import/export?

Yes, ObjectDomain R3 includes XMI support. Note, you must have build 137 or greater to use this feature. To check your build number:

  1. Click 'Help'
  2. Then click 'About' 

The build number is the last three digits of the version number (e.g. build 137 is 3.00.137)

Back to Top

Is there a way to enter special characters into text fields in ObjectDomain?

The Swing text entry components do not allow entry of some special characters. This varies based on the locale and/or type of keyboard. For example, when using a German keyboard, a backslash (\) cannot be entered directly into a text field. As a work-around, you can enter these type of special characters into another application (e.g. Notepad on a Windows-based machine) and then cut and paste the text into the editing component within ObjectDomain. If this problem is not addressed by Sun, we will try to provide support for this in a future release. 

Back to Top

We are trying to follow the design by contract paradigm, and really like the ability of adding the pre- and post- conditions into the descriptor for each class. However, we are unsure of the sort of support ObjectDomain provides for these tagged values. Any suggestions?

Although special tag values are not currently provided for pre, post, and invariant specs, this is a feature that will likely be reviewed for possible inclusion in a future release.

In the meantime, we recommend handling pre, post, and invariant constraints in the documentation field as follows (for Java):

For operations,

use @pre {constraint}, @post {constraint} in javadoc comments (UML documentation).

For classes,

use @invariant {constraint} in javadoc comments (UML documentation).

Although this approach does not use tag values directly, it allows the design and code to be kept in sync, while allowing both designers and implementers to make updates to the constraints. This approach will also be compatible with any future enhancement that may utilize tag values directly. Some existing test case generator/design by contract tools already use this approach.

If there is a particular constraint language you are using, you may wish to append a language specifier, such as, @pre OCL {constraint expression written in OCL} or @pre java {constraint expression written in java}. However, there is currently no "standard" way to specify your constraints that can be recognized by multiple tools.

Back to Top

How does R3's Java Reverse Engineering determine whether to reverse engineer a field into an attribute or an association?

When the R3 Java Reverse Engineering parser encounters the following field types, it reverses them as attributes, rather than as an association to the type. We do plan to extend the set of default collection types that are detected, as well as making this mechanism more customizable in a future release. This default set of collection classes covers three commonly used collections libraries, the Java 1.1.x util.* classes, the Java 2 util.* collection classes, and the ObjectSpace JGL3.1 collection classes.

Java 1.1.x util.* classes

java.util.Stack
java.util.Hashtable
java.util.Properties
java.util.Dictionary
java.util.Vector
java.util.Array

Java 1.2 collection types

java.util.Collection
java.util.List
java.util.Map
java.util.SortedMap
java.util.Set
java.util.SortedSet
java.util.AbstractCollection
java.util.AbstractList
java.util.AbstractMap
java.util.AbstractSequentialList
java.util.AbstractSet
java.util.ArrayList
java.util.HashMap
java.util.HashSet
java.util.TreeMap
java.util.TreeSet
java.util.WeakHashMap
java.util.LinkedList

JGL 3.1 collection types

com.objectspace.jgl.Container
com.objectspace.jgl.HashMap
com.objectspace.jgl.HashSet
com.objectspace.jgl.Sequence
com.objectspace.jgl.Array
com.objectspace.jgl.Deque
com.objectspace.jgl.DList
com.objectspace.jgl.OrderedMap
com.objectspace.jgl.OrderedSet
com.objectspace.jgl.PriorityQueue
com.objectspace.jgl.Queue
com.objectspace.jgl.SList
com.objectspace.jgl.Stack

Note, for this to work properly, you must have the Reverse Engineering classpath set up correctly, and proper import statements (or full type qualification) in the source code file.

Back to Top

How do I allow Java Reverse Engineering (from source code) to find the core JDK classes that are referenced by my source code?

The answer to this questions depends on which distribution of Java is available on your machine. Unzipping the src.jar into a directory that is specified in the reverse engineering tool's classpath should not be necessary (Although you can do this to reverse engineer the JDK itself with full comments).

Make sure that a *full* path to one of the following files is specified as part of the reverse engineering classpath (using the Options page of the Reverse Engineering dialog). These files are typically installed relative to either the directory containing the Java Runtime Environment that is running ObjectDomain, or the directory containing an installation of the JDK.

Java Version Minimal CLASSPATH for Java Reverse Engineering:

Sun 1.1.x classes.zip
Sun 1.2.x rt.jar
Sun 1.3.x rt.jar
IBM 1.1.x dt.jar or rt.jar
Linux 1.1.x classes.zip
Linux 1.2.x rt.jar

Example R/E CLASSPATH under Sun1.2 JDK for Windows:

C:\jdk1.2.2\jre\lib\rt.jar;{my other jar's or directories}

Note that in Java2, you must still specify the core rt.jar archive, even though it is not necessary to have this archive on the classpath that is being used to run your Java program. In addition, remember that environment variables contained in the reverse engineering class path will not be expanded as they are in your operating system's command shell.

Back to Top

What are the *.txt files generated during Roundtrip Engineering?

The *.txt files are used within each developer's workspace as a temporal mapping between the source code and the related portions of the model that are currently being modified. These "mapping" files will be re-generated automatically by roundtrip engineering if necessary.

Note, these files are transient and should not be included with the actual source code in your software version control system.

How do I create a view of an existing model element?

ObjectDomain R3 now supports drag-and-drop. In the R3 documentation see the section on drag-and-drop. The 2.x method of creating views is also still supported. This is described below:

  1. Selecting the element in one of a dual-tree presentations.
  2. On the context sensitive menu, select Create View .

This option is only available when a diagram is active in the Workset. The view element is created in this active diagram.

Back to Top

Can I import/export Rational rose models?

Yes, for details see the Rational Rose Import/Export section in the application help.

Back to Top

Can I modify the same feature, or set of features, of multiple elements with a single edit?

Yes, many user have asked for this. It is a new feature in R3. For details, see the multi-element editing section in the application help.

Back to Top

What is round-trip engineering and forward merging?

Round-trip engineering is the interative process of syncing the source code with the model (in either direction). For instance, repeated code generation invocations will forward merge the model information with the existing source code. This means that modifications made within the source itself will be preserved each time code is generated. Likewise, repeated invocations of reverse engineering will merge the source code information into an exising model.

In contrast, code generation and reverse engineering, without the concept of round-trip engineering are both uni-directional. For instance, each time code is generated (without round-trip engineering support) any previously existing source code is simply overwritten (re-generated from scratch).

ObjectDomain currently supports forward engineering (code generation) and  reverse engineering Python. In ObjectDomain R3, full round-trip engineering support is provided for Java and C++.

Back to Top

How does ObjectDomain R3 handle models that were created using version 2.x (especially repository-based models)?

Single file 2.x models can, and should, be directly opened with ObjectDomain R3.

However, 2.x repository-based models should not be opened in R3 directly. To convert a 2.x repository-based model to an R3 model, perform the following:

  • Open the 2.x model in ObjectDomain 2.x.
  • Save the model as a single file.
  • Open the model in ObjectDomain R3.
  • When prompted, we highly recommend that you confirm the execution of the model validation routine.
  • After model validation, save the model.
  • If desired, you can then use the shared package mechanism to partition the model.

Back to Top

When laying down associations, why is the triangle of a generalization at the receiving end while the diamond of an aggregation is at the source end?

The diamond of an aggregation should be viewed as the base or origin (not the 'head') of the relationship. Conversely, the open arrow of the generalization does indicate the head of the relationship. Further, the owning class of the aggregation knows about its aggregates and therefore it follows that this is the origin of the relationship. With the generalization, it is the subclass that knows about the superclass. The superclass should know nothing about the subclass. Here it follows that the origin of the relationship should emanate from the subclass. This is consistent with most other CASE tools on the market.

Back to Top

Can I export ObjectDomain 1.x model to ObjectDomain R3?

Yes, there is a 1.x TCL script available for download that exports 1.x models to version R3. This script can be found at the following URL:

http://www.objectdomain.com/support/extensions.do

How can I avoid the warning from Netscape when using Netscape as my HTML browser (Unix only)?

If you are on Unix and are using Netscape as your HTML browser, you may encounter a warning message when launching help. Instead of specifying the netscape.exe application in the options editor as the htmlBrowser, specify the supplied 'launchNetscape.sh' shell script. This tells Netscape to use a single instance and avoids the warning message.

Back to Top

 Related Links