From: edwind@lims01.lerc.nasa.gov (THANH NGUYEN)
Subject: Object Oriented (RE: [HELP] OBJECT ORIENTED DESIGN)
News-Software: VAX/VMS VNEWS 1.41    
Organization: NASA Lewis Research Center
Date:  7 Jan 1993 15:05 EST  

In article <9301070019.AA19762@ebu.ericsson.se>, you write...
> 
>Hi Vietnetters:
> 
>I'm developing a few applications based on Object Oriented Design, therefore I
>need a few books of Object Oriented Design and C++.  Could you please recommend me some good books of this fields?  I also need some books of Object Oriented
>Design for applications related much to database.

Based on what you have stated above, the book entitled "Object Oriented 
Design, with Applications" by Brady Booch is a very good one to start out
with.  In this book, Booch describes OOD Methods derived from C++, 
Smalltalk, and Ada experience.  Many good examples of applications development 
project using C++ are presented in the book.

Another book that I think would be a good source of information and 
reference is the  "Object-Oriented Analysis" by Peter Coad and Edward
Yourdon.  Ed Yourdon is well-known with Structured Analysis and Design 
methods that bears his name - the Yourdon methods. 

> 
>I has been studying about this field at school.  However, this is the first
>applications which I use Object Oriented technique to designe and implement.
>Could you have any suggestions for me (like as how to start, how to find
>resource,....)  My applications use a lot of database files.
> 

I would suggest that before starting your first project, you should have a 
general idea or an overview of all OOA and OOD Methods available and pick 
one or two that will meet your needs best.  Although it may be a little bit 
lenghty, I will try to give you an overview of OO methods and some 
practical guidelines for choosing OO methods that fit your applications 
needs below.

A. AN OVERVIEW OF OO METHODS

There are several methods that are widely used today and are summarized, as
follows:

	* "Pure" OO vs Hybrid Methods
	* OOA Methods derived from Infromation Models
	* OOD Methods derived from C++, Smalltalk, Ada experience

Note that very often both Analysis and Design views are needed for a project.  

1. "Pure" OO vs Hybrid Methods:

What are Hybrid methods and "Pure" methods?  Hybrid methods build on 
familiar techniques, including Entity Relationship Diagrams (DATA), State
Transition Diagrams (STATE), Dataflow Diagrams (FUNCTION), and Objects
encapsulate DATA, STATE, FUNCTION.  Examples of Hybrid methods include 
Shlaer/Mellor, Rumbaugh, and Tockey.  "Pure" methods start with the object
paradigm from the ground up, such as the following:

	* Class, Class Category, Class Utility, Object, Class-Object
	* Inheritance, Messaging, Instantiation, Encapsulation
	* "kind of", "part of" relationships

Examples of "Pure" methods include Booch, Wirfs-Brock, and Coad/Yourdon.

2. OOA Methods derived from Information Models:

Information modeling has evolved over a number of years.  The primary 
modeling tool of information modeling - the entity-relationship diagram 
(ERD) - has evolved into semantic data models that show Entities (Objects),
Relationships, Attributes.  ER (Information) modeling helps identify 
objects based on data components.  Information models that Rumbaugh,
Shlaer-Mellor, and Coad/Yourdon talk about in their books are really 
Extended ERDs.

3. OOD Methods derived from C++, Smalltalk, and Ada experience:

Object-Oriented Design (OOD) methods that have been derived from the 
experiences of many people who come from different computer languages 
backgrounds.  Notably,  Booch comes from Ada, Wirfs-Brock from Smalltalk,
and both Booch and Wirfs-Brock finally converge at C++.  These methods 
emphasize on class hierarchy, instantiation, and messaging.  They are more 
useful in design than analyis, and are more popular with programmers since 
design is closer to coding than analysis.

B. PRACTICAL GUIDELINES FOR CHOOSING OO METHODS

Finally, you should ask yourself: "Which Object-Oriented methods are the best 
for my project?"  The following are some practical guidelines which I 
attempt to offer to help you choose OO methods that fit your project best:

	* Categorize your system
	* Each method has its own strenghts and mindset
	* It is OK to mix methods
	* It is beneficial to choose a strong OOA method and a strong OOD 
	   method

1. Categorize your system:

You should categorize your system by asking the following questions:

	1. Does my system have a lots of obvious objects, multiple 
	   subject areas?
	2. Is it data intensive?
	3. Does it have heavy real-time components?
	4. Is it algorithm (function) intensive?
	5. Does it have a lots of communication between system objects?

2. Each method has its own strengths and mindset:

Each method has its own strengths and mindset, and here are some of the 
examples that come to mind when I am writing this up for you. 

	* Coad/Yourdon 5 layer model treats multiple subject areas well.  
	  (Please read Coad/Yourdon's book for more details and definitons.)   
	* Rumbaugh and Shlaer/Mellor are strong for data intensive systems
	  (e.g. OODMBS.)
	* Booch has very complete treatment of messaging, inheritance, and 
	  instantiation.
	* Most methods use State Diagrams for modeling real-time 
	  interactions.
	* Rumbaugh and Shlaer/Mellor use Dataflow Diagrams for functional 
	  descriptions.

3. OK to Mix Methods:

It is OK to mix methods.  For example, you may have to use some of the OOA 
methods by Coad/Yourdon to do analysis of the applications system you 
are developing and use other OOD methods to design your system.  Refresh 
yourself about the software development life cycle.

4. Beneficial to choose a strong OOA method and a strong OOD method:

From my own experience, it would be very beneficial to choose a strong OOA
method and a strong OOD method for your project.  "Strong" method here 
means the one that is popularly used and well-known among applications 
developers.  

Well, as I have stated earlier that it would be lengthy to write this 
overview up for you. Hope it would help you in your first project.

Good Luck,

Thanh Nguyen

NASA Lewis Research Center, Cleveland, Ohio
(216) 826-6619
 E-mail: edwind@lims01.lerc.nasa.gov


>Thank you very much,
>sincerely,
> 
>Barry Luong (Duy Luong)
> 
>* ebublg@anah.ericsson.com  **  (714) 491-6307  * Do        *
>************************************************* Tomorrow  *
>*                                               * ????????? *
>* University of California, Irvine              * ??     ?? *
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>* bonnie@dluong.ics.uci.edu ** (714) 839-7199   *   ?????   *
>*************************************************************
> 


Hey! so you are from UC, Irvine?  I came from UC, Riverside and UCLA - a 
long long time ago.

T.N.


Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU