SECTION 3: GENERAL

References: (Many more to come)

[Coplien 92] Covers C++, symbolic, exemplar (single-hierarchy), etc.
[Kim 89] Covers many OO systems.

3.1) What Is The "Classical" Object-Oriented Paradigm?

This refers to the usual class and object model. Its any 2+ level system as described in section 1.4. See also [Coplien 92].

3.2) What Is The "Delegation/Prototyping" Object-Oriented Paradigm?

See [Kim 89, ch 1,3].

This is the 1 Level System as Described under Meta-Classes. Delegation refers to the delegating of responsibility and can be applied to inheritance. When a derived class does not have a desired attribute, it "delegates" responsibility to one of its base classes. In delegation systems, each object has a delegate list instead of a parent list. Thus, delegation's primary emphasis is on message passing where an object could delegate responsibility of a message it couldn't handle to objects that potentially could (its delegates). Any object can be added to the delegate list, giving dynamic inheritance (of a sort). Typically, delegation and prototyping languages also have "part inheritance" in which fields and methods can be added and deleted from objects. This makes for easy "prototyping", which allows for objects to be constructed piece by piece at run-time, although the term "prototyping" in the context of delegation languages usually refers to objects serving as prototypes for object instantiation, or exemplars.

Next's NextStep OS provides delegation using Objective-C, providing an example of delegation in a class-based language [Garfinkel 93].

3.3) Are There Any Other Object-Oriented Paradigms?

There are many alternatives in OO. Emerald/Jade ([Black 86] and [Raj 89]) provides one, where inheritance is replaced with a roughly equivalent form where reuse occurs at a finer degree of granularity - method and instance variables - with subtype polymorphism making up the difference.

CLOS [Kim 89, ch 4] has a looser coupling of methods to classes and doesn't distinguish a receiver, but packages can help make up the difference.

Object Specialization [Sciore 89] is an example of a hybrid approach between delegation and classical systems, where parent classes have an extra level of indirection and inheritance hierarchies are specified on a per object/class basis.

3.4) What Are The Major Object-Oriented Programming Languages Today?

Statically-Typed:
  • Add 1 To Cobol giving Cobol with Objects.
  • C++
  • Classic-Ada
  • Dragoon
  • Emerald/Jade
  • Object Pascal
  • Trellis/Owl
Dynamically-Typed:
  • Actors Languages
  • C+@
  • Flavors
  • Python (new WWW
  • Self
  • Smalltalk
Both:

3.5) What Are Object-Oriented Databases And Persistence?

See also Appendices B and E and the comp.databases.object newsgroup. Refs to be included in future FAQs.

Object-Oriented Databases are databases that support objects and classes. They are different from the more traditional relational databases because they allow structured subobjects, each object has its own identity, or object-id (as opposed to a purely value-oriented approach) and because of support for methods and inheritance. It is also possible to provide relational operations on an object-oriented database. OODBs allow all the benefits of object-orientation, as well as the ability to have a strong equivalence with object-oriented programs, an equivalence that would be lost if an alternative were chosen, as with a purely relational database.

Another way of looking at Object-Oriented Databases is as a persistent object store with a DBMS.

Persistence is often defined as objects (and their classes in the case of OODBs) that outlive the programs that create them. Object lifetimes can be viewed as a hierarchy, with locals/automatics having the shortest default lifetime and objects stored indefinitely in an OODB (which are persistent) having the longest. Persistent object stores do not support query or interactive user interface facilities, as found in a fully supported OODBMS.

Appendix B also contains references for object-oriented interfaces to relational databases and see APPENDIX E, Papers, Persistent Operating Systems.

From the net:

From: dbmsfacts@aol.com (DBMSfacts)
Subject: ODMG Gopher and Web Addresses
Date: 24 Oct 1994 13:10:02 -0400

The Object Database Management Group (ODMG) has set up Gopher and Web
Servers at the following addresses:

  Gopher:  gopher.odmg.org, port 2073
  WWW:  http://www.odmg.org

These are still under construction.  What you can find right now are
addresses and contact information for ODBMS vendors, ODMG membership
information, updates to Release 1.1 of The Object Database Standard:
ODMG-93 along with ODL lex and yacc files.  In the future, we will be
adding more links to related sites, bibliographies, and a FAQ for ODBMSs. 

If you cannot access these servers, but would like information on the
ODMG, send an email message to info@odmg.org and you will receive an
automated reply.

Doug Barry
ODMG Executive Director

3.6) What Are Object-Oriented Operating Systems?

Refs to be included in future FAQs. See also Appendix E.

Object-Oriented Operating Systems provide resources through objects, sometimes all the way down to to the machine (OO architectures are found at the bottom). They are almost always distributed systems (DOS or DPOS), allowing objects to be passed freely between machines. They are typically capability-based since objects, and hence system resources, can only be accessed if a capability to them is available to programs.

Here are some abstracts taken from several postings to the net. This list is by no means exhaustive.

  • Apertos (Meta-Object-based Mikro-Kernel. See Appendix E, Papers:28)
  • Chorus Micro-kernel (written in C++, COOL, See Appendix E, Papers:63)
  • Choices (research OS, UofI, C++, supports SVR4, See Appendix E, Papers)
  • GEOS (GeoWorks', written in Object Assembler, OO superset of 8086)
  • Mach (CMU, supports BSD 4.3, really message-based)
  • NachOS (written in C++, OS teaching/learning OS)
  • Ouverture Project (ESPRIT funded OMG IDL defines inter-module interfaces)
  • Peace (OO family-based parallel OS, See Appendix E, General)
  • SOS
  • Spring (Sun, written in C++)
  • PenPoint OS (Go, written in C++)
For the Spring Papers (free), Contact:
Sun Microsystems Laboratories, Inc.
M/S 29-01
2550 Garcia Avenue
Mountain View, CA USA 94043
See also APPENDIX E, PAPERS, Persistent Operating Systems entry.
From: whitney@oberon.Meakins.McGill.CA ()

Insight ETHOS: On Object-Orientation in Operating Systems
ISBN 3 72811948 2

This thesis covers the design of an extensible object-oriented 
operating systems. The language used was Oberon-2. It includes
a generalization of the Rider/Carrier principle, Object Directories
as well as basic OS issues such as memory, file, tasking management. 
It covers extensible objected-oriented programming from hardware up.
It reviews other designs such as Clouds and Choices which where written
It reviews other designs such as Clouds and Choices which where written
on C++. [[ The lack of type-tests in C++ was a problem in other designs.]]
ETHOS was implemented as an operating system for the Ceres computers
at the ETH. 

3.7) What Are The Current Object-Oriented Methodologies?

Here is a list of OO Methodologies: Further Ideas And Techniques: See APPENDIX D for CASE systems supporting these methodologies (several from the originators themselves).

See also section 1.21 for a discussion on OOA/OOD and etc.

Summaries and comparisons will be provided in future FAQs. Suggestions for inclusion of other major or new methodologies should be sent to the FAQ author.

Here are some comparison studies posted to the net:

Arnold, P., Bodoff, S., Coleman, D., Gilchrist, H., Hayes, F., An Evolution of Five Object Oriented Development Methods, Research report, HP Laboratories, June 1991

de Champeaux, Dennis and Faure, Penelope. A comparative study of object- oriented analysis methods. Journal of Object Oriented Programming (JOOP), pp 21-32. Vol.5, No. 1, 3/4-92

Fichman R.G. & Kemerer C.F. OO and Conventional Analysis and Design Methodologies. Computer, Oct 1992, Vol 25, No. 10, p 22-40

Fichman, Robert and Kemerer, Chris. Object-Oriented and Conventional Analysis and Design Methods - Comparison and Critique. IEEE-Comp, Oct, 1992, pp 22-39. OOA, OOD, conventional analysis, conventional design, DeMarco SA, Yourdon SA, Bailin OO requirements specification, Coad-Yourdon OOA, Shlaer-Mellor OOA, Yourdon-Constantine SD, Martin information engineering design, Wasserman OOSD, Booch OOD, Wirfs-Brock responsibility-driven design.

[From Shuguang...] readers may download the paper if they want, though they may continue to request hard copies. We are currently extending the paper to compare ten OO methods and should be available shortly. My URL is: http://cis.gsu.edu/~shong

  ===================================================================
  *  Shuguang Hong, Ph.D.                    cisssh@gsusgi2.gsu.edu *
  *  Computer Information Systems Dept.      Tel: (404)651-3887     *
  *  College of Business Administration      Fax: (404)651-3842     *
  *  Georgia State University                                       *
  *  Atlanta, GA 30302-4015         www: http://cis.gsu.edu/~shong/ *
  ===================================================================

Monarchi, David and Puhr, Gretchen I. A Research Typology for Object-Oriented Analysis and Design. CACM/September 1992/Vol.35, No.9, pp35.

[Wilkie 93] summarizes, compares, and provides examples of Booch, Wirfs-Brock, Hood, Coad and Yourdon, Winter Partners, Shlaer and Mellor, Jacobson, Wasserman et al, Rumbaugh, Reenskaug et al, and Colbert.

Wirfs-Brock, R.J. and Johnson, R.E., Surveying Current Research in Object- Oriented Design, The Communications of ACM, (33, 9) Sept. 1990, pp. 104-1124.

Fowler, M. Describing and Comparing Object-Oriented Analysis and Design Methods. In Object Development Methods, Carmichael, A. ed., SIGS Books, (1994), pp.79-109. A new version is going to be published soon. Contact the authorfor details on its availability'.

Also commercially available:

An Evaluation of Object-Oriented Analysis and Design Methodologies (9)
J. Cribbs, C Roe, S. Moon
SIGS Books
(212) 274-0640
$149.

Object-Oriented Methodology Comparison Study (10 methodologies) Berard, Booch, Coad/Yourdon, Colbert, Embley, IBM, Martin/Odell, Rumbaugh, Shlaer/Mellor, Wirfs-Brock. Also contains refs to several previous studies. Berard Software Engineering 101 Lakeforest Blvd., Suite 360, Gaithersburg, MD 20877 Contact Person: Jim Youlio Phone: 301-417-9884 Fax: 301-417-0021 email: info@bse.com

[Hong et.al. 1992], [van den Goor et.al., 1992] The authors have prepared a revision (See above) that includes the following OO methods:

Booch, G. - Object-oriented analysis and design with applications, 1994. Champeaux, D. de - Object-oriented system development, 1993. Coad, P., and Yourdon, E. - Object-oriented analysis (2nd edition), 1991a. Coad, P., and Yourdon, E. - Object-oriented design, 1991b. Coleman, D. - Object-oriented development, the Fusion method, 1994. Henderson-Sellers, B. and Edwards, J.M. - Methodology for Object-oriented Software Engineering of Systems, draft manuscript, 1994. Jacobson, I. - Object-oriented software engineering, 1993. Martin, J., Odell, J. - Object-oriented analysis and design, 1992. Martin, J., Odell, J. - Principles of object-oriented analysis and design, 1993. Rumbaugh, J. et.al. - Object-oriented modeling and design, 1991. Shlaer, S., Mellor, S.J. - Object-oriented systems analysis: Modeling the world in states, 1992. Wirfs-Brock, R. et.al. - Designing object-oriented software, 1990.

We are currently approaching publishers for the publication of this report as a book. This book should be out in the spring of 1995.

If you are interested in obtaining this book you can send an e-mail to Sjaak Brinkkemper (sjbr@cs.utwente.nl), which we will forward to the publisher.

The authors, regretfully, cannot supply ftp, postscript, TEX, or whatsoever.

3.8) What Is the OMG/OMA/ORB/CORBA?

Contents:

3.8.1 Contact Information

Contact Person: Richard Soley (technical director)

FTP Sites:

  • OMG
  • CORBA Spec
WWW:
Headquarters:                            Marketing Office:
  492 Old Connecticut Path                 3823 Birchwood Drive
  Framingham, MA 01701                     Boulder, CO  80304
  Tel: 508-820-4300                        Tel: 303-444-8129
  Fax: 508-820-4303                        Fax: 303-444-8172

3.8.2 OMG Summary


From: soley@emerald.omg.ORG (Richard Mark Soley)
Subject: OMG

In answer to your general question about the OMG, here's a brief overview.
Feel free to call, fax or email for more information.

        -- Richard Soley
           Vice President & Technical Director
           Object Management Group, Inc.
           and coincidentally, MIT '82, SM '85, PhD '89 (EECS)

The Object Management Group (OMG) is an international software industry
consortium with two primary aims:

(*) promotion of the object-oriented approach to software engineering
    in general, and

(*) development of command models and a common interface for the development
    and use of large-scale distributed applications (open distributed
    processing) using object-oriented methodology.

In late 1990 the OMG published its Object Management Architecture
(OMA) Guide document. This document outlines a single terminology for
object-oriented languages, systems, databases and application
frameworks; an abstract framework for object-oriented systems; a set
of both technical and architectural goals; and an architecture
(reference model) for distributed applications using object-oriented
techniques.  To fill out this reference model, four areas of
standardization have been identified:

1) the Object Request Broker, or key communications element, for
   handling distribution of messages between application objects in
   a highly interoperable manner;

2) the Object Model, or single design-portability abstract model for
   communicating with OMG-conforming object-oriented systems;

3) the Object Services, which will provide the main functions for
   realising basic object functionality using the Object Request Broker -
   the logical modeling and physical storage of objects; and

4) the Common Facilities will comprise facilities which are useful in
many application domains and which will be made available through OMA
compliant class interfaces.

The OMG adoption cycle includes Requests for Information and
Proposals, requesting detailed technical and commercial availability
information from OMG members about existing products to fill
particular parts of the reference model architecture.  After passage
by Technical and Business committees to review these responses, the
OMG Board of Directors makes a final determination for technology adoption.
Adopted specifications are available on a fee-free basis to members and
non-members alike.

In late 1991 OMG adopted its first interface technology, for the Object
Request Broker portion of the reference model.  This technology, adopted
from a joint proposal (named "CORBA") of Hewlett-Packard, NCR Corp.,
HyperDesk Corp., Digital Equipment Corp., Sun Microsystems and Object
Design Inc. includes both static and dynamic interfaces to an inter-
application request handling software "bus."

Unlike other organizations, the OMG itself does not and will not
develop nor sell software of any kind.  Instead, it selects and promulgates
software interfaces; products which offer these interfaces continue to be
developed and offered by commercial companies.

In order to serve OMG membership interested in other object-oriented systems
arenas besides the distributed system problem, the Group supports Special
Interest Groups for discussion of possible standards in other areas.  These
groups at present are:

        1) Object Oriented Databases;
        2) OO Languages;
        3) End-User Requirements;
        4) Parallel Processing;
        5) Analysis & Design Methodologies;
        6) Smalltalk; and
        7) Class Libraries.

Any company, university/research institution or individual, whether
end-user or vendor, can become a member of this body.  Administrative
details are given at the end of this paper.

3.8.3 Mail Server Access

Information via Mail Server:
    Send the following commands in a letter to the mail server.
mail omg_server@omg.org
help                             (how to use file server)
index                            (return a list of all available files)
get                        (get files returned by  index)
log                        (logs info on server)
address  [match]         (index a directory, pattern 'match' files)
size               (max file size to send)

list mail
list docs
get docs/doclist.txt             
get docs/91-12-1.ps               CORBA spec [although it looks a little old]


Recommended (from the net):

mail omg_server@omg.org
Subject: 
help
index
list
list mail
list docs
get docs/doclist.txt

3.8.4 OMG Publications

Below is from omg.org:pub/CORBA

First Class (Bi-Monthly Newsletter)

First Class is OMG's non-commercial bi-monthly 28-page newsletter. First Class provides current information on Object Technology developments, both technically and commercially. First Class offers an open editorial forum on numerous Object Technology topics and issues. This publication features commentaries from software industry leaders, informative user case histories, OT training information and the latest object- oriented product announcements. All OMG activities and the ongoing development of the Object Management Architecture are regularly reported.

Object Management Architecture Guide (OMA)

The members of the OMG have a shared goal of developing and using integrated software systems. These systems should be built using a methodology that supports modular production of software; encourages reuse of code; allows useful integration across lines of developers, operating systems and hardware; and enhance long- range maintenance of that code. As an organization, OMG believes that the object-oriented approach to software construction best supports their goals. The OMA publication outlines the groundwork for technology response to Request for Proposals (RFP) and the adoption of specifications.

The Common Object Request Broker: Arch. and Spec. (Corba)

The CORBA, as defined by the OMG's Object Request Broker (ORB), provides the mechanisms by which objects transparently make requests and receive responses. The ORB provides interoperability between applications on different machines in heterogeneous distributed environments and seamlessly interconnects multiple object systems. The Common Object Request Broker Architecture and Specification described in this published document is a self- contained response to the Request for Proposals (RFP) issued by the ORB Task Force of the OMG.

Pricing

From the omg site (Arch).

o I would like a one year subscription to First Class
    ______ for $40 U.S.,  ______ for $50 outside U.S.

o I would like to order  ______ copy(s) of the Object Management
  Architecture (OMA) Guide for $50 each.

o I would like to order  ______ copy(s) of the CORBA for $50 each.

o [Combinations]

Contact documents@omg.org or omg_documents@omg.org for more.

3.8.5 Implementations (Brief)

These entreis are somewhat old, they will be updated soon.

DEC ObjectBroker Version 2.5 (Version 2.1 was ACA)

Full implementation of OMG CORBA 1.1. Digital's ObjectBroker is a 100 % compliant implementation of CORBA and is available on these platforms: IBM AIX, IBM MVS(port in progress), HP-UX, Macintosh, MS-Windows 3.1, NT, OSF/1, SunOS, ULTRIX, Digital VAX/VMS, Digital OpenVMS Contact:
  Andrew Comas
  comas@nyo.dec.com  (212) 856-2507
  Digital Equipment Corporation.
  ObjectBroker
  110 Spit Brook Road
  Nashua, New Hampshire  03062-2698

DOME - The C++ Object Request Broker

    runs on VAX/VMS, Unix, PC
    http://www.octacon.co.uk/onyx/external/oot.co.uk
    Anon ftp; also from http.

HP ORB Plus and HP Distributed Smalltalk

   Full implementation of the OMG CORBA 1.1 Object Request Broker. Also DOMF.
   Hewlett-Packard
   Distributed Computing Group
   19447 Pruneridge Avenue
   Cupertino, CA 95014-9974 (USA)
   Ian Fuller ian@cup.hp.com (408) 447-4722

HyperDesk (Westborough MA) HD-DOMS

   rich_fraser@hyperdesk.com
Runs on SPARC, HP/UX, IBM RS-6000, Data General Aviion, MS-Windows (client API only), NetWare (planned, Novell owns part of HyperDesk).

IBM SOM (System Object Model)

   Available on AIX and OS/2.  See Distributed Computing Monitor, March 93 for
   a detailed review.

ILU (free, see APPENDIX E entry 59)

   Object RPC compatible with OMG CORBA 1.2 spec (will compile OMG IDL and
   generate OMG compliant code for OMG-specified languages).
   parcftp.parc.xerox.com:/pub/ilu/ilu.html

IONA Technologies, Orbix - Dublin

info@iona.com

First full and complete implementation of OMG's CORBA.

NCR 'Cooperative Frameworks' -- a Distributed Object Foundation

  1. C++ ORB toolkit consisting of over 300 C++ classes and runtime libraries
  2. CORBA 1.1 toolkit

ORBELINE - The SMART Object Request Broker - PostModern Computing

Complete implementation of CORBA. Free academic; com. eval licence avail. SunOS 4.x, Solaris 2.3, and OSF/1 versions of ORBeline available; will consider making other platforms available if enough interest. See Appendix E. http://www.pomoco.com/

ROLSCH CONSULTING (RC-ORB)

Implements ORB spec, DOS/Windows 3.1, 12 user license: $99.
Ref: Datamation, LOOK AHEAD Section, August 1. German Company.

SUITESOFTWARE (SuiteDOME)

An open system, standards compliance, object-oriented architecture, support for heterogeneous environments, support for Remote Data Access (RDA), Remote Procedure Calls (RPC), Message-Oriented Middleware (MOM), and Object Request Broker (ORB).

Sun DOE

Tivoli

CS Dept. University of Zurich, Switzerland

maffeis@ifi.unizh.ch The ELECTRA Toolkit (not finished)

3.8.6 Implementation Descriptions

This section is pretty out of date - please await a new one.

The ELECTRA Toolkit

CS Dept. University of Zurich, Switzerland.  maffeis@ifi.unizh.ch
The ELECTRA Toolkit

Subject: ORB Implementations
Date: Tue, 4 May 1993 13:12:36 +0200 (MET DST)
From: Silvano Maffeis 

  something like an Object Broker, but it is *not* CORBA compatible (yet).
  Electra is a research project and not available yet.

  Its a toolkit for building failure resilient, distributed applications
  in C++. It supports object-groups, virtual synchrony, multithreading
  etc. Electra is based on the HORUS toolkit (which is "the new ISIS
  implementation" developed at Cornell, Ithaca NY.)
  An overview paper to electra is available from:
  ftp.ifi.unizh.ch: pub/techreports/electra.ps.Z

HD_DOMS


HD-DOMS (HyperDesk Distributed Object Management System).  A
CORBA-compliant DOMS.  Includes a GUI API driver for prototyping and
exercising objects, a bundled object database for persistent object
storage, a Kerberos-based authentication service, a location service, a
set of base classes to speed development, and a test script language.
Revision 1.0 has been shipping since beginning of '92.  Revision 1.1
(which includes support for CORBA's static client interface) is available
now, and a NetWare version is in the works.  Submitted a C++ language
mapping for IDL to the OMG recently.

HyperDesk Corporation
2000 West Park Drive
Westboro, MA 01581
(508)366-5050

HP ORB Plus and HP Distributed Smalltalk

  ============================================================================
  SUBJECT:  HP INTRODUCES DISTRIBUTED-COMPUTING SOLUTION FOR BUILDING
            SCALABLE, OBJECT-ORIENTED APPLICATIONS
  DATE:     September 27, 1993
  ----------------------------------------------------------------------------
 
   PALO ALTO, Calif.--(BUSINESS WIRE) via First! -- Hewlett-Packard Company
 today introduced a distributed-computing solution for building scalable,
 object-oriented applications.
 
   With HP ORB Plus, programmers can develop scalable, object-based
 applications that can be distributed throughout the enterprise.  HP also
 introduced an enhanced version of HP Distributed Smalltalk.
 
   HP ORB Plus and HP Distributed Smalltalk are major components of HP's
 overall distributed-computing strategy, which is designed to give customers
 integrated, desktop access to enterprise-wide information and resources in
 distributed heterogeneous systems environments.  Of all computer companies,
 HP believes it is best positioned to help customers take advantage of
 distributed computing. HP provides a wide variety of distributed-computing
 products, understands how to help customers adopt new technology for maximum
 business benefit, and offers worldwide support and training programs,
 ranging from analysis and design to deployment.
 
   HP ORB PLUS:  CORBA AND DCE COMBINED
 
   HP ORB Plus is the only environment that combines the complete CORBA 1.1
 specification from the Object Management Group with the DCE standard from
 the Open Software Foundation(tm) as its transport mechanism.  DCE is
 designed to let developers write one application and then deploy it --
 without modification -- on any other system that supports DCE.  HP ORB Plus
 reduces the complexity of developing distributed applications so programmers
 can concentrate on the application itself without needing to know multiple
 operating systems, networking protocols or where application objects are
 stored.
 
   The DCE (Distributed Computing Environment) standard provides an
 integrated set of services that can be used separately or together to
 provide a distributed computing environment that's easy to administer.  The
 CORBA (common-object-request-broker architecture) specification provides a
 standard for how objects (in applications, repositories or class libraries)
 make requests and receive responses across a distributed network.
 
   HP ORB PLUS DETAILS
 
   HP ORB Plus consists of several components: the Distributed Object
 Management Facility (DOMF), object services, developers' and administrative
 tools, and sample applications.  HP's DOMF provides a location-transparent
 object-communication mechanism across heterogeneous networks by using the
 DCE standard.  This object- enabling technology specification was jointly
 developed with SunSoft. By following a common specification, HP and SunSoft
 have made it easier for their customers to port applications between their
 platforms.
 
   In addition, HP is working with IBM to integrate HP's DOMF with IBM's
 System Object Model with extensions for distribution.  This integration will
 eventually provide users with complete scalability, portability and
 interoperability of distributed applications across HP and IBM platforms.
 This is part of the companies' planned approach toward a standards-based,
 "plug-and-play"  object-oriented environment.  This will give developers,
 system administrators and end users language-neutral, enterprise-wide,
 heterogeneous support for building, managing and using distributed object-
 oriented applications.
 
   "We're so convinced of the value of object technology that we're staking
 our entire company on it,"  said Richard Tanler, president and chief
 executive officer of Information Advantage, Inc.  "Our object-based
 applications for retailers provide the means to a competitive business edge.
 We plan to use HP ORB Plus to develop new object-based products that
 retailers can distribute to end users throughout headquarters, all chain
 stores, and warehousing and distribution operations."
 
   HP DISTRIBUTED SMALLTALK 2.0
 
   In a related announcement, HP introduced Version 2.0 of HP Distributed
 Smalltalk.  This toolset works with VisualWorks from ParcPlace Systems to
 provide programmers with a rapid development environment for creating and
 running distributed applications.  These applications can use object
 databases (currently OpenODB from HP and Gemstone from Servio) as their
 storage mechanism to facilitate the reuse of objects.
 
   Applications built using HP Distributed Smalltalk currently run without
 modification on HP, Sun and IBM UNIX(R) system-based workstations.  They
 also will run on Apple Macintosh computers and on any PC running the Windows
 3.1 or Windows NT operating systems from Microsoft(R) Corp., once
 VisualWorks 2.0 is released (expected within two months.)
 
   New HP Distributed Smalltalk 2.0 features include the following:
 
   --  easier deployment, with the ability to run multiple HP
       Distributed Smalltalk-based applications on a single system;
   --  up to 400 percent increased performance, through quicker
       sending and receiving of remote messages, and reusable
       object libraries;
   --  run-time version, for full production deployment; and
   --  easier development, with remote object browsing so
       developers can find and use objects more quickly.
 
   TECHNICAL DETAILS AND AVAILABILITY
 
   HP's DOMF includes the object request broker, interface- definition-
 language compiler, static and dynamic invocation interface and interface
 repository.  In addition to these OMG-specific features, most developers
 writing distributed, object-oriented applications require additional
 interfaces to use objects effectively.  So developers don't need to create
 their own, HP has supplied several object-service interfaces for developers
 to use. That's why HP ORB Plus includes OMG interfaces and implementations
 for properties, life cycle, associations, event notification and naming.
 
   HP's limited release of HP ORB Plus to key developers is designed so that
 customer input can be incorporated into the product early in its development
 cycle.  The initial version will work with the C++ programming language.
 For the generally available Developer's Kit, C++, C and Smalltalk
 interoperability is planned so objects written in different languages can be
 combined into one application.  The Developer's Kit is scheduled to be
 available mid- 1994; prices will be announced then.  HP ORB Plus runs on the
 HP Apollo 9000 Series 700 workstations and HP 9000 Series 800 business
 servers.
 
   Hewlett-Packard Company is an international manufacturer of measurement
 and computation products and systems recognized for excellence in quality
 and support.  The company's products and services are used in industry,
 business, engineering, science, medicine and education in approximately 110
 countries.  HP has 94,900 employees and had revenue of $16.4 billion in its
 1992 fiscal year.
 
 EDITORIAL CONTACTS:
	Hewlett-Packard Company
	Lynne Hanson, 408/447-1415, Cupertino, Calif.
	Jill Kramer, 408/447-4275, Cupertino, Calif.

 ==================
   For more information about HP ORB Plus, contact Kathy Litch
   (litch_k@apollo.hp.com).

   For more information about HP Distributed SmallTalk, contact
   Jerry Boortz (jerry_boortz@hp4000.desk.hp.com).

Iris RDOM

From: rcbc@cs.cornell.edu (Robert Cooper)
Subject: Re: DCE vs. CORBA
Reply-To: rcbc@isis.com
Product: Isis Reliable Distributed Object Manager(tm) (RDOM)
Company: Isis Distributed Systems, Inc., Ithaca NY, USA.

Isis RDOM(tm) is a fault tolerant distributed ORB platform for reliable
multi-lingual object-oriented applications. RDOM provides an "object group"
paradigm for constructing complex applications out of collections of
cooperating objects. RDOM is built on top of the Isis Distributed
Toolkit(tm). RDOM provides interfaces from Smalltalk (Parcplace),
Objective-C, and C++, and runs on most Unix workstations. RDOM is currently
not CORBA compliant, but will be brought to compliance during 3Q93.

Status: 

RDOM has been at beta test sites since January. General release of
the Smalltalk and Objective-C language interfaces is expected in June.
The C++ interface in August. Customers include AMD, Consilium and Swiss
Bank Corp).  

Object-Oriented Technologies DOME


Product:  DOME - Distributed Object Management Environment

Company:  Enquiries: info@oot.co.uk     
	  Object Oriented Technologies Ltd,
	  1st Floor, Lawrence House, 1A Morrell St, Leamington Spa, England CV32 5SZ
	  Telephone: +44 (0) 1926 833488 Fax: +44 (0) 1926 883370.

Short Description:
        DOME provides heterogenous distribution across many platforms
        and networks, including:
            UNIX, Windows, Windows NT, OS/2, OSF/1 (AXP), OpenVMS, 
            SunOs, Solaris, HP-UX, SGI Unix, Stratus FTX,
            TCP/IP, NetBIOS, XTI
        As a fully peer-to-peer product DOME can be used to build systems
        using any combination of the above.

Long Description:
        DOME is an ORB toolkit for the production of user-configured
        ORBs and servers. It is a multi-threaded high performance ORB
        suitable for use in large scale commercial systems and embedded 
        real-time systems.

        DOME is non-intrusive, meaning that the application development
        is separated from the means of distribution and the problem of
        distributed object management; this allows the application to
        be built and tested on a single machine using local resources.
        Existing software can also be incorporated easily, providing
        integration for legacy systems.

        DOME is constructed as a C++ class library, from which ORBs
        can be configured and constructed to best suit the runtime
        environment. This provides great flexibility since new classes
        can be derived from existing ones and the resulting configurations 
        implemented to user-specific requirements.

        Database distribution can be as simple persistent files, 
        RDBMSs, OODMS, or a combination of these.

        DOME has a CORBA-conformant interface, and is CORBA 1.0 compliant
        with the following divergences -
        additions:
        - full C++ binding,
        - integral support for GUI development,
        - network monitoring & analysis,
        - transaction management,
        - location broking,
        - enhanced security;
        ommissions:
        - dynamic invocation, which is seen as detrimental to performance 
          and network security; however, DOME does allow stream operators 
          to perform the same function.

        DOME was first released in August 1993; version 2 in May 1994.

ORBELINE - The SMART Object Request Broker

ORBeline is a complete implementation of OMG's Common Object Request Broker Architecture (CORBA). ORBeline goes beyond the standard specification to provide a SMART communication framework allowing you to easily develop large distributed applications that are robust, scalable, flexible and maintainable. ORBeline incorporates PostModern's proven communication framework that links thousands of nodes.

See Appendix E:65 for a complete description and anon FTP info.

Orbix

Orbix
Iona Technologies Ltd.
8-34 Percy Place
Dublin 4
Ireland

The latest release of Orbix, Version 1.2, includes an Object Loader function 
for the first time, as well as an upgraded Interface Repository, a new
approach to filtering, and more code examples to guide programmers. 

Orbix was launched in June 1993 as the first full and complete implementation 
of the Object Management Group's (OMG's) Common Object Request Broker
Architecture (CORBA) standard.  With Orbix, programmers can develop
distributed, object oriented applications following a consistent and
straightforward, standards-based model. 
 
With Orbix Version 1.2 IONA has added the ability to dynamically load objects 
at runtime through its Object Loader function. This enables developers to more 
easily integrate Orbix applications with existing data stores be they 
traditional flat file databases, relational databases or object oriented
databases. 
 
The improved Interface Repository is an integral part of IONA's CORBA 
implementation. The Interface Repository operates as a dynamic browser which is
populated with all objects or services available at runtime keeping programmers
informed of the functions, attributes and characteristics of objects and 
services. 
 
In version 1.2 IONA has also extended the whole approach to filtering of 
requests, and has made it easier for users to integrate Orbix with their
security systems providing for improved reliability of distributed systems
built using Orbix. IONA has also extensively extended the number, and scope, of
code examples it ships with the product to help developers learning how to use
the system. 
 
IONA released Orbix for SunSoft Solaris and SunOS at the Object World 
exhibition in San Francisco, Calif., June 1993.  Since then it has rolled
out versions of Orbix for Microsoft Windows NT,  Silicon Graphics IRIX  and
HP/UX. IONA demonstrated a version of Orbix for Microsoft Windows 3.1 at
Object World in London, England last October.  Orbix for Microsoft Windows
3.1 is now in beta.  In January 1994, IONA and SunSoft Inc. signed an
agreement to align their implementations of CORBA. The two companies
demonstrated interoperability between IONA's Orbix running on Microsoft
Windows 3.1 and SunSoft's Distributed Objects Everywhere (DOE) on Solaris.
 
In addition Orbix-TP, integration with Tuxedo for transaction processing, has 
just entered beta testing. Work is underway on Orbix-FT, integration with
the Isis distributed system, will deliver a fault-tolerant ORB.

Paul Hickey,                                        tel: +353-1-6686522
Iona Technologies Ltd.,                             fax: +353-1-6686573
8-34 Percy Place,                                   email: pth@iona.ie
Dublin 4
Ireland

Availability
------------

The full Orbix availability and release schedule looks like:

Operating System	C++ Compiler		Release
						Date 
-------------------------------------------------------
SunOS 4.1             SPARCompiler 2.1    NOW
SunOS 4.1             SPARCompiler 3.0.2  NOW
SunOS 4.1             Lucid 3.1           NOW
SunOS 4.1             GNU 2.5.8           NOW
Solaris 2.x           SPARCompiler 3.0.2  NOW
Solaris 2.x           SPARCompiler 4.0    NOW
Solaris 2.x           GNU 2.5.7           NOW
IRIX 4.0.5H           Native              NOW
IRIX 5.x              Native              NOW
HP-UX                 Native              NOW
Microsoft Windows NT  Visual C++          NOW
Microsoft Windows NT  Borland             NOW
Microsoft Windows 3.1 Visual C++          In Beta
IBM AIX               C Set++             4th Qtr
OSF/1                 DEC C++             4th Qtr
SCO                   Native              4th Qtr
UnixWare              Computer Innovations 4th Qtr
Ultrix                DEC C++             4th Qtr

Release of Orbix on OS/2 is also imminent.

Documents Available from IONA
-----------------------------

	electronic mail server     - server@iona.ie
	anonymous ftp file server  - ftp ftp.iona.ie
	World Wide Web             - http://www.iona.ie/

NCR 'Cooperative Frameworks' -- a Distributed Object Foundation

From: Randy Volters 
Subject: re-post: NCR Cooperative Frameworks (new phone no.)

November 19, 1993

NCR ANNOUNCES BETA AVAILABILITY
OF 'Cooperative Frameworks' -- 
a Distributed Object Foundation

Product Background -
NCR Cooperative Frameworks(TM) were first released for sale 
in 10/1991 as "the frameworks" part of the NCR COOPERATION(TM) 
product, and are based on NCR's submission to OMG.  
Cooperative Frameworks release 3.0 makes the product 
available apart from COOPERATION. 

Product Description -
Cooperative Frameworks is a distributed object foundation 
for building computing applications and services on networks 
of heterogeneous computers.

Cooperative Frameworks consists of an integrated suite of 
C++ class libraries that:

	-	defines and implements a comprehensive enterprise 
		architecture and methodology for creating 
		distributed implementations of C++ classes over 
		networks

	-	allows customers to build and use object services 
		over a network 

	-	supports TCP/IP, NetBIOS, Lan Manager NetBEUI and 
		OSI protocols, X.25

NCR Cooperative Frameworks currently has two portable ORB 
toolkits (others are planned for future release) -- 
(1) C++ ORB toolkit consisting of over 300 C++ classes and 
    runtime libraries

(2) CORBA 1.1 toolkit  Both are for:

	-	wrapping existing databases and legacy 
		applications for improved availability
		and maintainability on systems of heterogeneous 
		computers, operating systems and networks

	-	building next-generation, object-oriented, 
		distributed computing applications for
		networks of heterogeneous computers, operating 
		systems and network operating systems

Cooperative Frameworks come with predefined object services 
for implementing distributed systems:

	-	Naming - network implementation of X.500 directory 
		provides object naming service

	-	Logging - provides local and server based error 
		logging

	-	Fine-grain Data Management - class libraries are 
		designed around fine grained objects, developers can 
		build distributed objects as large or as small as 
		needed

	-	Persistence - the same object stream model for 
		communication between internal ORB functions is used to 
		support object persistence.  Persistent objects can be 
		files, relational or object databases

	-	Dynamic Service Location - provides a mechanism for 
		registering services and entities in a distributed 
		system and invoking targeted services based on service 
		characteristics -- rather than names

	-	Dynamic Service Activation - provides a mechanism for 
		object activation when method invocations are required, 
		and deactivation when not needed

	-	Event Service (Release 3.1) - Implements an OMG/JOSS 
		compliant event service

	-	Network Configuration Tools - simplifies creation of 
		directory entries required for cross domain operation 
		in a multiple domain heterogeneous network.

NCR Cooperative Frameworks run on multiple UNIX platforms, 
including HP-UX, Sun Solaris, NCR 3000 UNIX and NCR 
StarServer UNIX SVR4; and on MS Windows 3.1.  Cooperative 
Frameworks has been demonstrated on Novell NetWare v3.11, 
and was originally developed on MS OS/2 v1.x.  Development 
environments supported include CFRONT and C++ Workbench from 
NCR, HP Softbench Sun SPARCworks and Borland IDE.

Implementation - implementation is for client/server system 
architectures as a set of DLL and shared libraries

Languages used for IDL mapping - IDL bindings for C, (or 
object services can be implemented directly in C++)

Release date - Release 3.0 is available now to early 
developers with general availability set for December, 1993; 
Release 3.1 will be available to early developers 1Q 1994 
with general availability set for 2Q 1994

Product interoperability - Full interoperability between NCR 
Cooperative Framework implementations on supported platforms 
is available now; interoperability with selected CORBA 1.1 
ORBs and CORBA 2.0 ORBs is planned

Company Name -
NCR Corporation (An AT&T Company)

Address --	Software Products Division-Columbia
			3245 Platt Springs Road
			West Columbia SC 29170

			Phone
			(803) 939-7500
			FAX
			(803) 939-7745
			Contact Name
			Randy Volters, Sr. Product Manager
			Cooperative Frameworks
			Email: Randy.Volters@ColumbiaSC.NCR.COM
			Ext. 7774

Company Description -
NCR, AT&T's computer business, brings computing and 
communications solutions together to provide people easy 
access to information and to each other -- anytime, 
anywhere.

SUITESOFTWARE (SuiteDOME)

Overview
Variety may make life more interesting, but it only complicates the
task of connecting employees with the information they need. In a
world of heterogeneous, distributed computer systems, it's an ongoing
struggle to provide easy access to data while maintaining and
updating a collection of incompatible hardware platforms, operating
systems, applications, databases, network protocols, and the like.
To simplify the technical challenges, reduce the time and effort
required, and still be able to exploit all of an organization's
on-line data, information technology (IT) managers are turning to
middleware - run-time system software that is layered between an
application program and the operating system and that, in a
distributed, heterogeneous environment, supplies the functions that
would have been provided by the application's native operating
system.

To do this effectively, middleware must be able to interpret the
differences between operating systems, network protocols, databases,
and file systems; access and distribute data; guarantee system
security; and scale up to accommodate even the largest systems. When
middleware achieves this, it makes enterprise computing a reality.
As a result, middleware is quickly emerging as the best solution for
overcoming system incompatibilities, and middleware such as
SUITESOFTWARE's Distributed Object Management Environment (DOME)
Software System makes it possible for organizations to build large
scale, heterogeneous, distributed systems that can run virtually any
application in the enterprise, accessing virtually any data.
DOME - Covering the Enterprise
The DOME Software System is comprehensive middleware that provides
all of the essential services necessary to unify distributed
applications and data into a single system. With DOME, companies can
develop applications on any platform they choose and then easily
distribute them across heterogeneous environments throughout the
enterprise.

The DOME system can accomplish this complex task because it offers:
        - an open system
        - standards compliance
        - object-oriented architecture
        - support for heterogeneous environments
        - and support for Remote Data Access (RDA), Remote Procedure
Calls (RPC), Message-Oriented Middleware (MOM), and Object Request
Broker (ORB).
o       Open System
DOME is an open system that provides an interface between all of a
customer's applications, making it possible to share information
between new and legacy applications. DOME provides a solution today
and its open platform structure accommodates future technologies.
o       Standards Compliant
DOME is compliant with the following standards:
- OMG/CORBA
- SAG
- MOMA
- ISO
- OLE Microsoft
- CCITT X.500
- Kerberos 5.4 (Security)
DOME allows message transfer from one object to another object,
provides the ability to find an object, register an object, register
the message interface to an object, and dynamically invoke an object.
DOME also provides object services beyond the Object Request Broker
(ORB) and contains a directory and name service that provides more
functionality than specified by the X.500 standard. Because DOME goes
beyond what many of the standards require, it makes the task of
creating distributed applications, especially in very large
distributed environments, even easier.
SUITESOFTWARE is a member of various standards groups and conforms
its products to industry standards as they are adopted.
o       Object-Oriented Architecture
Because DOME's architecture is object-oriented, there are significant
benefits.
-       True messaging for workflow management and EDI
-       Queue- and bus-based (rather than send-based) design provides
store-and-forward, broadcasting, and subscribing functionality
-       Full recovery capabilities
-       Different levels of messaging service for positive/negative
acknowledgment and start-on-demand
-       Hierarchical namespace with true domains for complete
scalability
-       Concern registration and event notification
-       Logical name translation for true aliasing
-       Kerberos 5.4 compatible security/authentication and access
control
-       Implementation of additional protocols through a
communications layer
-       Co-existence of multiple development and/or production
environments on a single node
-       Platform independent time services and exception handling
These beneficial functions have resulted in measurable time and labor
savings while freeing systems personnel to concentrate on critical
issues.
o       Support for Heterogeneous Environments
DOME runs on the major UNIX platforms as well as in other interactive
computing environments, such as OS/2 and Windows.
DOME Software System Components
The DOME software system is composed of the core DOME product, DOME
SecurityTM, DOMEshellTM scripting and prototyping language, and the
DOME Data Manager (DDMTM) database access manager.

[...]

The DOME Data Manager is a complete relational DBMS engine that
provides access to distributed data.
Features
DDM provides autonomy for distributed data sites, but it also
supplies the means for consolidating data for specific applications.
It can read and write data across numerous DBMSs, and it makes
distributed data management transparent, so that the user never needs
to know the physical location of data, the server of access, or the
underlying vendor in order to process requests. From the user's
perspective, the enterprise is a single logical database located in
its entirety on the local machine. This is possible because DDM maps
the application's logical view of the environment into the
enterprise's physical environment of multiple nodes, disparate
operating systems, and multiple DBMSs.
DDM can manipulate data across a large number of databases and data
locations, and it is also interoperable. By conforming to the SQL
Access Group's Call Level Interface standard, DDM can interoperate
with any number of third-party GUI and CASE tools. Among the GUIs are
Powerbuilder,, Visual Basic,, and Uniface,. Among the CASE tools are
ERwin,, Popkin,, and Knowledgeware,.

? 1995 SUITESOFTWARE
DOME, DOMEshell, DOME Security, DOME Data Manager, and DDM are
trademarks of SUITESOFTWARE. All other products and product names are
copyrighted by, trademarks of, or registered trademarks of their
respective owners.
Support and Deliverables
Customer Support
SUITESOFTWARE places particular emphasis on support and continuing
education. The broad technical and business systems background of our
staff of fully trained professionals ensures "real world" responses
to problems. SUITESOFTWARE `s support staff is available by
telephone, FAX, and e-mail to help customers maximize the use of the
DOME Software System and obtain quick resolutions to problems.
Deliverables
Optical or magnetic media containing all files required to load and
execute DOME plus PostScriptTM versions of DOME documentation.
Hardcopy versions of all DOME documentation are available for a
nominal additional cost.
Configuration Requirements
Disk space and memory requirements are dependent on the installation
platform. SUITESOFTWARE sales representatives are available to help
determine configuration requirements for particular computer systems.

SUITESOFTWARE
801 East Katella Ave., Suite 210,

Anaheim, CA 92805
Telephone: (714) 938-8850

FAX: (714) 978-1840
E-mail: customer_support@suite.com

3.8.7 Books, Articles, And Literature

This section is expected to grow considerably in the future.

"Distributed Object Computing With CORBA", C++ Report, July/August 1993

The Object Database Standard: ODMG-93 edited by: R.G.G. Cattell published by Morgan Kaufmann Publishers, San Mateo, California [Covers CORBA standards with respect to OODBs]

3.9) Why is Garbage Collection A Good Thing?

There are two entries on garbage collection, the first is an excellent entry written for the FAQ by Paul Johnson and the second is from the FAQ author's company on the necessity of garbage collection for object-oriented programming and technique.


3.9a)Why is Garbage Collection A Good Thing?

From: Paul Johnson (paj@gec-mrc.co.uk) Garbage collection (GC) is a facility in the run-time system associated with a language which will automatically reclaim objects which are no longer used. OO Languages which require garbage collection include Eiffel, Smalltalk and CLOS. C and C++ can have garbage collection retrofitted (see [3] and [4] below). [Ada has switchable GC, too -bob] Without GC programmers must explicitly deallocate dynamic storage when it is no longer needed (in C this is done by a call to free(3)). There are a number of problems with this: 1: Bugs due to errors in storage deallocation are very hard to find, although products are available which can help. 2: In some circumstances the decision about whether to deallocate storage cannot be made by the programmer. Drawing editors and interpreters often suffer from this. The usual result is that the programmer has to write an application-specific garbage collector. 3: An object which is responsible for deallocating storage must be certain that no other object still needs that storage. Thus many modules must co-operate closely. This leads to a tight binding between supposedly independent modules. 4: Libraries with different deallocation strategies are often incompatible, hindering reuse. 5: In order to avoid problems 3 and 4, programmers may end up copying and comparing whole objects rather than just references. This is a particular problem with temporary values produced by C++ overloaded operators. 6: Because keeping track of storage is extra work, programmers often resort to statically allocated arrays. This in turn leads to arbitrary restrictions on input data which can cause failure when the assumptions behind the chosen limits no longer apply. For instance many C compilers limit expression nesting, identifier length, include file nesting and macro stack depth. This causes problems for programs that generate C. One partial solution to a lack of GC is reference counting. In this scheme each object keeps a count of references to it. When this count drops to zero the object is automatically deallocated. However this is inefficient (swapping two references will result in three decrements, three increments and six comparisons) and cannot reclaim circular data structures. Two systems that use a reference count GC are the Interviews C++ graphics library and the Unix file system (the link count). Opponents of GC reply that it introduces an overhead which is unacceptable in some applications. However the overhead of manual storage deallocation is probably as high as GC. GC algorithms are also available with good real-time behaviour. [Further, GC can perform compaction improving locality of reference.] Further Reading: [1] "Object-Oriented Software Construction" by Meyer puts the argument for GC. [2] "Uniprocessor Garbage Collection Techniques," by Paul R. Wilson, in Memory Management (proceedings of 1992 Int'l Workshop on Memory Management, Sept. 1992, St. Malo, France, Yves Bekkers and Jacques Cohen, eds.), Springer Verlag Lecture Notes in Computer Science #637. This is an excellent summary of the state of the art in GC algorithms. This and other papers about garbage collection are available in PostScript via anonymous ftp (cs.utexas.edu:pub/garbage/gcsurvey.ps. [See APPENDIX E] [3] "Garbage Collection in an Uncooperative Environment" by Boehm and Weiser. Software --- Practise and Experience vol 18(9), pp 807-820. Sept 1988. This describes GC in C and C++. ftp://parcftp.xerox.com/pub/gc/gc.html [4] Geodesic Systems provides GC for C and C++. See http://www.geodesic.com and Appendix G.

3.9b) Why is Garbage Collection Necessary for Object-Oriented Programming?

			  Michael Spertus 
			  Geodesic Systems
			  mps@geodesic.com

There are several reasons why true object-oriented programming requires garbage
collection. 

1. Manual Memory Management Breaks Encapsulation.

  Program components frequently need knowledge of an entire program to
  determine the last use of an object and provide deletion.  This makes reuse
  of the component nearly impossible. For example, methods and functions
  taking a container as an argument need to know of or make assumptions 
  about the rest of the program to determine ownership of the objects in the 
  container.

  Attempts to encapsulate memory management with reference counting, the "poor 
  man's garbage collector", are usually misguided. Reference counting has worse
  performance than GC, awkward syntax, and poor semantics, which typically 
  include failure to reclaim cycles, inability to handle stack and static 
  objects, lack of polymorphism, and problems with interior pointers (e.g. 
  arrays and multiple inheritance). Intensive research [1] in garbage
  collection has completely solved the above problems and made reference
  counting an inadequate substitute for true GC.

2. Implementation Hiding is not Compatible with Manual Memory Management

  Implementation hiding is a pillar of object-oriented programming,
  but explicit memory management requires implementation-dependent
  low-level knowledge of how memory is structured. For example, programmers
  often use "copy on write" to efficiently implement pass-by-value semantics.
  However, to manage memory explicitly, a program has to know if it has a copy
  of an object or the object itself. Programmers sometimes use reference 
  counting to encapsulate copy-on-write memory management. However, this only
  works well in simple cases like strings where the data is not polymorphic
  and does not contain pointers.

3. Message Passing Leads to Dynamic Execution Paths

   Manual memory management must make assumptions about a program's order of
   execution to make a compile-time determination of the last user of an
   object. While this is often possible in procedural languages, the object-
   oriented paradigm of objects sending messages to each other (possibly from
   different threads) makes it impossible to statically determine the last user
   of an object. For example, event driven GUI programs frequently have no
   clear order of execution. Other dynamic control structures, such as
   exceptions, also make static analysis of memory usage at compile-time
   impossible.

4. Differing Memory Management Schemes Hinder Reuse

  Because no memory management scheme is universal enough for all applications,
  manually managed components and libraries often use incompatible memory
  management schemes. For example, there are common container libraries using 
  each of the following schemes:

  a) Doubly specified empty and remove methods with one including a memory
     delete, placing the memory management burden on the client, who must call
     the appropriate method.
	 
  b) Switches indicating deletion. Many applications must clear the switch to
     support long-lived data and keep track of ownership of data shared by
     multiple containers, leaving many memory management issues unaddressed.

  c) Value semantics store objects rather than references, inhibiting data
     sharing and carrying expensive performance costs when complex objects are
     copied by value.

  d) Reference counting, which was already discussed.
	 
  Any components or libraries that use containers with different memory 
  management strategies are difficult to use with each other.


5. Garbage Collection Works

  It is not enough to merely find fault with manual memory management. One also 
  has to show that garbage collection provides a better alternative. Early 
  versions of garbage collection were merely crude implementations of 
  mark-and-sweep that left much to be desired. However, garbage collection has 
  advanced as rapidly as most computer-related technologies and is now a robust, 
  mature technology.[1] Many object-oriented languages specify garbage
  collection for all or part of their memory. Even C and C++ have at least one
  commercially supported garbage collector that can transparently and
  compatibly manage both new and existing programs. [2] 

  Garbage collected programs are usually as fast and responsive as
  their manually managed brethren. [3] In fact, multi-media programmers
  sometimes choose treadmill collectors [4] over hand-management because of its
  superior real-time performance as manual management usually has difficulty
  scheduling destructor calls smoothly. Of course, garbage collected programs
  are generally more reliable and easier to develop, maintain, and reuse than
  manually managed programs. Finally, garbage collection can be mixed with
  manual management to provide the programmer with the broadest set of tools,
  and garbage collection is much too important a tool to be absent from any
  object-oriented programmer's toolbox.

References
[1] Paul R. Wilson, "Uniprocessor Garbage Collection Techniques", 1992
  International Workshop on Memory Management, Springer-Verlag Lecture Notes in
  Computer Science series.

[2] Geodesic Systems, Great Circle(TM) Automatic Memory Management System.
  http://www.geodesic.com/GreatCircle/index.html.

[3] Detlefs, Dosser, and Zorn, "Memory Allocation Costs in Large C and C++
  Programs".  ftp://cs.colorado.edu/pub/techreports/zorn/CU-CS-665-93-ps.Z.

[4] Henry Baker, "The Treadmill: Real-Time Garbage Collection without Motion
  Sickness".  ftp://ftp.netcom.com/pub/hb/hbaker/NoMotionGC.html

3.10) What Can I Do To Teach OO To The Kids?

Smalltalk (in its original 1972 version) was initially intended to make computer programming easy enough for children. The idea was that manipulating objects was something more intuitive and natural than coding procedures.

Other entries or suggestions are welcome, please send to the author of the FAQ.

3.11) What Is Available On Object-Oriented Testing?

This entry was donated by Doug Shaker and is certainly a FAQ. It is also quite old and should be updated. Testing of Object-Oriented Programming (TOOP) FAQ/Resource Summary Posted to comp.object, comp.lang.c++, comp.lang.smalltalk and comp.software.testing. Last revised on 93.10.27. The most notable change is in the additions to the Software section. Also a couple of articles added to the Written Material section.

What?

This is a summary of resources on the Testing of Object-Oriented Programming that have been mentioned to me over the net, in email, or other means. Sections include Written Material, Courses, and Software. It is kind of like an FAQ, though it isn't organized that way.

Who?

I work for a Unix software house, Qualix Group, in the US. Here is my sig: - Doug Shaker voice: 415/572-0200 fax: 415/572-1300 email: dshaker@qualix.com mail: Qualix Group 1900 S. Norfolk St., #224 San Mateo, CA 94403 I am NOT a researcher on the testing of object-oriented programming. I just collate the stuff that is sent to me by people who REALLY know something. See the section "ACKs" at the end. I just think it is important.

Why?

Why is this important? If classes are really to be reused in confidence, they must be blatantly correct. The classes must be easily testable during initial evaluation by the client programmer. They must also be testable under different OS configurations, different compiler optimizations, etc. This means that testing modules must be constructed in a way which is recognized as correct and the modules must be shipped with the class libraries. As soon as one major class library vendor starts to ship real test code with their libraries, all of the other vendors will be forced, by market pressure, to do so as well, or face market share erosion. Think about it. If you had to recommend a class library to a committee that was choosing a basis for the next five years of work, wouldn't you feel safer with a class library that could be auto-tested in your environment?

Written Material


Berard, Edward.  Essays on Object-Oriented Software Engineering.  
	Prentice-Hall, Englewood Cliffs, NJ. $35.
	This book has two chapters on testing of object-oriented software, 
	focusing on how to do it.

Berard, Edward.  Project Management Handbook.  Must be purchased
	direct from Berard Software Engineering, Ltd., 902 Wind River
	Lane, Suite 203, Gaithersburg, Maryland 20878.  $225.
	The book focuses on the management of OOP projects.  It
	includes one chapter on testing OO software and one chapter
	on quality assurance.

Bezier, Boris, "Software Testing Techniques", 2nd edition, Van Nostrand
	Reinhold, 1990, 503pp, $43, ISBN 0-442-20672-0.  While this is
	not specifically about testing of OOP, it is mentioned so often
	by so many people as a definitive software testing work, that
	I have to mention it anyway.

Cheatham Thomas J., and Lee Mellinger, "Testing Object-Oriented
	Software Systems",  Proceedings of the 18th ACM Annual Computer
	Science Conference, ACM, Inc., New York, NY, 1990, pp. 161-165.

Doong, Roong-Ko and Phyllis G. Frankl, "Case Studies on Testing 
	Object-Oriented Programs", Proceedings of the 4th Symposium on
	Testing, Analysis, and Verification (TAV4), 1991, ACM, Inc.,
	New York, NY, 1991, pp. 165-177.

Fiedler, Steven P., "Object-Oriented Unit Testing", Hewlett-Packard 
	Journal, April, 1989, pp. 69-74.

Firesmith, D.G., "Testing Object-Oriented Software", Proceedings 
	of 11th. TOOLS USA Conference, Santa Barbara, Aug 1993, pp 407-426.

Frankl, Phyllis G. and Roong-Ko Doong, "Tools for Testing 
	Object-Oriented Programs", Proceedings of the 8th Pacific
	Northwest Conference on Software Quality, 1990, pp. 309-324.
	One author can be reached at pfrankl@polyof.poly.edu.

Graham, J.A., Drakeford, A.C.T., Turner, C.D. 1993. The Verification, 
	Validation and Testing of Object Oriented Systems, BT Technol
	J.  Vol 11, No 3. One author's email address is
	jgraham@axion.bt.co.uk.

Harrold, Mary Jean, John D. McGregor, and Kevin J. Fitzpatrick, 
	"Incremental Testing of Object-Oriented Class Structures",
	International Conference on Software Engineering, May, 1992,
	ACM, Inc., pp. 68 - 80.

Hoffman, Daniel and Paul Strooper.  A Case Study in Class Testing.
	To be Presented at the IBM Center for Advanced Studies Fall
	Conference, October 1993, Toronto.  Email addresses for authors
	are dhoffman@csr.uvic.ca and pstropp@cs.uq.oz.au.  Describes an
	approach to testing which the authors call Testgraphs.  An
	example is worked out in C++ which tests a commercial class.

Hoffman, D. M.  A CASE Study in Module Testing.  In Proc. Conf. Software
	Maintenance, pp. 100-105. IEEE Computer Society, October 1989.

Hoffman, D.M. and P.A. Strooper.  Graph-Based Class Testing.  In 
	7th Australian Software Engineering Conference (to appear), 1993.

Klimas, Edward "Quality Assurance Issues for Smalltalk Based Applications", 
	The Smalltalk Report, Vol. 1, No. 9, pp.3-7.  The author's
	email address is "ac690@cleveland.freenet.edu".

Lakos, John S.  "Designing-In Quality in Large C++ Projects" Presented
	at the 10th Annual Pacific Northwest Software Quality Conference,
	Portland, Oregon, October 21, 1993.  Abstract:
		The focus of this paper is on ensuring quality by
		designing software that avoids acyclic component
		dependencies.  This in-turn permits incremental,
		hierarchical testing.  The importance of good physical
		design becomes a key factor only for large and very
		large projects.  Intuition gained from smaller projects
		leads to errors in large designs.  Compile-coupling
		("Insulation") is also discussed.
	Copies of the postscript file can be obtained by sending email
	to "john_lakos@warren.mentorg.com".

Leavens, G. T., "Modular Specification and Verification of 
	Object-Oriented Programs", IEEE Software, July 1991, pp. 72-80.

Love, Tom.  Object Lessons.  SIGS Books, 588 Broadway #604, New York, NY 
	10012. $49.
	This book eloquently elucidates the need for testing of object-
	oriented code and has a chapter on how it was done at Stepstone
	during the first release of their initial class library.

Marick, Brian.  The Craft of Software Testing, Prentice-Hall, in press.
	Makes the argument that testing of object-oriented software is
	simply a special case of testing software which retains state
	and which is reused.  The author can be reached at 
	info@testing.com.

Narick, Brian. "Testing Software that Reuses", Technical Note 2, Testing
	Foundations, Champaign, Illinois, 1992. Copies may be obtainable 
	via email. The author can be reached at info@testing.com.

Murphy, G.C., Wong, P. 1992, Towards a Testing Methodology for 
	Object Oriented Systems, M.P.R Teltech Ltd. A poster at the
	Conference on Object Oriented Programming Systems, Languages
	and Applications ACM. Copies of this paper can be obtained
	through townsend@mprgate.mpr.ca.

Murphy, G. and P. Wong.  Object-Oriented Systems Testing Methodology: An
	Overview.  Techical Report TR92-0656, MPR Teltech Ltd., October 
	1992.

Perry, D.E. and G.E. Kaiser, "Adequate Testing and Object-Oriented 
	Programming", Journal of Object-Oriented Programming, 
	2(5):13-19, Jan/Feb 1990.

Purchase, Jan A. and Russel L. Winder, "Debugging tools for 
	object-oriented programming", Journal of Object-Oriented 
	Programming, June, 1991, Vol. 4, No. 3, pp. 10 - 27.

Smith, M. D. and D. J. Robson, " A Framework for Testing Object-Oriented 
	Programs", JOOP, 5(3):45-53, June 1992.
	Describes ways in which the usual approach to software testing
	could be adapted for object-oriented software.
	This paper, or one with the same title and authors, is
	available by anonymous ftp from vega.dur.ac.uk as
	"/pub/papers/foot.dvi".

Smith, M. D. and D. J. Robson, "Object-Oriented Programming - the 
	Problems of Validation",  Proceedings of the 6th International 
	Conference on Software Maintenance 1990, IEEE Computer Society 
	Press, Los Alamitos, CA., pp. 272-281.

Taylor, David. "A quality-first program for object technology", Object 
	Magazine, Vol. 2, No. 2, July-August 1992, pp17-18. SIGs
	Publications.  The article talks some about why testing is
	important for OOP and describes one quality program.

Theilen, David.  "No Bugs.  Delivering error free code in C and C++.",
	Addison-Wesley, 1992, ISBN:0-201-60890-1.

Turner, C. D. and D. J. Robson, "The Testing of Object-Oriented Programs",
	Technical Report TR-13/92, Computer Science Division, School of
	Engineering and Computer Sciences (SECS), University of Durham,
	England.
	Includes a survey of existing literature on testing of OO
	programs.  Testing of OOP is compared with traditional software
	testing.  A state-based approach is described.
	This paper is available by anonymous ftp from vega.dur.ac.uk in
	/pub/papers. Get "toop.ps.Z" for A4 paper and "toopus.ps.Z" for
	US letter paper formatting.

Turner, C. D. and D. J. Robson, "A Suite of Tools for the State-Based
	Testing of Object-Oriented Programs", Technical Report
	TR-14/92, Computer Science Division, School of Engineering and
	Computer Science (SECS), University of Durham, Durham,
	England.  Describes a series of tools for the generation and
	execution of test cases for OOP.  These tools assume a
	state-based testing approach.
	This paper is available by anonymous ftp from vega.dur.ac.uk in
	/pub/papers.  Get "tools.ps.Z" for A4 paper formatting or get
	"toolsus.ps.Z" for US letter formatting.

Turner, C. D. and D. J. Robson, "Guidance for the Testing of Object-
	Oriented Programs", Technical Report TR-2/93, Computer Science
	Division, School of Engineering and Computer Science (SECS),
	University of Durham, Durham, England.  Discusses different
	methods of making class declarations and the implications of
	those methods for testing.
	This paper is available by anonymous ftp from vega.dur.ac.uk in
	/pub/papers.  Get "guide.ps.Z" for A4 paper formatting or get
	"guideus.ps.Z" for US letter formatting.

Turner, C. D. and D. J. Robson, "State-Based Testing and Inheritance",
	Technical Report TR-1/93, Computer Science Division, School of
	Engineering and Computer Science (SECS), University of Durham,
	Durham, England.
	Discusses the implications of inheritance for testing,
	particularily incremental testing.
	This paper is available by anonymous ftp from vega.dur.ac.uk in
	/pub/papers.  Get toopinht.ps.Z" for A4 paper formatting or get
	"toopinhtus.ps.Z" for US letter formatting.

Wong, P. Automated Class Exerciser (ACE) User's Guide.  Technical
	Report TR92-0655, MPR Teltech Ltd., September 1992.

Courses

Berard Software Engineering, Inc. teaches a seminar on Testing of
Object-Oriented Software (TOOS).  The next one scheduled that I know of
is November 8-12, in Washington.  Call 301-417-9884 for details.

Quality Fractals, Inc. has a course called "Testing Object-Oriented
Software".  Contact: 508-359-7273 (Box 337, Medfield, MA 02052).  The
course is taught by Shel Siegel of YESS!, Inc.  Contact: 916-944-1032.

Software

There is a smalltalk class library in the Univ. of Illinois archives
which includes a simple Tester class written by Bruce Samuelson
(bruce@utafll.uta.edu). It is a general superclass for application
specific classes that test non-interactive objects such as trees,
collections, or numbers. It is not suitable for testing user interface
components such as windows, cursors, or scroll bars. The filein
includes Tree classes, Tester itself, and subclasses of Tester that are
used to validate the Tree classes. For ParcPlace Smalltalk (ObjectWorks
4.1 and VisualWorks 1.0). To get it ftp the file
"/pub/st80_vw/TreeLW1.1" from st.cs.uiuc.edu.

IPL Ltd. (in the UK) has a testing tool called Cantata which allows for
testing C++, but as far as I am able to determine, it has no special
features for C++ testing.  From the product literature:
	Cantata allows testing to be performed in an intuitive way
	making the tool exceptionally easy to use and productive in
	operation. Cantata is suitable for testing software written in
	either C or C++.

	Cantata provides comprehensive facilities for all forms of
	dynamic testing, including: functional testing, structural
	testing, unit testing and integration testing. Cantata has been
	specifically designed to operate in both host and target
	systems and so allow full portability of tests between these
	environments.
For more information contact IPL:
	IPL Ltd.
	Eveleigh House, Grove Street, 
	Bath  BA1 5LR
	UK
	(0225) 444888
	(0225) 444400 (FAX)
	email: shaun@iplbath.demon.co.uk

TestCenter from CenterLine will do coverage testing of C++ (and C)
code.  Also does some memory debugging (similar to Purify) and regression
testing.  Highlights from CenterLine literature:
  *Automatic run-time error-checking on executables to enhance quality 
  *Automatic memory leak detection on executables to optimize memory use
  *Graphical test coverage to highlight any code not executed during test runs
  *Intuitive GUI for easy test analysis 
  *Programmatic interface to output files and cumulative code coverage 
   to support batch-mode and regression testing
  *No recompilation needed, resulting in quick turnaround
  *Complete C and C++ language support
  *Integration with leading programming tools for maximum productivity gains

MicroTech Pacific Research (mpr.ca) has a C++ class testing tool called
ACE (Automated Class Exerciser) which is available under non-disclosure
agreement.  It is not currently for sale.  If you are interested,
contact Paul Townsend, townsend@mprgate.mpr.ca.

Software Research Inc. (625 Third St, San Francisco, CA 94107-1997,
voice: 1-415-957-1441, email: info@soft.com) has a coverage tool for C++
that is called tcat++.  It is an extension of SRI's tcat program.

Quality Assured Software Engineering (938 Willowleaf Dr., Suite 2806,
San Jose, CA 95128, voice: 1-408-298-3824 ) has a coverage tool for
C and C++ called MetaC.  It also dones some syntax checking and memory
allocation checking.

A group of volunteers is building a C++ test harness for the automated
testing of C++, C and Perl programs.  The system is called ETET (Extended
Test Environment Toolkit).  To join the group of volunteers, send email to
	etet_support@uel.co.uk
The software is available via anonymous FTP from bright.ecs.soton.ac.uk
(152.78.64.201) as "/pub/etet/etet1.10.1.tar.Z".  They are looking for
other FTP sites - sned email to the above address if you can provide
one.  This is a beta release and _should_ compile on any POSIX.1 system.
As much of this work is being done by SunSoft, my guess is that the
software will have the fewest problems on SunOS or Solaris releases.

Acknowledgements


Thanks to the following for helping assemble this list:
	Benjamin C. Cohen, bcohen@scdt.intel.com
	Brian Marick, marick@hal.cs.uiuc.edu
	Bruce Samuleson, bruce@utafll.uta.edu
	Daniel M. Hoffman, dhoffman@uvunix.uvic.ca
	Edward Klimas, ac690@cleveland.freenet.edu
	John Graham, J.Graham@axion.bt.co.uk
	Jim Youlio, jim@bse.com
	Jeffery Brown, jeffrey.brown@medtronic.com
	Lars Jonsson, konlajo@etna.ericsson.se
	Manfred Scheifert, ch_schie@rcvie.co.at
	Mark Swanson, mswanson@mechmail.cv.com
	Mary L. Schweizer, mary@gdwest.gd.com
	Michael Einkauf, Michael_Einkauf@iegate.mitre.org
	Paul Townsend, townsend@mprgate.mpr.ca
	Phyllis G. Frankl, pfrankl@polyof.poly.edu
	Rachel Harrison, rh@ecs.soton.ac.uk
	Risto Hakli, rkh@tko.vtt.fi
	Russ Hopler, russ@bse.com
	Stephane Barbey, barbey@di.epfl.ch
	Tony Reis, tonyr@hpsadln.sr.hp.com
	Yawar Ali, yali@bnr.ca

3.12) What Distributed Systems Are Available?

The following is quite old and should be replaced.

The following post helps to provide some answers with at least a partial list. See also Appendix E.

From: rmarcus@bcsaic.boeing.com (Bob Marcus)
Newsgroups: comp.object,comp.client-server
Subject: Distributed Computing Products Overview
Date: 17 Sep 93 00:02:40 GMT
Organization: Boeing Computer Services
           
             DISTRIBUTED COMPUTING PRODUCTS OVERVIEW

  There was a recent posting concerning the relationship between OMG's CORBA
 and Distributed Transaction Processing Monitors. In general, there is a lot of
 uncertainty as to how the various distributed computing tools, products and
 environments might work together.  Below is the outline of an eight-page
 posting to the Corporate Facilitators of  Object-Oriented Technology (CFOOT)
 mailing list addressing these issues. Let me know if you would like a copy
 of the posting and/or to be added to the CFOOT mailing list. 
     
                                          Bob Marcus 
                                          rmarcus@atc.boeing.com
 -----------------------------------------------------------------------
 SOME GENERAL REFERENCES FOR ADDITIONAL INFORMATION 
 -----------------------------------------------------------------------
 MULTIPROTOCOL NETWORK TRANSPORTS

  Peer Logic (PIPES)
  ATT (Transport Layer Interface) 
 -----------------------------------------------------------------------
 MICROKERNELS

  OSF(Mach)
  Chorus Systems (Chorus)
  Microsoft (NT)
 -----------------------------------------------------------------------
 REMOTE PROCEDURE CALLS

  NobleNet (EZ-RPC)
  Netwise (Netwise-RPC) 
  ATT/Sun (TI-RPC)
  OSF (DCE/RPC)
 -----------------------------------------------------------------------
 CONVERSATIONAL PROGRAMMING

  IBM(Common Programming Interface-Communications)
 -----------------------------------------------------------------------
 MESSAGING PRODUCTS

  System Strategies/IBM (MQ Series)
  Horizon Strategies (Message Express) 
  Covia Systems(Communications Integrator)
  Momentum Software(X-IPC)
  Creative System Interface (AAI)
  Digital (DECmessageQ)
  HP (Sockets)(BMS)
  IBM (DataTrade)(DAE)
  Suite Software (SuiteTalk)
  Symbiotics (Networks)
 -----------------------------------------------------------------------
 PUBLISH AND SUBSCRIBE MESSAGING 
 
  Sun(Tooltalk)
  Teknekron (Teknekron Information Bus)
  ISIS(Distributed News)
  Expert Database Systems (Rnet)
 ----------------------------------------------------------------------
 DISTRIBUTED COMPUTING ENVIRONMENTS

  OSF/DCE
  ISIS(Distributed Toolkit)
 -----------------------------------------------------------------------
 TRANSACTION PROCESSING MANAGERS 

  Unix Systems Lab (Tuxedo) 
  Information Management Company (Open TransPort) 
  NCR (TopEnd)
  Transarc (Encina)
  IBM/HP/Transarc (Open CICS)
 -----------------------------------------------------------------------
 DISTRIBUTED WORKSTATION EXECUTION SYSTEMS

  Aggregate Systems (NetShare)
  Platform Computing(Utopia)
  ISIS(Resource Manager)
 -----------------------------------------------------------------------
 OBJECT REQUEST BROKERS 

  Hyperdesk (Distributed Object Manager)
  IBM Distributed System Object Model(DSOM)
  Microsoft (Distributed OLE)
  Iona Technologies Ltd. (Orbix) 
  BBN (Cronus)
  ISIS (RDOM)
  Qualix (NetClasses)
  Symbiotics (Networks!)
  Digital(ACA Services) 
  Object-Oriented Technologies (SuiteDOME)
 -----------------------------------------------------------------------
 SYSTEM MANAGEMENT  

  OSF (Distributed Management Environment)
  Legent
  Digital Analysis (HyperManagement)
 -----------------------------------------------------------------------
 DISTRIBUTED DEVELOPMENT/EXECUTION PRODUCTS   

  Texas Instruments (Information Engineering Facility)
  HP (SoftBench)
  Digital (COHESIONworX) 
 -----------------------------------------------------------------------
 DISTRIBUTED DEVELOPMENT/EXECUTION PRODUCTS   

  Independence Technologies (iTRAN)
  Intellicorp(Kappa) 
  ISIS Distributed Systems (RDOM) 
  Early, Cloud & Company (Message Driven processor)
  Expersoft(XShell)
  Cooperative Solutions(Ellipse)
 -----------------------------------------------------------------------

3.13) What Is The MVC Framework?

MVC stands for Model-View-Controller. This framework was originally adopted in Smalltalk to support Graphical User Interfaces. Views support graphical interfacing, controllers handle interaction, and models are the application objects. See [Krasner 88] and [LaLonde 90b].

From: Carl Petter Swensson (cepe@taskon.no)
  Prof. Trygve Reenskaug is generally cited as being the creator of
  the MVC concept. He worked with the Smalltalk group at Xerox PARC
  as a visiting scientist in 78/79. During this stay at Xerox PARC 
  he developed the MVC. I know him well and have talked to him about
  this. He confirms it, although stating that it was a collaborative
  effort at Xerox PARC.

  The implementation of MVC in Smalltalk-80 has since been further
  developed by ParcPlace Systems.

  He has worked with Smalltalk in a commercial and research
  environments since then. His group at the Centre for Industral
  Research in Oslo (now part of the SINTEF group) had the only
  Smalltalk-78 implementation outside Xerox PARC.  He is now working
  with Taskon AS.

  The ideas that initially gave MVC has been developed further and 
  is the basis of the work Trygve is currently doing on the
  OOram methodology.

3.14) What is Real-Time?

Real-time is our linear extrapolation/perception of imaginary time (along the quantum wave function (OTU) in ten dimensions, of course). [This section is YTBI]

3.15) What Is Available on OO Metrics?

This section is old and will be updated.

This section is still building.

http://www.sbu.ac.uk/~csse/publications/OOMetrics.html

[Berard 93] contains an elaborate bibliography and section on OO metrics. [Booch 94] also contains some coverage.

Also:


Object Oriented Software development
Mark Lorenz ISBN 0-13-726928-5
Prentice Hall

Software Metrics
Grady-Caswell ISBN 0-13-821844-7
Prentice Hall

Measuring Software Design Quality
Card-Glass ISBN 0-13-568593-1
Prentice Hall


From: trilk@informatik.tu-muenchen.de (Joern Trilk)
Newsgroups: comp.object,comp.lang.c++,comp.lang.smalltalk,comp.databases.object
Subject: Re: In search of OO Metrics
Date: 20 Jun 1994 14:29:27 GMT
Organization: Technische Universitaet Muenchen, Germany

...
Here are some references:

@article{inheriting:1993,
    author  = {G. Michael Barnes and Bradley R. Swim},
    title   = {Inheriting software metrics},
    journal = {JOOP},
    year    = {1993},
    month   = {Nov./Dec.},
    volume  = {6},
    number  = {7},
    pages   = {27-34}
}


@article{a-new-metr:1993,
    author  = {J.-Y. Chen and J.-F. Lu},
    title   = {A new metric for object-oriented design},
    journal = {Information and Software Technology},
    year    = {1993},
    month   = apr,
    volume  = {35},
    number  = {4},
    pages   = {232-240}
}


@inproceedings{towards-a-:1991,
    author  = {Shyam R. Chidamber and Chris F. Kemerer},
    title   = {Towards a Metrics Suite for Object Oriented Design},
    booktitle = {OOPSLA '91 Proceeedings},
    year    = {1991},
    pages   = {197-211}
}


@inproceedings{software-m:1992,
    author  = {J. Chris Coppick and Thomas J. Cheatham},
    title   = {Software Metrics for Object-Oriented Systems},
    booktitle = {CSC '92 Proceedings},
    year    = {1992},
    pages   = {317-322}
}


@inproceedings{some-metri:1991,
    author  = {B. Henderson-Sellers},
    title   = {Some metrics for object-oriented software engineering},
    booktitle = {TOOLS Proceedings},
    year    = {1991},
    pages   = {131-139}
}


@article{object-ori:1993,
    author  = {Wei Li and Sallie Henry},
    title   = {Object-Oriented Metrics that Predict Maintainability},
    journal = {J. Systems Software},
    year    = {1993},
    volume  = {23},
    pages   = {111-122}
}


@inproceedings{workshop-r:1992,
    author  = {Teri Roberts},
    title   = {Workshop Report - Metrics for Object-Oriented Software Development},
    booktitle = {OOPSLA '92 (Addendum to the Proceedings)},
    year    = {1992},
    pages   = {97-100}
}


@techreport{softwareme:1991,
    author  = {A. Buth},
    title   = {Softwaremetriken f{\"u}r objekt-orientierte Programmiersprachen},    institution = {Gesellschaft f{\"u}r Mathematik und 
Datenverarbeitung},
    year    = {1991},
    month   = jun,
    number  = {545},
    type    = {Arbeitspapiere der GMD}
}

The Software Engineering FAQ lists the following references concerning
metrics for object-oriented systems:

Date: 26 Jan 1993 Originally collected by: ZUSE%DB0TUI11.BITNET@vm.gmd.de (Horst Zuse) a. Morris Kenneth L. Metrics for Object-Oriented Software Development Environments (master's thesis). 1989, MIT. b. Rocacher, Daniel: Metrics Definitions for Smalltalk. Project ESPRIT 1257, MUSE WP9A, 1988. c. Rocacher, Daniel: Smalltalk Measure Analysis Manual. Project ESPRIT 1257, MUSE WP9A, 1989. d. Lake, Al: A Software Complexity Metric for C++. Annual Oregon Workshop on Software Metrics, March 22-24, 1992, Silver Falls, Oregon, USA. e. Bieman, J.M.: Deriving Measures of Software Reuse in Object Oriented Systems. Technical Report #CS91-112, July 1991, Colorado State Universty, Fort Collins/ Colorado, USA. Hope this helps, Joern ---------------------------------------------------------------------- Joern Trilk Phone: ++49-89-2105-2391 Institut fuer Informatik (H1) Fax: ++49-89-2105-5296 TU Muenchen Email: trilk@informatik.tu-muenchen.de 80290 Muenchen ---------------------------------------------------------------------- Newsgroups: comp.software-eng From: scottw@advsysres.com (Scott A. Whitmire) Subject: Re: Any good OO metrics? Organization: Advanced Systems Research Date: Mon, 28 Nov 1994 05:58:29 GMT In <3baqhn$crg@newsbf01.news.aol.com>, cjdavies@aol.com (Cjdavies) writes: >Has anyone come up with metrics that work realistically for OO >development? The old lines of code, cyclomatic complexity and Halstead >metrics don't work so well with OO languages such as Smalltalk (or any >language that facilitates reuse). Also, has anyone adapted function >points to OO languages? Any ideas would be most welcome. >Thanks, >Colin Davies. Several people have been working in metrics for oo development. For a quick synopsis, check out my article in the "Encyclopedia of Software Engineering" edited by John Marciniak and published by John Wiley & Sons. The article gives an overview of the work being done in the field, and what needs to be done. It is a couple of years old now, but there really isn't that much going on. I did run into one book called "Object-Oriented Software Metrics" (I forget the authors), but I didn't think much of it. Your assessment of LOC, cyclomatic complexity, and Halsted are right on the money. As for function points and OO, I think you'll find two papers useful. The first is a chapter I wrote for the "Software Engineering Productivity Handbook" edited by Jessica Keyes and published by McGraw-Hill. It applies standard function points to OO software. I suspect you'll find standard function points wanting. I use an extension I developed a couple of years ago called 3D function points. I have an electronic (plain text) version of the paper I can send if you like. Metrics and OO development are fairly new to each other. I am working on ways to measure such design characteristics as cohesion, coupling, complexity, similarity and the like. I haven't been too thrilled with the work that has been done so far. Much of it has serious theoretical and technical flaws. Scott A. Whitmire scottw@advsysres.com Advanced Systems Research 25238 127th Avenue SE tel:(206)631-7868 Kent Washington 98031 fax:(206)630-2238 Consultants in networking, network-based applications, and software metrics.

3.16) What Are Visual Object-Oriented Programming Systems?

See also http://union.ncsa.uiuc.edu/HyperNews/get/computing/visual.html. There is also a comp.lang.visual and FAQ, similar to the www html above.

Visual programming is the use of graphics and graphical techniques in computer programming. It is becoming more common to see many approaches to visual/graphical programming languages emerging that incorporate the object-oriented programming philisophy. Toward this end, developers of new programming languages and programming environments are exploring how to combine visual programming with object-oriented programming by investigating how the basic concepts of OOP -- data abstraction, instantiation, composition, and specialization -- create new opportunities for programming using visual means of construction.

A workshop on this topic was conducted at the 1993 OOPSLA, and a workshop summary appeared as part of the 1993 OOPSLA Addendum. Several of the presenters at the workshop developed full versions of their presentations, which are available in book form:

	Visual Object-Oriented Programming: Concepts and Environments,
	Margaret Burnett, Adele Goldberg, and Ted Lewis, editors,
	Prentice-Hall/Manning Publications, Englewood Cliffs, NJ, 1995.

	http://www.cs.orst.edu/techpub/vlib/vlib/Visual-OOP/CARD.html

-----
Margaret Burnett        .       e-mail: burnett@cs.orst.edu
Assistant Professor       .       WWW page: http://www.cs.orst.edu/~burnett/
Computer Science Dept.      .        
Oregon State University       .
Corvallis, Oregon 97331 USA     .

3.17) What Tutorials Are Available On Object-Oriented Concepts and Languages?

Here is an entry, albeit somewhat old, on tutorials.

Date: Thu, 25 May 95 17:31:21 EDT
From: wheeler@ida.org (David Wheeler)

A list of C/C++ tutorials, including online tutorials, is maintained at:
  http://vinny.csd.mu.edu/learn.html

Note that C and C++ are treated together.  One of the tutorials listed is the
course: "Introduction to Object Oriented Programming Using C++", a self-paced
class within the Globewide Network Academy [GNA]; this course may be found at:
  http://uu-gna.mit.edu:8001/uu-gna/text/cc/index.html

Another course listed is the Coronado Enterprises C++ Tutorial, which assumes
that the user is already familiar with C (not necessarily ANSI C).  It may be
downloaded from:
  anonymous@oak.oakland.edu:simtel/msdos/cpluspls/cptuts22.zip
  anonymous@oak.oakland.edu:simtel/msdos/cpluspls/cptutt22.zip

One Ada 95 on-line tutorial is Lovelace, which is intended for those who are
already familiar with other algorithmic programming languages and are somewhat
familiar with object orientation.  Lovelace is available at:
  anonymous@lglftp.epfl.ch:/pub/Ada/HTML/lovelace.zip
  http://lglwww.epfl.ch/Ada/Tutorials/Lovelace/lovelace.html

Other Ada tutorials are listed in:
  http://lglwww.epfl.ch/Ada/Tutorials/Lovelace/othert.html

The Sather home page includes a list of Sather tutorials in its "Getting
Started" section:
  http://http.icsi.berkeley.edu/Sather/

The BETA language is introduced in:
 http://www.daimi.aau.dk/~beta/Tutorials/BETAintroduction/BETAintroduction.html

A large list of SELF-related papers available electronically is at:
  http://self.stanford.edu/papers/papers.html

The Booch design method is briefly described in
  http://www.itr.ch/tt/case/BoochReferenz/

For a list of many different resources of computer-language-specific
information, see the YAHOO list of computer languages at:
  http://www.yahoo.com/Computers/Languages/