Object Oriented Designer
Date: Wed, 19 Oct 94 20:50:42 KST
From: ktg@taejo.pufs.ac.kr (Prof. Taegyun Kim)
Greetings from South Korea.
I am working on my OO CASE tool named OOD (Object Oriented Designer),
and I distributed the current version to ftp.x.org mirror sites.
Many audiences have paid attention to my work and they gave me
a lot of gratitude for OOD.
So I want my work to be added in the list of OO CASE tools
section in FAQ article. Could it be possible ?
My tool is registered in ASSET organization also.
I think that my tool is very helpful for educational purpose.
The attached file is the introduction to my tool.
The latest version of OOD can be found
here
Thank you,
Taegyun Kim
**************** Object Oriented Designer ***************
Prof. Taegyun Kim [ktg@taejo.pufs.ac.kr]
Pusan University of Foreign Studies
Pusan, Korea
Version : Version 1.3.1
Revised : October 6 1994
*********************************************************
Let me introduce myself. I am an assistant professor working at Department of
Computer Engineering in Pusan University of Foreign Studies which resides in
Pusan, Korea. My major interest is in software engineering especially in the
area of object oriented methodologies. In teaching courses in systems analysis
and software engineering I found a need for a good case tool that could be used
by my students. Unfortunately, commercial case tools are too expensive for a
university to purchase so I developed OOD. I have spent 17 man months building
OOD. Because this is my first project combining object oriented methods, Motif,
and C++, some of the source code may be a little clumsy. However, it does work
well and it is still evolving. This project is very hard but is also very
interesting. Let's enjoy it together.
P.S.: I am anxious for your criticism or comment on this product. So, if it
works on your system, please respond to me with even a one line (very short)
message. It will give me some encouragement. Moreover please inform me your
status (student, professor etc.) if possible.
-Taegyun Kim
--------------- Contents --------------
0. Summary
1. System Environment
2. Building OOD
3. Initializing the Working Environment
4. Functions
5. Examples
6. Reference Books
7. Cautions
8. FAQ
The Object Modeling Technique [OMT] by James Rumbaugh et al. is a methodology
for object oriented development with a graphical notation for representing
object oriented concepts. Object Oriented Designer [OOD] is a case tool for
constructing the object diagrams defined in OMT. In order to use OOD it is
necessary to understand OMT and its graphical notation. See reference (2).
Why "OMT"? OMT evolved from the Extended Entity Relationship [EER] model which I
have studied since the mid 80's. There are a number of other approaches to
expressing object oriented concepts but I believe that OMT is superior to most
of these. Yourdon's Object Oriented Analysis [OOA] notation, for example, is
another excellent approach to the problem but has some limits in functionality,
particularly with respect to data modeling, that are present in OMT.
Currently, OOD has following primary functions:
- general graphics editor (with limited functionality)
- object diagram layout (with some additions w.r.t. original OMT notation)
- C++ code skeleton generation (header file + source file)
The comments and codes for individual member functions can be documented,
or edited within OOD directly.
The C++ code generator supports inheritance.
I have attempted to make OOD as user-friendly as possible. My students learn to
use it in a day even without a manual. The user-friendliness of OOD is due to my
own object oriented, user interface mechanisms.
Currently OOD generates a C++ code skeleton from an object diagram. I have a
short term final goal to develop an object oriented "environment" with
flexibility and portability. I think that about additional 20 man months effort
could lead me to the final goal. Because I am currently working very hard to
enhance its functionality, I am not especially concerned with system portability
issues at the moment so building OOD on your particular platform may require a
little work on your part. Please inform me of any changes that you need to make
to build OOD on your system.
OOD was built on a SPARC station running OS4.1.x, X11-R5 and Motif-1.2 and
C++-2.0. OOD has also been successfully built on a SPARC using gcc-2.5.8 and
libg++-2.5.3. It should build on most UNIX systems with X11-R5, Motif-1.2 and a
"reasonable" C++ compiler.
- In ood directory edit the Makefile to reflect your environment
- run "make depend"
- run "make"
OOD requires the user to select a working repository in which to store various
output files. If this is the first time you are running OOD:
- point at the top-menu,
- select "Environment",
- select "Setup",
- define your working repository.
If a working repository has been previously defined, select it:
- point top-menu
- select "change to"
- set your working repository
Menu items:
Most of the menu choices are self-explanatory. Not all of the menu choices are
operational at this time. The project menu selects which popup menu will appear
when the pointer is in the background of the OOD window and button3 is
pressed. Currently, only "main Popup" and [drawing] "primitives Popup" are
operational.
Mouse buttons:
The behavior of the mouse buttons is context sensitive. Generally:
- Button1 : draw, move, copy ... some object
- Button2 : edit some text object
- Button3 : popup a menu
Button3 can popup several different menus depending upon the current selection
from the Project menu and the location of the cursor. For example, select "main
Popup" from the Project menu, move the pointer to an empty region of the OOD
window and click button3.The "Primary Popup" will appear. From this menu select
"Class Template" to place a class template on the screen. Move the pointer onto
the class template and notice the object becomes highlighted. While the pointer
is on the class template, click button3 again. This time the "Class" popup
appears which will allow you to select operations that can be performed on
that object.
Now select "Primitives Popup" from the Project menu, move the pointer to an
empty region of the OOD window and click button3 to popup the drawing
Primatives menu. Select "box", hold down button1 and drag the mouse to draw a
box. When you are satisfied with the size and shape of the box release button1.
Move the pointer onto the box and notice that the box becomes highlighted.
While the pointer is on the box click button3 to popup a menu that lists the
operations that you can perform on the box.
Button2 is used to edit text. If button2 is clicked in an empty region of
the OOD window text may be added to the background at that point. To teminate
text entry click button1 or press Esc key. Note that the text may be "re-edited"
by placing the pointer over the text and clicking button2.
Experiment with the buttons and menus to explore the functions of OOD.
Note:
class template is slightly different from original notation,
but if you generate C++ code skeleton, its meaning will be clear.
An example is uploaded to Examples directory.
- Object-Oriented Programming with C++ and OSF/Motif
- Douglas A. Young
- Object-Oriented Modeling and Design
- James Rumbaugh et al.
OOD will be released from this site intermittently. Please take note of the
release date above. Because OOD is evolving rapidly, some part of the code may
not work correctly or cause segmentation faults. Let me know what you find. The
problem may already have been fixed by the time you find it. If not, I will
see if I can fix it.
- check ChangeLog file out carefully
- please don't ask me about compiler complaints
I have no experience with other systems (OS,Compiler,..) except SUN,
I can't help you with such problems.
- please don't complain me about absence of the manual
I can't use English naturally,
so it's very very very big burden for me to make the manual.
If you want it really, how about you making it (partially) and sharing it ?
For example, you can make a manual for a specific popup or pulldown,
and send it to me, then I revise it and collect it,
and distribute it. Could it be possible ?
Are there any volunteers ?
How about you, Vitaly ?
Axel ?
Thierry ?
Phil ?
Ian ?
.... [Sorry for menting your names :-)]
I don't think that this will happen.
It may be a dream of my own.
Most of you seem to be very selfish with
even Not-For-Sale software. :-) :-) :-( :-(
I know that most of you are accustomed to use OOD already.
But think about some one who is just ready to use it,
like you before. :-) :-)
- please don't complain me about not-yet-implemented features
For example, qualification, link attribute, even functional model ...
(qualification, link attribute is completed in 1.3.0)
I know most of them,
OOD is still immature and evolving
I will make them ... but I am not sure when it will be completed.
- I want to know the differences with other CASE tools.
If you have some experiences with other CASE tools,
would you let me know the comparisons ?
- Is it clear to you, the below request of my own ?
I could evaluate how many people go on with OOD by examples you upload,
there is only one person who upload example, so far.
(I deleted this example because it was made by old version)
Is really there only one person who is interested in or using OOD ?
If it is, then I may do very obsolete work.
But it was very interesting for me.
- When you send me a mail, please let me know your status
(for example, nation, student or professor, position in company ...)
- I will take some rest for a while. Duration may be about 4 months.
During this resting time, I will just concentrate on fixing bugs (if you
let me know the existence of runtime segmentation faults).
So although I will use same version name 1.3.1,
it will may be different when it would be patched.
Check date of this file always or take a look at PatchCountX.
In the beginning of the next year, I will be back.
It has been very interesting time to talk with some of you.
--- Bye everyone !!! ---
If OOD works at your site, would you share some of documents made by OOD.
Some of examples (named *.OD) are needed to demonstrate the functionalities
of OOD. Just put them at export.lcs.mit.edu : IP-address 198.112.44.100
(directory : /contrib/devel_tools/OOD/Examples).
-
A bigger problem is that classes cannot be edited if a link
to them is defined. This forces you to almost have the design
finished in the head before putting it down. What is the reason for
such a behaviour? Is there a workaround? Eliminate all links,
edit and recreate the links is quite annoying.
Ans) Allowing edition class template which is linked is too complicated to
maintain the diagram. So I circumbent this problem by allowing edition class
template linked when it is minimized. So you had better start to draw (or analyze,
design) class template "minimized". For minimized class template, it is possible
to modify, and after modification, it is reshaped as minimized. To trigger
modification (or displaying) for minimized class template, just push Button2 in
the class template.
-
What are the X resources that one can define? Fonts for classes,
attributes, methods, etc.
Ans) Fonts for these can not be customized using resource file Ood. If you dislike
fonts previously specified, change font name explicitly in source file.
The exact position to change font is line no. 567 in MyInit.C file.
At the line :
"-misc-fixed-medium-r-normal--15-*" ---> change this font to what you want
I think that variable size font may make some serious problems.
-
How can I fix the bugs of this kind ?
"floating point exception" (division by zero in your graphical modules,
always while calculating "atan (x/y)", it can be avoided by replacing with
"y?atan(x/y):0")
Ans) These style of runtime segmentation faults was reported a little times.
I think that this problem is very related to <math.h> header file
and libm.a archived library.
But what you patched is wrong. Think about the meaning of atan() function.
It is the inverse function of tan(). So keep in mind the following mathematical
properties.
- tan(0) = 0 means atan(0) = 0
- tan(pi/4) = 1 means atan(1) = pi/4
- tan(pi/2) = infinite_number means atan(?/0) = atan(infinite_number) = pi/2
So you have to fix it as follows,
y ? atan(x/y) : M_PI/2.
It must be same for any case of divide by zero with x/y.
If you have to make a fix for x/y, do not modify it simply as follow,
y ? x/y : 0.
but modify as follow,
y ? x/y : VERY_VERY_LARGE_NUMBER_DEFINED_IN_YOUR_SYSTEM
I don't want to insert this modification to source code, because I have no problem
with it, and I like the original style.
*** I made some fixes for these problem, but I am not sure because I can't test it.
Would you let me know if these problems disappeared ?
- How can I customize the diagram size generated by OOD.
Ans) It's possible to change diagram shape manually.
Just modify *.ps file as you want like this,
----------- in the beginning part of *.ps file ----------
%!PS-Adobe-1.0
1 {
x-position y-position translate
x-scale y-scale scale
...
---------------------------------------------------------
- About statically linked binary for OOD.
Ans) I am not confident to distribute statically linked binary for OOD. I think
that it may make legal troubles with Motif. Actually I don't know about it.
But if you are sure that it makes no problem,
how about you (someone who can compile OOD with no trouble) uploading it ?
Your help will be greatly appreciated by others who wish to use it without Motif.
Making statically linked binary for OOD needs only "-Bstatic" option in LDFLAG.
- Make depend here can't find <osfcn.h>. What's that ?
Ans) Somebody said that he used <unistd.h> other than <osfcn.h>.
I included this file for the use of fork() function.
HELP ME PLEASE !
I WANT TO MAKE REVERSE ENGINEERING FACILITY NEXT TIME.
IF OOD CAN MAKE CLASS TEMPLATE FROM EXISTING C++ SOURCE FILE,
WE CAN DO THE BETTER MAINTENANCE JOB.
SO I NEED C++ SYNTAX FOR PARSING WITH YACC.
IF YOU HAVE C++ SYNTAX (IT WILL BE WELCOME ALSO, ALTHOUGH IT IS COARSE
SYNTAX), PLEASE SEND IT TO ME BY E-MAIL.
ONE MORE HELP PLEASE !
I WANT TO MAKE A SEARCH FACILITY TO FIND CLASS WITH KEYWORDS TOO.
BUT WHAT I REALLY WANT TO MAKE IS FACETED SEARCH FOR A CLASS.
SO I WILL DO DEFINE SOME FACET ATTRIBUTES AND IT'S VALUES,
FOR EXAMPLE,
<Application Domain> <- one example of class facet
Mathematics, Statistics, Data Processing ... <- values for this facet
I WANT YOU TO LET ME KNOW WHAT YOU THINK ABOUT THESE ITEMS.
ANY HELP FROM YOU WILL BE GREATLY APPRECIATED.
THANK YOU.