Uploaded by Eyüb Bayazit

Object Oriented Journal

advertisement
.,
-,
Q
“,....
JOURNAL OF
013JKT-ORIENTED
#
4~
—
October
1991
Vol. 4, No. 6
Editorial
6
Guest Editorial
8
Features
Smallkit: a slim application framework
11
]on Hopkim
byAIok Stritiinger
c++
54
Application framework
Analysis of a proposed C++ feature
Andre
Korni~
present advantages in programming complex interactive appli~tions, but
dso have associated problems. To defisc such problems, this article inrrodums the dmign and implementation of a new hamework — Smaflkit. SmaJlkir’s distinction results from its clean and concise architecture, which was dmigned to shorten considerably Ihe learning phase for the program-
60
Analvsis & Desi~n
Why ;se obiect-orie;ted
(A rnanagernent
PCW Coad
mer. Although Smallklt har far fewer build]ng blo&
development?
perspective)
19 An object-oriented
62
Smalltalk
Does Smalltalk
Albn W~-Bmck
than comparable products, its built-in
fimctiorraliry compares well [o o~er kameworks and irs poten~ial funmionaliy is as flexible.
approach to expert diagnostic
systems
need types?
byAjit Narayanan and Ywnping]in
This article examines an object-oriented errperr diagnostic sptem used in the area of circuit boards.
68
CLOS
Toward
a definition
Symptom interpretation and fault diagnosis are knowledge-intensive and experience-based tasks.
of object-
The coupling of object-oriented techniques to the established area of inference engines provides for
oriented languages, part 3
Nickieben Bourbaki
interesting reading.
30 PSE: an object-oriented
simulation environment
supporting persistence
byStephanie. Cammarata & Chtitopher Bur&#
73
Book Review
Design
Reviewed ~ Stwen C. Bihw
Object-Oriented
76
Book Review
Object-Oriented
M&eling
This article deseribes the persistent simulation environment (PSE), a proto~pe system developed
and Design
for building and errecuting object-oriented simulations. PSE is implemented in CLOS wirh facili-
Reviewed by Sanjirr Gosrain
ties for (1) event- and process-based discrete simulation, (2) a persistent object system, and (3) diskbaaed object prefctching for improved object management. PSE is based on features found in a va-
Conference
78
Overview
The 00PSLA
A.&n 3nyh
’91 Technical
Advertiser
Index
riety of simulation languages, includlng Simula and Simscript.
Program
41 PO constraints as tools to synchorinze active
objects
byA. Corrdi
82
Career Opportunities
& Training Services
andL. bonardi
This article focuses on the issue of internal synchronization withlrr active objects. The model mn-
87
sidered is the paralld object (PO) model. The article
synchronization
berween
tools
that
the specification
~t
on the interface
of normaJ
behavior
describes
ofacIive
objects.
PO-provided
They
mrrstraints,
represent
a neat
high-level
separation
and rhe specifi=rion of its synchronization. PO is
compared with other solutions provided in object systems widI similar objectives.
I
The Journal of Object-Oricntrd
10012,
(212)274-0640.
Pmsramming
POSTMASTER:
is publishednine timesa y=r by SIGS Publimrions,
Pka.ie direct advertising inquiries 10 this address. Second-k
carions. Inc. AI] righrr reserved. Rrproducrion
and is flatly prohiblred.
(ISSN #OE96-843E)
of rhis material by ekcrmnic
Material may be repmdud
Send address changm to JOOP,
quicker ordering, call (21 2)274-0d40,
wirh express permksion
P.O. Box 3000,
Annual suhscriprion
transition,
Xerox,
Manu.uriprs
Road CIrde,
tilorado
Sprin@,
Dept. OOP,
CO S0906,
1991 SIGS PubIi.
US Copyright
law
From the publisher.
Denvillc,
rates for the US are $153
under rrview should be typed double spaced (in triplicate).
Suite 604, New York, Ncw York
or any other merbod will be rreatcd as a willful violation of&c
NJ 07834.
for imtitutions,
Inquiri=
and ncw subscription
Editorial cormpondence
orders should alm be senr to [bat address. For
$59 for individual. All foreign orders musr be prepaid in US finds with addi-
tional posragc of $40 pet year hr air semice. Sin~e copier are $9 and orders should be sent m SIGS Public.arions,
W,ener, 2185 Broadmoor
Inc., 5BfI Broadway,
postage paid at New York, NT, and additional mailing offices. @ tipyrigbr
and Product
[“c. at [be above New York addrs.
News information
.&ould be sent ro the H[ror,
Dr. Richard S.
(71 9)520-1356.
5
Editorial
EDITOR
Dr. Riti
Wener
Univmiy of COfur&, Cobrd
Springs
SIGS PUBL1CATIONS
~’~he
1
four features in this issue provide further evidence that object-oriented
methodology is permeating many nooks and cranni= of the world of sohme
development and also the world! It is an international discipline. AI1 four articles in this issue are either authored or coauthored by Europeans from Italy,
the United Kingdom, and Austria.
“PO Constraints as Tools to Synchronize Active Objects” by Corradi and Leontidi
deals with the subject of mdtithreaded objects-objects
that can accommodate several
threads of execution. An active object system called Parallel Objects (PO) is described.
This system uses an object model that allows objects to be internally parallel, The expression of synchronization takes into account classification and inheritance.
“PSE An Object-Oriented Sirndation Environment Supporting Persistence”by Stephanie
c arnrnarata and Christopher
Burdorf describes the Persistent Simulation Environment
(PSE), which combines object-oriented simdation with a persistent object repository. The
goals of PSE are (1) to augment a contempora~
object-oriented language with discrete-
event processing capability equal or greater than that offered by Simscript and Simula,
(2) to tightly couple an object-oriented simulation language with a secondary storage ficility to achieve the persistence of simdation objects, and (3) to improve the swapping
of persistent simulation objects between main memory and secondary storage. The pro-
EDITORtALiADVISORY
BOARD
ThomasA~4
ObjectDesign
Gndy BooctI,Ratiod
GearseBIMWOd,Dig”tuti
B&J. h
Information Age Consu&ing
Chuck Dti, The Whitiwatt-r Group
&
Gald~
ParcPbzmSysm
R. Jordan Kreiier, GcncrafEf’cctric
Thonus Inve, Conrfdtant
BertnndM*., ISE
Meilir PaSe-Jones,
WayhndSptems
P. M]cbad ~ots,
Vcnant Object Tech.
Bj~e SucIIMtrup,
AT&TBel hb~
Da~ Thomaa,ObjctiTechnohU IntiwtionaI
JOOP ADVISORY BOARD
Hrudut-Packa,d hbs
Stuart GmenMd, Matit Co@e
IvarJambsnn, Objcctim Syrra
bris +won,
Lund Unimmiy, Swdcn
Lewis Ph.,
Unimiq of Cohraab
me
W% Bo&ndIntem&”ona[
Daniel Fii,
COLUMNISTS
GeorgeBmrtb, Digitafk
NickiebenBowbaki, Lti”d Inc.
Pad Burt.crwnrth,
SmW Logic
Petu bad, ObjetiInttmatiomL Inc.
PA Harmon, Comtitint
Jon WyaU Hopkins, P&i.
So@arc
Andrew heni~ AT&TBt-llhbs
Wllf Wnde,
Carkt.n Uniwi-ri~
John Pu#, CurfttanUniwmiy
TonyWmemm, IDE
C. Thow
W., IVavalPoItgradUte School
ErikWiener,ProdtiNewJEditor
totype for PSE was developed in CLOS.
SIGS PUBLICATIONS,
“An Object-Oriented Approach to Expert Diagnostic Systems” by Ajit Narayanan and
Yuanping Jin examines an object-oriented expert diagnostic system used in the area of
circuit boards. Symptom interpretation and fadt diagnosis are knowledge-intensive and
experience-based tasks. The coupling of object-oriented techniques to the established
area of inference engines provides for interesting reading. The work done for this article
was supported by the Digital Equipment Corporation
(UK) via their European Re-
search Program.
“Smallkit: A Slim Application Framework” by Alois Stritzinger discusses application
frameworks in general and a particular Smalltalk framework in detail.
Finally, I would like to welcome our second guest editorial writer, Jon Hopkins. We plan
to continue to feature guest editorials on a re~ar
basis.
INC.
Ricbd P. Friedman
Fmn&
& Group Pubbhm
ART/PRODUCTION
ElisaVarian,Manap”nf ~itor
SW Ctigan Cmm”ucDir&r
Elii
A. Upp, %duch”on tiitir
tin
Polner, DrJktop Dc&cr
CIRCULATION
DianeBadway,CimLz&nBtuint-s.rManager
htldeen CanninB Fd$Ummt MIMugcr
J.hnScbreiber,Cir&tion titant
MARKETING/ADVERTISING
James Kam, &m>inf
Dirctir
Diane Morancie,Account Exmti;lhittnmt
WeJ
GeAdine Scbafran, Advcrthing S& Artint
ADMINISTWTION
Accouti”ng
s—
Woud Dlmerstein,Con+e Manager
JenniferRscher,Arrhtinta tbePubbsbtr
Laura ha Taytor,AdministiatiucAtint
Darid Chamerpti,
I hope you enjoy the issue.
M-i=
R Monck
GMaf MawP
~SIGS
PUBL1CATIONS
Richard S. Wiener
Publishenof Jouml of Objmt-Oritntcd Programmin~
06cctMaf&”ne, Hohne on O&ect-Orirnted Technobo,
% C+ + &O% Tbc SuMkR~ti,
Th Ink?Mtio~[
00P Dire~y, and TheXJ.umal
—
6
JOOP
OCTOBER
1991
Btid YourSmalltalk
Team
withaWorld-Class
Partner
KSC Guides Your
Development
00 ANALYSIS
Team
~i:’
,,
,
.:f
:
00 DESIGN
to Efiective
00 Solutions
ADVANCED
. .
Y
MENTORING
,., :
1
,..!
~
TRAINING
,..
:<
.“
,.’.
.,
“+~
.$. .
*.<.:
A
JOINT DEVELOPMENT
.;.q
:,?
ENVIRONMENTS
~;,
TOOLS
:;s
,, 4
FRAMEWORKS
To build a first rate development team
KSC teams with dents to address
that defivers the maximum benefits of
application areas such as:
object-oriented technology, you want
9
Decision Support Systems
only the most highly qualfied experts
●
Manufacturing Information Systems
Texas Instruments
to guide you,
●
Manufacturing Process Modeling
American Airlines
●
Financial Transaction Management
Boeing Computer Services
Financial Trading Systems
Northern Telecom
●
Simulation Environments
Texaco
●
Network Management
NCR
offers a cohesive program of object
technology training, services, and
products. Our unparalleled years of
-ble
●
Custom GUIS
●
SQL Access
Sinautalk -ence
YWW’ build the most ~ve
General Electric
Bell Northern Reseai’ch
●
Knowledge Systems tirporation
Commem
Hewlett-Packard
KSCputs you in the forefront of
advanced so~are
developrmnt.
We providetime-testedsolutions
to meet your company’s specifsc
00/Smalltalk Lrainingand
development requiremmts.
B
KnowledgeSystemsC~on
Partnersin Advanced So~are Development
114 MacKenan Drive
Cary, NC 27511
(919) 481-4000
Circle 54 on Reader Service Card
GuestEditorial
Let us not lose sight
J
collections? Plug-compatible sets, dictionaries, or, better yet, a
plug-compatible printer setup? How about plug-compatible
USIrecently, the cover of Bmines Wek (September 16, 1991)
was emblazoned with the term “object-oriented programming” — heralding the advent of simple sohare.
spreadsheets, blackboards, and amortization tables?
How do standards evolve? Most probably not by decree.
But open
the cover and the term is loosely translated to be synonymous
likely
More
by the ebb and flow of the free market. Recendy, I had the
with “making programmers more productive” or “allowing sofi-
opportunity ro review a number of commercially availableclass li-
ware to be developed more rapidly.” Indeed, this is the goal of the
object-oriented paradi~. Much like the Pledge of Allegiance, we
engineered to work in the programming environment as part of
recite the credo of our industry, mtolling the virtues of reusabili~,
the process. But, in the long run, I would have had a hard time
reliability, maintainability, and extensibility. Unfortunately, I of-
“constructing” a program out of all of them togetker.They were
braries (not surprisingly implemented in C++). All were carefilly
ten feel that we are losing sight of the driving force behind the
not we
major paradigm shift the object-oriented model represents.
The collection classes from “Set A would not be reasonable
(interface) compatible. They were process compatible.
technology rests on a basic concept:
stand-ins for the collection classes that “Set B“ needed for its var-
a well-defined interface protecting a well-encapsulated imple-
ious implementations. Likewise, “Set C“ could not use the list
Object-oriented sotiare
mentation. In other words, the activities of analysisand design are
classes defined in Set B, and so on. Which meant that my appli-
ones of ddlnition, not implementation. The benefits of this tech-
cation would have had as many collection class definitions as class
nology derive directly from the definition of interface and per-
libraries. Object oriented? Perhaps. C++ oriented? Yes.
To truly become more productive programmers — produc-
formmce. Therefore, the effort in applying this technology must
be toward defining the product of one’s effort, not only the pro-
ing the kind of sofiare
cess by which the product is produced.
Product? Isn’t the product alwaysin the sights of a software de-
ploding hardware market — developers musr start to demand
that will help us keep up with the m-
software components that will work together. Components that are
control system — or
cohesive, but loosely coupled, Conceiving and understanding sofr-
perhaps even, say, a cruise control? Of murse. But that is a systemIevel view of product. How about the parts used to construct the
ware systems will always be complm, for that is the added value of
the system. Recognize object-oriented technology for what it is: a
system? Is there not an equivalent pressing need for standards in
means of organizing complexi~ at that level.Then, and only then,
the product of our efforts? A standard programing
can we start to make the prows of software development simple.
veloper? The tracking package, the air tttic
language
carsbe very useful:standard tools, workers trained to use them, and
Jon Wyatt Hopkins
a competitive marketplace that produces the best tools for the
~ptim~zed
c++
lowest price. But what about standard parts? Plug-compatible
.,,,.
J ... ,:- ,”...
~-.,.:,
.
.. :. ,,i :; ;-. .... ...,.,
,,
~~.
-.. .
.<
.;
“’ ~eb~g
Palladio Software
with Object-Oriented
Now you can have high performance
instrumentation,
optimized
code and source-level
you to give up optimization
debugging.
Microtec@ Research
Object-Oriented
development
complete
tools offer the only
solution for C++ compila-
production
debug of
quality, optimized
code.
Don’t compromise.
Optimize.
Your C++ applications
performance
optimizing
promise
need high
code generation
compilers,
on a debugger
handle the optimized,
from
So why comthat can’t
production
quality code you want to ship in your
applications?
Our C++ tool set
avoids intrusive
methods
for the
sake of debugging.
Choose
XRAY and C++
tion and source-level
and never forces
of code
XRAK
ulation, in-circuit
Microtec
the tool set that gener-
emulation,
Research highly-inte-
grated C++ tools are available for
ates and debugs real C++ production
native and cross applications,
code.
include the Object-Oriented
Object-Oriented
gives you:
C++/ANSI C compiler,
●
Class & Instance Breakpoints
●
Object Browsing
constructs,
and keywords,
overloading
macro assembler,
& Type Inspection
of C++
including
scope,
and inheritance
Object-oriented
XRAY debug exe-
cution environments
UNIX, host-based
include native
instruction-set
sim-
the ASM
and the Capsule
C++ Class Library.
To learn more,
C++ types
class-level
and
XRAY
Debugger~” the CCP optimizing
XRAY
. Full understanding
and
remote target monitor,
call
800-950-5554
Circle 22 on Reader Service Card
w
Microtec
Research
Inc.
Technolo~ for Productivity
Microtec Research, Inc., 2350 Mission College Blvd., Santa Clara, CA 95054,408-980-1300
Boston 603-880-4484, Dallas 214-934-6555, London 0256-57-55-1, Los Angeles 714-727-0458, Munich 089-609-6020, Paris 33-1-30-57-19-09, Tokyo 03-3597-9000
Microlecand thoMicroleclogoare registeredtredemadcsof MicrotecMesearch,Inc. XRAY Debuggeris a trademarkof Microtec Research,
Inc.
The Microtec Research XRAY
Debugger opens a new window
to the world of debugging. With
XRAY’S state-of-the-art technology,
you can debug fully optimized
C and C++ programs.
No longer will you debug nonoptimized programs only to find
that the optimized version does not
work. The Microtec Research
XRAY Debugger is designed specifically to support non-intrusive
debugging of optimized code. And
XRAY doesn’t add a single byte to
your executable program.
The XRAY Debugger offers a
complete set of features for today’s
demanding software professional:
w
●
●
●
●
●
Multiple windows for convenient display of source code,
program variables, breakpoints,
execution state, and commands
Complete set of breakpoint
commands for simple and
complex breakpoints
FuU display of user variables
in their declared type
Powerful macro language
for use in user-defined commands, custom windows, and
automatic testing scripts
Comprehensive set of execution environments including
software simulation, hardware
emulation, real-time operating
systems, and in-circuit monitors
HOSTS
IBM PC
Sun
HP
APOIIO
On-line help
DEC
XRAY
COMPATIBILITY
TARO~
LANGUAGES
eBOXO 29000
c
c++
80X06 B8000
Pascal
64180 eo9eo
FORTRAN
TRON
Z80
Assembly
6051 OTHERS
AOA
Microtec
Research Inc.
Circle 32 on Reader Service Card
H
Creators
of the XRAY development
London 0256-57-55-1
environment.
Blvd. Santa Clara, CA 95054 408-980-1300
New England 603-880-4464
Munich 089-609-6020 Tokyo 03-597-9000
2350 Mission
College
Di*hto C++Without
Raima
erCanBeMttyU’y
Object
RaimaObjectManageris
designedto enhancethe elegance
of your C++development.
The functionality required to store
objects is built into the base classes,
Development time is decreased.
Quality is increased. Plus, your
applications gain the performanm
edge Raima products are known for.
Inhentan& is incorporated into Raima
Object Manager, yielding greater code
re-use and object extensibility. Now
you have the tool to more closely
model real worldobjects.
All Rairna database products are
designed for C and C++ programmers,
providing a smooth transition from C
to C++. Available on MS-DOS,
Windows, UNIX, 0S/2 and others.
Raima Object Manager is based on the
Raima Object Manager prices start at
latest object-oriented technology and
just $395.00, For more information on
db VISTA III’s proven database
en~ine. You can add persistence to
turning the ugly into elegant, call
objects and maintain complex inter1-800-DB-RAIMA
relationships using direct referenm,
relational, and network database models. (1-~327-M2) OuhideU.S.:w747-5570
,.
,
,-.
WMmww
The
Object
Storage
Class
Library
Raima Corporation 3245 146th Place S. E., Bellevue, WA 98007 USA (20~747-5570
Telex 6503018237 MCI UW
Fax: (206)747-1991
tntematioml
D~butor6: Anstilim:6124197177Se@U 3227349818
Brnzih55115315297
CentmlAmerim:506260764Finland35B080405350
finm 331460927M
Germany497122 34077; 49021491051 Italy3949 S29 1285 Jspm8133S632140 Memlco52S3495302
TbeNeiiIti:312159 46814Norwny47238~ M
Sin~pnm65334061SwedaM13111 5EUSwltzetid4164 517475
Talwnu8E62
5523277Tnrkey:9011520516Unikdfingdorn44992
500919Urn@aY 5982920959
CwpomtiaII,
AUrigAfr
r-cd, Pti FredBown&MAILltock
USSK01223599LITB12
2927210 Cofli#ht01991Raima
circle 3S on Reader SeM= Card
Smallkit: a slim application
framework
rogramming highly interactive applications with user
and b~.
friendly interfams is a difficult job when using con-
though it &es a long time to get familiar with them, bss expe-
P
They are very helpful for protilonal
programmers, al-
ventional toolboxes. It takes a lot of time to study the
rienced programmers-such
functionali~ of the provided routines and how they
neither the skill nor the time (in a one-semester practid
interact. Even after the complexity of the toolbox is
to use application &eWorks
mastered (in pa.rdculm, the sequential dependencies), there is still
as computer scienm student~have
course)
made for profasionals.
a good chanm of caUing the wrong procedures at the wrong time
On the other hand, there area lot of good ideas for useti applications in the heads of nonprofessional programmers and we
or in the wrong order. From this drawback of toolboxes, the need
should q to tap the combined potential of new ideas arsdslimmer
for appliution frameworks that contain dl the code that is com-
application frameworks. This notion is based on the philosophi-
mon in all (most) applications emerges.
cal conviction that programming should not be the restricted do-
Ars application f-ework
provides a set of (user interface)
building blocks together with an “empty” application. To awaken
the empty application, the programmer has to add predefine and
main of an elite, i.e., that programming tools should not be made
ever more powerfid regardless of their complexi~.
There is another approach that enables less experienad pro-
appli=tion-specific components. Through object-oriented tech-
grammers to write sophisticatedinteractiveprograms. With the help
nology, all framework components can be extended and modified
of an interface cons~ction
without toutilng the framework’s source rode.
After studying and using several application frarneworksl in
terfaces without actually programming them. The interactively
ow research group for almost two years, we believe that fme-
nents—which
works will become obligatory for the development of complex in-
means of some stanHlz.ed
teractive applications in the future. Despite of our positive tiperience, however, we see some serious problems related to
looks very promising, it has its drawbacks, The tictionality
intetiace constructors is always limited. Extending the appli~-
heworks.
tion’s user interface beyond the components provided (by the in-
Because of the manifold requirements of programmers, he-
tool, one can build convenient user in-
created wer interface is then mmecred to the functional compo-
te&
have to be developed in a traditional way—by
“connectors.” Although tils approach
of
constructor) is very awkward if not impossible. Neverthe-
work developers tend to add new f=tures to their frameworks to
less, the interface instructor
satisfy as many demands as possible. This trend leads to increased
build applications with “conventional” interfaces. To realize se-
(ofien neglected) learning effort and perhaps even runtirne/storage
ductive applications, one needs a more sophisticatedconnection k
overhead. The programmer can be swamped with fmework
tween interfaceand kctiomd
plication frameworks.
consisting of hm&eds or thousands of classes that only a few gu-
approach seems to be a a
mmponen~
way to
is po~ible with ap
rus me able to work with-probably on 100 MIPS/ 100 MB workstations. This smnario is not the kind of progress we are striving
for, yet the mmmercial market still seems to have an affection for
DESIGN PRINCIPLES
To reduce the complexity of frameworks for application pro-
dimsaun.
The current situation is not ~e~ as drastic as described above,
grammers, we see two possible approachw
but many application &eworks
known today are rather mmplex
1. deliberate restriction and conmntration on the essentials
2. hiding the framework’s complmiry through encaPsulation—
just offering mncise inte~ces
11
.
A slim application
framework
Each of these possibilitieshas its advantages and a combination
of them wodd also be very promising. One codd imagine offering beginners only concise interfaces with redud
document
●
command
●
menu item
●
menu
●
window
flexibility. The
professional programmer, on the other hand, would be offered a
wide range of flexibility. This codd be a&leved by incorporating intefi~
●
shells on various abstraction levels into the fme-
work architecture. As yer, this approach lacks a solid foundation
in research but fiords possibilities for the future.
s view
Due to philosophical and practical (i.e., manpower) reasons, we
Furthermore, many of our appli=tions use interface mmpo-
decided on the former approach reclusively. As examples from
the fieldsof programming languages, operating systems, and even
processors have shown, a minor reduction in function~l~
causes a major reduction in mmplexi~. Neverthel=,
of built-in hnctionali~
for the sake of ae
ofien
the omission
of learning is often a
difficdt trade-off. To make design decisions easier, we adhere to
the following basic principles:
●
concentration on the essenti~
●
choosing very few basic concepts
●
treating similar things similarly
To find our the essentialsof an application fi-arnewor~ we ask
three qu=tions:
1. mat
nents like:
●
buttons
●
scrollbars and scrollable areas
●
checkboxes
●
radio buttons
●
selectable tables or lists
●
static and editable tats
According to our second design principl~oosing
basic con-p-we
in some applications. Therdore, we leave the answer to the third
question ‘What do some applications have in common?” to more
do af6app1ications have in common?
2. What do most applications have in common?
3. What do someapplications have in common?
All applications consist of some sort of main program mntining a method for iu activation. Therefore, the answerto the first
question muld be
●
abstract class applimtion
●
abstract method run
very few
decided to drop concepts that we only found
ambitious projects.
SMALLIUT’S
ARCHITECTURE
The obvious approach is to implement each of the con~pts listed
above as a separate class. Three additional classeshave been added
(see Fig. 1). Objects of class Cl-serve
as “glue”for arranging di-
[
m
.-...-------------------
r
EvtHandlor
~
This minimal application &eWork
is, sadly, not what we are
looking for and does not help very much in our design.
To answer the second question, we have to specify in detail
Documati
View
I
Window
the kind of applications we want to build: we are interested in
BcmllBar
highly interactive appli=tions with a unfirm and mnsistent user
Butlon
interfam. In such programs, the user inte&
components form
an important part of the overall system architecture and even the
structure of the programs is determined by the user interface to a
ChmkBox
~
RadioButIon
i
Cluster
high degree.
ScrollView
Such applicationsdisplay their hcurnenfi in win~w~. All user
interactions trigger comm~
that serve to create and change doc-
uments and their visual representation, respectively. Commands
can be invoked by selecting menu item, which are grouped into
menus. Vlndows are often tiled into views,which are areas with a
certain semantics (e.g., buttons, scrollbars).
From this observation the following most important concepts
are derived:
E
~
TexiView
:
TableVw
~
~i
~
~
~
-------
---------
-------
---
dher claaaea
●
application
Figure 1. Smallkitclasses and their inheritance hierarchy,
12
JOOP
OaOBER
1991
,’
he you trying to plq CarnegieHall
.,,&,
If you’redevelopinga simpleapplication,
Pu’11findthatC++is an adequateobject. *G*, onenkd language.Butif you’re
&.”
“i, workingon a complicatedappliI“ cation,you’llneedadevelopment
F
~
“’~
~mFwr$~
environmentthat can actually
handletheiob.
Allegro CL”with CL4)s
AllegroCommonLISPwithCLOS
(theCommonLISPobjectSystem)automates
manyof thetasksyou’dhavetodo manually
with-C+t Allegro& withCMShasits rook
intheoriginal00P languages.
1[hasmatured
overtheyearsintoa powerfufdevelopment
environment
forcompla applications.
All- CL
with
MultipleInheritance
cm
C*
polymorphism
Ym
VEs
w
m
Encapstition
Interactive
w
m
m
Incremental Compition
Aulo. Memory Man~emenl
Mets-level Facilily
Methodtimbination
YES
No
YES
NO
YES
m
NO
t)ynamic
Redefinition
m
m
Standard ClassLib~
NO
NO
NO
No
. . with a street corner instrument?
True 00P virmositycan only be obtained
withthehelpofthebestUSPinstruments—
andthesupportofa companydevotedto the
successofyourapplication.
FRANZ
INC.
1995lJniversityAvenue,
Berkelq,M 94704
FM 415-548-8253
m. 415-548-3600
Ci&
8
on Flaader
Service Card
Designing Reusable Classes
slog components. Event objects encapsulate user event-related
data and ~
methods. EvtHu&is
an abstract classthat tines
the common functionality of all classes handling events.
The most powerft.dand mmplex class is View. A view describes
nates. Clusters may have a frame and a label. The Sk of a cluster
depends on its superview or subviews or is fixed. In each case, the
cluster elements are equally distributed. If a superview-dependent
cluster size is smaller than the minimum required size, some ele-
a recungular area on the screen where something is displayed. A
ments are clipped. In the opposite case, additional space is in-
view may, but need not, respond to user input. Each view e.stab-
serted between the elements (what codd be called a “rubber chls-
lisha its own coordinate system as well m a clipping sea. Views
ter”). The cluster concept
tie ofien composed of other views (subviews) and may themselves
dependen~ mechanism makes it easy to design mmplex view laYouts without getting lost between phels.
be pti of another view (supeMew). SupeMews enclose their sub-
The elms SrroffMew&ords scrolling capabilities for empty ar-
vicws entirely, but the subviews need not cover the superview. At
the top of a view hierarchy is a window. The location (related to
together with the flexible view
eas (whlcb may contain Mer
subviews), t-,
and tables. Scrol-
lviews do not contain scrollbars; the two are only loosely coupled.
Scrollbars have to be attached to scrollviews by means of sending
a message. Scrollvi~
To buitian application-specz~c
view, theprogrammerhas to
&rive a subcbsfiom
View
and
overrih at bast the&aw method.
If the hued
view k to respondto
mowe or keyboardevents,@rther
method have to be overrik.
all views-can
be nested.
The class T*Vim
supports displaying and manipulating atbitrary texts that may have varying attributm (such as font, W, and
style) from one character to another. Textviews can be static or
editable and have potential scrolling capabilities. Texr scrolling
may ouur automatically-if
the current selection is dragged out-
side the view rectangle— or by means of attached scroll bars.
Tmtviews include all required data structures for the internal text
representation (ma&l ) w well. In contrast to other frameworks,
Smallkit provides just one single heavyweight textview class. The
striving for simplici~ as well as implementation considerations
led to thissolution after a & redesigns.The b that not everysimple string displayed in a view has to be modeled by a textview
justifies the usage of a powerfil textview in the remaining cases,
The class Tabfefiew serves to store and display string elements
within a table or list. The user may select elements of a tableview,
the superview) and Sk of a view are either fixed values or depend
Similar to textviews, tableviews provide automatic and manual
on the position or sim of super- and/or subviews. Therefore, it is
-Iling.
As allpred&ed views,tableviewsincludetheir model dam
possible that, e.g., windows adjust their size automatically ac-
To build an application-specific view, the programmer has to
cording to their subviews. On rhe other hand, a scrollbar can mr-
derive a subclassfrom Vim and override at least the draw method.
rect its length and position when its superview changes sire. When
If the derived view is to respond to mouse or keyboard events,
a view is resized, all dependent views change their mordlnates au-
krtber methods have to be overridden.
tomatically according to their dependence relation. The depen-
The class Application contains the main event loop where user
eventsm gatheredand thti proper ban@
is initiarecLApplication
dency function can be described with atI arbitraty piece of code
(block). Such blocks have to be passed as arguments to low-level
objects installapplication-related menus and methods hr hanfllng
setup methods. Usually, the programmer uses high-level setup
the mrr=ponding menu mmmands. Furthermore, the Iiin of open
merhods such as a method that sets all mordlnates of a horizond
documents and application windows are maintained by applica-
scrollbar at the bottom of its superview (by means of low-level
tion objects, If the current key target event handler responds to an
setup method).
idling mmage (e.g., blinking of a text insertion mark), rhis message
AU subclassesof As view (except the classClmter) d~cribe socalled wer inte~ae buikz!ingbhckr. The purpose and basic functionality of the class WAW and the classesdescribing controls is
is sent repeatedly from within the main event loop.
The class Doament is an abstract class that specifim common
from a derailedex-
behavior of all derived classes.This class implements two methods
for storing mbitraty complex objects (with all referenced objects)
The class Clmter provides automatic layout of its subviews.
Objects of certain classes (e.g., class objects) are not stored in rhis
what one might expect and the~re
we refin
in a fileand for reading these ties and restoring the origimd object.
planation.
Clusters usdy
serveto mnstruct so-called dialog views, which are
proms, but referencesto them are reestablishedwhen restoring an
composed of buttons, checkboxes, texts, etc. The programmer
object. The dialog panels for opening and saving documents and
just has to group the dialog components into clusters. The aligning and positioning of the subviews is hancUed by the cluster.
their handling ate also provided by the class Document. Furthermore, Document provides the standard printing dialogs and sup-
Clusters can be aligned vertically on the lefi, center, or right co-
ports printing of an arbitra~ view that is connected to the docu-
ordinate or horizontally on the top, renter, or bottom coordi-
ment. When the programmer derives a specialized class from
—
14
JOOP
OmOBER
1991
At last! A “CASE’ tool providing full automated supportfor 00A...
Here’s how OOATOOFMfrom Object International can help you drastically
reduce the time and effort you spend analyzing system requirements while improving the quality and reliability of every application you build.
Wlth OOATOO1, you spend your time much
more productively.
00ATorJl
package that enables you to do Object-Oriented
Analysis on your IBM (with Windows or OS~),
Macintosh, and Sun Uni~ (in development). By
The 00ATorsl contains user-definable projal
femplufe.~ to help you develop a uniform style for
aur~~mulingthe 00A dirrgramming and documentation process, 00ATfml can enhance your personal productivity and creativity – drdmalically.
your models more understandable. And prevents
you fmm leaving out required specifications (or
cluttering your model with extraneous material).
Templates are also a handy tool for quickly and
easily capturing support text for attributes and
services, explanations of your analysis, random
thoughts, and other “f=-fomr”
text – information
helps you gain control of complex
00A~ool
OOATorJ/ has a number of features designed to
-=
help you cope effectively with the complexity of
larger applications.
Wanttoaufomateyour Object-Oriented Analysis
and get pmjccts completed a lot fsster and more
easily? Then get OOATOOI – rhe automated support package for professionals using Object-Oriented Analysis to define and communicate system
mquircments.
OOATOOI is the
only software package that
fully automates the industry standard notation
for OOA. 00ATooI is available now. And
together with its companion tools now in development-OODTooFM
and OOCodeGsmTMwill bring full 00 WorMenchTM support across
00A, 00D, and 00P.
provides rotaf automated support
Only 00ATf~~J/
forthe notations and methodology defined in Peter
Coad’s and Ed Yourdon’s best-selling Prentice
Hall book, OBJECT-ORIENTED
ANALYSIS
described by IEEE Sofrwart zs “a standard for
years to come.”
If you want to do Object-Oriented
Analysis on
using the most current 00A
your microcomputer
notation fmm the newly revised second edition of
this book, you need 00ATfJf}/.
incorrect, incomplete, or overly complex – allowing you to make revisions on the spot.
is a full-featured drawing md chaking
sy~emsm
~
point out where your diagram is inconsistent,
A .rcaliwg feature, for example, lets you determine
the amount of information to be shown in each
subjat box. Yrsu can collapse the kx to show the
subjat name only. Or expdnd it to reveal the
names of the classes and the layers inside.
00AToo/
also pmvidesfiller.r that allow you to
customize the presentation of your model for each
reviewer.
FIltcrs also give you the ability to
manage muliiple projects as subpmjects of one
master “super-pmjmt.”
Plus, 00AToo/
incoprates
the lalest 5-layer
(Subject, Cl~ss-&-Object, Structure, Attribute,
Service) 00A notation. A layerin~fral~~)-e gives
you total conlml over which layers you’re working
wriling system specifications– which in turn makes
which, at your discretion, can either be included
in... or excluded from... your frraal model.
What’s more, 00ATo~)l can generate complete
documentation (text and diagrams) automatically.
Documentation can be printed on most standard
printers oroulput as an ASCII file to word processing programs.
Try 00ATooI
for 30 days risk-free.
Two versions of 00ATw~/arcavailable. The frrllscale Commercial Version is $1995 and can handle
models of any size or complexity. We also have a
Small Project Version that is identical to the Commercial Version except the size of each 00A
model is limited to 15 clzsses.
ac-
If you want to try OOATo~~/beforcspcnding$l 995,
then use the coupon below to order the Small
Project Version. The cost is only $95. What’s
more, if you upgrade to the Commercial Version
within 30 days, we’ll credit the $95 towards its
purchase price – so the Small project Version will
cost you nothing.
cririywe command,
00AT~Jo/ will automatically check your work and
Or, if you’re now handling complex projects, go
ah&adandordertheCommercial Versionfor S1995.
You risk nothing, since both versions come with
in, so you can quickly switch between diffcrenl
levels of abstraction when analyzing system rcquiremenls.
Use of 00ATooI ensurea more mnsistent,
curate analysis rearrlta.
When
you use the model
our 3CIday, mon~y-bdck guarentee.
——
———
———
———
——-
YES, 1 want automated support for 00A.
_——
— ———
———
_
copy(ies) of 00ATofJF~
_
copy(ies) of OOATOOPM Small Project Version at $95 per copy
Ple&se charge my —
Card no.
Visa
is enclosed
_MasterCard
———
———
———
———
Macintosh
IBM/Windows 3
IBMIOS12
Sun Unix (in development; pPdnnedprices)
planned prices are $3995 and $195)
Mail or fax coupon to:
Object International, Inc.
S140 N. MoPdc Expressway 4-200
Austin, TX 78759-8S64 USA
EKp. date
Signature
For the Commercial
———
Q
~
“J
Q
Version at $1995 per copy
My checkor money order for $
———
My platform is:
Please send me:
Commercial
———
Phone (5 12) 795-0202
Fax (512) 795-0332
Version, please bill me. Our purchase order #is
Name
Title
Company
Phone
or (HOO)926-9306
Address
City
State
Zip
Cireh 60on Fteader Serviee Card
J-YI
—
A slim application
framework
caused some tricky low-level programming. On the other hand,
many advantages result from the utilization of the toolbox in addition to the large amount of code that is saved, the runtime
efficient implementation of time-critical operations (e.g., editing
~
styled texm) is a benefit.
❑ IUhole UJord ❑ Match Upper/Louaercase
Another implementation decision was whether to use existing
framework classesof the SmaUtalk-V/Mac system. There are mn-
Figure 2. Find dialog.
vincing reasons to shwe the application kernel (main event loop)
Document, two methods hr gathering and restoring the model ob-
of the Smalltalk application with new applications. Beause of the
jects must be specified. If documents are able to print themselves
evolution of Smalltalk-V/Mac, its kernel is not as clean and flex-
in a more sophisticatedway, the programmer has to override an ad-
ible as in MacApp. Therefore, Smallkir do= not share class= with
ditional method.
Smalltalk’s frmework.
The classes Menu and MenuItem contain code for installing
As a mnsequence, a special mode is en-
tereclwhen a Srnallkit appli~tion is running. As long as Smallkit’s
main event loop polls for events, the programming environment
and displaying pdldown menus and selecting menu items. Each
menu item has an abstract command number assigned to it. After
is deactivated. Only update events for SmAltalk windows we
the menu installation, menus and items communicate with event
pd
on. Aside from tbii minor inmnvenience, Smallkit obviously
supports desk accessories and is fully Multifinder aware.
handlers and vice versa via these numbers. Menu items can be enabled or disabled, checked or unchecked, and their texrs cars be al-
Once the development ofa Smallkit applimtion is completed,
the programmer starts the application in a different way letting
tered at runtime.
The class Com~ndserve
to describecomman d objects that al-
the application run without having SAtalks
development en-
low the undoing or redoing of user mrntnands. For each undoable
vironment in the +und.
The savedimage is from then on sta-
command, the programmer has to derive a subclass of Command
tionary (like an object file). The user gets the impression of run-
overriding at least the do and undo methods.
ning a smd-alone
application.
As already mentioned in the architecture d~cription, view coIMPLEMENTATION
ordinates may depend on superview or subviews. To calculate all
ASPECTS
Smallkit is implemented in Smalltalk-V/Mac on an Apple Mac-
dependent view coordinates, the view hierarchy is traversed re-
intosh. Version 1.0 consists of 18 classeswith approximately 530
cursively. For a certain view, the superview-dependent coordi-
methods that were implemented by the author within 8 months.
nates are calculated first, then all subview mordinates are com-
Using the powerful Mac toolbox is almost mandatory for every
puted, and finally the subviews-dependent
appli=tion
and even more for a framework, akbough some implementation problems are related to it. For example, toolbox ob-
dculated.
coordinates
are
(This means that the hierarchy is traversed in pre/post
order).
jects have to be &posed of mpliatly when they are not needed any
longer. The complex data structures must ofien be accessed via
relative address offsets. Worst of all, the provided finctionali~
TWO EXAMPLES
Figure 2 shows a simple dialog window built entirely from
conflicts in certain caseswirh Smallkit’s arfiltecture (e.g., the tool-
predefine m~ponents.
box assumes that the coordinates of a window’s control elements
are related to the window origin.) Thus, using the Mac toolbox
dow in Figure 2 can be roughly described by the object hierarchy
A sample application includlng the win-
in Figure 3. Each application Consis=of related objects that are in-
I
......
largdEvtHtiler ..........”’”
...........................
J glow rd.ranla
~ ownmrahip
r.1.rmnm
.-= otharrelarnncm
o
Figure 3. Application structurewith some impo~nt
16
o cnll~on obja
Viaw
.bjacl
relations.
jOOP
OmOBER
1991
stances of predefine or application-specific classes. (The class to
which an object belongs can be extracted from the object’s name.)
The targetEvatHun&
relation specifieswhich event handler re-
ceives the keybowd input. The fiontWinAW relation determines
the view where the search for the mouse input handling view starts.
The curDomment relation is used for determining which document receivesdocument-related mrrunands. The solid line relations
indicate “ownership relations,” which have a rather static nature,
whereas dashed line relations may change very often due to user input, Once the programmer has implemented the applicationspecific classes(ofien derived from f~ework
classes), it is easy to
~ble
a new application. Usually one messageexption
to create and install a ptiicdat component.
stices
In IIBIIC I I
w
Figure 4 dernonstrates the power of the automatic ddog laydow mntains ody hur explicit size specifications (two for the size
of the ttit view, one for the maximum text line width and one to
‘~~t~,cnno~.w,~,~,,,~;
u---~~~
amment
❑ Enld
outing. The method for intitilzation of the Pretty Sample win-
D1:=3.14159;
WAR
DI,02 Pntnl;
1: INTEGER;
E Ilnllc
PROCEDUREDnSo-thing(VAR pPointJ;
❑ Unouttine
c
Figure 4. P-
insert additional space between the elements of the upper clus-
Sample dialog.
ter). The specification of allview coordinates (position and sti) by
the programmer would be rather inconvenient.
tegrated with application framework components. It is imple-
RELATED
ET++
window systems.The generalpurpase k
mented in C++ and runs on UNIX workstations under several
WORK
ET++ ~eina88,
Weina89] is a general pupose class library in-
@lc
building blocks)
tie derived horn their counterparts in Srnalltalk. The application
framework classestogether with the graphic building blocks form
Smallta/k
talksSQL
‘Qbunction
offers multiple, simultaneous
sessions from Smalltalk objects to SQL servers
as well as standalone DBMSsi A supplied fullfunction Query Tool serves as an example,
Full source code to the Query Tool and all
Smalltalk classes is supplied.
$249
P%adise
Sofmre
Group
624 West Elliorr Paradise, CA 95969
CompuSeme: 72330,1310
CIrole 3
TEL 916-877-1787
on Wader Sefviee Card
17
A slim application
a very rich librq
framework
with highly distributed functionality. For ex-
ample, the functionality of class Mm in Smallkit corresponds
roughly to bur classesin ET++ ( VO~@
Composz”~VO~e@ V~,
CONCLUSION
For a Modula-2 programmer (like the author), Smalltalk pro-
and Clipper). This high distribution of functionali~ increases the
gmrnrning required a lot of adjustment. Due to the excellent programming environment of Smalltalk-V/Mac, the shifi was not
number of classesmnsiderably (ET++ consistsof approximately234
too painti,
classes). The strength of ET++ is its pure object-oriented philos-
important distinction is its lack of static types. In particular, un-
ophy-every
Beyond its object-oriented conmpts, Srnalltalk’smost
derstanding foreign code is more Mcult
visible thing is represented by an object.
when no type informa-
tion is available. To circumvent tils drawba& every vwiable in
WCAPP
Smalllrit that refers to a nontrivial object carries the class name of
MacApp [Schmu86, Apple88] is an application framework de-
its object within its name (e.g., tatgetEvtHandler).
veloped by Apple. It is implemented in Object Pascal and con-
fine, but leads to significantly longer names.
This works
classes.Beyond the abstract frame-
The combination of object-oriented components and a con-
work cIassa, MacApp classesform an object-oriented layer above
ventionally implemented toolbox sometimes caused tmublm, Such
the managers of the Mac toolbox. Smallkit was influenced by
hybrid systemsshodd only be taken into munt
MacApp to a high degree and therefore has a lot of similarities
of code savings justifies the drawbacks.
sists of approximately ~-five
with it. In contrast to Smallkit, MacApp provides more specialized
text classes (five) and a rich set of command classes (thirteen). On
when the amount
Srnallkitis currendy used in a practical programming course for
building an accounting application as well as several graphic edi-
the other hand, MacApp does not support automatic view lay-
tors. The students st~ed
outing or saving and restoring of arbitrary objects.
ented programming and neither theoretical knowledge nor prac-
with little background in object-ori-
MPLICATION IUT
months the firstprototypes (complete user inte-)
tical experience with Smalltalk. It turned out that within two
were rurmi~
NeXT89] is the application framework
after four months the core functionali~ was implemented. With
hr the NeXT mmputer, It is implemented in Objective-C and con-
an effort often hours per week, people with little experienm can
sistsof thirty-eight classes.The kernel classesof the Application Kit
are similm to MacApp or Smallkit. The speciality of the Applica-
outcome proves that application frameworks are effective for
tion Kit is a class Aled Ce[J which is used for establishing a con-
nonprofessional programmers, too.
Application Kit ~omp89,
nection between interface building blocks and application-specfic
buildsimple but ti
applicationswithin a couple of months, This
Because of the emphasis on ease of I=ning,
one might regard
objects. Cell objects store a target object and an action message
Smallkit as a “learning toy.” But if software reuse becomm a ma-
that is sent to the mrget if an appropriate event occurs. Target ob-
jor implementation technique, programming will become more and
ject and action message carI be changed dynamically in pmicular
more a matter of learning, ■
by the N~
Inte&ce Builder.
REFERENCES
SMALLTALK
[AppleSO]
Applebmpurer,
All Srrtalltalk [Goldb83, Go1db84] systems widely available today
provide a set of classes that serve as building blocks for the construction of user interfaces. The typical structure of every Smalltalk application is dacribed by the MVC paradigm [Krasn88].
The names, appearance, and finctiondity of model, view (pane),
and controller (dispatcher) classes differ among the several systems. In general, each view has its own mntroller, i.e., user input
ban@
and screen output ban~
are Stridy =p~~,
This ar-
chitecture is not always well suited when input and output are
tightly coupled. The origid Smalltalk-80 system offers a very
rich (and complex) interti
library, but looks a bit old-hhioned
and has some ergonomic shortcomings. The Smalltalk-V/Mac
[Digit88] system provide a smaller set of building blocks that try
to mimic the user interface look and feel of the specific ma&lne.
In Smalltalk-V, a window (top pane) maybe tiled into subpanes,
[DigitS8] Digirallr Inc. Srnatik-V/Mac:
h
[GoldbS3] Goldberg, A. and D. Rob..
[Goldb04]
Cu-
Handbook,
SrnafU-80:
~
TLe Larr@ge
atilti
Im-
19S3.
Goldberg, A. Srna\lta&-80: The Zntia&”ve
Programming
Enviran-
menfi AddisOn-Wesley, Reading, MA, 1904.
[tin8S]
Krasner, G. and S. Pope, A cookbook for using rhe model-vicw-con-
tmller User inte&
programming,
~~S9]
[SchnnIS6]
p~digm
1(3), 2649,
in Srnalltalk-BO, ]ourrcal of O~e~-Oriented
1988.
NeXT, Inc. NcXT Techni.dDocunrcn~tion:
Schmucker K Object-OricntcdPragrammingfir
Corccqn, Rcl 1.0, 1989.
tbcMaintorh,
Hay-
den Book &mpany, 1986.
~homp89]
~.irME8]
Thompson, T. The next step, B~~
23(1 1), 1988.
~einaS9]
Mach
1989.
Weinarrd, A., E. Gamma, and R. Marty. ET++an
sttuct complex pane hierar&les. As a result, no general purpose
18
TutitilandPmgramming
Addison-Wesley, Retilng,
phtitation,
appli.atinrr bcwork
Smalltalk-V/PM, also allows n=red (grouped) panes and has the
dispatcher’s functionality included in the panes (windows) as well.
TechnicafDocumcntation,
Angeles, CA, 1988.
which themselves cannot be tiled fitther, It is not possible to mnscroll pane or cluster pane exists. The latest Smalltalk-V product,
Inc. MacApp 2.0b5
1988.
pertino, @
in C++, 00PSLA
88, Sp&Ime
object-oriented
of UGPLANNotices,
Wcinand A, E. Gamma, and R Marty. Design and implemenmtion
of ET++, a seamless objem-oriented application fcamcwork, Stnuiured
~amming,
Pm-
10(2), 1989.
jOOP
OCTOBER 1991
An object-oriented approach to
expert diagnostic systems’
byAjit Narayanan and hanpingJin
D~remcnt
of Compntsr k,
Uniw”ty .fb,
S
Prim of Wk.,
~
~4
4PY, UK
ince knowledge-based expert systems have retived great
problem-solving techniques for using the knowledge to make de-
attention during remt years, it is natural that an expert
cisions.
systems approach should be explored by resewchers to
Tzafmtas [Tzafe87], in his overview of the msential charac-
embody technical expertise and emdate expert techni-
teristics of a KBES approach to system Fault diagnosis and su-
cian performance in the domain of hardware fadt lo-
pervisory control, stresses that whilst there is no single method-
cation and diagnosis. However, it has become apparent that an ex-
ology for buildlng an expert system (ES) in this domain various
pert system or traditional knowledge-based approach is not going
designs can be generally categorized as falling into one of two ap-
to be adequate for the domain under discussion. We mamine an
alternative, object-oriented expert diagnostic system approach
proaches — &ep knowhdge and shabw reaoning (But see Van
de Velde ~ande85] for an application of both approaches in the
for this domain, and we formulate some of rhe basic objectives
same system.) Shallow reasoning designs typidly
baeddomains (e.g., medid
are used in eu-
which must be included in the design and spe&cation of such sys-
tintif~
tems. We also provide brief details of an =perimental prototype
prespecified relationship between fault symptoms and system
diagnosis) where there is a
that we claim demonstrates the fwibility of the alternative ap-
malfunctions, i.e., between system behaviour irregularities and
proach. Finally, we outline the major mnsiderations for fircher
system fadts. The M typically usesprodti”on ruks to mimic the
work.
deductive promsses of the skilled expert and has the advantage
that, in domains where the underlying causal mechanisms are
THE
DOMAIN
not mmpletely understood (m in medical diagnosis), the rules
The representation and use of knowledge about the dynamics
can be used to capture, at the rule level, whatever evidential
and mechania of a circuit board for inclusion in diagnostic hard-
knowledge does exist. This makes knowledge acquisition and
ware fidt location systems is one of the central issuesin developing
atificial intelligent (AI) programs capable of the kind of prob-
A deep-knowledge ES, on the other hand, attempts to capture
refinement difficult and can lead to huge, unstructured rule bases.
lem-solving skills exhibited by a technician or engineer who
the underlying principles of a domain explicitly, thereby mak-
identifies and locates component kults Uones87], There are three
ing redundant the need to capture every fiult scenario explicitly.
main functions in the domain of fiult diagnmis and repair sympt-
As Tzafesras [Tzafe87] points out, such an approach seems ap-
om interpretation, fault diagnosis, and repair. Both symptom
propriate for man-made technological system diagnosis,
interpretation and fault diagnosis me knowledge-intensive and
~perience-based tasks. Ideally, a knowbdge-b~cd expert system
(KBES) should provide critically required assistance for prompt
Typically, three main deep-knowledge, or mo&l-basc4 diagnosis methods have been tried: cawalsearch, mathematical moh~
and ~potLe~fi/te~t. Briefly, one particular causal search me~od
detection and location of mmponent faults through the use of a
uses graphs, or semantic nets, and attempts to trace a process
knowledge base consisting of facts, rules, heuristics, and procedural
knowledge as well as an infience enp”nemnsisting of reasoning or
malfunction back to its source. The disadvantagewith this method
(as pointed out by Tzafestm) is that faults which simdtaneously
1 This work has been supported by Digital Equipment Corporation
Mathematical models, on the other hand, rely on redundancy
affect nominally independent variables cannot be diagnosed.
their European Research Progtamme, Grant UK-028.
(UK) via
W e are especially gratfi
to Dr Phtip Barbonis at Digital’s Nljmegen offim fcIrhis help and support dwing the reseal
program. W e are also indeh~ed to Eby Z&i
mem of Compum .Sciice, University of fiem,
of the Depart-
hr Ku valuable technical advice.
be~een process and sate measurements and tie of use when the
domain can be measured with some mathematical precision or
where the domain is amenable to the use of such mathematical
19
Expert diagnostic systems
testing
the size of the semch space is dependent somehow on a measure
method follows the usual diagnostic path of postulating a cause
of 2n. Searching for a solution in such exponential space may
of a system malfunction, determining the symptoms of the pos-
lead to intractability after only a dozen or so components tie in-
tdated fadt, and comparing the result with actual system obser-
troduced. Using heuristics at the epistemic ontology level to con-
vations. One of the disadvantages of this approach is that the
trol search of the space appears to be a case of “too little, too
mapping between qu~ltative (i.e., nonnumerical) knowledge, as
late,” especially where complex circuit boards are mncerned.
used in hypothesis formulation/testing, and quantitative data
(i.e., measurements) must be clearly specified.
These considerations led us to hypothesize that, whilst the
ontological analysis approach is essentially correct with regmd to
models. Finally, the hypothesis formulation/hypotbesis
One other general knowledge engineering methodology that
its base level of defining o~ects, their properties, and relation-
follows the deep knowledge approach and plays a prominent part
ships (static ontology), what was required was to pursue the 06-
in the work to be described below is ontolop”cals-re
ject-oriented approach further (and to its logical conclusion, if
artidtion
ana~sis
in a step-by-step
necessary) to identify at what stage precisely (if any) the move
of the knowledge structures needed to perform a task
shodd be made to an epistemic ontology (definition of the form
(Freiling et al. [Frei186]). This method pro~ds
do-
of constraints around the domain). That is, we hypothesized that,
its+. The notion of ontological structure is decomposed into
by tailoring the object-oriented approach to the requirements of
by bllowing tbe o~ects and relationshipsthat occur in the A
mti
an AI or expert fiult diagnosis system, a much richer level of dy-
three levels:
namic, as well as, possibly,epistemi~ ontology codd be atied—
one that was not dependent on the traditional swe space paradigm
and one that also took into amount the nature of the domain.
. ..
we hypothesizedthata much
rz”cber
bel of dynamic ontolo~
COUUbe attained— one that was
not &pen&nt on the traditional
statespacepardi~
SOME
AXIOMS
THE
DOMAIN
main. Justifications for these statements, as well as explanations,
will be provided subsequently,
Axiom 1. Expert diagnostic knowledge should be organized
mound a set of primitive conceptual entities, in this
case components (which represent the primitive re-
and one that
pksceable objects), with associated descriptions and
procedures,
ako tooh into accountthe nature
of the domain.
CONCERNING
We first dechu-ethe following statements as axiomatic of the do-
Mom
2. A dacription of a mmponent must be able to represent
partial knowledge about an entity and accommodate
multiple descriptors that can describe the associated
●
Jtuiic
ontoh@e6nition
lem domain and their properties and relationships
“ dytimic ontoh&efinition
entity from different viewpoints.
physid objecfiin tbe prob-
of &
of the state space in which the
Axiom 3. One important method of component description is
mmp~on
with a known component entity with further specification of the d=ired mmponent instance
problem solving must occur and the actions that transform
with respect to the component prototype,
the problem from one state to another
“ eptitiic
ontoh~efinition
of the form of constraints and
Axiom 4. Diagnosis is dominated by a process of recognition in
which new component objects and events me com-
heuristics that control navigation of tbe state spare
The ontologid
pared to stored sets of expected component prototypes
analysis approach has tbe advantage of a clear
and specializeddiagn~ic reasoning strategiesare keyed
starting point, namely, the level of static ontology that deals with
actual physical objects (mmponents),
to these component prototypes.
However, subsequent lev-
els of analysis,as described by Freiling et al., are heavily dependenr
on a state space approach, where fadt diagnosis is interpreted as
atypical AI problem-solving task (e.g., game playing, planning a
route). Defining the stite space (the level of dynamic ontology)
These axioms m clody related to a set of “aphorisms” and “intuitions” provided by Bobrow and Winograd [Bobro85] when
discussing language understanding systems, and tbe underlying
motivation to the above axioms, as fir as we are concerned, is
wodd be relatively simple for heavily constrained domains (e.g.,
that-whh
a simple circuit board with only a few mmponents) but it is not
of problems that arise in the hardwwe fault location and diag-
clew what level of complexity is involved once the domain is al-
nosis domain is the same as the set of problems that arise in the
lowed to grow to a larger size. In the worst possible case, we may
natural language understanding domain-di~osing
have an ~onentidomti
20
there maybe some reservationsabout whether the set
htidware
where for n components on the board
JOOP
OnOEIER
1991
Bring your large, complex object-oriented applications under
control with AM/ST, the Application Manager for Smalltalk/V.
The AM/ST Application Browser helps both individuals and
development teams to create, integrate, maintain, document,
and manage SmalltalkA/ application projects.
.-
SoftPert S stems Division
One Main 1 treet
Cambrid e, MA 02142
(617) 62?-3670
(61 7) 621-3671 Fax
entatlon
●
Revision history for each method.
Analysis and design repotis.
Customizable documentation templates.
Integrate work of several users.
●
Save and browse multiple revisions easil
Check-in, check-out, and lock source co J“e. **
Customize code templates.
Develop in a LAN environment.
Deliver applications without AM/ST.
StaticAne IVSIS
Ook
Application consistency re orts.
Graphical views of hierarc 1“Ies.
Cross-reference of variable and method usage.
faults is not mturally, or &ciently,
Call
Site Licenses
New ProlUctl@.T~!S!.
Windows 3.0 V/Windows
Change Browser ●
Source Control ● *
$475
$195
$1595
or even effectively, modeled
‘iiirn6:izipot5’
{~~ ~
~
k ● Mr InUIYOUC
IIIUU1.m ~1:’
David-In,
.—
on the state space, or game-playing, paradigm.
THE
Hierarchy
Every class has an owner.
Functional view across classes
and related methods within classes.
Applications port easily across platforms.
g;~;:’”-”-””-”g
@[;:d
JUSTIFYING
~on
‘~
S
.
, ,%;;:6’.,
;“.. . . ...... . ........4..
. “J
. ~y~>
:.,.... ... ,,.. 4.. ~...=:.~–~ -,.
.!i
~,,,,,,,,,, ,. .,,,,,.
:,,,,,,.,.. ,,.!!
.. .. ..!,, >!..,,
: ,.1,,,, .,,,,,,,,.yc..,.. =:,
-1;!
:=,,,,
,,,.,,d fi,=Mm
. a .“..,,,.+,.
:, r?..
,,,, ,..
,.
!’”,:--l!,.
,: FCC,=.
..!!. . .:
.. ,,.,.... :
..,,!,!!.!,
—,,.,.,...,,:-:,,,,.,.,,,,.=,.,.
‘I,,.
!.r.,
.,.,..
:
—-!...,..,.
, ,... ..,,, ,,,. ,,.,,..!.=..,,,“-,,. ,,,,—,.,,
, —.,,,,.,
‘c,.,
. ,,,-.;:
,,.,..
..,, ,,,0,,.6.
I,*
J ..._._..#
!
::”==~ti
...-..-.:-----:.,
~:~
.“ . .... . . .
~~
●
lnterSolV
“Qnumati~ln~utrtA~’
HalHMbrh,
AnameiLabs
SmalHalkfVis a registered trademark ofoigilalk, Inc.
AMTis
a regktafed~dafnati
of S. ftPBfl Systems, LW.
3. stating the relationship that a component object has with
other component objects, both functionally and topologically
In creating such descriptions of objects, we have been guided by
=IOMS
two factors. First, there were discussionswe had with experts about
We now present some justifications and explanations for the
above zxiorns, so that we can draw out the implications rhese m-
how component objects would, and should, be used in diagnostic
iorns have for an expert object-oriented diagnosis (EXOOD)
reasoning. We believeit is more useti and perspicuous to presew
yJ-
tm architecwre. If one follows the proposals of Freiling et al.,
in the &lption,
the natural organization for the declarative knowledge base in a
conceptilas
and the notation for the description, many of the
well as pragmatic differences that are reflected in the
hardware fiult diagnosis system wodd be centred around a set of
domzin of experr hardware fadt diagnosis. Our approach is to be
primitive conceptual entities that represent components (both
mntrasted wi~ the use of traditionalnorations such as logic and pm
actual and prototypical)
that provide both &ta mnmrning the components and infor-
ducdon systemswhere the motive is to impose unzfirmi~on the domain. Second, the descriptions have a “grammar” that is similar
mation concerning the functionality of the components.
to, but not identical
together with associated descriptions
It is,
with, that proposed
for SPOONS
therefore, natural to adopt an object-oriented factorization of
(SPdcation
knowledge rather than the more common factorization in which
We provide some examples of these descriptions later.
knowledge is structured as a set of facts, each referring to one or
tilom 3 highlights the importance of describing an entity by
comparing it with another entity. The component object being
more objects,
Object descriptions for components will need to include the
following information
1. the assignment of a component object to be a member of a patticti
class, or prototype, of component
Of ONtologicd Structure) by Freiling et al. [Frei18d.
used as a basis for comparison is called a proto~e
and provides a
perspective from which to view the component object being described. Details of the mmparison can be thought of as further
speci~ing the prototype. The standard method of comparison
is with a stereo~ical individual component which represents the
objects and their roles in the compl~ mmponent object musr
~picalmember of a class, Such a prototype has a description that
may be true of no one member of the class but combina the de-
be clrarly specified
fault knowledge applied to members of the class in the absence of
2. ifa component object is a complex one, the atomic component
21
Expert diagnostic
systems
specific information (Mlom 1). This &uult knowledge can be
used to provide a set of particular eqectations concerning the
components and topology of the circuit bored under consideration (Axiom 4).
A single component cm be described with respect to several
prototypa,
with further specifications from the perspective of
each (Axiom 2). For instance, the defiult for one pwticular component class may be to perform a certain function that, through
experience, the expert knows that component typically performs
given the board type and the nature of its mnnectivity to other
components; nevertheless, that component may have a different
function in one particular context that has not been included in
the prototypical information (Axiom 2). Such vatimce from normal expectations can be catered to, m can the principle that the
user
interface
L-~
use of typid and expected properties of components will be necessarywhen there is incomplete information about the board and
I
maintenance
L
1
its components (Axiom 2, Axiom 4),
Figure 1. The general architecture of an E)(OODS.
.m.
with the object-oriented
upproucb,we had to implment u
method of mergingob]”ectand
prototype &scriptionswith bigherlwel diagnosticstrategz”es
which,
tecture of which is provided below, First, there has to be a &~cn}tion of the circuit board in terms of both individud components and connectivity between components. The set of component and connectivity descriptions constitute the base-level
object-oriented modelof the board. For every component on the
board, there will be a component description instanw of it together with a description of the class of object to which it belongs.
Described here will be not only the basic operational parameters
of the component (which may be accessed via a database of some
sort) and the connectivi~ between components (provided at both
~pica[~, are expressedin
the class and instance levels) but also thefinctionalig of each class
of component. For instance, an individual mmponent will be de-
production ruk form.
scribed according to manufacturers’ specifiutions (e.g., basic data
concerning permissible temperature range, maximum and mini-
Finally, the role of diagnostic reasoning (Axiom 4) must be
mum vol~es
allowed, and the number of pins for input and out-
“keyed” to the mmponent prototypes. We identified this to be the
put), basic functionality (e.g., buffer, counter, RAM, ROM, and
crucial area of research. The main inferencing mechanism in a
traditiomd object-oriented approach consists of “property inher-
power supply), and connectivity via connectedpins(e.g., pin 14 has
input from a certain individual component and pin 26 provides
itanm” where ‘in the absenm o~information to the>on~r~
output to another individual component). The set of such de-
an ob-
ject inherits the properties of the prototype, or class of objects, to
which it belongs. Such an approach does not cater well to rea-
scriptions we call the component object bare.
Second, the diagnostic expertise of m expert troubleshooter
~oning which in this domain typically consists of art expert using
(technician or repairer) has to be stored so that the system has
cau.rd ~ksnationr and me~”nfi*n,
not just about objects but
some basic diagnostic “knowledge.” Such knowledge will be both
also about dia~o~tic ~trate~”e~,to provide an effective troubleshooting method. Whilst the concept of information about
edge will usually consist of some description of previous experi-
diagnostic strategiesdoes not sit very well, at least in the literature,
with the objectariented approach, we had to implement a method
ence with the particular board, or board type, under examination, For instance, a particular component may, through
of merging object and proto~e
boardspeci~c
and boardgeneral Board-specific diagnostic knowl-
descriptions with higher-level di-
experience, be the main muse for a particdar type of fatdt. Board-
agnostic strategieswhich, typiczlly, are exprmed in production rtde
form, The method of combining what essentially are two differ-
general diagnostic knowledge will usually contain descriptions
ent paradigms is described later.
of various diagnostic strategies to try out in the case of reported
faults. For instance, two particular strategies are “work back”
from a reported fault symptom to the cause and “work forward”
SYSTEM
SPECIFICATIONS
from a hypothesized cause to the reported symptom. It does not
The analysisabove led to the following design specifications for an
really matter in what form such diagnostic knowledge is stored as
expert object-oriented diagnostic system (EXOODS),
long as there is a mapping possible between the component ob-
22
the archi-
jOOP
OmOBER
1991
ject base and the diagnostic base. Since the most populaI method,
EXPERIMENTAL
traditionally, has been to store such knowledge in a rule-based
To demonstrate the feasibility of EXOOD,
form, this was the chosen format for the diagnostic base, lead-
experimentversion of it that conmtrated on he hw of he ~s-
ing to the design of a diagnostic (rub) base.
PROTOTYPE
we constructed an
tem, namely, the component object base, diagnostic (rule) base,
Third, the descriptions in the component object base have to
and inference engine. Let’s consider a simple circuit consisting
be mapped onto the descriptions in the diagnostic (ride) base.
of an oscillator, a 4-bit binary counter, and a buffer (Fig. 2).
The oscillator produces pulses of a certain frequency and the
This requires an inference engine of a type different from that
found in traditional KBESS, where the task of an inference engine,
counter increments in steps of one after receiving a pulse. The
typically, is to identi$ candidate rules for firing and then to ex-
labels“~” “gb,” “w” and “gal”representthe four bi~ output from
ecute one or more rules according to some preprogrammed strat-
the counter. The b~r
simply ampliies the output of the counter,
egy. In addition to the above task, an inference engine in an EX-
and “A,” “B,” “C,” and “D represent the four outpuu from the
OODS has others:
buffer, which are fed to leds.
1. to take a reported fault symptom and to extract the semantics
of the fatdt so that an internal representation of the fault symptom is derived
E
osclktor
2. to generate appropriate diagnostic strategies concerning possible causes of the fault symptom
3. to hand over the fault symptom, either in its entirety or in
parts, to the diagnostic base so that the appropriate diagnostic knowledge is accessed and various requests, i.e., messages,are
generated
Figure 2. A simple experimental circuit.
COMPONENT OBJECT BASE
The component object base can be considered as a collection of
ob~”tiwith same or different gpes. The definition of an object type
4. to pass the requests (messages) of the diagnostic base either to
[he user (e.g., requests for further information or for some
contains a specification of the &ta needed to represent an ob-
manual probing to be done) or to the component object base
ject of the type and a Jet ofoperutions for manipulating such ob-
(e.g., requests for comparing the expectations of the diagnos-
jects. The definition has two parts: aprivtite part, holding infor-
tic base with the information contained within components
mation that can only be used by its implementer, and a public
5. to receive information back from both the component object
base and user so that comparisons can be made with regard to
its previously chosen diagnostic strategy and to choose another diagnostic strategy if appropriate
part, presenting an inte~ace to users of the type. (Note: this is
not a reference to a usm inteface.) h
object type is also referred
to as a class. Given a class, we can declare imtances of that class.
These instances are the real data objects. A class ~ can be derived from a class .WC,
i.e., class yy has (inherits) all the properties
of class n in addition to the ones defined specifically for it. Class
6. to loop through tasks 1–5 until the =use of the fault is found,
i.e. a partictdar component is identified as being the cause of
= is said to be the bare cks for yy and, conversely, yy is said to be
the far.dt,or IOreport that the muse is not found if all the generated diagnostic strategies have been exhausted
deriuedfrom =.
For a collection of objects of the various classes derived from
abase elm, the commun arrributes of these objects we represented
The symptom is reported by a user via a user inteftice. It may
be possible to replace the user interface with a sy~teminte~ace so
by the base class and spen~catrributes by specific derived classes.
Functions that can be defined without knowledge of the specific
that fadts cars be reported to the EXOODS
object can be declared as usual. The rest are declared virtua~ i.e.,
directly by the com-
to be defined with the same name in a derived class. The virtual
puter system in which the board is located.
Fourth, there needs to be some leuming module so that the
fiction
raults of the EXOODS
objects of various types are treated in a uniform manner. The
can be used for updating its diagnostic
facility is extremely usehl in interactive programs when
base and inferenceengine, as well as for generating novel diagnostic
system will guarantee the correct correspondence between ob-
strategies when the inferenm engine is stuck. Such updating need
in which the dynamic
jects and functions applied to them by dynamic ~ing.
In out system, a base class for all other object classesis defined.
is located: results from other EXOODSS located
The base class named as object contains a pointer to a name string
not be caused by the particular EXOODS
stiat~generator
in other machines and at other sites cars also be fed, via a main~-
and three virtual functions, namely, checl_inpuL ch4_function,
nurrce modtik, into the dymunic strategy generator. Initially, the
and check_condition,
maintenance procedure is manual.
The ~rceral architecture of arcEXOODS is laid out in Figure 1.
classobject[
Public:
chas*name;
virtualchecfiputo
as shown in the followin~
(return(l);]
23
Expert diagnostic
systems
virtualcheck_fonctiono
virtual check_conditiono
[return(l);
{return(l);
int counter_type::check_funtiono [
int xl, x2, x3, x4;
int i;
tout << “Pleaseinput ga, gb, gc, gd of” << name <<” ;
& >> xl >>X2>> X3>>X4;
reset(xl,x2,x3,x4);
for (i=O;i<PLENG;
i++)
[
do [ tout<< “Input clock;
h>> xl;
] while (xl!=H);
setcol(rrl);
counto;
do { tout C<“hput clock ;
cin >> xl;
] while (xl!=L);
Setcol(xl);
CoUnto;
tout <<“Pleasetiput ga,gb,gc,gd of” << name cc”;
Cin>> xl >> X2>> X3>> X4;
if (xl!=ga I I x2!=gb I I rc3!=gcI I x4!=gd)
return(O); //NOT OK
]
)
1;
Any derived ckisscarsredefine these virnraj knctions or simply
inherit them fi-om the base class. Usuajly, a derived class needs to
redefinethese fi.tnctionsto mm the requirement of specificobjects.
As far as huh diagnosis is concerned, ch+.input
checks whether
the input (via pins) to the object is dl right, cheetr_&ction
the
functionality of the object, and check_eondition the working condition of the object (e.g., if the voltage is out of a specified range).
It does not matter what names these functions are called; what is
significant is that the derived class can redefine them to give them
different semantics. The number ofvirtuaj functions cart also be
erctendedaccording to the requirement of the applimtion domain,
but for the purposes of the experimental prototype these three
functio~_inpuG
check_ fitnction, and check_condition—
are sufficient. The reason why all object classesneed to be derived
from the base class should become clear soon.
For ins-cc,
given the above skeletaj form of an object defini-
tion, we can define the class for counter and then use that class to
declare an instance representing the counter. The definition is
written in C++, and we suppose the constants used ate already
I
)
I
return(l); // OK
I
1
We can now declare an instance named as counter with the
defined. Whilst the code may be somewhat opaque, it should
give the reader a flavour of what the structure of an object and its
statement
permissible operators, in our domain, look like:
counter_@e countev
class counter_@e:
public object [ //cks
irrt
oldcol, newcol;
type 4-bits counter 74LS93
//when oldcol==Hand newcol==L
//add the counter
int ga,gb,gc,gd;
public:
void reset(int xl ,int x2,int x3,int x4) [ga=xl; gb~2; gc=x3;
gda4; oldcol=newcol=L;]
void setcol(int x) {newcolq; ]
void counto (
int
oa, ob, OC;
oa=ga; ga= (oldcol &&(newcol+l)0A2)? (ga+l)%2 : ga;
oldcol=newcol;
ob=gb; gb= (oa &&(ga+l)%2) ? (gb+l)%2 : gb;
o~gc; gc= (ob &&(gb+l)%2) ? (gc+l)%2 : gc;
gd= (OC&& (gc+l)%Z) ? (gd+l)”/n2: gd;
1
int check-funtiono;
int check_inputo;
1;
DIAGNOSTIC (RULE) BASE
To be natural to use and easy to understand, a rule in the sys-
I
tem is designed to have a simple form. Its expressibilityshould be
fairly good-for the diagnostic application domain.
A rule may have one of the following formats:
1. <head_fault_name> IF <option> OF<objeb OK
TH~ *en_hult_nartre>
EME<elseAult_name>.
2. <head_fault_He>.
There are three options for <option> : INPUT, FUNCTION
and CONDITION.
The rules of Format 2 are terminal ones
and of Format 1 non terminal ones, chead_fault_name>
also
serves as an identifier of the rule. cthen_fault_name>
or
celse_fault_name> must be the <head_fault_name> of some
other rr.dethat can be either terminal or nontermimd. A terminal
Next, we define what is meant by cheek_input:
int counter_type::check_inputo (
int x1,x2,x3;
tout <C“Hease input the clock_input of” << name <<”;
Cin>>xl >> X2>> X3;
if (xl != (x2+1)%2 I I x1!=x3)
{ tout<< “Nopulse; return(O); ]
return(l);
1
And then, check_ function:
rule tells the system to stop searching and a nonterminal rule
guides the system to diagnose a fault in more detail,
The exact semantics of a test, say, INPUT, of an object is eiscapwkztedin that object. Here, the idea is, through an object test,
to isolatethe fadt area step by step and finallyreduce the fault cove%e to a satisfactory extent. The test part of a rule Cm be ~tended to accommodate complex logic expression so that more
than one object can be tested in one rule.
Let’s follow a simple example through. Suppose a circuit can
be subdivided into two patw a left-hand part and a right-hand
part. That is, we assume that we cars distinguish functionally be-
.—
24
jOOP
OaOBER
1991
WHATC++LOOKSLIKE TO
ACTOR
PROGRAMME~.
.,
.
.
,,.
.
.
,.
.
.:-,,
,,
.
.
..
.
.
.
e?i’:$p:,~*%y.~\,
.!>.
-“~’
-,
‘,,
,,..’/
.,
,..,,..
:..,,.
..’3?
,,..,
.,,{:.,:-::’-,”
.
.;,.
.
.
.,. .“.
,-,,,
,..
-,,
.-.,
,.,.;?
:,...*!,
.=;
.*.,’
,-,
,
.
.:.ii
:,,~:..
:,;.’.’
:-,,,,
J::;,~y,?i,,.,;~,,.,,,
:,:;:...
!,T:
..+
.~,f
2A.
~
::,---:.;*
.,.,.
-.
;.+:
.“::.
,,?,.””,
,.-.
.
..::-::
.“’”’’-”
.~
.,,
..
.
.
.
.
.,..
::x.!.
,:-,
-..,
-,,T
.,,,;..-.:
.._-’-..
,,.::::
.,,i--,.
:“
, ,- .,:
.,,
..””+
..’”
.,
,
,.
R,,
..
.“,
c++
- hlunllll.
- I)W Kllitor.
- Y(%(Ilnrlanfl).
. 1~-hrrstt;rt.
- E[liW[lmpik:/
1.ink/lln~jtiRun,
- lhln(>sLi[s nnl.
- I)w.
, /\ Iillk..
. Yik~~!
- PrrAypr>irl your
mind.
. YI!S(I)llrkmrl).
. EnLrJ (:htir~.
, Iiti(k (() pmr,duml
I
,
1
,.
,
,,.,
..,.
,
,
,
.,.
,
,,
l!onW(S know I’tuwvOUTt!(!l.I ttt! Wlnliuws(i(!vclopmt!nlmark(:l ISLttoroU~IV”
t’usingwhen it;omf:s to whtitla~~uti~s tind’toolsto USI:.
u ‘
Ifc%)r4.0 should ~mdall Lhat.
Ilt;sidesM ~ tht~standard for ~ns ()(thousunds()[ \K/indows
dt!~’{!lup(!rs
uvcrthe IWS[
10Ur and tihalf y(~ars,ifs prtdrablyLh(:m(~t appropriatetr;(!hnok)~
for seriousWindowsdcvelupmenlin the years to (:urne.
A W~indovis-hm~ti,
intcr~(:ti~(:tk:~’t;lopmcnt
platform,/\(:t(Jr4.0 is tht: only
purt: {Lruisirnpk;Objt;(:t-Orit;nt(~d
l,a~uag{; avuilabk!tuday. IL’Snol u hyhrid
tt:(:hnulw like C++. ~fndit’st;asit!rLOk:arn. Nutonly thtit, it {!limintitt:s
pra(;ti(:allyall Lhi:major r)bstti(;k!stu l~~i
nduwspmgrtimmin~likf: m[:mory
mtina~mt:n~ and Iow-k’v(:lcv[:nl-handling.
Wth }!ctor, you can (>limimtcthe t;ditilink/c(]mpilc routine from your
prt~ramrning, and pm(olypc on the Ily,wilhuutt!~(!rIt;tivingWindows.
/\nd, sin(;c ~lt:l(jr4.() suppor(ssah: rnultipk;inh(:rilan(!(>,
th(!rl;s nu
reason to mess around with the spagh[:tlicork; you (:an (:nd up with using
ulher forms of mtdtipk:inht!ri(an(:t;.
.luslasimpotin4 !4(:ltlr4.0 I’mfi:ssi(]nalnowul’fi~rs
J da~ Iwst:-irl(l{:[)t!rlllt:nl
SQI. library and I)l,l,s forjust abou~every major data ks(!. So l)13hlSpmgmmmt:~ (:an m~ra~ ~ N’indowswilhotrt~tiving[]p Lht!irI)Ihtst;or l~~ratk)x
tik;s.‘1’oday.
;\ll in all, ;i(:t(]r4.0 has the puwerand raw to bring almost (:w:ryune
into tht: worldof Windnws~r(wramming.
Whi(:h is, wht;n yuut~in[ about i[
@
prt!(isclyth(; point.
Whitewater”
Expert diagnostic systems
tween components that causally influence others and components that are =usally influenced. The set of causally influencing
For a predetermined fault name, say, output_abnorrnal,
a set
of rides can be given to diagnose it as shown below.
components we call l_patt and the set of causallyinfluenced mmponents we Al r_part. Let us put an object under test, say, aaa,
at the boundary of the division in r_Part so that it takes the output horn l_part as its input, as in Fi@re 3:
‘–
output_abnoml: IF m
OFcounter OK
counter_or_b~_fiult
ELSEoscillator_fiult.
counter_or_brrfFer_hult: IF FUN~ON OFcounter OK
TNENbufFer_hult
ELSEcounter_fault.
oscilbtor_faulL
counter_fault.
bufFer_fault.
THEN
r
INFERENCE ENGINE
Figure 3. Test of object aaa.
We stated earlier that one of the interesting aspects of EXOODS
is the way that object-oriented repr=ntations
The roles below form a simple diagnostic strate~
are tied up with rea-
soning (diagnostic) strategies. The task of merging representations with strategies is lefi to the inference engine. Let us describe
wholefiulti E m
OFaaa OK
THENr_pfiult
EME~art_fault.
l_part_fiult.
rflartault.
two implementation aspects. First, we concentrate on connecting
component objects with diagnostic rules. It is obvious that type
info~mation is ~entid
to an-objeet. However, the object rderr~d
to in a nde is just a name (character string) of that object containing no type information at all. It is not possible, and not desirable, to code specific object identifiers into the generic inference
The rr.desas shown above can guide the Wtiene
engine to bd
one fidt at a time. However, there might be some other fidts that
engine. To get access to an actual object, we need to connect its
name to the object itself. One way to do this is to build an object
have not been revered. For instance, in the above diagram if we
ta61e that maps a n-e
test INPUT of u
lem is that the table should be a common container and its enrry
and the result is not OK we then turn to the
of an object to its address. But the prob-
l_part but there still might be some faults in the r_part. To t~e
must have a fixed type. Also, types of objects a
this problem, we can follow the route: find one fide fix i~ if the
and normally we -’t
be very versatile
assign a value of ~ type to a variable of ~
whole board is sdll fiulty try diagnosing agaim bd another fis.dt,
type if m is not the same {M.
and so on. (Art alternative is to redesign the rule format, but this
the address of an object of a derived elms can be assigned to a
topic is beyond the scope of this paper.)
variable of the type *at is the address pointer to an object of the
Roles must be in a working memory for the inference engine
to use them. This working memory is organised as a rde table.
In objec~~ori~ntedprogramming,
base class (!). That is why we require all objects in the system be
derived horn the common base class-object. But thii leads to an-
Each entry of the table contains one ride. Its data structure is de-
other problem where, say, ~ is derived from = and y is an in-
scribed below.
stance of yy. If the address of y is assigned to a pointer to m, then
the specific type information of y is lost. Fortunately, we carr use
~ct rule [
the virtual function style to solve this problem. Once we call the
ChSIfault_name[NAMELENG];
chat _~N~G];
fnt _option;
char _then[NAMELENG]
;
char _elae[NAMELENG];
ht _ternrfnal;
rule’ nem
1;
right knction of an object, we are actually getting into that object.
The structure of the object table is simple, with each entry
having only two items: an object name, and a pointer to the base
object, as shown below
In the above, 6sdt_narne holds head_Mt_nam~ _ifholds the
object name, _then holds then_fasdt_name,
else_fisd_-e.
CONDITION.
and _else holds
_option indicates INPUT, FUNCTION,
or
If _terminal is YES, then only fault_name is
atruct objed_address (
char name[NAMELENG];
object* pointer;
);
The second implementation aspect concerns the inference en-
defined; others are undefined. We will use a variable rr of the
gine ting
type rule to repraent an entry in the rule-table. Facilities for stor-
diagnosing faults. The method by which tils task is acmmplished
ing rules in, and reading rides from, a database are also provided,
is set out below
26
a fas.dtname as an input and carrying out the task of
JOOP
OmOBER
1991
relationships among objects (i.e., connectivity relations) as
1. Using the fault name, search the rule base to find the corresponding rule. Suppose it is represented as rr; if rr._termind
well as for representing the objects themselves (i.e., knction-
is YES, then report the fault name, and return.
ality) so that the necessaryinbrmation is availablefor autirnatic
generation of new rtdes or new strategies for diagnosing faulw.
2, Using rr._if (containing an object name), search the object
2. Ars EXOODS
table to find the corresponding object addres entry. Suppose
it is 00; then, get the addressof the obj-
gets strategic knowledge from the rule base and
component information from the object base. Currently, how-
from oo.pointer rep-
ever, a (human) user needs to provide the required measure-
resented as, say, pp,
ments at system-specified points of the actual circuit board.
3. krding
to the options (in rr._option), call the mrresponding
test function in the object addrmsed by p~
This activity of data acquisition can be made automatic by
4, If the r~ult of the test is positive, then, using then_fadt_name
board with all the data-measuring points eltionically
(rr._then),
do the above steps again; otherwise,
else_faul_name (rr._else) do the above again.
building a specific data-gathering board for a specific circuit
using
accessed.
3. The rrarure of the diagnostic base needs to be explored further
so that a variety of expert diagnostic me[hods can be easily
and effectively handled.
Note that different objects may have different functions with
the same function name, e.g., suppose object class n is not the
same mu
m:: check_inputo
4. The inference engine also needs to be developed further, so that
causal reasoning and inferencing can help in the generation of
maybe totally different from ~::
appropriate
check_inputo.
nostic tree for a given fadt name, according to the expert lmowl-
by defined triggers to search for evidence of individual faults.
edge represented as rula and the nature of the tested objects, and
Further work needs to be petiormed on how different types of
to note that the generation of a
fadt (e.g., stuck at 0/1, intermittent
diagnostic tree is not the same as the generation of a state space
for an EXOODS
search: the latter implies an exhaustive search space, whereas the
~llst
former implies a controlling mechanism,
So, given the fault name-output_abnormal-the
strategies.
5. The system framework we have outlined for EXOOD isfaultoriknte~ in that special proasses (daemons) can be activated
The inference engine, in fact, dynamically generates a diag-
executes the tree. It is impo~t
diagnostic
fa~ts) are to be represented
to work most effectively.
the experimental prototype dealt with a simple circuit,
more work also needs to be done on the question of “scale-up,”
i.e., on the degree of complexity involved when adopting an EX-
inference
engine carries out the diagnosis like this:
00D
1. find the rule named as output_abnormal
approach for real-world boards. We claim, without proof
at this s~ge, that the measure of complexity involved in applying
an EXOOD approach will be basal somehow on the following pa-
2. test the input of the counter; suppose it is OK
rameters:
3. find the rule named as counter_or_bufFer_fadt
4, check the finction of the counte~ suppose the result is OK
5. report result bufFer_fidt
●
number of components
●
&gree of relevant connectivi~
“ &gree of relevant functionality
“ number
CONCLUSION
The prototyping of the system along the lines su~ted
by Freil-
“ number of daemons (triggers) in the diagnostic base
ing et al. has demonstrated not just that an expert object-ori-
s number of strategies available to the inference engine
ented diagnostic system is feasiblebut also that the domain cars be
precisely and naturally described with the concept of object. (A
brief example run is provided in the Appendix.) At the object
level, component data, hnctionality,
of represented faults
Our hypothesis is that it would be wrong to conclude that an
and connectivity are rep-
appropriate
measure
of (diagnosibility)
complexity
Cm be com-
resented whilst at the rule level diagnostic knowledge is repre-
puted on the basis of simply multiplying these ptiameters to-
sented, When these two are combined by means of an inference
gether. The point here is that the nature of the EXOOD
engine, a precise and powerfi diagnostic system an be built that
tecture we have outlined is such that the implementation of an
on the one hand contains human diagnostic expertise and on the
other a comprehensive and sound description of the board under
EXOODS is amenable to some degree ofpar&lprocersing
examination.
vate objects in the mmponent
There are several ways of proceeding with the research. First,
there are some short-term advances:
mmponent base can send information to objects in the diagnos-
archiwhere,
e.g., objects (in our case, rules) in the diagnostic base can actibase directly and objects in the
tic base direcdy, i.e., without necessarily communicating via the
inference engine in both cases. One of the advantages of parallel
1. We can develop more effective mechanisms for describing the
processing may well be that it now becomes possible to diagnose
—
27
Expert diagnostic systems
fadts where two or more faulty components give rise to a cer-
APPENDIX
tain fault symptom. We intend to support our claims by m-s
Here is a simple example run of the experimental prototype. Com-
of further work using both reaJ-world boards as well as an ap-
ments are enclosed within /’...
‘/. User input is prefixed by ?,
propriate parallel processing paradigm.
The medium- to long-term advances, therefore, ue concerned
/“ Here is We menu interface”/
with the implementation of the mchitecture. We expect there to
be two major sets of impli=tions con~ning the ~OOD
architecture outlined above: processprioriun
●
and pasiive mn~c~”on.
●
******+*****+**
*+**************
1’
* Save_rule
nosis, there wilJ be significantproeing
* Read_rule_from_file
fas.dtsfrom reported symptoms or measured data. It is possible
●
2*
3*
Diagnos_fault
that in the presence of a rnajorfadt a significant number ofpossibk fault messages will be generated and the diagnostic system
* F’rin_rules
could b-me
● Mt
*****************
4’
5’
6’
* Wt_objects
swamped wih active processes (daemons). There is,
therefore, a need for faultpriotiti~tion
*********
Input_rule
Whatever arfiltecture is adopted for tipert object-oriented diagas a resultof hypothesizing
●
and a scbeduhr to control
7*
*****
********************
the activation of processes in a manner responsive to severity information. Such a scheduler and prioritfir
will need to access a
?3
deep carnal representation of the components of the board, and
one of the medium-to long-term tasks is to relate the causaJ rep-
file name: ?rulebase2 /“ this loads up a predefine set of diagnotic
resentation to the diagnostic strategies. With respect to pmive
rules “/
noti~ation,
andin the light of the above comment on scheddlng
***************
*********+******
●
or reported fadt symptoms should be possiblein a “p~ive” mode,
* Input_rule
e.g., via a blackboard system, so that the prioritize and scheduler
* Save_rule
2’
bemme uninterruptible processes. ■
* Read_rule_from_file
3’
REFERENCES
* Print_rules
[B.broB5] Bobrow,D. G. and T. W1no~ad. An overviewof KR1.,a knowledge
R. J. Brachman
rcpmentation lmguage, Readinp in tiwh~
& ~bn,
and H. J. Levesque,eds., Morgan Kadman Publishers, 1985.
* Print_objects
●
[Frei186]Freiling,M. J., S. ReM.s, J.
Shdman.
system fnr elec-
Con&eace
Uones871Jones,A. H. and S. E. Burge.An expertsystemdesisn using cause-effmr representationsand sim~[ion fnr fault de[ec~inn,.Syrrm Fault Diugnostr”c~,Reliubilip and RrbcdKnowk~c-BaredApproacbn,
S. Trafeatas,
Sin+,
and Schmidt, eds., Rcidcl, 1987.
[Tfi871 Tzafestas,
S.A look at the knnwledge-basedapprnach m systemfault
d~nsis and superviwry contrnl, SyrtemFault Diagn.sticr, Rrliabiliy and
Related Know.?e~c-BmedAppmarhe~,
Trafmtas, Singh, and Schmidt, eds.,
Reidcl, 1987.
of the 5th Intertmtional
Naive causal reasoning fnr di~nsis,”
Workshop on Expert Sytm
Agencede I’informarique,1985.
Diagnos_fault
4*
5*
6*
* Exit
******************
***************+****
7*
****
?5 /“ showthe rules’/
on Applica-
tion ofAI in Engincrring Problems, Vol. 1, D. Sriram and K Adv, eds.,
SpringerVerl~ NewYork,1986.
Van de Vclde, W.
1“
H. Alexander, S. L. Mcssick, and S. J.
The ontological structure of a troubleshooting
tronic instruments, Pruccedingr of the Ist International
~ande85]
●
*********
and prioritization, it is evident that notification of measured data
Pro.ce~ngs
andApp/icatiom,
Vol. 1,
Rules:
> buffer_fiult.
> co~ter_fault.
> co~ter_bfier:
IF F’lJ’NC~ON
OFco~ter OKTHENbuffer_fau~tE~E
courtter_fault.
> hghts_stuck IF m
OFcounter OKTHENcounter_bufferELSEos-
cillator_fault.
> osci~~ator_faul~IF ~~ON
OFnartdsOK~EN C_or.- R fiult E~E
mnds_fiult.
> nan&_fault,
> C_or_R_fault: IF CONDITION
OF capacitors OKTHENR_fault ELSE
c_fault,
> R_~ult. /* resistor fault’/
> C_fault./ * capacitor fiult”/
*****+**********
2B
****************
**********
* Input_rule
1*
* Save_rule
* Read_mle_from_file
2’
3*
* Diagnos_hult
4’
* Frint_rules
5*
JOOP
OmOBER
1991
6’
* Print.objects
‘ Exit
● ***************
7’
● *********
****************
Voss
?6 /’ showthe objects defied */
Virtual Object Storage System for
SmalltalklV
Objects:
capacitors counter buffernands
se~mless
persistent
********************
●
*************+**
*****
with updatetransaction
object management
“control directly
in th;Smalltalk
lariguage.
* Input_rule
1’
Transparent access to Smalltalk objects on disk
‘ Save_rule
2*
3*
Transaction commit/rollback
* Read_ruLe_from_file
* Ptit_rules
Print_objects
* Exit
****+***********
Access to individual
elements
collections and dictionaries
4’
5*
* Diagnos_fault
Multi-kev, and multi-value virtual dictionaries
with query by key range and set intersection
6*
●
●
********+******
7’
**********
.
?4 /“ first diagnostic run */
Class restructure editor for renaming classes
and adding or removing instance variables
allows incremental application development
●
Shared access to named virtual object spaces
.
Source code supplied
nease input fault_mme ?lights_stuck /’ symptomentered’/
Please input the clock_input of counte~ ?1 O1 /“ pulse high-low-
of virtual
Ai,ailahle
[oflic
——
A
R
now for Smalltalk/V2H6
$149 + $15 shipping
Plea*sialedi5ksimrquid.Visa,Mast<nrdandEUmC~rdaK~pld.
T
S
Logic Arts Ltd. 75 Hemingfurd
Rtmd, Cambridge,
+44 223245171
England,
TEL+44223212392FAX:
high ‘/
~rcie
Mease input gd, gc, gb, ga of counte~ ?0 O0 O/’ counter output
52 on Reader
CB1
3BY
Service Card
states ‘/
Input clock ?1 O
Input clock: ?1 O/* pulse high-low”/
Please input ga,gb,gc,gd of counte~ ?0 010
Measeinput gd,gc,gb,ga of counte~ ?0 011 /* too great an hcrement
*I
Input clock ?1 O
Diagnosisresulti couter_fault /’ fault diagnosed at counter’/
~ease kput ga,gb,gc,gd of counte~ ?0 O11
+****************
●
****************
*********
1*
Input_rule
Diagnosisresult buffer_fault/ * because the counter and clock are
OK ‘/
* Save_rule
2*
* Read_rule_from_file
3*
* Diagnos_fault
4’
* Input_rule
* Prin_rules
5*
●
* Prin_objects
* Exit
****************
6*
●
****************
7*
● ********
?4 /’ second diagnostic nm’/
****************
***+************
**********
1*
2*
Save_n21e
* Read_rule_from_file
3’
* Diagnos_fault
4’
5*
* Print_n21es
* Print_objects
* Exit
+**********+****
6*
****************
7*
**********
Please input fault_mme: ?lighk_stuck
?7 /’ exit’/
~ease input the clock_tiput of counter: ?1 01
P[easeinput gd, gc, gb, ga of counter: ?0 001
29
PSE: an object-oriented
simulation environment
supporting persistence
by Stephanie
Tbc RAND Co~r&n,
T
Cammarata & Christopher Burhf
1700Main St, Santa Monica, CA 90407-2138 arrdScboolofMatbrrrurrica[Srirrue~,Uniurriy of Barb, Ed,
AvonBA27A
K En~krnd
his paper describes the Persistent Simulation En-
Persistent object systems (POSS), such as PSE, have the ad-
vironment (PSE), which combines object-oriented
vantage that objects are no longer tightly coupled to the simula-
simulation with a persistent object repository and
tion system, i.e., objects reside in their own repository and can be
domain-dependent object prefetching facilities.
The goals of PSE are threefold: (1) to augment a
sion. Therefore, input and output simulation data may be main-
contemporary object-oriental programming &e
independently perused before, during, or after a simdation ses-
with discrete
tained permanently in the persistent store of PSE. Moreover, per-
event and process-based sirmdation facilitiesequaling those found
sistent object systems enable object-oriented simulations to be
in simulation languages such as Simscript and Simul~ (2) to
scaled up to efficiently support and maintain many more objects
tightly couple an object-oriented simulation language with a secondary storage facility to achieve the persistence of simdation
than memory-based object-oriented languages. For example,
large-scale simulations, such as those done at RAND, may con-
objects; and (3) to improve the swapping of persistent simda-
tain thousands of objem. OW laboratory has generated 80,000+
tion obj~
between main memory and secon~
storage through
map objects hr terrain-based modeling. We find that up to 20,000
the use of object prefetching. The PSE proto~e
we developed is
of these objects can be loaded into the CLOS environment on a
implemented in the Common Lisp Object System (CLOS) and
worksmtion with 16mb of main memory before the virtual mem-
runs in Allegro Common Lisp on Sun/3 and Sun/4 workstations.
~Is environment is a complete, yet fltible, set of CLOS classdef-
OIYsystem will need to perform tiwsive paging to
size of the virtual image. Such mmssive paging can greatly de-
grade the pefirmance of the simtdation. Out initial resul~ indicate
initions and methods fulfilling these objectives.
The results of this research will mntribute to the Productivi~
Improvements in Simulation Modeling (PRISM) project supported by the Air Force Human bources
manage
the
Labotatoty. The goal
of the PRISM project is to improve productivity and responsiveness of organizations within the Air Force that provide mission capability assessments through discrete event simulation
a fourfold speedup when reading 20,000+
previously formatted
objects stored in our PSE object management system, compared
to reading and formatting the same objects each time for nonpersistent CLOS,
Many POS projeets are concerned with seamlm integration of
simulation language features and traditional data management
models. The simulation facilities of PSE were modeled predom-
capabilities such as transaction management and mtdtiuser ac-
inantly after those available in Simscript and Simula [Russe79,
cess [Atkin87, Ford88, Khosh89]. Although these issues are crit-
Dah167]. In addition, we incorporated many traditional simula-
i~ to the success of persistent object systems, much of our efForts
tion features that were not supported in the Lisp-based Ross ob-
were focused on a different problematic aspect of POS: efficient
ject-oriented simulation language such as probability distribu-
across of persistent simulation entities from secondary storage.
tions and process-based simulation [McArt84].
In a POS, persistent objects entail disk accesses when the simulation requir= objects not resident in the simulation’s virtual im-
1Thispmjecrw sponsoA bythe AirFon H~.
h~
the DefenseAdvancedResearch Projec~ Agency under
W-y
thm.gb
the auspices of RANDs
National Defense Research Institute, a federafly funded re=rch
and develop-
ment mnrer sponsored by dre Offim of the Seeremry of Defenw and Joint Chiefs
of Sti.
Views and conduaions mnrained in thii document are rhose of the au-
thors and shmdd not be interpreted m q-nting
the offid
opinion of DARPA,
AFHRL, the U.S. Government, or any person or agency connected widr them.
30
age. PSE incorporates techniques for reducing the number of
“object faults” through object usage prediction and prefetching,
In the next section, we present the simulation facilities supported by PSE including examples that demonstrate the use of
events, proc-s,
and tesour=.
The following sections addressthe
persistent object system within PSE and describe the methodol—.
JOOP
OCTOBER 1991
ogy we developed for object prefetching. We discuss two PSE
The method add-to-queue can be scheduled as an event by
the PSE do-at function
applications and identi@ limitations and future work in the final
No sections.
,,.
,,,
“”-schedules the method “add-to-queue” to occur wery 10 time
,,,
;;; units
(defun nm-caswash (carwashKm-of-vehicles)
SIMULATION
CAPABILITIES
IN PSE
PSE supports both event-based and process-based discrete simulation. Events are actions that occur instmtaneousl~
processes
are actions that have a time duration and chat mayor may not con-
(setq wash-tie (eorrent-tie))
(dolist (object list-of-vehicles)
(do-at carwashwash-tie ‘(add-to-queue ,carwash ,object))
(setq wash-tie (+ wash-tie 10)))
sume resources. Events are scheduled programmatically (or by
the user) to occur at the current simulation time or at some time
in the fiture. Pro-es
are also scheduled [o begin at a mtin
rimq
however, depending on the availability of necessary resources and
.)
the priorities of competing processes, their activation cannot always be predicted. Instead, the PSE scheduler controls the activation, interruption, reactivation, and termination of procases.
The function do-at will add the method add-to-queueto the list
The event sched~lng methodology and simulation primitives
of scheduled events. Because the first add-to-queue event is sched-
are based on those found in the Ross object-oriented simulation
ded for the current time, the schedder will process the event be-
lmguage. A globaj clock object maintains the scheduling and
fore the clock advan=. Another similar PSE finction for schedul-
processing of events. However, beatrse PSE is CLOS-based, PSE
ing events is do-after. The function do-after has the same format
takes advantage of CLOS generic functions described in more
as do-ah however, the time parameter indicates a time in the fu-
detail in the following section. In contrast to message-passing
ture relative to the current time.
Imguages like Ross, which discriminate methods on only a single
CLOS generic functions give additional modeling power to
argument, generic functions ajlow methods to discriminate on
PSE’S simulation facilities not found in message-based simula-
multiple arguments, In addition, we have incorporated into PSE
tion languages like Ross. For example, in Ross there can be only
routines for sampling from normal, Poisson, and exponential
one method for add-to-queue defined on a resource object, In the
probability distributions to facilitate nondeterministic stochas-
example below, we show how PSE (and CLOS) supports addi-
tic processing not available in Ross,
tional methods for add-to-queue that discriminate on the second
PSE’S process facilities are modeled afier those found in Sim-
parameter object, This version of the method is invoked for add-
script and Simuja. Once a prowss is scheduled, control is turned
to-queue events where the second argument, object, is an instance
over to PSE for activating the pro=.
of type buck.
In many a=,
processesuri-
lize resources; and, if a required resource is not available, indefinite delayscan OU.
...
r,,
When the resource is relinquishedby another
.-. add a tick to a carwash’sinput queue.
,,,
...
,,,
(defmethod add-to-queue ((carwashresource) (object truck))
process, it is then assigned to the scheduled procm and activation
begins. Below, we discuss the simulation capabilities of PSE in
more detail and present some mplanatory examples.
< otier functions associated with addf.nga truck to a carwashqueue>
EVENT-BASED SIMULATION
:)
PSE’S event-based simulation facilities include a global clock and
built-in fi.tnctionsfor scheduling and pro-sing events, The clock
object maintains information about events that are scheduled for
the future such as the objects referenced by the event and the
time at which the event is to occur. The clock advances to the
The operational
time at which the next scheduled event is to occur. The scheduler
from the definition
then executes the event. The simtdation continues executing un-
duration
til all scheduled events tie promssed. An example of an event defined as a PSE method is the following
cesses, like events, are defined as methods and activated as finc-
PROCESS-BASED
SIMULATION
differences
between
processes and events stem
of a process as an activity that occurs over a
of time rather than an event that is instantaneous.
tion calls. However, most processes include a re~ourceargument.
Resources are declared as a subclass of the built-in class resource
...
,,,
-.“add an auto to a carwash’sinput queue.
,,,
...
,,,
(defmethod add-to-queue ((carwashresource) (object auto))
and therefore inherit methods defining their behavior within pr~
cess cajls. When a PSE process is activated, the system determines
ifa required resource is free, If an insranm of the ne~~
is available, it is automatically assigned to the active prm.
< ofier funclions associated with adding an auto to a ca-h
Pro-
resource
Con-
trol of the resource belongs to the process until it terminates.
queue>
Scheduling of processes and allocation and deallocation of resources is controlled exclusively by PSE and is transparent to the
.)
.
31
PSE
user and programmer. In Sirnacript znd Simda, r=ources must
1
be requested and relinquished by the programmer within the 1
procms definition code.
;;; Defie a customerclass
...
,,,
(defclass customer ()
((name :accessorname :filtform (gensym))
Another feature of PSE processes is the assignment and management of pro~ss priorities. Priorities are useti when modeling
(service-time :accessorservice-time)))
.
,,,
a scenario with promses of differing precedence, For instana, in
a job shop simulation critical time-dependent treks should be
;;; Define
serviced immediately when they are scheduled. However, lower
...
,,,
priority “busy work” tasks can be performed at my time or in-
(defprocessservice I :resoorce (tel teller) ((CUcustomer))
terrupted if h@er priority tasksare waiting. Suppose an active pro-
a “service”
process whereby a customer is servicedby a teller
(worktel ‘service(service-tie CU)))
cess is utilizing a resource, and, subsequently, a higher priority
process, requesting the sae resource, is schedded. PSE will sus-
...
,,,
pend the lower priority process, execute the higher priori~ pro-
;;; Thetop level funfion which meates tellers and customers, schedules
cess, znd then resume the suspended process. All process sus-
.‘. serviceprocesses, and executes the teller simulation
,,,
pension and resumption is managed internally by the PSE system.
.,.
,,,
A user need only spec@ priorities as an optional zrgument when
(defun u-teller
()
defining procmses, Simscript and ModSim zlso support process
(setq ‘clock’ (make-clock))
priorities but require chat the simulation application code com-
(let ((customers nil))
pare priorities of promses znd explicitly suspend pro~ses
when
(setf (get ‘teller ‘resources)nil)
necessary [Herri90]. Simula has no builr-in capabilitia for pri-
(make-resource‘teller)
oritizing promsses.
(make-resource‘teller)
(setq customers (cons (make-instance‘err.rtomer:service-time100)
SINGLE
RESOURCE
SOURCE
QUEUES
QUEUE
VS. MULTIPLE
RE-
customers))
(setq customers (cons (make-instance ‘customer :servic&time 30)
Two variations ofprocess-based simulation are available in PSE:
single queue and multiple queue. Single queue processes util~ a
,
customers))
(setq customers (cons (make-instance ‘customer :servic&time 30)
single queue for each class of resource that has been declared. Invoking a pro-
that requiresa resourm instan~ dts
in schedd-
customers))
(setq customers (cons (make-instance ‘customer :service-time 30)
ing the rmurce request on a queue associated with the clzss of the
resource. When a resource instance of che class becomes avail-
customers))
(dohst (c customers)
able, the system will activate the scheduled process. When the
resource is relinquished, PSE will select the queued process with
(process-at ‘teller (current-time) ‘(service,c)))
(run ●clock*))
the highest priority to execute next.
Fo~ resource cl~es with multiple queues, a request by a process is queued directly on m instance of the resource class.The system determines which resource instance on which to queue the
In the above rode, defresourcedefinesa teller resource class.The
first went
of defresourcedeclares the resource class namq the
second argument indicates whether the resource is a single or
process request by first looking for a free r~ource and, if none ex-
multiple queue resource. The remaining arguments for defreist, schedding the process for the resource instznce with the short- , source are identical to those for the CLOS defclassfunction. The
est queue. The differences between the implementation code and
simulation results for single queue and multiple queue simulations are illustrated below in a simple bank teller simulation.
...
r,,
fi.tnctiond~rocess definesa simktion
pro=.
The first argument
~ passed to defprocessis the procas name, the second argument of
the pro= definition provides the process priority, and the list following the :resource keyword indicates the required resource. The
other parameters of defprocessare the same as the parameters of
;;; Codesegmentsfor telbr simulation comparingsingle and multiple teUer
the CLOS defmethodsmtement, A dl to the finccion workwithin
;;; queues
...
,,,
the promss definition is used for advzncing time during a process.
In the function run-teller, the code firsr creates two rellers and
,,,
four customers with serviu times of 100,30,30,
;;; Choose one ofthe followingtwo resource declarations:
...
,,,
spectively. The dl to process-atfor each customer queues four service processes. In addition to process-at, which schedules pro-
(defresourceteller single () ())
cesses at an absolute time, the analogous function process-after
;;;(defresource teller multiple () ())
schedules processes at a time in the fiture relative to the current
and 30 units re-
time. Finally, run puts the clock into motion.
...
,,,
32
Figure 1 shows the results of two versions of the teller simuJOOP
OCTOBER 1991
YOUJIIget everything that
you get from any other
OOP language...
And that’s not all:
SLMULAhandles processes with preemptive scheduling, a garbage collector
automatically reclaims unused memory space and maybe best of all - your
applications are portable due to the standardization of SIMULA.
SIMULA, the original OOP languge, has proven its strength in industrial, commercial,
and scientific applications for more than 20 years. This guarantees the quality, stability,
and usability of the language, SIMULA introduced all the important OOP concepts:
classes and objects, inheritance, and dynamic binding.
TheLUND51MUMsystem
Lund Software House AB in Sweden has developed a SIMULA system that is a set of
high-quality software tools for development of Simula programs.
Conforms to latest SIMULA standard
●
Efficient compiler
●
C, Fortran, Pascal, and Assembler call interface
s Symbolic Source level Debugger
●
LUNDSIMULA
is availableon:
_ suN-4/sPARc
SUN-3
●
●
●
●
●
VAX VMS/Unix/Ultrix
Macintosh under MPW
Apollo DN3000
ATARI-ST
A
A
I
Circla26 m Re~HSwlce Card
.
A
LUND SOFTWARE HOUSE
Box 7056
S-220 07 LUND
Sweden
AB
Phone: int-46-4&13
4060
Fax: int4646-13
1021
Email: boris@dna.lth.se
PSE
1
1
‘
‘“’’”1
~
..
available tor use by other processes. The following PSE finctions
br dispattilng a processwith multiple resourcesCorr=pond to process-at and process-after
(process-mres-at <resource-class> <tie>
<number-of-resource-instances>
Single quaue slmulntim ulllizes 100 time unlh
‘(<process-name> <process-parameters>))
(process-mres-after<resource-cbss> -e>
<number-of-resource-instant es>
‘(<process-name> <process-parameters>))
Teller i
MIXED PROCESSES AND EVENTS
Similar to most other simulation Imguages, PSE supports the
combination of processesand events in a single simr.dation.ArI exMuiiiple
quaw simulatl.m
ulllizen130iimaunh
ample of mixing processes and events is illustrated in the follow-
O( two versions
sented a segment of the code representing the beginning of the
ing code, which is part of a carwash simulation. We have preFigure
1. Results
of teller
simulation.
simulation when the driver of the automobile pays the attendant
lation: one using a single teller queue and the other with multi-
for the carwash before the car is queued for washing. The activ-
ple teller queues, one per teller.In the single queue version, the cw
ity of paying the attendant codd be modeled by a process that rep-
tomets are placed on a single queue based on their order of arrival
resents the exchange of money, transfer of receipt, etc.; however,
Customers are removed from the queue and assigned to the firsl
since none of these individual activities are critical to the simu-
available teller. With mdtiple queues, customers are assigned to
lation, we choose to model carwash payment by use of a single
the shortest individual teller queue upon mrival. For the given
service times, the single queue version will terminate in 100 time
event, As the code &cribes, the driver first pays the attendant and
subsequently a carwmh process is scheduled. This example also
units; the multiple queue version requires 130 units to process
demonstrates stochastic processing by rhe use of a normal prob-
all cu3tomers.
In all our examples so far, processes have required a single in-
the carwash process,
ability distribution for sequencing autos and for the duration of
stance of a raource class however, processes can also be defined
...
without the need for resources using the following functions:
,Jr
;;; BehmmaWag~ti~ti
&m@p~tie~t
(process-without-resources-at ctirrte>‘(cprocess-name>
Cprocess-parameters>))
;;; is the mtiod forthe event“pay-attndant”.
...
r,,
(process-without-resources-after<tie>
(defmethodpay-attendant((dr driver)(au auto))
‘(<process-mme>
Cprocess-parameters>)) ~
I
In such a case, the scheduler will execute the process at the
(setf(attentit-paid au) (current-tie))
;;; fir
a~dartt
(process-&
ispaid,the car is scheduledfor-g
‘vaeuuma
schedr.ded time. No waiting is necessary because no resources
(normal‘attmti-delisy-mesn’
need to be assigned to the process.
‘(mum
MULTIPLE RESOURCE INSTANCES PER PROCESS
...
,,,
;;; me top levelfuntion whichmes
tdation, a work process may require more than one instance of an
identical machine tool or other resource, This feature can be utilized only for single queue resource clmses and ordy for prowses
*attendantde@-sd*)
,au)))
Another unique feature of PSE, not availablein Simscript or Simda, is the ability to schedde processes requiring multiple instances of a single resource class. For example, in a job shop sim-
This
the_
simulation.The
;;; param-autoinstances isalistof autosto be_dforWg.
...
r,,
(d*
run-c(autoinstances)
w ((~o))
(dolist(auto auto=ces)
without a priori~ parameter. Each promss waiting on a resourm
;;; schedub the “p~atindant” event
queue advances through the queue in the same sequence as it was
(do-at (driverauto) start ‘(pay-attendartt,(driverauto) ,auto))
;;; paymentof attendantforeach autoistie sequenced
scheduled. A queued process waits until the required number of
resource instances is available before it begins processing. When
the resources are free, they are assigned to the waiting process
(setq start (+ start (normal*start-mean* *start-sol*))))
clock*)))
(run ●
and cannot be used or interrupted by other processes. When the
process terminates, all resource instances are relinquished and :
34
JOOP
OUOBER
1991
2U3CORDINGSIMULA’2’20N~NTS
PROCESSES IN PSE
AND
resources = #Cte~ler42325446>
end-time = 100.0
Collecting and analyzing the resdts of simulation trials is a critid mmponent of a simdation lifecycle, Most simulation lan-
suspended= nil
work-tie = (100)
guages have statistics-gathering routines that can be included in
arguments = (#<customer 42346236>)
rhe simuktion application mde during implementation. PSE has
adopted a different approach by transparently maintaining a
pid = g393
database of simulation activities. Every simulation activi~, inCludlng event dispatching pro=
activation, process suspension,
pname = service
and resourm utilization, is recorded in PSE’S activity dambase.
start-tie
With such a complete audit trail of the simulation’s activi~, a
resources = #4eller 42322436>
scheduled-tie = 0.0
= 0.0
postsimulation trace can be produced in many different formaw.
end-tie
Below we illustrate two different formats that cars be modified
suspended= nil
by usersto mmrnodate
work-tie = (3o)
their own analysisrequirements. The first
trace is a time-based account of the single queue teller simulation p-nted
= 30.o
arguments = (#<customer 42345606>)
in the section on singlevs. multiple resource queues.
Note, however, that this tra~ is not generated during simula-
pid = g394
tion processing rather, the required data is recorded during the
pname = service
sim&tion and the t-is
scheduled-tie = 0.0
recreated by rtiieving data from P.SE’s
activity database.
‘rime0.0
process service g392 is scheduled with args (#<eoatomer 42346236>)
process serviceg392 is started on #<teller 42325446>with args
(#<customer 42346236>)
process serviceg393 is scheduled with args (#<customer 42345606>)
process service g393 is started on #~ller 42322436>with args
(#<customer 42345606>)
process service g394 is scheduled with args (#<crrstomer42345156>)
process service g395 is scheduled with args (#<customer 42347291>)
Time:30.0
process service g393 is te-ted
on #~eller 42322436>with args
(#.tiomer
42345606>)
process service g394 is started on #4eller 42322436>with args
(#customer 42345156>)
Time:60.0
process service g394 is terminated on #~eller 42322436>with args
(#<customer 42345156>)
process service g395 is tied
on #~eller 42322436>with args
(#customer 42347291>)
‘rime 90.0
process service g395 is temsinated on #4eller 42322436>tith rugs
(#<customer 42347291>)
Time:100.0
process service g392 is terminated on #~eller 42325446>with args
(#<customer 42346236>)
start-tie
= 30.0
resources = #tieller 42322436>
end-time = 60.0
suspended= nil
work-tie = (3o)
arguments = (#<customer 42345156>)
pid = g395
pnarne= service
scheduled-tie = 0.0
start-time = 60.0
resources = #Cteller 42322436>
end-tie
= 90.o
suspended= nil
work-tie = (3o)
arguments = (#<customer 42347291>)
PERSISTENCE
IN PSE
Persistent object systems support four major functions: sharing,
maintaining, inspecting, and reusing objects. Skating allows the
concurrent use of persistent objects by more than one application program similar to a database management system that supports access by mdtiple programs. Object maintenance (insertion, deletion, and updating of simulation
An alternate trace format, presented below, is organized by
process identifier and process status. For each process that is generated, a set of associated data is recorded. This format provides
a different organization of the same data presented above:
objects) can be
performed during simr.dation prowsing or through maintenance
routines applied directly to objects in the persistent object repository external to any simdation program. Objects modified during simulation processing will be transparently updated in the
persistent repository so that insistency is maintained between vir-
pid = g392
tual objects in the simulation and secondary storage persistent
pnarne= service
objects. Likewise, objects cars be retrieved and inspected during
scheduled-tie = 0.0
simulation processing and at any time before or after the simu-
start-time = 0.0
lation. Finally, with a persistent object repository simulation ob35
PSE
1.
jects can be reuredwithout recreating and initializing objects for
each simulation trial. For simdations with thousands of objects,
reusabili~ contributes signfiatly
to pefirmance
PSE supports three of the four fictions
F
WE18M1
improvement.
objwllUUS
dQIBnelColu.md
described above; shing
of persistent objects has not been addressed because it involves issues of transaction management and is not one of our primary
goals. Nevertheless, other persistent object languaga are pursuing this topic and their resdts will contribute to the sumss of persistent object systems.
I
PSE ARCHITECTURE
An object that is declared to be a persistent object is retained in
secondary storage tier program execution terminates. In PSE,
once a class has been declared to be persistent those persistent
objects are referenced identically to nonpersistent simulation ob-
Figure 2. Components of PSE.
behavior. The parameter ●
memoY-full*h a global variable
that indicates the size of the object space, i.e., the mmimum
~tern’s
jects. Furthermore, fetching and instantiating a persistent object
number of objects that the system will allow in memory (or ob-
from secondaty storage is performed transparently by the under-
ject spzce) before ~bage
lying PSE kernel. We based the kernel implementation of PSE on
useful parameter, *instance-cotmt*, indicates how many persis-
m~ecting the object directoy. Another
●object-
Rowe’s shared object hierarchy (SOH) methodology [Rowe86,
tent objects are currently in the system. The variable
Rowe88].
fiults’ records the number of times any object was requested by
PSE is composed of the following components pictured in
Figure 2: pmtitent o~ectjks,
objectspme, and an objectdirectory.
an application but was not in primaty memory and, therefore,
needed to be read and instantiated by the system. Finally, ti-
The object filesstore an ASCII rep~entation of the objects in sec-
rectory-size” is the size of the object directory, If a larger directoty
ondary storage. Object space denotes the area in main memory
structure is nded
where the virtual memory object structures reside and the object
tem will dynamidly
directo~ contains one handle per object, which maps an object
The combination
due to the crtation of persistentobjects, the sysallocate more space for the object directory.
of these system parameters, with the three
identifier into the object handle. The object handle contains
choims of update modes, provides users with facilities for com-
metainformation about the object and always remains in main
paring performance under different PSE system constraints.
memory. A handle includes information such as a pointer to the
object’s memory location (which is “nil” if the object is not in
the object space), the object’s lo~tion in the object file, whether
PREFETCHING
or not the object has been modified, and the object’s update
objects by “object prefetching.”
mode. The update mode indicates how the object will be modified on disk. If the mode is “direct-update” the object will be up-
quired by the application program. Object replacement algo-
IN PSE
One god of PSE is to strewline
the access of secondaty
During
storage
the mecution of a typi-
cal POS, objects are retrieved from secondaV storage when re-
dated immediately upon modification. If it is “deferred-update,”
rithms similar to those used for virtual memory, such as “least
the persistent object will be updated when the number of objecu
recently used, ” are generally employed for swapping objects in
in the object space reaches capacity thereby triggering garbage
and out of memory. Our methodology
collection of the objti directory and updating of necessaryobj-.
“Local-copy” objects ordy exist in main memory and therefore
driven” model of object swapping rather than traditional “de-
are not updated on disk.
in advance which objects the simulation will need and loads them
into prim~ memory before the simulation requests them. How-
During program execution, object handles are used as pa-
promotes a “supply-
mand-~lven” algorithms. A supplydriven mdodology
predicts
objects. When a slot in an object
ever, to make predictions about the simulation’s kture data re-
is referenced, one of two actions is taken. If it is determined that
quirements, knowledge of the application and simulation scenario is needed, Therefore, we categorize our work as
rameters to represent simktion
the object is not in main memory, then it is fetched and instantiated before the slot value is returned. Alternatively, if the object
“semantic-based object prefetching.” Our techniques are based
is already in main memoty the value of the slot is simply returned.
on the identification of a “working set” of objects for any active
AS discussed e~lier, the determination of the object’s location,
object being processed by rhe simulation. The working set mn-
*g,
sists of objects that have the potential to be subsequently re-
and instantiation are handled by the petzistent object ~
tern and are transparent to the programmer. For more detailed dis-
quested. A working set can be defined by geographic lode,
cussion mncerning the architecture of PSE, see [Burdo90].
poral locale, or semantic similarity with respect to the active
tem-
object. One of the two testbed applications, described in the folPSE SYSTEM PARAMETERS
lowing section, utilizes a working set based on geographic local-
PSE’S persistent object system includes a set of parameters that cats
i~, the other application incorporates temporal locale.
be modified by the user to tune performance and to measure the
36
The rules for semantic-based prefetching differ depending on
JOOP
OCTOBER 1991
focu s Is on
is an d d esign
JOOP Focus on Analysis & Design gives you the what,
where, when, how, and why of object-oriented
analysis and
design.
Published with the same editorial integrity as the
Journal of Object-Oriented
Programming
this expert-re-
viewed selection of editorial proceedings delivers the latest
thinkin~
insightful perspectives, mind-opening
techniques,
and applicable case studies in this crucial stage of object
development.
JOOP Focus on Analysis & Design discusses the most critical issues and provoking questions facing this process.
Written
by many of the originators of object methodolo-
gies — such as Grady Booth, Steve Mellor,
— these articles define, demonstrate,
and contrast their approaches.
Sally Schlaer
simplify, compare,
This info-packed
softcover
book takes you through the inner workings of the process,
explaining
each step and concept, giving you a frame of
reference you can draw from immediately.
,---------------------
-------
-------
-------
---------------------
-------
ORDER FORM
Return by FAX (212) 274-0646
or by mail to JOOP Focus ON A&D
JOOPFocus ON ANALYSIS
& DESIGN
Q Yes, send mea
588 Broadwav, Suite 604
copy of JOOP FOCUS ON ANALYSIS & DESIGN.
New
not satisfied.Justreturn the bk
York, NY 10012
(21 2) 274-0640
Your satisfaction is guaranteed — your money will be refunded if you are
within ten days.
Name
Method of Payment
Card number
Signature
o Bill me (shipped upon receipt of payment)
Circle 45 on Reader Service Card
Telephone
Country
Exp. Date_
Zip
State
City
o Check enclosed @Yab~e~ Joop in $U.s. d~w~ m a u.~, ~no
o MasterCard
o Visa
o Charge to my
Signature
All orders
must be signed
to be valid.
D1KA
PSE
the application. Therefore, PSE does not incorporate any spe-
dict the need for 20% to 25% of the objects which previously
cific prektching algorithms but instead provides entry points and
resulted in object faults. Although this percentage is relatively
a set of prefetching methods that application developers can use
low, two additional fictors must be considered. First, for an ap-
to enable prefetching. A programmer needs to identi@ an “ac-
plication that is so heavily “object-bound” predicting even 20V0
tive” object and have associated rides for identi~ing the work-
of the objti fiults carI result in a signifiat
ing set corresponding to a particdar object. Many persistent ob-
in subsequent analysis we have remgnized that “smart” prefetch-
ject systems support a conmpt called “clustering” that tries to
ing requires more than simply accessing an object before it is
attain rmdts similar to those obtainable with preferfilng. Clus-
needed; the prefetching algorithm should be synchronized so that
improvement. Finally,
tering, performed by the programmer, is a process by which ob-
(1) the object is fetched before it is aussed
jects that are frequently referenced together are stored on the
not swapped out of memory be~een the time when it h= been
and (2) the object is
same disk page. When one object on the page is retrieved during
fetched and the time when it will be referenced. In hture ver-
object fetching, the entire page is loaded into main memory.
sions, we will be refining our heuristics to incorporate
Clustering is a predominantly static-based organization of ob-
Actors.
these
jects for improving object fetching. Prefetching in PSE, on the
other hand taka a more active approach to supplying application
ACTMTY
progmms with the objects they may need in the future.
Activity networks serve as an abstracr model of the operation of
NETWORKS
a logistics maintenance Wk Simulating the traversal of tokens in
APPLICATIONS
an activity network, therefore, corresponds to throughput in a
We developed two applications for testing PSE that cover a range
logistics task. By developing activity networks as an abstract
pkznning application reof application characteristics. A route
model, the simulation user can p~eterize
quired a large number of objects and the processing time was
corresponding to a particular logistics task or set of tasks. Simu-
an activity network
consumed predominantly with object maintenance tasks, like in-
lation proceeds by the nondeterministic traversalof a given activity
stantiating objects from secondaty storage and storing objects
network by “tokens.” As a token traverses an activity network, it
back into the object files. A second application, ti”vi~ network,
required more compute-bound promsing and fewer resourm
decid= along the way (1) what activity it should pursue, (2) what
and how many resources to consume, (3) how much time to uti-
for object maintenance. Below, we describe the applications in
lim within a given activity, and (4) what subsequent transition to
more detail and contrast the differences in prefetching perfor-
select (i.e., what activity to traverse next).
mance between the two simdations. The resdts of our simulation
mperiments and detailed analysisof performance data for both ap
placations will be presented in a forthmming paper.
Although we are using a network-based simulation model,
the edges in activi~ networks represent tempo~
sequencing and
synchronization of processes rather than sparial distances. Therefore, in contrast to the geographically-based network prefetch-
ROUTE PLANNING
ing, this application requires temporal-based prefet~lng
A common operation in terrain-based simulations is the genera-
The rules we have included in our activi~ nework model are
tion of shortest path routes. For this reason, we chose the com-
based on (1) the resourw thar are utilized by a process node and
putation of Dijkstra’s shorte-stpath algorithm as one testbed application for PSE. The goal of this simdation was to determine
resources associated with an acriviry node currently being pro-
rules.
(2) the probability of transition between nodes. PSE prefetches dl
the shortest path through a map network of roads where inter-
cessed. In addition, the process that has the Klgh=t probability of
sections mrrespond to graph vertices and roads are represented as
edges. Dijksua’s algorithm, executing in a traditional persistent ob-
subsequently being traversed to is also prefetched. Although ac-
ject system, resdts in excessive disk-to-memory thrashing when
applied to a large road network (e.g., 10,000 or more objects)
perimented with contain fewer objects than the map networks
tivity networks are unlimited in their size, those that we have exused by the shortest path traversal; nevertheless, more computa-
because the number of referenced objects quickly exceeds the
tion occurs at each node. The resdts show a much lower per-
maximum number allowed in main memory.
centage of object maintenance time (200/o) compared to map
In this application, PSE prefetfilng predicts the future use of
objects based on the geographic lode
traversal (97%).
However, we found that prefetching perfor-
of objects. Geographic lo-
mance was substantially higher for activity networks. PSE pre-
cale relatesobjeciz that geographicallyr=ide “near” each other. Our
dicted approximately 60% of object faults. Although object pre-
underlying premise is that as a vehicle traverses the terrain it is
diction is better, prefettilng only improves the performanm of
more likely to interact with objects in nearby geographic loca-
object maintenanm time, which in this application is a smaller per-
tions, The algorithm based on this premise prefetches any object
centage of total execution time, By contrasting these two appli-
(edge or vertm) that is dirdy
cations, we have determined the wide mnge of factors that con-
connected (in the graph) to the ob
ject currently being promssed by PSE. Our initial results indi-
tribute to the oved
effectiveness of prefetching.
cate that object maintenance in the PSE implementation of Dijkstra’s algorithm accounts for 97% of the total execution time.
LIMITATIONS
By using geographic-based prefettil~
PSE is a proof-of-concept prototype. During its design, we fmused
38
PSE, on average, cart pre-
AND FUTURE
WORK
JOOP
OmOBER
1991
WmTZSINA NAME?
+++
Itasca ( i, t~s
Latin ve . . .- v. .=-.
. . -------- !* 1
buul Lc.
1. l~ame for the headwaters of
the
the Mississippi
database
‘1
‘“~w
supplier, Itasca Systems, Inc.;
3. Name of Itasca Systems’ first product — the
ITASCA Distributed Object Database Management System.
WHAT’S
IN
v“
●
river; 2. Name for the new object
management
4
. brig-Duration Transactions
. private and Shared Wtabsses
Caching and @ry
Optimization
Composite
Objecti
. Multiple
Language
Interfaces
. Change
Notification
FU1lYDistributed
Architecture
. ObjectShare User
Library
● Distributed
Transactions
●
SeCuritY
Authorization
●
Indti and Cluster
Objects
Multimedfi Dab
Support
Version Control
●
●
ITASCA is
availableNOW on many popular UNK
workstations, for just $3,995.
Fully documented
ITASCA?
●
and supported,
The ITASCA object database is based on the
ORION prototypes developed by MCC’S ObjectOriented and Distributed Systems Laboratory.
WANT MORE INFORMATION?
Built as a truly distributed
CmWtusat: Itasca Systems, Inc.
advanced
features,
ality and flexibility
set the standards
object
system,
ITASCA
offers
function-
2850
that will
Minneapolis,
for the
world:
6
Metro
Drive,
Suite 300
MN 55425
ITASCA
Telephone:
SYSTEMS,INC.
‘ax;612’851-3157
612/851-3153
Circle 19 on Readef Service Card
1-,
ITASCA Dkhibuted Object Duke
Management Systemand ObjectShareare trademark of Itia Systems,Inc. bpyri ht ltaica Systems, Inc.,
19W. UNM is a re~tied
trademark of ATT. Micraebnics
and Comph
Techwhgy Curp. (MCC) is a cooperatiw rmwrc i cmumtium organized
and funded by a number of sbrehak
Cmnpanim.
PSE
PSE architecture with prefetching will provide a separate processor to handle the input and instantiation of objects before they
are requested by the simulation.
The PSE extensions and refinements discussed above suggest
additional directions and goals toward providing simdation developers with even more power and flmibili~.
WFERENCES
[Atkin87JAtkinson,M.P. and O.P. B.neman. Typesarrdpersistent in darabase
programminglanguages,ACM Cermputirrg
SmvVJ,19(2), 105-190, 1987.
[Burdr190] Burdorf, C. and S. Carnrn-ra.
P&ebing
sistent simdation environment, Proceeding
kztion Mhnhe
[DW67J
objects in a perSimti-
San Diego, 1990, pp. 6B-74.
on O&est-ti&Sytemr,
Dahl, E. and K. Nygaard. Simuk.
DMrription #Dd
simhtion
of the Socie~ ofcornputcr
A hn~tigefir
Progrrznrming and
Eurnt Sykm.r, Norwegian computing center, OS1O,Nor-
Way, 1967.
[Ford8s]
Ford, S. J. J., S.E. Langworthy, D,F. Lively, G. Padrak, E. R. Perez,
R. W, Peterson, D.M. Sparacin, S.M. Tharte, D.L. Wells, and S. Agarwala.
Zeirgeisc database support for object-oriented programming, Procceding~ o
the 2nd International
Workrhop on Object-Oriented
Databa.rc Systener, Bad
Munsrer arn Stein-Edernburg, FNG, September 1988, pp. 22-42.
~erri90]
Herring. C. Mdirn
of tbe
reedn~
cnted S’ta,
[Kh.A88]
[M-84]
Circle 53 orI Reader Service Card
on our original
goaLsand, therdore, sidestepped
some of the crit..
-ieal issuesficing persistent object systems. Future work toward improving the robustness, flmibility, and generali~ of PSE will adck-essthe limitations described in tils section.
PSE does not inmrporate or interface with a true object management system or object-oriented database management system.
It currently interfaces with a ~tem
2 as “persistentobj-
of flat files shown in Figure
fdes.” Thus, it is difficuk to examine objects
S. A persisre.r complm objeet databaae language, Dati
1989.
Errginm”n& 3,225-243,
McArA.r,
Lan@gefir
on Object-On”-
San Diego, 1990.
Khoshafii,
Knowhdge
a new objmt~rienred simulation lsnguage, Pro-
Soriey of Computer Simnkatibn Multiconfirmce
D., P. Klahr, and S. Narain. Ross: An Objr.t-Oriented
Coortictr”ng
Simuktionr,
R-3 160-AF, The RAND Corpora-
tion, Ssnta Monica, CA, 1984.
[h~6]
Rowe, L.A. A shared object hierarchy, Praccedingr
national
Workshop on Object-On’ented
of tbc
IEEE Zntm-
Syrtrrnr, Pacific Grove, CA,
Datab&e
September 1986.
[Rowe88]
Rowe, L.A. Picasso shared object hierarchy, Proccedingr of the Firrt
CLOS Usrrr andImpkmsntom
[Russ.79]
Russel, E. Simu&ting
Workshop, Palo Alro, ~
with
PTOC.JJeS
and
19138.
Resources in Simrcript 11.5,
CACI, San Diego, CA, 1979.
in the “database” and PSE has no tilJities for modifilng the flebased objects, AU object editing must be performed through PSE
prog-s.
Furthermore,
PSE does not SUPpOrtthe
modification of class objects once they are declared persistent.
appli=tion
Routina for propagating the modifications to all subclasses and
instances is necessary to support class modification. Finally, beause PSE has no facility for insuring the integrity of competing
transactions PSE objects cannot be shared be~een simulation
programs simultaneously. Consistency maintenance of this type,
across applications, may dso be provided by fiture object management systems.
The second major shortcoming that affects potential performance improvements Worded by PSE’S object prefetching is its
uniprocessor architecture. When executing PSE on a single processor, prefetching has no positive effect on performance. However, sinm the costs of accessing and insmtiating
art object from
secondary storage me high and can have a major impact on performance it would be advantageous to inte~ce
object prefetch-
ing with a parallel or multiprocessor system. A multiprocessor
40
JOOP
OmOBER
1991
PO constraints as tools to
synchronize active objectsl
by A. Cowudi andL.
Dz@ti”_
T
& E&ermnica,Infimratica r Stitieir&Unimiti’&
2, VUL fi~”nunto,
40136Bo~,
Idy
he possibility of integration of the object paradigm
is fired only when no intefierence with other executions within the
with parallelism is widely accepted [Booch87]. A
same object arises. Constraints are specified in an object part seParated from the operations (scheddlng part) and have fine gran-
generation of object-oriented systems where objects me active entities has appeared and this trend
ulari~ constraints can refer to object operations and to any part
of the scheduling state. They can also be composed. The con-
is still in evolution. Those systems take into ac-
count communication
straint level permits inheritance easily and atilcves reuse of the
schemes more oriented towards paral-
lelism, such as asynchronous and fime
bchaviour of synchronization.
mechanisms [tirra90a].
After a brief description of the PO system, the article explains
One of the fields where research is still open is the feature of
tilng
Leonardi
Bolu~
constraints in terms of examples and of comparisons with related
mdtithreaded objecu, i.e., objects that can accommodate
several threads of execution (or activities). This constitutes a fir-
work In particular, PO is mmpaed
ther level of parallelism: the intraobject one. This kind of paral-
a similar level to express synchronization: guidelines in the anal-
with proposals that provide
lelism allows a user to more easily map an application with an
ysis are the properties of sepa~ation,panubrig,
intrinsic degree of parallelism, especiallywhen the designer has al-
inheritance of the proposed mechanisms.
composition, and
ready explicitly expressed it, We bdlcve that the obs~cle against
intraobject parallelism is the lack of high-level tools to make the
THE
expression of synchronization
The PO model [Corra88] is an object-oriented model that inte-
classifi=tion and inherimce
easy and incremental. Instead,
PO MODEL
grates the object properties
of the object paradigm encourage
of uniformity
and dynamicity
eral, these principles have not been considered and integrated in
[Goldb83] with the actor properties towards the expression of
parallel computations [Agha86]. Each PO object can be active
the definition of the tools for synchronization.
and then capable of executing and interacting with other objecrs
This article considers an active object system called Ptiallel
Objeti (PO) [~rra89]. ThK system is based on an object model
This first level of parallelism (interobject parallelism) is enriched
that allows objects to be internally parallel. In addition, the ex-
by another level: intraobject parallelism. A PO object can host
pression of synchronization takes into account classification and
in itself multiple threads of execution called activities.
high reuse of software, even to express synchronization. In gen-
also by using asynchronous communication schemes [Corra87a].
inheritance. PO defines a set of tools that make a parallel pro-
The scenario of computation for PO objects is the following.
gramming oriented towards the application semantics possible. In
A client object sends a request for an operation to a server ob-
fict, PO provides users with tools at a high level of abstraction
ject. Requests sent to one object are buffered in its queue (re-
[Corra87b]. In general, a constraint expresses
quest queue). The object extracts requests from its queue ac-
to besatisfied
behre an objecr operation w ~ aca precondition
tivated. Constraints apply to object operations. By using con-
cording to a peculiar scheduling policy. For any request, the
object creates an activity to serve it. This activity executes one
straints, a user can specify complex policies of object request
object operation and gives back the result to the client. The gen-
called anstraints
eration of service activities is the mechanism that grants intraob-
scheduling. The resulting synchronization is aprioti: an activity
ject parallelism.
1 Thii work hm ken panidly suppond
rmtici e Glcolo PAlelo”
by “Progetto Finalizzato Sistemi Infor-
of CNR, under Grant 89.00012.69,
In the following, we focus attention on the aspects related to
and by ‘Paral-
intraobject parallelism and activity synchronization.
1.1 Computing Action” of ESPFUT, under Grant 4028.
—
41
PO constraints
SYNCHRONI~TION
REQUIREMENTS
The requirements to be satisfiedin the specificationof internal synchronkation in a parallel object model are
1. Separation — normal object operations and synchronization
a
be separately expressed.
2. Abstraction — synchronization can be applied to the object
visible part, i.e., its interface.
3. G~darity
way,
— synchronization can be specified in a granular
4. Inheritance — classifimtion md inherimce relatio~lps
im-
pact on sychronizarion.
A correct answer to these requirements produces several ad-
Figure 1. Internal structure of an active object. An active object always consist of
two parts: normal and scheduling. The normal part is made up of state and operations. Note that operations are defined in the class. The scheduling part supports
object
concurrency:
vantages.
it consists of state, one request que, and activities.
liar activity
always
present
A pecu-
is the scheduler.
Separation between operations and synchronization introduces a further level of moddarity [B100m79]. This allows a user
worth considering. Fairness is the most important, i.e., respect-
to change one part without altering the other. The expression of
ing the time ordering of requests. A fair servim must guarantee a
synchronization within operations, on the one hand, does not
first in first out (FIFO) management of the request queue asso-
respect modul~i~
on the other hand, the synchronization pol-
icy is less readable and less changeable.
The specification of synchronization at the object interface
ciated with each object. Fairness is difficult to achieve in models
that define severalrequest queues per object, e.g., one per each ob
ject operation [Bronn871.
level stems from the information-hiding principle intrinsic to the
A system must also provide tools to inspect mess~
in the re-
object paradigm. By acting at the interface level, the specification
quest queue. In particdar, these tools are tidarnental
in the im-
of synchronization schemes tends to be independent of object
plementation
implementation.
operations.
of complex policies such as priority between
INTRAOBJECT P-LLELISM
PO pum together a scenario where one object can dynamically create the needed number of activities. The activities internal to an
object me generated and controlled by a special mmager called
By actingat the inte~ace lme~
the specz~cationof synchronization
schemestendsto be indqendent
of object impbentation.
_
activity (see Fig. 1). Thii activitybas the duty of schedding existing activities and creating activities for enqueued requests
on the basis of the computational smte of the object.
The scheduling activity is motivated by the need to avoid interference between the activities internal to each object. While
activities execute object operations, the scheduler m
inspect the
request queue and decide when to generate a new activity or abort
an activity in cxmtion.
~Is property makes the schethder capable
of dealing with exceptional events or implementing priority operations. The scheduler implements synchronization
separate
from the normal (i.e., nonsynchronized) behavior it can change
The definition of synchronization tools related to one or two
operations permits a high degree of ~bi~.
The composition
of these tools to obtain the whole object synchronization is easy.
without modifying normal operations.
An aptiori synchronization policyz is mainly based on object
Granulari~ of synchronization fivors art incremental approach
interface. The scheduler allows a user to implement any apriori
policy of synchronization for art object. In response to the re-
by using the inheritance relationship. If synchronization for a
quests, it creates concurrent executing activities providing the
class of objects were expressed in a monolithic way, a subclass
object state can be kept consistent.
PO permits the implementation of several policies of man-
that adds an operation would be forced to respeci~ synchronization from scratch. With granulari~, one can add the new
specification only. Granularity in specifications also permits a
decremental approach by obscuring some synchronization pare.
In addition to these requirements, there me some other factors
42
2
w=~] a ~ofiw~p~tiwhcn
it creares m inrernal acriviry only if it does not in-
terfere wi~ the others already in execution within the hosting object.
JOOP
OCTOBER 1991
As a recognized leader in the practical
application of object-oriented technology,
Instantiation
is ready to put its decades of
object experience to work for you...
Technology Adoption
Services
Technology Fit Assessment
Expert Technical Consulting
Object-Oriented System Design/Review
Proof-of-Concept Prototypes
Custom Engineering Services & Support
Training & Team Building
Smalltalk Programming Classes:
ObjecWorks Smalltalk Release 4
Smalltalk V/Windows
V/PM V/Mac
Building Applications Using Smalltalk
Object-Oriented Design Classes:
“Designing Object-Oriented Software:
An Introduction”
“Designing Object-Oriented Systems
Using Smalltalk
Mentoring:
Project-focused team and individual
learning experiences.
Development
Tools
ConvergenceTeam Enginm-ng EnvimnmentrM
Powerful muWser/sharecl repositoy dwelopment
em”ronmentfor teamscreatingprodu~”onquality
Smalhlk appli~ons.
Convergence Application Organizer PlusrM
Code modularity and version management
tools for individual Smalltalk developers.
:,
Instantiation,
SW Washington
Suite 312
Portland, OR 97205
(503) 242-0725
Inc.
921
Circle4 on Re6der Seniim Card
s
PO constraints
agement of object request queues. They vary from FIFO to pecdlar strategies that depend on object semantics.
ACTIVE OBIE~
The main characteristic of object systems, and, in particular,
—
c
of PO, to favor software reuse is inheritance. In fact, PO em-
()
ploys inheritance also to favor reuse in the specification of the
synchrontition ofobjecrs. Ma inheritance, a user definesa defadt
synchronization policy in its environment. The default policy
implicitly provides synchronization for all objects in the envi-
N
s
from
other objects
T
R
quests
\
A
/
ronment. A user, while initializing the PO environment, insdls
in the CIW Object (root of the inheritance graph) the preferred de-
I
N
1T
s
fault scheduling policy. Ml defined PO objects inherit the defatdt poliw it composes their schedulers unless they speci~ their
I
N
T
E
R
F
A
STAE
+
OPERATIONS
c
E
pecfllar policy,
Figure 2. Layered structure of a generic active object
A programmer not interested in exploiting intraobject parallelism of objects can install as a default policy one that forces
complete sequentialization of activities. This strategy makes ob-
specification on one class of objects: they are translated into
jects behave as serializes [Atkin79]: the object scheduler creates
schedding state and operations for that class by the PO support.
an activity to serve a request ordy if there are no other activities in
execution in the object. The duty of a user who gives up in-
THE
CONSTRAINTS
traobject parallelism is to provide synchronization on his/her
The constraint level derives its name from the constraints a pro-
own. In &ct, he/she is forced to explicitly speci@ apo~tm”on”tools
grammer can express on object operations. One constraint gen-
such as semaphores to solve any synchronization problem. This
erally represents a precondition that the schedder must verify
happens, e.g., in ~ncurrentSmaUtalk ~okot871 where atomic ob-
before creating an activity (or more) to serve interested opera-
jects serialize requests.
tions. The abstraction of this level is Klgherthan the programming
level. The expressive power of constraints is similar to that of
Another default policy allows for maximum intraobject parallelism. This policy defines for each objecr a scheduler that creates an a ctiviry as soon as a request arrives at the object queue. In
path expressions [Ande83, Carnpb74].
In addition, the set of constraints defined in one environment
the following, we consider tils policy the default.
To solve any synchronization problem, a programmer can ex-
can be enlarged as soon as anew policy is remgnid
press aptioti synchronization policies by two different abstraction
[Corra90a].
The constraints defined by PO artswer the requirements de-
levels that relate to user skill:
“ Programming level. An expert programmer expresses scheduling for objects by explicitly defining their scheduling part.
The scheduling operations are combined by the system to
form the mde of the scheduling activity. PO does not introduce dhoc
mechanisms to specie the synchronization policy.
It is expressed uniformly with the normal behavior by means
of state, operations, inheritance, md combination. At the programming level, the user owns all the tools to express arty synchronization policy.
●
as important
and general enough to be applied to several object classes
scribed in the subsection on synchronization requirement
sepa-
ration from normal operations, specifimtion based on object interface, granulari~, and inheritance of synchronization. In fact,
constraints for an object me contained separatelyfrom normal object operations. They constitute apart that specifieshow to activate
operations depending mostly on object interface (see Fig. 2).
A constraint can either relate to one operation or specifi one
relationship between two operations. Gnstraint grantdarity fivors
imposition
to spe@
the whole synchronization policy for an ob-
ject. Constraint composition is translated at the programming
Constraint level. A 1=s experienced user expresses his/her own
schedding policy by imposing constraints on object-visible
with greater arity are expressed in terms of single or mutual con-
level to produce the code of the schedding activity. Constraints
operations. PO provides a set of pararneterized constraints.
straints. In addition, constraints are subjected to inheritance:
Each of them expresses a different strategy. Constraints can
their composition is based not ordy on locally defined constraints
be composed to form more complex policies. Once again, in-
but also on inherited ones. This allows mmplete reuse of the syn-
heritance plays a key role in the reuse of synchronization
chronization specifimtion, Table 1 giv= a summary of some mn-
specifications.
straints provided by PO. The table reports basic constraints: they
Scheduling descriptions both at the programming and con-
MmSeq(opl,
can apply to more operations
than is shown, For example,
op2) is automatically expanded into MaxSeq(opl)
straint levels are contained in a part of the class ded scheduling
from the normal object part. Consistent between
and MaxSeq(op2).
the two levels is automatically enforced. Constraints impose a
USE
part,~parated
OF CONST~NTS
In PO, a user specifiescomplex synchronization problems by com44
JOOP
OCTOBER 1991
THE ONLY C++
YOU’LL EVER NEED.
Sl?eusdti...
00PSLA ’91
CONFERENCE
m-k Pk
~ti,lwl
C++ VERSIONS 2.1,2.0,
AND 1.2
\
You can use your existing C++ code q
Y
and take advantage of new features
without creating compatibility issues
because Green Hills C++ is source code compatible —
with AT&T cfront versions 2.1, 2.0 and 1.2. Also compatible with commercial C++ class libraries, Green Hills C++
has been validated using the Perennial C++ test suites.
THREE
COMPILERS
IN ONE! C++, ANSI C,
K&R C
Simplify your development environment with one compiler for your C++ and C sources. Preserve your investment
in existing C applications by calling C modules from C++
modules, Take advantage of the power of the C++ language by using multiple inheritance, operator overloading
and data abstraction.
X WINDOWED
C++
‘ AVAILABLE ON MAJOR
, T UNIX HOSTS
Green Hills C++ is available on Sun-4
1
SOURCE-LEVEL
DEBUGGING
Use our Multi C++ debugger featuring multi-language
support (C++, C, FORTRAN, Pascal), multi-process
debugging, and expression evaluation, Display intermixed
or separate source & assembly windows, variable, class,
and reference windows. Set breakpoints on overloaded or
member functions, Automatic name mangling/de-mangling and inheritance tracking are also included.
~-:=_q
F
SPARC, DECstations, and IBM RS/6000.
DEVELOP
BOTH
NATIVE
More
AND
CROSS/EMBEDDED C++ APPLICATIONS
Reduce the cost of complex embedded applications by
using object oriented technology. Green Hills Cross C++
fully supports 680xOTM,88000TM, and i860TMtargets.
Reduce your maintenance costs by developing more
robust, reusable code using Green Hills C++,
FOR C++ ON ALL YOUR
UNIX WORKSTATIONS,
CALL (617) 862-2002
FAX
(617)
863-2633
~
~
~-k~
~-
~
1 Cranberry Hill
TOMORROW’S
●
Lexington, MA 02173
SOLUTIONS
Circla 10 on Wadar SarvicaCard
~
TODAY
Wvrldwide
Support Belgium Retime 02-37~5142 Franm Real Tlmc Software 01-69B6-19%
Germany Xm 0721 -61U74 Netherlands
Computing&
Systems Cc)nsultant 040434957 Israel
Anhr Computing
Ltd. 03-5447356 ltaIy Instrumatic 02-35 >8041 Japan MCMJapan Ltd
033-4U7-U77 %andinavia Tram AB 0.S93-OOW Spain CIDISA 01-5fI..-3649 S\viticrhnd
Zuhlku
En@neering AG 01-730-70~
UK Real Time Products 021-236-W70. UNIX is a trademark of
AT& T,iH60 is a trademark of Intel Corp. All (Ithcr trademarks arc acknowledged
to their
respective m>mpanti,
PO constraints
Table 1. A partial constraint list
mend
property. We define an active object class RWDara with
MaxPar(opl)
No constraint on opl ativation
an interfaee that reports the operations read and write. The nor-
M&eq(opl)
opl afivation only if it is the only one in
execution
mal part of the class defines the instance state — composed of
Muti(opl)
Onlyone activation of opl at a tie
ations read and write.
MutEs(opl, op2)
Mutual exclusion between opl and op2
activations
RWData are
the information to be read and written — and the code of operThe constraints specified in the scheduling part of the class
opl and op2 mutual exclusion, with at
moat m concrurentopl ativationa and n
concurrent op2 acitvations
1. MaxPar(read)
Pri(opl, op2)
Priority of opl over op2: preem~on of op2
activations by opl requesta
2. Mdeg(wriz)
M(opl,
Limitof m opl requesta that can preempt
op2 atiations. Then, n op2 activations
are albwed to execute
3. Mutfi(read
write) — mutualexclusionbetween reads and
writes (Mutual Exclusion). For MutErr, the symmetric prop-
hCount(opl,
op2, m, n)
op2, m, n)
tiOrd(opl,
Synchronization for any inswce
Mt(opl, op2)
Wet alternation of phases of activations
b~een opl and op2
Mlt(opl,
Strict alternation of m aetivationa of opl
arrd n activations of op2
op2)
of the class RWData derives
horn the composition of constraints for each operation. The com-
The ordering allowsat most m opl
activations and ISop2 afivations
op2, m, n)
— one singlewrite (Maximal Sequentialization)
erty holds,
Orderof the phases of opl md op2
activations. Successivebatches of opl can
execute if there are no op2
Ord(opl, op2)
— any number of reads together (Maximal
Parallelism)
position (expressed in the fo~owing by the operator +), considers
for each operation all interested constraints. Instances of the class
RWData have the composition:
9
(A) for read
MaxPar(read)
+ MutErc(read,
write)
Sync(opl, op2)
op2 afivated only if a corresponding opl
has been meeuted
Wync(opl,
Syncsemantics and, in addition, no more
tian n OPIcanbe aelivated
The composition specifies that as soon as a read request ar-
SchedCond(opl, “condition”)
Guardto aelivate opl
a write operation in execution.
PostAtion(opl, “actions”)
Ations
op2, n)
rives, the scheduler creates an activity to serve it unless there is
to be executed at the compltion
9
of Opl
(B) for write
MaxSeq(write)+ MutEx(read,write)
poaii availableconstraints. The apnorisynehtotition
The composition specifies that the scheduler creates an activ-
avoidsany
need hr direct synchronization within the objeet operations. In the
ity *at serves a write request if and only if there are no other
following, we assume the intraobject, maximally parallel policy as
operations in execution (neither read nor write operations).
dehdt.
In this case, the expressive power with regard to concurThe constraint MaxSeq(write) imposes that a write operation
rency available to a PO programmer is not limited.
mot
We describe some PO constraints by solving typical synchro-
be served if any other activity is in exeeution within the ob-
nization problems. The presented examples outline constraint
ject. The readera/miters semantics derives from the avoidance of
inheritance in the reuse of synchronization specifications. The
mutual interference between reads and writes. Other operations
inheritance and classification relationships favor design of syn-
are not restricted. The composition
chronization by composition of constraints to obtain the whole
aynehronbtion of an object,
MaxSeq(write) reduces to:
for write deriving from
MuSeq(write) + MutEx(read,vnite) = MaxSeq(wcite)
The re&s/writimprobh
A classical synchronization problem is that of readers/writers on
Then this composition prevents the write from mecuting to-
the same information, i.e., the same object. From an abstract
gether with any other object operation, even different from read.
The grant of write semantics could, instead, derive from a
point of view, a sehedtding policy that takes into account object
sernantia must allow readersto eonctsrrendy am
the object, The
synchronization policy must also prevent concurrent access of
constraint less restrictive than MaxSeq(write): MutEx(write). In
more writers and concurrent access of writer and reader.
not be served if there is m activiry already executing a write. The
fact, MutEx(write) directs that the specified operation write can-
This parallel specification cannot be satisfied by using active ob-
composition of this constraint with the one of mutual exclusion
ject models that do not allow inttaobject parallelism, e.g., Con-
leads to a semantics that is correct and more parallel than the
currentSmdltalk
~ande89].
46
[Yokot87],
POOL-T
[Ameri87],
or Procol
In PO, instead, intraobject ptiallelism is a funda-
previous one.
1
The presented solution can produce starvation. For example,
]OOP
OCTOBER 1991
.
.
‘-1
PO constraints
HOUJTO
BROUJSIBND
EDIT
IH[++
it may happen that a certain request of write is never served, The
requests of read arriving at the object codd continually overcome
the write. The constraint MutEx(read, write) cars also be implemented by r=pecring a FIFO seMce of the request queue MISprevenrs starvation. However, that choim reduces the potential internal
parallelism. For example, read requests are blocked by a previously arrived write request even if other read operations are in execution within the object,
To avoid starvation and, at the same time, allow maximal parallelism, it is possible to use an alternative constraint to MutEx(read, write):
ITTHE$RMETI
LitrtCount(read, write, m, n)
LlmCount
has a mutual
aclusion
semantics
but fixes to m
the maximum number of read requests that can be concurrently
served.3 After this phase, the schedtder can consider only n concurrent requests of write (if they exist). The parameters m and n
are the maximal allowed number. The requests must not overcome this number, but the phase stops if requests are over beforehand. A forced alternation of operation phases can be necessary in other cases.
Priority can be attributed to writers, A new class PrioWData,
a subclass of RWData, solves the new specification. Its normal
part is totally inherited as is the scheduling part. PrioWData only
needs to add a new constraint:
You need the only full~integrated editor/
4. PriQue(write, read)
browser on the market today. ~
that allows write requests to have priority over read requests. This
BRIEFor C++.
~
editor.
BRIEF and
BRIEF is the world-class
means that read requests we not served if there are write requests
programmer’s
in the request queue. This new constraint is composed with in-
class browser that works seamlessly
herited constraints 1 and 2 only ~.e., composition (A)]. This con-
BRIEF.
straint expresses a pre-condition to activate the read operation.
waits in the background.
The read composition for instances of the class PrioWData is:
browse, click to bring it forward.
~
fast.
O
It’s that
reporting, and editable
big-time time-savers.
Add BRIEF’s legendary editing power and
the CIS RWData
flexibili~
a subclass to express priori~ of readers over writers.
and watch your productivity soar.
Navigating through your code has never been
faster or easier. ~
Theproducers/consumms
When you’re
You’ll also find BRIEFor C++’s view
class definition templates
quesu are enqueued and no write operation is executing.
Exactly in the same way, one can derive&m
When you want to
You’re in BRIEF.
filters, comprehensive
It implies that a read request is served if and only if no write re-
with
While you edit in BRIEF, BRIEFor C++
done, click again.
MaxPar(read)+ MutEx(read,write) + PriQue(write,read)
BRIEFor C++ is the C++
BRIEF and BRIEFor C++.
probkm
A second typical synchronization problem is that of producers
Calltoll-free for a BRIEF demo:
and consumers on a buffer. First, the buffer can be considered of
1-s00-677”0001
infinite dimension, It defines two operations, insert and extract.
For more information, call SolutionFax from a
An abstract scheduling policy for a buffer must respect the fol-
fax machine or fax-board equipped PC:
lowing semantics. Are insert operation is served if and only ifan in-
617-74@O089.
sert operation is not executig
3“~~~r~t”
sfim
mms,
tils guarantees the right mud
in &i cnn~
ex-
a ktch of operations eirher executing
all rogerher or in sequence wi~ one completing when at leaat ano,her one hm
started. The barch k wer when either m number ha.rbeen activated or no other
requests arrive.
THE
L_
._
PHVSICS
OF
PR-OGRAMMING
—
PO constraints
elusion on the object state. Analogously, an extract operation is
e
For
= free, fast=
served if an extract operation is not executing and there is at least
one item in the buffer.
PO defines an active object class, the class InfiniteB*r,
that
describes bu%rs of infinite dimensions whose interface furnishes
the insert and extract operations. As in the previous example, the
information
on the products
tised
synchronization part is independent of the implementation of
the operations insert and extract. This underlines again the im-
synchronization renditions within themselves.In particular, an exof items in the btier.
The scheduling policy for the class InfiniteBtier is apriotidhcd
by imposing the constraints:
2, A4utEx(*ti)— mutual exclusion among extract operations
issue:
Advertiser Index
on Page 82
and return the
Reader Inquiry Card!
ing pare. In fact, normal operations do not take into account
— mutual exclusion among insert operations
1. Mutfi(insti)
in this
adver-
consult the
portance of the separation between the normal and the schedd-
tract operation does not veri~ the pr=nm
and services
M
constraint states that an ~
request cart be served ifat least
one corresponding insert operation has already been executed.
Sync guarantees that when an extract is executed there is at least
The verification
scheduling
of the presence of items in the bufir
needs a
variable called dim. Dim represents the munber of
one item in the buffer.
For a buffer of limited size, the abstract semantim of the lim-
items currently buffered. Other constraints handle dim according
ited buffer must de
to object semanti~:
to execute an insert operation.
We define a new PO class, the class FiniteBuffer, as subclass
3. SchedCond(extrac6 “dim> 0’]
4. Postictionfinrer4
“dim c- dim +
of InfiniteBufFer. Inheritanm rdlowsthis class to derive the whole
normal and schedding pm
1 ~
tion for the insert operation.
The constraint SchedCond(extract, “dim > O“) directly imposes a guard on the extract operation. In this way, its activation
depends on the value of this schedulingvariable. Guards apply ordy
to scheduling state (not to the normal state). In fact, the normal
state varies in an unpredictable way because of the action of the
mncurrently executing operations. Consistent access to it would
be impossible without forcing sequentialization. PostAction constrain
[Corta90a]. In addition, we must add
to the scheduling part a constraint that modifies the composi-
‘Zim c- dim – I ~
5. posd~’on(=trast,
into account whether there is enough space
express termination actions. The scheduler must execute
the termination actions when operations are completed [Meyer88].
In the example, we spcci$ that the schedding variable dm must
When using the scheddlng variable dim in the superclass, the
only added constraint is:
6. SchedCond(insert, ‘dim c= size’~
where size is the maximum dimension of the buffer.
In the second solution, the added constraint is:
4’, LimSync(insert, exb-ac~ size)
LimSync derives its semantics from Sync but limits the rrtaximum number of insert activations before any extract to size. M-
be respectively incremented and decremented at the end of each
ter such a number of insert activations, at least one extract oper-
insert and extract execution.
ation must be executed. This guarantees that the difference in
Constraint composition is straightforward. For the extract operation, i.e., the composition of the constraints 2, 3, and 5:
the number of insert and extract activations is always less than
●(D)
MutEx(extract) + SchedCond(tiact,
PostAfion(insert, “h
“dti > O“)+
<- dti + 1“)
or equal to sire.
k
us note that the constraints 3’ and 4’ are not adhoc defined
but express a general synchronization policy that cast easily be
utiliz,edin other cases.
The example section can conclude with some general remarks.
An extract requmt is served if another extract operation is not
executing and the guard “dim>O” is verified, i.e., there is at least
Constraint composition selec~, when possible, the strongest con-
one item in the buffer. The PostAction constraint imposes a
straint. Strength of constraints relates to the capacity of serializ-
decrement on the scheduling variable dim whenever an extract
completes.
strongest one. MaxPar(op)
A solution alternative to the introduction of the scheduling
variable dim uses one single constraint in substitution of constraints 3, 4, and 5:
3’. Sync(tieti,
48
etia~)
ing and of limiting parallelism. Of course, MaxSeq(op) is the
is the least strong constraint. Con-
straints can be organized in a partially ordered graph (see Fig. 3).
For this reason, we have chosen as the defadt the mtimal
allel synchronization
par-
policy. In fact, a choice of maximal se-
quential policy as default would have been stronger than any
other constraints a user could possibly introduce. Then, no space
JOOP
OCTOBER 1991
/
-../-
\
-.
/“
//
/
/
-.
/
A’_.-\
‘k c
/
.-
I
4’_.-\-_
+
-. .+’
Boocb Components
for Rapid C++ Development
#
1
Rational Consulting introduces the
C++ Booth Components”,
a domain-
Bags
D~ueues
independent class library offering the
latest in C++ technology: flexibility,
extensibility, rapid prototyping, and
development.
The C++ Booth Components utilize
templates, as defined in the C++
Annotated Reference Manual (ARM),
to provide maximum versatility. A
template preprocessor is included for
AT&T C++ version 2.0 compatibility.
The Booth Components are fully
supported by Rational Consulting.
They are delivered in source code,
complete with documentation
and
test programs.
Maps
Queues
Monolithic
Rings
Sets
Structures
Stacks
(
1(
Strings
Graphs
\
Reusable
software
components
Lists
Polylithic
e
i
Trees
Filters
Pattern matching
Searching
Features
Sorting
Utilities
Simple inheritance Pattice of
independent structures
Subsystems
Multiple stomge forms
Multiple concurrency
Exception
forms
Organization
of tbe C++ Boocb Com..nents
handling
Compatibility
libraries
with other class
Rational Consulting
For more information,
Peterson at:
Assists management in understanding and adopting advanced
software-engineering
approaches
to improve organizational effectiveness
Brock
Rational Consulting
3320 Scott Boulevard
Santa Clara, CA 95054-3197
Offers consultative problem
solving by combining a management perspective with engineering
expertise in applying advanced
software technologies to realworld software projects
Provides educational programs
all levels of experience
contact
for
Provides software tools in addition
to the Booth Components
Telephone: (408) 496-3700
FAX: (408) 496-3636
Email: blp@Rational.COM
Cimle43 on Reader Serv”MCard
RATIONAL
Object-Oriented
Software
Engineering
PO constraints
tion tools employed in a general environment composed of instances of abstract data types. Path expressions have a definition
MmPm(IIpl)
separate from operations: they are shaped as re~ar
expressions
that deal with synchronization at the interface level. A path expression specifies synchronization using the names of operations
and operators such as sequencing (;), nondeterministic selection
(+), simultaneous execution ({}), and repetition ~). Some versions [Andre79] also define guards based on the computational
state of the object. Without guwds, a user is forced to introduce
additional operations to solve the problem, which makes the expression of synchronization more complex and almost unreadable.
Path expressions follow from abstract specification as PO con-
Figure 3. The partial Iy ordered constraint graph. The composition of two constraints in a parenthmd
relationship
makes only the strongest effective, e.g., LimCount + Mutex = LimCount.
straints do. Inheritana is missing. This lack derives from the absence of this prope~
in the scenario for which those tools have
been defined.
would have been left for any policy that expresses intraobject
fiarnple: the reao?err/wtitenprobhm. The path expression hr this
parallelism.
Constraints can also interfere. Consider, e.g., a class Cl that
inheriu from two classes (mdtiple inherimm)
policy is:
No different conpath ((read] + write)”
straints for the same operation op. Suppose that Cl inherits from
C2 the constraint
MaxSeg(op).
MaxPar(op)
The composition
and from C3 the constraint
takes into account more con-
The writers priority is obtained by using a guard:
strained specification then the one inherited from Cs, In case
def ww= req(write) - a~(write)
path ( (read[ww=O]) + write)’
Cl warm to allow maximal parallelism for the operation op, the
constraint inherited from C3 must be explicitly disabled. Disabling is the possibili~ of obscuring any inherited prope~.
In ob-
ject systems, overriding allows a classto obseurc operations. In PO,
where w
it is also possible to obscure — in the sense of deleting — unim-
ters, req(write) and act(write), are managed by the implemenw-
denotes the number of waiting writers. The two coun-
portant variables and interference constraints. Let us note that
tion support. Req(Op) is the number of requests and act(Op) is
PO does not guarantee automatic correctness: errors deriving
the number of activations of the operation Op. Then, the pred-
from the disabling are always possible.
ieate [ww=O] restricts the operation read to be executed until the
Apart from interference, mnstraints can present incompati-
predicate becomes true.
bilitia. Constraints are incompatible with each other if the presence of all of them wodd block the object. A naive example is
Guih
when two SchedCond constraints for the same variables speci~
incompatible conditions, e.g., a guard with a variable greater than
Guide [Demu90] is a passiveobject system that definesactivation
conditions. Activation conditions are specified separately from
xro and the other less than zero. The possibility of automati-
operations in a part of the object classcalled CONTROL.
dyvctifying
operation defined in the object interface, an activation condition
the constraint correctness is a research area [Atrat871.
For each
must be specified. The condition is expressed by counters, autoCOMPARISON
WITH OTHER SYNCHRONIZATION
PO constraints
can be compared
tools. Requirements
tion requirements
The examined
introduced
matically defined, and managed by the system.
TOOL.S
There is no feature that extends a property to a set of opera-
with other synchronization
tions. The lack of mutual activation conditions produecs redun-
in the section on synchroniza-
dancy in the specification. For example, in the readers/writers
Guide solution (see below) it is necessaty to speci~ mutual ex-
are assumed as guidelines for the analysis.
proposals are not only based on active objects
elusion twice between read and write: once for the read site and
with intraobject parallelism, but dso on orher concepts:
●
not necessarilyrelated to the object ptiadigm
●
based on passive object entities
●
that propose objects as active enrities, but serialize the service
onec for the write activation condition,
Inheritance is provided but, differently from PO, in a nonuniform way it is necessary to use a special clause in the CONTROL part. This mechanism is only fit to deal with simple cases
in which one must add a synchronization condition (as in the
of requests
Path expressions
example below). In more complex eases in which the reuse meehanism cart provoke incompatibilities among activation condi-
Path expressions [Campb74] represent declarative synchroniza-
tions, inheritance cannot be used effectively.
—
50
JOOP
OCTOBER 1991
I
In the exclusive world of objectoriented programming languages,
SIMULA
was quite simply the
first. Today, with the radically im~
proved
SIMULA
standard
of
1986, it’s quite simply the best.
The object-oriented
SIMULA:
SIMULA
supports all strategies
strongly typed, class-based
We offer SIMULA
able. SIMULA
of 00P,
language.
inheritance
SIMULA
for PCs under DOS, 0S/2,
language
and delegation,
is the only 00P
XENIX,
and UNIX.
is also available on Sun, Apollo, VAX, Macintosh,
The current release of PC SIMULA
For further details,
is 108.4.4.
Windows,
contact: SIMULA
&rnpk:
interested
in becoming
and attribute
protection.
SIMULA
is a
with built-in utilities for simulation and coroutines.
Prices range from approx. $3OO. Site licenses are also availand others.
PM and X intetiace
as., Postboks
Phone: (+472) 720530
Is your company
encapsulation,
language
is just around the corner.
4403 Torshov,
Fax: (+472)
a distributor
N-0402 Oslo, Norway
720481
or agent for
PC SIMULA?
Contact
us!
The control pmt of the class 1 in each of these states. For each smte, the enabled-set defines the
acceptable operations to advance to a new state.
the readers/writersprobh.
that implements the readers/writers policy is:
In Rosette, enabled-set are objects. This feature is the most
important. This allows one to dynarnidly pass enabled-sets in a
COhl’ROL
read eurrent(write) = O;
write: (-ent(write)
= O)AND(current(read) = O);
communication.
However, operations must explicitly specify a
state change: the synchronization is not really separated from opis the number of activationsof the operation Op.
erations as in PO. The producers/mnsumera solution [Tornli89]
The writers priority is obtained by defining a subclass of the
is rather obscure if only the synchronization part is considered.
Acre current
above class, whose control part ix
Exumple: the readers/writers problem. The cotnpu~ational
CONTROL
read ~RITS
write: ~EW;
~
defined in the class that implements
(pentig(write) = O);
The INHERITS clause allows a class to derive the specification of
synchronization from its superclass. Pending
number of not yet served Op requests.
Rosette
The Rosette system ~omli89]
represents the
the readers/writers
state
policy is:
(local (state) (emble [read] [write]))
(method (read)
( ~etums the read item>)
( next (state)))
(method(write)...)
where the next primitive specifies a state change, as in the actor
defines both passive and active
objects. An active object can also host mr.dtipleexecution threads.
model, The enabled-set sewehcs the request queue in FIFO order.
The writers priori~ is made possible by defining another kind
synchronization tools we called enabled-sets. They
of enabled-set that searches in pattern order, not FIFO order. In
ate composed of the name of the operations (defined in the in-
this way, write requests ean be served before already arrived read
terfiw) that ~
requesta:
The hnished
be served in a given mmputational state. The
behavior of an object is expressed as transitions within a set of
prcdefined (inheritable) states. An enabled-set must be defined
(local(state)(enabl&@-pattem[write][read]))
51
PO constraints
2. concise expression of symmetric mutual constraints (e.g.,
Sins
MutEx(opl,
In Sina [Tripa89], objects can be either passive or active. The inuaobject pddim
is implemented by using the &tucb primitive,
a sort of explicit “fork” for a new activity within an object. Unlike PO, the synchronization expression is not sepmated from
operations. It is, instead, completely intermixed even if synchronization is applied to the object interface by enabling and dis-
op2))
3. easy expression of policies that depend on any parameter of
messages(by using the mnstraint SchedCond(op,”mndition”))
4. the possibility of tailoring a PO programming environment by
increasing the set of constraints with new policies of recognized usefulness
abling operations. A simple example Iii the readers/writers problem has, in Sina, a complex solution because of the need for
5. strategiesthat involvemore operationsare exprased by op-
explicitly controlling the expression of intraobject parallelism,
position of mutual constraints. For instance, MutEx(opl,
op2, op3) means MutEx(op 1, op2) + MutEx(op2,
MurEx(opl,
op3) +
op3)
By using constraints, one can express policies within a wide
Object systemscanprovih greater
range
●
adherenceto the bgical
Standard protection schemes, such as ams
ScbedCond constraints, reqm
decompositionof app[icatio~s.
Objectsare designedmore in
control lists. With
from authorized clients are val-
idated and the others rejected.
s Priority services, e.g., dealing with real-time devices, The Pri
family of constraints suits this need.
accordwith abstractrequirements:
one objectper bgz”calentity.
Moreover, to d~ with synchronization Sina must use additional
operations that initializeand terminate read and write operations.
s Object operation requmts can be grouped and influence each
orhers’ activation. An operation can be fired only if there are
also requests (in any pattern) for other operations.
CONCLUSIONS AND FUTURE DIRECTIONS
Actor systems propose a computational model composed of very
small entities that interact. A forced granularity in the decomposition of an application is sometimes in contrast with logical decomposition. The number of created and immediately destroyed
Otberproposafs
Several other proposals do not define parallelism internal to ob-
entities is high.
jects, but some — like Procol ~ande89],
Object systems can provide greater adherence to the logical
decomposition of appli~tions, Objects are designed more in ac-
Poo1-T [Ameri871, and
the extension to Eiffel proposed by Caromel [Carom89] — specify synchronization in a separate way and on the basis of&e inexp=ion
terface. Neverthelm, these proposals have a monolitilc
of
synchronization
that
takes
inheritance
into
account
only par-
cord with abstract requirements: one object per logical entity,
Logical entities can also have intrinsic parallelism that can be
mapped in mdtiple activities concurrently in execution in the
model [Agh86] that exploits inheritance for synchro-
same object.
This article proposes an abstract way of speci~ing internal
nization. The synchronization is based on a mechanism like that
synchronization of object parallel activities. In PO, the synchro-
of Rosette: it is not mmpletely separated from normal opera-
nization can be expressed at a high level of abstraction based on
tially
(or not at all). Act++
the actor
[Kafur89]
is a proposal
derived
from
tions.
the object interface. ~Is
approach does not intermix operations
with synchronization primitives. PO constraints implement a
PO: constraints
separation of concurrent behavior from normal behavio~ an in-
We summwize here the main properria of PO constraints. Synchronization by PO constraints is a priori. Normal operations
ternal activity is fired only when it can generate no interference.
We believe the constraint expressive power is sufficient to be ap-
a neglect any synchronization need: they are consequently simplified. Summarizing, the peculiar characteristics of PO con-
plied also to active object models different from PO,
straints are:
tions. In addition, the constraint level can express policies that de-
1,
great grmulari~
in the expression of synchronization with
the possibility of disabling constraints when inheritance can
produce interference
Constraints apply to single operations and to pairs of operapend not otdy on operation req~ts
but also on the object schecld-
ing smte, A variety of mnstraints are availableand can be used for
any class of objects. If the usefulness of a new constraint is recognized, it can become
pwt of the
set of firnished tools. Con-
straints are synergic with inheritanm. Classes derive constraints
52
JOOP
OCTOBER 1991
from their superclasses. This allows a user ro rapidly experiment
with different synchronization policies thanks to the incremental
approach.
The first prototype of PO was r~xd
Industrial
as the development environment [tirra90b].
In perspective, we
feel that an important trend is the possibility of passing constraints from one object to another. This requires the recogni-
:.
QUaIBase’’:~~.:~5:
-00s w
‘
tion of constrain~ as objects [Tomli89]. Moreover, we believe it
is important to study the methods for dynamic verification of
constraint insistency
b=use
-Cd
in order not to block an object mecution
I@
of e.g., a deadlock situation. Automatic consistent tools
davalopmant @tiV.
~ble,
main.
arndent objaot-orlanted
bd~
mdulaa.
Ilbrtidertved from bulo C llbrule~
or
providing
U*S
rewble,
~bla,
~
from small-*ttosu W
b
dsdgnsn
tive and user-friendly object framework.
P
~ ~
QUAIBMS d-
[Agha26]Agha, G. Actors: A Model of Corn-m-rent
Syrfiner, MIT Press,Cambridge,MA, 1986.
Computation
c++ XSS
overl-g
md W
~on.
-w
tI.ms by ohoodug the most approp*ts
*
■ hts
lvutetyof~-p~b~tmee=lu-e
timphta
■ rsgietan
= Mt am
M
Equsuee ■ ~udo
Imultt-~tnterruph¤1~2
blt wmtion
dlbti @da
bt~
dlffa-t
Oomputw Drobttaotures.
wde -d demed
nted c++ ~
Thafullydocums
M.
-d
OUI *
~e
M ● powerful sd-onal
$175.00 includlng sourcsrcoda
in Dism”butcd
[Ameti87] America, P. POOLT: a parallel objccr-orienredlanguage, ObjcrtOriG.tcdCJnmwmt Prugmmming, A. Yoner.awa, M. Tokoro, eda., MIT Press,
Cambridge, MA, 1987, pp. 199–220.
[Andle79] Andler, S. Predicate path repressions, SbkAnrr~lACA4Synrporium
of Programming
~drews,
Lunguager, San Antonio, %
9utclass
your
Competition
1979.
G.R. and F.B. Schneider. ccmcep~ and notations for con-
=“
For salas or Information call us at U14) 250.1S22
Computing StiW~r, 15(1), 3-44, 1983.
current programming,
fi~.
[Atlrin79] Atkinson, RR. and C. Hcwitr. Specification and proof tcchniqua for
seriali-,
IEEE Trax”onr
on So@are
[Attarg7] Atrardi, G. ~ncurrent
Conresrrrnt Pmgranrming,
Cambridge, m
[Bloom79]
and M. Tokoro,
wtcmr,
gramming languages, IEEE Internatio&
Bloom, T. Evaluating aynchronizarion mechanisms, Pmcecdings a~
Benjamin/Cummings,
Bronnenb~
wilhADA:
[Grm90b]
December 1979.
7(5), 52A9,
a dccenrralized object-oriented
1987.
sPn~rOnlmrlon
by path expteaslons, Lctures Noes in computer
Vol. 16, Springer-Verfag, New York, 1974.
[Corta87a]
j=
brradi,
A. and L. bonardi.
PO, IEEEPhMk
Corr~ce
102–104,
CordI,
ArI environment baaed on parallel ob-
on Comptierr and &mmunic&nr,
North-Holland,
Conrm
Scom-
on Parakl
&
L’Aquila, Seprember 1987, pp.
79-84.
[Corra88]
The specification of mncurrcn~
ject-based approach, IEEE Phoeni.r finfirence
an ob-
on Computirr and Communi-
catibm, Scottwlale, AZ, Mwch 1988, pp. 246-250.
[bd9]
Cnmcli,A- andL hrrudi.
WorMop
PO an objwr mdel m qress
and So@aw
Enp”ne*
D. et al. A synchronization mechanism for an object
Bu1[-IIU4G, January 1990.
pkmcictution,
The Language anditrlm-
Addi.ro.-Wesley,Reading,MA, 1983.
Kafura, D.G. and K.H. Lm. Inheriwm
objecr-oriented languages, Tkc Computt-rJoumaf,
Meyer, B. Object-OrimtcdSo@ars
32(4), 297–3 11, 1989.
Conrti-um”on, Prenrice Hafl, En-
glewood Cliffs, NJ, 198S.
voerdi89]
Tomlinmn, C. and V. Singh. IAerirance and syncbmntirion
[Tripa89]
ACM Si@Lzn Naticer, 24(10),
103-112,
wirh en1989.
Trip.&I, A. and E. Berge. An implementation of he object-oriented
concurrent pmgr.mming
19(3), 235–256,
language SINA, So@arc-Practice
and Experience,
1989.
Van Den B.s. J. and C. Hr..
with protocols, OOPSM
PromI-a
pamlfel object language
89, ACM Sigvkzn Noti2eJ, 24(1 O), 95–102,
1989.
mokot87] Yokoce, Y. md M. Tokoro. Concurrent programmin~ in ConcurrentSmalltalk, Object-Orisntcd
parallelism,
in Actor baaedmncurrent
Concurrent Programming
A. Yoner.awa and
M. Tokoro, eds., MIT Press, Cambridge, MA, 1987, pp. 129-158.
on Concurrent Object-Oriented Programming, ACMSZGPLAN
Noticcr, 24(4),
[CQrm90a]
Deco.chanI,
[Go1dbS3]Goldberg,A. and D. Robson.Sd\&-80:
~ande89]
CmTdI, A. and L. bond,.
A concurrent pmmrype in Smalltalk-80,
on Computer Systw
oriented dls~ributed system, Technical Rqart
abled-acts, 00PSM89,
parallel objesm, Inwtiod
cerrirrg and Application,
[D.cou90]
[Meyer88]
1989.
A. and L. Leonmdi. How to embed concurrency witiln an
object environment
Con+ence
ing, Tel-Aviv, May 1990, pp. 437-444.
[-9]
dale, AZ, Febmary 1987, pp. 253-257.
[brrag7b]
A and L. knardi.
science,
Caromel, D. A general model for concurrent and disrribured object-
oriented programming, ACM Si@kzn Noticti, 24(4),
Grra&,
Conference on Computfi Languages,
March 1990, 271–280.
IEEE International
Strru-tum, Took, a&Sub
[CamPb74] Campbell, R.H. and A.N. Habermann. The specifi~rion ofpromw
[tiom89]
Ncw Orleans,@
Menlo Park, CA, 19S6.
V.J.H.J. et .L DOOM
machine, fEEEMirro,
*..d
eda., MIT Press,
1987, pp. 259–276.
Booth, G. Sojiware ~mponmfi
[Brom87J
0. - OAm* .-:-
1979.
strate~ execution in Omega, 06ject-Orkvctcd
A. Yon=awa
the 7tb Symposium on Opmating Sy~tenr Primipks,
[B00ch86]
10-23,
Engineering SB5(1),
~pu09-
b takefull
tim~
ofthe
Wtth●npportfor m~tipla
mhsrltmos, ~
REFERENCES
[Amir.83]
tiwus
b in~
by
talnBble
are under investigation to provide them in one highly interac-
on Prim)ks
Strength
Fumd~meut81
C++ Cl~S8
Llhrary
,,:,,,:,:,
,,:,.
,,, ~,:,:
*=:....,
,:
.,::
.......~&:;
.....
...=...,,,:,:,,,,,,,
...........
..
.,,,
,,,
.,’...
:..
..........
.,Cw,,,fi
~.,:,,:.,
.,,,,.
=,,
. ..-........-......,=,
by using SmalltaJk-80
152-155,
1989.
Cotradi, A and L. Leonardi. Parallelism in object-oriented
pm-
53
c++
Analysis of a proposed
C++ feature
by ~drew
O
tienig
ne of the things that reg-
At one meeting, for example, we had one
ularly happens in the
ANSI C++ meetings is
petson argue in fivor of a particular feature
~vayA more =bitious feature would
have required more analysis than would
on the basisthat the corporate standards of
fit in this column.
that people propose new
his company wodd require any C++ from
features that they would
that mmpany to support that particular feabecame
REALLOCATING MEMORY
Our mample is the desirefor a way to do
how often tils happens, we can look at the
part of the standard. Needless to say, that
in C++ what C programs use the reallot li-
electronic mailing list that the members of
partictdar went
brary function to accomplish.
the ANSI C++ Committee use to discuss
the rest of rhe committee.
like to be add ed to C++. As a memure of
language mtensions, From the formation
ture whether or not it evendly
was not mough to sway
Redl that in C, calling the mallocfi.mc-
Then there is the question of cost vs.
of that list in April 1990 through the end
benefit. How difficult is it to implement?
there were 200 messages to-
How dilKcultis it to understand?Is it worth
of July
1991,
talling more than 15,000
lines of text.
adding one more thing that people have
tion with an integer value allocates a block
of memory of the given size. Thus:
char‘p; p = malloc(500);
Moreover, this does not even count the
to le~n? Does it have implications for the
written documents that have proposed ex-
rest of the language? Does its mere exis-
allocates a block of 500 characters
tensions, nor does it count the discussions
tence impose penalties or restrictions of
at the meetings themselves.
some kind on progrws that do not use it?
stores its address in p. Once malloc has allocated a block of memory, passing the ad-
and
At one level, the process of deciding on
Is it possible to simulate it by other means?
dress of that block and a new size to rea.l-
anew feature is very simple: someone pre-
Finally, there is the question of style.
Ioc will change the size of the block as
sents a proposal, the committee votes on
Does the proposal fit in well with the rest
requested. This might require moving the
it, and an affirmative vote causes the fea-
of the language? How much does it change
memory somewhere else, i.e., allocating a
ture to be included, However, this de-
the “look and feel” of C++?
It is, of course, difficult to quanti@ the
new block of memory somewhere, copy-
scription fails to convey any understanding of how a committee member might be
answers
induced to vote one way or another. As a
committee member, I think it may be use-
Consequently, a feature of any interest at
to
any
of
these questions.
ing the contents of the original block, and
then freeing the original block. Therefore,
with
p
defined as above:
all will be debated at lengths that at times
p = realloc(p,1000);
fil to explain the kinds of arguments that
are diffictdtto Wleve. Eventually, of murse,
people make for or against the adoption
it comes down to a vote: a numerid
of pwtictdat language features.
mary of the largely subjective judgment of
a room full of people. By the time the for-
characters, the first 500 of which contain
posal is just what is being proposed. This
mal vote actually occurs, there is rarely any
the sae
qu~tion can be asked at two levels: what
doubt as to which way it will go.
character block formerly addressed by p.
The first question to ask about a pro-
is the approximate purpose of the requested
feature and what is its detailed manifestation. As we will see, it is entirely possible
sum-
information that was in the 500-
ideasmore concrete, let’s
The newvdue of p may or may not be the
look at a specific feature that has been informally proposed on several occasions.
same as the old vahte.
To return thismemory to the system,say
To make th-
for a useti idea to escape formal proposal
I am deliberately picking a feature that
because it is not sufficiently concrete.
The na question is it generally usefil?
has not been formally proposed to avoid
interfering with the debate in the com-
It is presumably usefi.dto the person who
mittee. This partictdar feature is a minor
proposed it, but how usehl is it to others?
one, but quite a bit of analysis is necessay
—
54
makes p the address of a block of 1000
free(p);
which then makes the memory available
for future use.
JOOP
OnOEIER 1991
—
The analogous way co allocate and free
I
c++ —
is being proposed?” The only answer so fa
dynamic memo~ in C++ is to use new and
is “something analogous to reallot in C.’
delete expressions. These expressions allo-
We don’t really know what that somethin~
cate memoy in units of arbitrary we rather
looks like.
than characters and take into account the
ht’s
Easier maintenance:
●
reallot, and free; what if we introduce re
destructors that must be died
new into C++ by analogy with reallot? It i!
propriate. Thus:
ohjecrs, and reuse of proven code
components
try to construct it. C has rnalloc
fict that C++ objects have constructors and
where ap-
Faster software developmonfi
via rapid prototyping, use of standard
●
due
ro compact
optimized code--and, mt~dular software
takes less time to debug
Adaptabilit~.
●
wirhout
not enough, of course, just to utter the namt
by adding objects
rebuilding
the enrire program
of a proposed new keyword. What shodc
string*
sp; sp = new ~g[500];
be the syntax? We need to supply all tht
information that would be supplied as par
of a new- expression as well as the addres!
allocates
enough
for JOO String
memory
of the memory that’s being reallocated. Wt
probably need ccrncern ourselves only wid
objects and puu the addressof the initial
elementof that block in sp. To release thar
arrays, so the relevant new expressions 1001
memory to the system, say
like one of these:
I
delete[] sp;
new T[e]
new (rrrgumata) T[e]
I
●
True compiler and source-level
debugger
●
Conforms to System V R4 ABI
(& API)
●
Adheres to language standards
●
Cfront compatibility
●
Stricter type checking than C
●
Multiple inheritance
●
lint-like ahecking
. Optional R ue Wave, Dyad and
other class7I braries
someozeseestbutsome otherbn~ge
someprobh
cansolve
●
Verv aomwtltive
Pricinq
parti”cuhr~easi~ ad wkhes C++
cou~so[ve simibrprobk
in a simibr way.
●
This is where the analogy ends, because
C++ does not have any standard way of taking the 500-element array addressed by sp
where T and e represent a type and an ex-
array.
pression. Where in these synwctic forms is
there room for another expression? I don’1
At first glan~, it seems to make sense that
have a good answerto tils question. Indeed,
there shodd be an easy way of doing this.
I have inked precisely this question of each
and changing it into a 1000-element
. Providing PASCAL-2and C++
optimizing native compilers and
PASCAL-2cross-compilers
●
Voting members of the ANSI C++
committee
●
Superior technical support and
customer service
of the people who have mentioned this par-
THE QUESTIONS
The proposal,then, is to take an idea from
~SWERING
ticuku titension to me and none of them
has mme up with a good syntax for it ei-
C and implement the analogous ideain C++.
ther beyond suggesting that an additiond
TKIS is how ideas for C++ features ofien OCm. someone sees that some o&er language
can solve some problem particularly easily
keyword might help. The proposal, so far,
therefore fills the first test it is not completely clear what is being proposed.
and wishesC++ cotdd solvesimilarproblems
This is often true of proposals for fea-
in a simihu way. Such proposals often M to
askhow such a f~ture would be used in C++
tures. There is a lot of work that has to be
done to define a language feature, and the
or how it would interact with other aspects
members of the committee simply do not
of C++. These failures will usually bemme
have time to supply the missing details in
aPP~ent when n-ying to ~swer the qu~
tions mentioned earlier.
many proposals is that it is simply too much
The first qumtion, for example, is “what
The twhnology leaders with
more experience . . . sinle 1977
a sketchy proposal. A problem shared by
work to fill in the blanks.
ro receive our free white ~mr
~t
raii today at /-800-874”850
I
Circle 6 on Reader Sem”ee Card
The Measure of
a Great Program.
K-METRIC”:
stie_t min =
me Measurement Tool For Serious Developers.
size < newsize? size newsize;
for (stie_t i = O; i < rnin; i++)
PC-METRIC is the software measurement tool
that measures your code and identifiesits most
complex parts so you can spend your time
working in the areas most likely to cause
problems.
newp[i] = p [i];
delete [] p;
p = newp;
1
PC-METRIC is fast, user-configurable, and
includes a wide array of commonly accepted
This loop slightly misses the mark be-
measurement standards.
cause it creates all the new elements with
Plus, versions of PC-METRIC are available to
support virtually every popular programming
language.
defiult values and then assigns the values
of the corresponding elements of the old
array. This means that every new element
A Great Value By Any Measure.
is given a value twice. Instead, it should
PC-METRIC’s price is only $199, and it comes
with a 30-day money-back guarantee. Multiple
user discounts are available, as well as site
licenses and complete source code.
Order Now!
c++ —
—
use the copy constructor to set the new element equal to a copy of the old at the instant it creates it.
Call (503) 829-7123.
This requires a bit of trickery. We need
to create the first nrinelemenw of the new
mray using the copy constructor and the re-
*
SET LABORATORIES,
“Qualily
maining elements, if any, using the default
INC.
Tools For SoHware
Crafismen”
P.O. BOX 868
Mulino, OR 97042
Phone: (503) 829-7123
constructor. The way to do this isto usemalloc to allocate raw memory and then use the
plamment arguments of the new-repression
FAX: (503) 829-7220
to create the elements exactly as desired:
tirCle 56 on Reader Service Card
[
T*newp = (T*)rnalloc(newsize* sizeof(T));
size.t min = size < newsize?&: newsize;
for (size_t i = O;i < mirs;i++)
new(newp+i)T(p[i]);
for ( ; i < newsize; i++)
new(newp+i)T;
delete [] p;
p = newp;
I
From an implementationviezvpoint,it is
alwayspemissibk to copy the common
ebents
1
...
Now that we have nailed down reasonable semantics, it becomes possible to
implement
SEMANTICS
Let’s ignore this problem for the time being to continue the analysis.Supposewe
is always permissible to copy the common
could find an appropriate syntm; what
smaller of size and newsize). Exactly what
would be the right semantics? That’s a
does it mean, though, to copy them?
A reasonable first answer is a loop some-
From an implementation viewpoint, it
elements (i. e., the elements up to the
harder question to ask in C++ than in C
because C++ doesn’t have the possibility
the entire thing in braces to emphasize that
knowledge of the objects that inhabit it.
To make the discussion more concrete,
the variableswe use here are local. We also
then, let us assume that we have a pointer
b~
p that points to an array with size elements
enough to contain the size of any array
use the tie.t
&
a template
template<class P
T*renew(T*p, siz_t size, sim_t newsize)
{
T*newp = (T’) malloc(newsize● zizeof(T));
size_t min = size < newsize?size: newsize;
for (size_t i = O;i < mm i++)
new(newp+i)T(p[i]);
for ( ; i < newsize; i++)
new(newp+i)T;
delete [] p;
return newp;
thing like *IS. In this example, we enclose
of copying a block of memory without
them through
function:
type borrowed from the C li-
isan unsigneclintegraltype roomy
1
of type T. We wish to reallocate this array
[
to have newsizeelements. We do not know
T*newp = new T[newsize];
whether size or newaizeis larger.
FURTHER ANALYSIS
While definingthe semantia of our pro-
—
56
)OOP
OCTOBER 1991
For C and
C++ users
on all levels
C++ at Wok
is the largest C++ event of the year. Nowin its
third year, C++ at Work featuresover40 sessionsof full-day
tutorials, lectures, panel discussions,product education sessions, an{
technical paper presentations. Each session is filled with “need to know”
“ O-O design and C++
●
“ Managing C++ projects
“ Mastering C++ fast!
= C++ tactics
- Formal definition of inheritance
●
Rating the features of C++
●
Storage management techniques
information and practical advice on more effectively using, managing, and implementing C++ in your
corporate environment. Sample the spectrum of C++ products in our la~e Exhibits area,
tipsfrom such notibles
Warn the latest techniques and p~~g
Using C++ effectively for
advanced users
‘ C++ programming style
“ Defensive programming in C++
m
Philippe Kahn
= Design and management of C++
libraries
“ Exploiting tie power of exceptions now
Founder, President, and
CEOof Borland
s Debugging C++
Walter Bri@t
International
“ Climbing the C++ learning tree
Developer of the
●
Zortech C++Compiler
Advanced C++ techniques
“ Value-oriented
c++
Adele GoPresidentand CEOof
ParcPlaceSystems
Rob Murray
programming in
●
Intro to containers & templates
●
Designing container classes
■
Architecture
of C++ libraries
“ Type-safe programming in C++
ATfiTBell Labsr
Editor, THEC++ REPORT
Grady Booch
Learn practical information that
O-O desiq pioneer
and author
you can apply immediately to
of
your projects.
Stan Lippman
0BJECr4RIENtFD
kIGN
Hear classroom-style product p-
One of the original
developers of C++ at ATGT
cuss breakthrough strategies with
THE C++
Founder of Glockenspiel
and C++ pioneer
PRIMER
them.
Plus experts Tom C-l,
MUseBall,
Jonathan Shoplro, Mark Ltnton,
Bruce kkel, andJti Waldo
Get the scoop on the latest C++
tools to be unveiled at our large
hhibits
Receive k
C++ INFORMATION
~
~
Yes,
~
COUPON
area.
copies of leading indus-
publications —THE
]OUM
rush me a detailed conference brochure.
I can’t make it to C++at Work, but [ want to stay current on C.+, Enter my trial subscription to
C++
MAUNE,
HOTLINE ON OBJEm-ORIWD
TKHNOLOGY,
and THE X JOURNAL
Uncover the latest thinld~
issues(foreign $94.00) or cancel at no obligation.
REPORT
OF OSJECT-ORIENTED pRO-
GRAMMING, OBJ~
THEC.+ REPORT
free of charge. After reviewing it, [ will approve your $69 bill for ten info-packed
id=
proven techniques from expers-
Title
Name
by leading C++ vendors
Meet the pioneers in C++ and dis-
and author of
John Carolan
seti”ons
reviewed paper pre2enSations.
Company
Address_City
State~ip
pmsessted by
_
Postcode_Country
Phone
Fax
Gll zlz.274,064q fm 2t2.274.064ti or *
C+. at Work 588 Broadway, Stite 604,
card by mail to
NewYork, NYImtz
D1KA
Wang Institute of
Boston University
Clcle 48 on Reader Servia Card
anc
—
c++ —
posal,we have inadvertently made an im-
phce
portant discovey
knows enough about that implementa-
ity of extra allocation arguments. In other
words, this Lnction doesn’t give us an easy
mtendlng the language at all! Before pro-
tion’s details of memory allocation to do
the same optimization. Indeed, ifa finc-
ceeding, therefore, it is important to know
tion of this kind were made a part of the
ond form of new-repression above:
just how clme we have come to the intuitive
notion of how our fmture might behave.
standard runtime library it would en-
it is possible to obtain
very nearly the semantics we want without
The first major difference is that our
our renewfincrion above by one that
the function doesn’t cater to the possibil-
way to write an~lng
new(srguments)
T[e]
murage C++ compiler vendors to do these
kinds of optimization
analogous to the sec-
if their customers
usually
found it important for them to do so. The
Is this a problem? It’s hard to say. Aside
found in reallot. First, if the new array is
smaller tharr the old, reallot might just free
possibility of these optimization therefore
might argue for inclusion of a particular
which to allocate objects, the new-expres-
the memory at the end of the old array and
library function in the C++ stanckud but
sion arguments are often used in sPecial-
not bother to copy anything. Semnd, if the
is fir from a mnchrsive argument for a new
old array happens to have an appropriate
amount of unallocated memory adjacent
kind of expression in the language proper.
purpose applications to request particular
kinds of memory with particular hardware
to it, reallot might expand the old array
into as much of that unallo=ted memory
useful in C++ than in C. C++ class objects
often have dynamic memory of their own.
orYJshr~ memory, unusually fast or S1OW
memory, and so on. When reallocating
as it needs and again avoid copying it.
~pying
objects into special-purpose memory, the
finction skips two optimization
Moreover, these optimization
from explicitly denoting the memory in
characteristics such as frame buffer mem-
are less
such an object, therehre, involves
allocation of additional memory. That
these possibilities by saying that it is pos-
means thar an array of such objects is less
question naturally arises as to how to reconcile the memo~ characteristics of the
sible for reailoc. to rerurn the same value
likely to be adjacent to unused memory
new uray with those of the old array. Is
as its first argument.
than its C counterpart because when the
this problem so tricky as to require special
array was being filled that filling probably
purpose libra~ routines anyway? If so, the
main ben~ciaries of this feature might not
The definition ofrealloc caters to both
But these optimization
are just that,
The implementation is under no obliga-
involved additional memory allocation.
tion to perform them. In a particular im-
Another difference between our func-
plementation, it might be possible to re-
tion and the new-repression synt= is that
1
be able to use it. To answer this question,
we probably need detailed information
The )< Journal
Call for Writers
The X Journal, a bimonthly publicationservingthe X Window System community, invita participation in the following areas:
●
5-to H-pagefeaturearticlesand advancedtutorials
■
2- to 3-page book, producr, and conferencereviews
~2- to 3-page profilesof X community leaders
If you have a topic that you’d like to write about, call, FAX, or write to the Editoc
Jerry Smith
~e
X Journal
2439 Wood Sorrell Lane
Signal Mountain, TN 37377
Voice (615) S86-3429
/ F= (615)8864106
The only complete
and in-depth newsletter written by
C++
experts
programming
and technical
specifically
●
. Easy-to-follow
for programmers
experts interested in C++.
Ten times a year, you will read information
Expertly written articles by renowned
that will en-
hance and develop your C++ programming:
programmers
tutorials
●
Product news and information
●
Product and book reviews
.
Insightful applications
●
Informative
ads
Name
THE C++ REPORT
Z::’
,-.””,
City
state
[ ] 1 year $69
[ ] foreign $94
Return to:
c,>
The C++ Report
●
2ip
Subscription
[ ] Check enclosed
foreign
orders must be prepaid
in
US dollars drawn on a US bank
[ 1 Charge
to my
[]
[ 1 Visa
Bill me
Dept. CPR, P.O. Box 3000
[ I MC
Denville,
NJ 07834
or fax to (21 2)274-0646
card #
signature
Sewices
exp_
DIKA
—
occur to me until after I had smrred writing this article! Before that, I had a vague
feeling that the feature wor.dd be nice to
Thereisn+an obvioussyntaxand what is
have but that it wasn’t clear how 10 do it.
known sofar about the desiredsemanticscan
thing in this approach. That is one reason
Of course, I may have missed somebr writing about it. Another is to eneor.uage
be expressed exceptfor optimization,
people who are thinking about proposing
extensions to C++ to be cautious about ir.
It is easyto propose an extension, but much
in a simpk tmphtefinction.
harder to know that what you’ve proposed
is really appropriate. ASalways, there is no
neither the rest of the implementation nor
the people who do not wish to use it. It is
substitute for care and thought. ■
very simple to simulate as a library function. Moreover, if this function is part of
Andrew
the stankd library the optimtirions again
become possible as needed in individual
NJ He ti working on C++ toolr in a hpartment
CONCLUSION
implementations. It seems, therefore, that
opment. He u ako an entbiarti”r mwician and
At this point, we can answer most of our
fiis particular facili~ is probably not worth
an irutrument-ratedpriuatepiht. Koenigcan be
earlier questions. There isn’t an obvious
a language feature but may well be worth
contacted at Room 4N-R12, AT&T
syntax and what is known so far about the
Laboratories,184 Liberg Comer Rd., Warren,
desired semantics GUIbe expressed, exeep[
for optimizations, in a simple template
a standard libr~ function.
This kind of analysis is all too rare.
NJ 07059, or through ernail
Indeed, the possibility of using a template
ark@europa.att.
hnction. It is generally usefi. It burdens
function to simulate the feature did not
from people who are working on these
kinds of applications but thesepeople may
be reluctant to reveal &e details of their
applications in a forum where their ~mpetitors are sure to be listening.
Technical
&dicated
Koenig
Staffat
if a Di~tinguishedMenrber
A T&TBeU
ofthe
Lab~ in Warrm,
to reducing the cost of ~o@are
&vel-
at attmai[fark
Bell
or
corn.
—
59
Analysis
& Design
Why use objectoriented development?
~g:
(A management perspective)
by Peter Coad
B
Some technicians might go so far as to
ertrand Meyer recently sug-
a new elti
or “silverb~et.” Yet such
tinction berween different ches
of obj-
— e.g., when theyhtm
gested that OOA and OOD
k
should really be called classes
a claim isa violationof generalsystemstbink-
the cl= of all tre= and the class
and object for analysisand de-
~,
of all stones and distinguish be-
sign—but
that he wouldn’t
is solved problem number two gets a pro-
want to do so because the acronym would
motion. At best, an O-O approach can help
pleaseme too much!
solvesome problems, and leaveuswith more
simply put, when problem number one
manageable problems.
A NOTE TO THE 00
PWCTITIONER
Thoseof us who PHCtiCe 00A and 00D
why would you as a manager need and want
to apply O-O development?This tide pre-
(in one brm or another) o~ionally
have
sents principl=, hllowed by management
to stand in front of our managers and “sell
motivations for adopting an O-O approach.
them” (@!)
It includes a reminder on what is more im-
on the ben~ts of object ori-
But beyond the claims andyouM
zeal,
portant than methods or tools.
entation.
This month’s mlumn mnti
some ammunition for you. It won’t make you soud
PRINCIPLES
like a used a
O-O development builds upon basic prin-
salesperson (“Oh, your sex
life will be better with....”) But it will give
you some down-to-earth reasons why your
manager should bevesy interestedin objectoriented development.
From time to tie,
I’d Iii to add to this
list of “hey manager, here’s why you need
objects.” As you think of additions, wodd
you please send mea note? Thanks!
AND NOW FOR THE
MANAGER BEYOND THE
CLAIMS AND YOUTHFUL ZEAL
Why use object-oriented (00)
ment?
develop-
Technolo~solutions are ohen oversold
Object-oriented development is no exmption. At times, if one reallybelievedwme of
the tires,
one would have to conclude that
one’s spouse wodd be more loving, one’s
Childrenwodd be better behaved, even that
Fidowouldbringthe m~rtable slipif only the project were objeet oriented!
60
~
them.
On behavior Cl=ifi=tion:
Three types ofbehavior classification
are used most commonly
1. on the basisof immediate causation
2. on simitilty ofevolutionaryhistory (change over tiw), and
3, on the simibrity
[Encyc86].
of finction
It’s really not so surprklng that system
cipl= of clwification that have been applied
and sofiare
by humans for thousands of years.
these basic constructs. In fict, it seems like
On basic classification:
In apprehending the realworld, men
[people] constantly employ three
methods of organization, which pervade all of their thinking
1. the Wrentiation of mperience
into paticdar ob]iti ad their
am”butes— e.g., when they distinguish between a tree and its
size or spatial relations to other
objects,
2. the distinction between wbohob
je~andtbeir componentpa*—
e.g.,
whenthey contrast a tree
with itsmmpnent branches,and
3. the formation of and the dis-
profession~
want to apply
a reasonable s~ti.ngpoint for system development. Until recent years, technology has
mandated closeness to the hardware. And
so analysis, design, and programming approaches all mimi~
the hardware, using
data flow diagrams, structure charts, and
procedural languages. But now, the all-pervasive Classifi=tion mnstructs may be used
as a consistent underlying representation
fmm business understanding directly into
analysis, design, and programming.
MANAGEMENT MO~ATIONS
Why apply O-O development?
O-O hehpmentgiuesyou
incremedpro-
ject conwol The work-in-progress and the
resdts are something you, a manger, can
read and understand-at
least enough to
know just how b yout sti
rally is. The
words used reflect the businessarea, The reJOOP
OCTOBER 1991
—
sdrs are o~zed
Analysis
with the same constructs
used everyday within that business area—
objectsand attribu~, whole and part, +
artd members; and thn “mnrinuum of rep-
●
resen~tion” continues throughout the de-
pervading methods of organization—
SUMMARY
makes fils possible.
Why O-O development?
~htit~ represmtcommona~~. O-O development applies inheritance to idenrnbutes and servi-,
inmeaedabii-
This makesdysis,
“ BuiU~stems resilimt to change.O-O de-
ation. [ Pick the part that wilJ give you marrimurrt political leverage or economic ad-
problem-domain constructs, providing
s~bility over cbging requirement and
vantage. Get your team to do O-O analysis,
similar systems.
genuine
progress. Such an approach is an “increment delivery”-frequent, tangible, valuable resdts produd within a mmmitred
time box. The increased abili~ to measure
and demonstrate progress mitigates risk.
unz~es staff technical
O-O &ehpmerst
training. With O-O development, you can
get your stitrained
in one underlying no-
●
Reure 00A/O
OD/OOP
commodating both hilies
resu[ts-acof systems
and practical tradeofi within a system.
O-O developmento-results
based
upon problem domain construcu, for
reuse and hr subsequent reuse.
00D
(how it is to be built tils time),
and 00P.
gies for analysis,design, and programming.
In addition, you shodd expect that in time
continuum of representation, for sys-
nearlyeveryt-member
00D
al~)
tematidy
mpanding 00A
resultsinto
●
your stis
any project are people, people, people. Who
00 hhpmenthe~syou
ti im.-reaeyour
stiff achievements. The points which fol-
does the work ismore impomt
low ampli~ MIs.
(CASE, O-O programming languages).
&maim.
sis to problem domain understanding
and mries that through the entire development qcle.
Impmve pmbkm h~in
exp~, adys~
achievements.
Get qudlty people. Find some way to
provide an ~cellent working environment.
Then provide methods and tools, too. ■
REFERENCES
SUGGESTED READINGS
&
[Bnehm89] Bochm, B. So@ars Rkk Managewnt.
IEEE Computer Society Pros, Ncw York, 1989.
~ls
is an dlent
ing ankcr
resourm for ida
Mopment
[Cuad91] ~ad,
P. and E. Yourdon. O~~ct-Otitvrtcd
Ana~Jfi, Second Ed., Prentice Hall, Englewood
Cliffs, NJ, 1991,
Managers, read Chapters 1
(“ImpmvingAnalpis)” and 10 ~GtingStarrcd”).
[DeMas87]
DeMarcrr, T.and T. List.r. Peopkware,
House, NewYorL
Manavt
than merh-
This book ad-res
ods (e.g., O-O analysis,O-O design)or tools
lution~”)
weinb85]
A good working environment is more
incrernend (Gllb callsir “a-
delivery.
Weinberg, G. Tke Secrefi of C.nrulting.
Doracrt House, Ncw Yorh 1985. Thii is the brst
important than methods or tools. Deep in-
trookI’ve read on mnsuking in the sys=
tellectual work requires getting “in the
ware busin=. b,
grove’’...and it can take 15 minutes of un-
out what is really going on in YCIUI
Or*tiOn.
interrupted time just to get there. These are
“euphoriahours”-t.mdisturbed, highly cre-
P-
ative, stimulating, and Satisfing times. Give
orI the pragmatic application of~o~are m~hoh.
Cod is a
recogntid
of organization make this possible.
earnestly need and desire.
@am breed in Aurtirs, X
the
lNoIe that a mntinuum of representation makes such
an approach pracci=l, using pmhlem domin
Mer
recruiting quality staff and sup-
Your~n)
powing
authoriq and adtior
ofO~ectInternationa~
Inc.,
a rap~y
One un-
and soft-
ycIu’11Iwn way m find
Mr. Cod fipre~ht
derlying representation-r~ecting
Enginem’ng
Addisnn-W4ey, Readiw M4 1988.
your st~adequate Facilities(sti, quiet, pri-
ysk, &~ign, amipropamming.
read-
Inc.“Cl~fi~riOn
[GilbS8] Gdb, T. Principles ofSo@rs
vacy) to make the achievements that you
aerou aml-
1987. Man~,
Eflwb#Br-itirstia,
&si&ff, andprogrammin~hn.
Bodr
vocabulary and the pervading methods
Increasetheinternedcomm
on manag-
risk.
Thmry~ Encyclopacdia Britannica, 1986.
The three most important ingredients on
Tmkh wre chbgingprobh
O-O development helpsyou to increase
1-1
alternativesmuch sooner cluing the devel-
●
training.
Doraett
opment of a system.
O-O development brings extra emPha-
O-O development unifia s~technical
ing this honk is a tnp priority. 1/s a “mm rrad.”
MORE IMPORT~
TU
METHODS OR TOOLS
●
●
wilJbecome fluent in one or more O-
0 programming languages; such fluency
provides a tool for exploring new ideas and
●
progress.
The key is the support of a
and OOP.
O-O development giv= you increased
ability to measure and demonstrate
g Provti a consistentudr~ing
representation for 00A (what is to be built),
mtion, one setof mnceprs, and specificstrate-
(y=, even the m-
●
velopment packages volatility within
and demonstite
results-measurable,
project control.
redundanq,
project. This might correspond to (roughly)
10% to 40% of the system under mnsider-
design, and program-
“ O-O development gives you increased
design, and code resdrs smaUer,with less
ityto mmre arui~onstratepmgress. With
it, you a choose to select a small slim of a
working
—
rii and capitali~ on commonfll~ of at-
velopment of a system.
O-O hebpmentgivesyou
& Design
training
took, and coruulting
He is author(with U
ofObjecr-Orienred Analysis, 2nd Ed.
plying a “euphoria-conducive” working en-
andObject-OrientedDesign.He can be reached
vironment, you wilJ find that methods and
at Object Intmtinnal
tools are imporrant, too.
@w-,
4-200, Awn.
(512) 795-0202,fi
Inc., 8140 North MoPac
~
78759-8864;
pbont
(512) 795-0332.
mn-
structs as a mocc stable underlying organization of
work in progress.
61
Smalltalk
Does Smalltalk need types?
—
O
ne of the major ways that
Smalltalk
differs from
that can be encoded as a sequence of bits.
Nothing explicitly identifies what type of
other object-oriented lan-
value is currently stored in any particular
guw including C++ and
Eiffel is how it deals with
location. However, most computer in-
data type information. In languages such
a single type of data. For example, differ-
structions are designedto operate upon only
as C++ and Eiffel, the declaration of every
ent instructions usually exist for perform-
variables includes a specification of the
ing arithmetic operations upon integer and
by Allen Wlrfs-Brock
concept of variable declaration statements
was developed. For example:
~GER A,COUNT
REAL.
LENGTH
Using such explicit type information,
compilers m detect when a programmer
types of objects that may be assigned to
floating point numbers. A memory loca-
tries to assign the wrong type of value to
the variable. Smalltalk does not provide
a variable or tries to use an inappropriate
for such declarations; thus, any object may
tion might mntin either an integer or floating point number but ifan integer addition
be assigned to any variable.
instruction is used ro access rhe location it
operator. Such mistakes are reported as
compile-time errors. Because each variable
of
will treat the stored value as an integer even
is explicitly restricted to storing a single
these two techniques for declaring vari-
if the value was actually an enmded float-
type of data and because this rule is en-
ables is significant enough that it forms
ing point number. In a case like this, where
forced by the compiler such languages are
one of the major dimensions for catego-
sometimes said to be “strongly-typed.”
rizing object-oriented languages.Languages
an instruction that mumes a particular date
encoding is used on the wrong type of data,
such as C++ and Eiffel that require explicit
the resultwill be a garbage value, The com-
typing evolved in the artificial intelligence
type specification in vwiable declara~ions
puter rypidly continues to execute, propagating garbagevaluesthrough the program.
research community.
are known as stiticaly typed o~eti-oriented
&zn~ga. Languages such as Smalltalk and
When programming in machine kutguage
surfam appears to be similar to assembly
CLOS that do not require
(or assemblylanguage), a programmer must
manudy keep track of what type of value
language. Variables do not have explicit
The differences and implications
specifications
explicit
type
are called dynamical~ ~ped
o~ect-on”ented~n~ges.
Some mntroversy
is currently stored in each Iomtion and only
bother
approach to dealing with data
Languages such as
LISP adopted a convention that on the
type declarations and any type of value an
be assigned to any variable. There is, how-
is associated with the relative merits of the
useinstructions that are appropriate for the
two approaches to typing. There are even
proposals for turning Smalltalk into a stat-
currently stored value. Using an instruction
ever, an impomt diffmencefrom assembly
language. In these languages, each data
on the wrong type of data is a mmmon and
difficult-to-locate bug in assemblylanguage
ner that allows its data type to be identified
programs.
at execution time. When an operation is
idly-typed
language. In this column, I
will discuss macdy what typing means in
object-oriented languages and how typing
should be used in Smalltalk programs.
value is tagged by the compiler in a man-
Early “high-level” languages either re-
actually performed on a value at execution
stricted the programmer to a using a sin-
time, the type of the value is examined. If
gle type ofdata or provided a simple mech-
DATATYPING STRATEGIES
anism for the programmer to identi@ what
the operation is inappropriate for the type,
a execution-time error is signaled. Because
Since their invention in the the late 1940s,
type of &ta would be stored in each vari-
these languages do nor associate data types
almost all digital mmputer have used an
able. For emple,
declarations with variables they are some-
untyped model of storage. A memory lo-
able whose name started with any of the
ation or internal registersimply stores a se-
letters “I,” “J,””~
“L,” “M,” or “N” muld
The terms “strongly-typed” and “un-
quence of bits. Any memory Io=tion can
contain an integer, floating point number,
only store integer values while variables
starting with any other letter could only
typed” are somewhat misleading because
they suggest that one class of languages
character string, or any other type of value
store floating pointing values. Later, the
supports dam type validation (“type check-
62
in FORTRAN
a vari-
times called “untyped languages.
JOOP
O~OBER
1991
—
Smalltalk
—
ing”) and the other class of languages does
typed languages. Type declaration not only
not. This is not the case. Both families of
provides information to the mmpiler that
languages support multiple data types and
can be used to detect type errors the same
both detect errors when an operation is ap-
information can be used by a compiler to
plied to an inappropriate data value. The
difference is whensuch errors are detected.
generatemore &dent code hrthe program.
Dynamically typed languagesmust perform
Languages such as FORTRAN, Pascal, and
a~ltional work as a program executes in or-
C++ statically detect type errors when a
program is compiled. Languages such as
duce the mecution speed of such programs.
LISP and Smalltalkdynamically detect type
Dynamically typed languages have an
der to detect type errors. These tier
re-
errors when a program is mecuted. Thus,
important
it is better to described languages such as
reusabili~. Consider the following Pasd
Pascal as ‘statically typed and languages
subroutine:
advantage in terms to code
I
V(l Software
in Phoenix
Clmstructi[ln presents
on 00PS1.A
1991
ODBMS
Object-Oriented
Manipulation
Database
System
such as LISP m “dynamically typed.”
FUNCTION
square(kinteger): integev BEGW
[compute the square of an integer value]
square := i’i
END;
STATIC TYPING VERSUS
DYNAMIC TYPING
There are well-known advantages and disadvantages to both static and dynamic typing. The principle advantage of statically
If the programmer also needs to com-
typed languages is that me errors are detected when a program is compiled, This
pute the square of real values, another, sep
is very important in a production envi-
sate, version of the program would have
to be written:
ronment where the goal is to develop and
release programs that me essentially “bug
free.” Using a dynamically typed language,
it is much easier for simple programming
errors such as keyboarding mistakm to slip
~CTION squarereal(tireal): real;
BEG~
(compute the square of a real value]
square:= i“i
END;
through the debugging process and only
show up afier a program has been plamd
Note that these routines differ only in
into production.
their names and in the type declarations
The price for early detection of type errors is that the programmer must directly
of the formal parameter and returned value
code much more information into pro-
typed language such as Smalltalk, a single
grams. This tends to make statically typed
version of the routine codd have been used
programs longer, “wordier,” and more
to square any type of numeric value
of the routine. If this was a dynamically
time-mnsuming to write. This is a major
disadvantage in an explorato~
or rapid
prototyping environment where the goal
of programmers is to quickly mplore alternative ways to solve a problem until they
[:111
“computethe square of any numeric
argumen~
X*X]
arrive at a preferred solution. Type declarations require more time to program and
TYPING AND SMALLTALK
make it more difFicultto modify programs.
Smalltalk is a dynamidly
In terms of raw mde output, programmers
When variablesare d=,
only the names
of the variablesare specified.This is true for
using dynamically typed languages usually
appear
to be more
grammers
productive
than pro-
using statically typed languages.
typed language.
all the possible kinds of variables; instance
variables, class variables, globds, method
typed lan-
temporary vtiiables, and arguments, etc.
guages are generally preferred for ex-
Any object can be assigned to any variable:
someMethod:
arg “the argument to this
For these reasons, dynamically
ploratory programming.
StaticaUytyped languages generally have
a #o~~ce
~~%
Ovfl dYnami~lY
method may be any object”
I x I “temporaryAble,
untyped”
ODBMS is state-of-the-art
objeetoriented
technology for
database application under
W~ndows 3.0 and 0S/2 PM,
developed and distributed by
VC Software Construction
GmbH
Petritorwall 28
D-3300 Braunschweig
Germany
Phone +49 531 24240-0
Fax +49 53124240-24
Circk K on Reader
Sarviee
Card
63
—
E3
~tor
286
Multi-function editig for
Ssnallt~,
consistent with the
standard editor and adding over
2W user aecessable commands,
including
●
“
“
c
c
.
“
s
s
s
●
“
Stig
:’
3@4.
X:= [3+4],
x := arg.
x :=
It is=~tid
new. “.sbi.ngs OI U
“potits or”
“blocksor”
“sn~g
can be assigned
to any variable”
—
that theseassumptions me doc-
umented so that senders will pass appropriate arguments. Type documentation is
also important fir communicating design
assumptions to a programmer
Enhuwmenti
f
~dti”~
.
“
“
“
“
x
Smalltalk
that may
modify the method in the hture.
Because Smalltalk is dynamically typed,
If Smalltalk was statically typed, type
it detects at ~ecution time any attempt to
declarations would serve to document a
programmer’s type assumptions. Because
apply an inappropriate operation to an object, All computation in Smalltalk is ac-
Smalltalk is dynacnidly typed, other con-
jects. A type error occurs when an attempt
ventions must be used. One convention is
to write with each variable definition a
is made to send an message to an object
comment that dmcribes the the allowable
complished by sending messages to ob-
and the object’s class or superclassesdo not
classes of objects that maybe assigned to
Text Status Pane
define a method for the message selector.
the variable. This mnvention is commonly
Ordine Help
Key Customization
co remand Completion
Enhanced Cut/Paste
(with multiple co ies
viewable irt place Y
Copy Ring Processing
Place Marking
Macro Facility
Easy-to-use Enhanced
Search and Replace
Text Transposition
Case Alteration
Text Fill and Margin
Settings
Abbreviation Facility
Non-printin
Character
insertion an f value
report
Rogrammin g support
User References
Miscellaneous Goodies
The Smalltalk execution environment de-
used for instance variables and class variables where the types of the variables are
us
$75.(M + sloAlo Stipplng.
Refund if not satied
VIS4 and MaskKard Accepted
Ordering / fudher detelkfrom:
O~hardLtd.
Object
9 Fettes Row,
Edinburgh
described as part of a class comment.
Another convention that is very com-
usuaUymanifests itself as an error notifier
In terns of raw code output,
pro~ammers usingdynamical~ typed
bnguages wual~ appearto be moreproductive
thanpropummers usingstatical~ ~ped
hnguages.
I
mon in Smalltalk is to name variables acanotherMethod
#(1 2@3 ‘JOOP’)colleti
[:x1 “Eachelement of the collefion is
assigned to x.”
X+l]
“Amessage not understood
error wiil occur on the third
iteration because figs
do
not implement +“
It is impossiblefor programmer to to actuallywtite or reason about a method without thinking about what types of objects
the method will operate upon. Each time a
programmer writes an expressionthat sends
a message, the programmer must convinm
Scotland, UK.
PHONE: +44 315581815
FAX:
tects this condition and raises a “message
not understood” reception. The exception
cording to the type ofvalue that will be assigned to the variable. This convention is
most commonly used for method argument and temporaries. For example:
incremental aCollection
“Return a new collefion containing each
element of the argument incremented by
one. The argument must be a collection of
numbers.”
Intiollefionl
newCollection:= aCollectioncolleti
[:atiumberI “Eachelement is assigned to
the argument,”
aNumber+ 1].
“newCollefion
himself that the receiver of the message is
+44 315562718
an insranee of a class that defines a method
for the message, This is often based upon
E3 for S~lfialk/V
Wndows
availableJu~ 1991.
Comments and variable naming in-
assumptions about what types of objects
ventions can be used to document a programmer’s intentions, They cannot be used
will be passed as arguments to the method.
by a Smalltalk compiler to veri~ that the
JOOP
Cid
3CIorI
Reader
Sem.ce Card
OmOBER
1991
—
CodelMAGERn
‘orVPM & Window:
—
programmer’s code ac-
creases program rdlability, and maintains
tually
the productivity of the Smalltalk program-
conforms
to
those intentions. Informal documentation
ming environment is very dlficuk.
is often incorrect be-
the problem of adding static type check-
Several researeh groups have explored
causeprogrammers for-
ing to Smalltalk. Early work in this area
get to change
was done by Suzuki [Suzuk81] and Born-
ments
or
com-
variable
ing and Ingalls [Bomi82]. Th~e researchers
names when changing
explored some of the basic issuesof adding
the code of a method.
~=
“Message not un-
The premier Smalitalk/V
application manager Is now available
!or Windows and Presentation Manager.
Smalltalk
to Smalltalk. More recendy, Profes-
sor Ralph Johnson
fJohns86, Johns88,
derstood” is the most
Grave89] and his students at the Univer-
familiar error notifier
sity ofIllinois at Urbana-Champaign have
encountered by Small-
attempted to develop a type system and
talk programmers. The
optimizing
dynamic detection of
Smalltalk-80 system.
compiler for the complete
this error is essentialfor
d
●
File
Cu
Put related classes and methods
intoa singletask=orlerrtedobject
called an application.
Browee what the a plicationsees
yet easily move eot e betwean it
and the external anvironmenl.
Automathlly document de via
modifiable,executable, lempl~es.
Keep a hletory of previousvarsions;
restoretham with a few keystrokes.
u
●
●
Sddcl
Md
●
●
●
CO*
●
1
das
●
0:
1
~
s
View olaas hierarchy as graph or list.
Frlrrt an application in a formatted
reporl, paginaled and commented.
FNecode Into ~plications and
merge appltitlons Iogether.
A~lldions are unaffectedby
c ange log oompreeelon.
and many otherfeatures I
debugging
Smalltalk
The leastcontroversialpm of addingstatic
ately, sometimes Small-
types to Smalltalk is the selection of a syn-
ralk programs are not
tax for speci~lng typm. Borning and In-
debugged resdt-
galls introduced a general syntax for types
ing in users of the pro-
that has been followed by most other re-
grams also encounter-
searchers. The basic syntax expressesa type
ing this notifier. The
as a Smalltalk expression enclosed in an-
My
severityof this problem
gle brackets (c>) immediately following
is increasing as Small-
each vtiiable declaration. The most com-
talk moves from being
mon form of repression is a singlei&ntier
a research and proto-
that names a type. Some examples:
typing language to being a production appli-
moveTo:target<Point>“a m~od header”
cation language.
[ :i <Intege~ I i + I] “a block agument”
A possible solution
to this problem is to
change Smalltalk from
a dynamically
typed
languageinto astaticaUy
typed language. This
would require introdtig
()
()
❑ Chq
)Mette:03y205y4
❑
;
DAmEx
a Mastercard
~:
of
H
+
~e
—.
circle
7 on FE*W
Dat= — 1— J—
SlaGraph Compulln
Ltd.
k?tE::’f2::!::!ol
Montreal, Que., Canada H4N 2M5
Tel: (514) 332-1331 Fa~ (514) 953-lW
saf’vim
~~
More implicated
expressions are used
wiables and a seman-
to describe complex type requirements.
tic model defining macdy what the concept
For example, most type systems require an
called “type” meant for
ues are stored in a collection:
explicit specification of what types of val-
Smalltalk Inventing a
synm and type system
-w
Objectsubcbs: #2mp@e “a classdefinition”
instanceVariableNames:
‘name <String>
age ~mbe~’
classVsriableNames:‘Count<Integer>’
poolDitionaries: “
both asynrax br
specifying the ~es
TELEPHONE
A SMALLTALK TYPE SYNTfi
programs. Unfortun-
(type semantics) earEbe
relatively simple. Inventing a type system
that presemes the se-
sum vector <Array of Numbep
“this method computes the sum of all
elements of a numeric array”
%eetor injeti Ointo:
[:subtotal ~umbe~ :next ~umbe~
I subtotal+ number]
mantic power and flexibili~ of Smallt&, in-
Sometimes it maybe necessary to spec65
—
Smalltalk
—
In fact, in the simplest of possible Small-
This solution has severaldisadvantages.
eral different types. h expression using a ; talk type systems each class is considered
to define a type. In such a system, using a
vertical bar as a logical or operator is nor-
It is excessively long. It forces the pro-
class name as a type specifies that only in-
the numeric class hierarchy. It is inflexi-
stices
of the named class maybe assigned
ble. Ifa new numeric class is added, all nu-
to the assigned variable. For example, a
meric type declaration must be modified
it that a vwiable may accept values of sev-
mally used in this situation:
setConhoUer c <ConboUerI nil>
“a view’scontroUerinstance can be set to
either a controUerobject or the value Nl”
I
grammer to understand all the details of
block that squares its argumenr might be
before the new class can be used. What a
written as:
programmer would probably prefer to says
would be something like:
[:nunr<~oab I num● num].
[:num ~umbe~
Inventinga vw
and we y-
(we semantics)
canbe rebtive~ simpk.Inventinga we ~stem
This
terpre~
to mean
I num * nom].
is possible,
a cl=
that
of its subclasses
if the type
name
system
in-
used as a type identifier
instances
can
of the class or any
be assigned to the as-
sociated vwiable. This is sometimes called
Sk,
imasespro~am wltiklity, ai
Mintuim theprodti”vity of theShfi
programmingmvironmt
k verydz-.
subclass (or subtype) compatibility. Al
subclasses of a class are considered to be
type compatible (interchangeable) with the
class when the class is used as a type
specifier. This is the style of type system
used by C++ and Eiffel.
This generalsynm for type spe~mtion
appears to be relatively uncontroversial.
ObjectWorks Smalltalk 4.o by ParcPlace
Whether a type system that supports
I
subclass compatibility is desirable or not
Only instances of class Float would be
depends upon the goals of the type system.
Implementors of optimizing compilers who
Systems actually includes as an undocu-
permitted as mguments. Fractions or Integers would not be accepted. Such a re-
want to make Smalltalk progms
mented feature the ability to parse such
striction is probably too severe for Small-
fastas possiblewodd probably prefer a type
type specification, (See the method type-
talk programmers and wodd greater reduce
system that did not include subclass com-
Expression in class P-r
for details.) More
the productivity achieved through code
patibility.me explicitlistofclasses in r.mien
controversial is the question ofwhere type
reuse. One way to make this form of type
typm required by a system without subclass
specifications should be used and what
system more fltible isto allow union types.
compatibility provides valuable informa-
keywords and operators are allowed in type
A union type explicitly lisr several classes,
tion to the optimizer. For example, any
expressions.
any of whose instances can be assigned to
the associated variable. So using union
with only a single class as in type specifier
types the block:
can be compiled as a direct procedure call
Some proposed systems would require
that allvariablesinclude type specifications.
Other systems would only require type
.
.
sPeclfiatlons for cl~s and instance variables and method arguments. The types of
run as
message send to a variable that is declared
with no message lookup overhead. De[:num<Float I Fraction> I mrm ● num]
signers of reusablecomponents and frameworks, however, would probably prefer the
temporary variables would be inferred.
would acmpt insmces of either class Float
flexibility of subclass compatibility even at
Some proposals would require that pro-
or class Fraction as arguments. What ifwe
the expense of slower execution times.
grammers always speci~ types while oth-
alsowant to passintegervaluesto the block?
Although a type system that includes
erswoold make type specificationsoptional.
The greatestcontroversy surroundswhat
In this system, extending the union type
subclass compatibility is more useful for
to include the classInteger would not solve
writing reusable code than a type system
are valid type identifiers and what do they
the problem. Remember that Integer is an
mean. Thn is the semantic heart of a type
abstract class. There are no instances of
without it, it still may not be flexible
enough for Smalltalk programmers. Think
system and addressesthe hndamental issue
class Integer. Instead, each concrete sub-
about largeSmalkalk applications or fi-arne-
of what types should mean in Smallralk.
class of Integer would have to be listed:
works. Often a message like display or ac
may be defined in many classes, some of
CLASSES AND TYPES
The type identifiers in the previous ex~Pl~
appe~ed to be the names of classes.
[:num <Float I Fraction I SmaUIntegerI
LatgePositiveInteger I
LargeNegatieIntege~ I num ● num].
which do not have any common superclasses other than Object. Programmers
frequently write expressions that send such
—
66
JOOP
OCTOBER 1991
-O
s~~[~h
techniques,
nOP~
stimulates, tracks, and evaluates usage of Smalltalk.
Get accurate coverage
on current trends,
the latest ideas and industry news. For users on all levels and dialects of 5malltalk.
Sampling of articles to appear:
■
Introducing
Smalltalk
■
Designing
■
Effectively Managing
■
Metrics for Measuring
■
Organizing
into Your Organization
and Managing
Smalltalk
Class Libraries
Multiprogrammer
Smalltalk
Your Smalltalk
Smalltalk
Projects
Systems
Development
Team
■
Metalevel
■
Smalltalk
Programming
in the MIS World
1
Smalltalk as a Vehicle for Real-Time and Embedded Systems
■
Teaching
■
Interfacing Smalltalk
■
Realizing
Smalltalk to COBOL
Programmers
to an SQL Database
Reusability
.
-------
------
Don’t Delay! Become a Charter Subscriber Today!
-------
---------
---------
.-------
------
~ yes, enter my Charter Subscription at the term indicated. This is risk-free offer. I can cancel at any time and
get a refund of the unused portion of my subscription.
Domestic
D$120
D $90
Foreign (includes air =rvice)
D$170
enclosed
--
Name
Company
Address
State
City
Q Check
--------------
Title
2 years (18 issues)
1 year (9 issues)
D $65
--------------------
Zip
Q Bill Me
Q Charge my D Visa
Phone
D MasterCard
Exp. Date
Card #
Return to:
Signature
Slnalltalk
Report
The
Subscriber Services, Department
Make checks payable to Tha S~
~
in US dollars
drawn on a US bank. Please allow 4-6 weeks for delive~.
Denville,
For faster service, call 212.274.0640
--------
-------
-------
NJ 07834
DIM
or fax 212.274.0646.
------
------
------
------
-------
------
------
messages without knowin~ what class the
a subset of the messages defined by the
receiver will be or in which class hierarchy
class. I personally find this approach most
it is defined. Subclass compatibility is in-
attractive because it seems to most closely
adequate for describing these situations.
model the way that Smalltalk program-
1
-----~ger.
---------
bana-ChamPaign,
1989.
Pmceedingr
’86, November
of 00PSLA
be resolved before static type checking can
superclasses.Simple abstract classescan be
be added to Smalltalk. Changes of this
defined to speci~ message interfaces that
are common to several logical hierarchies.
magnitude requires serious consideration
by language daigners and implementors,
These abstract classes can then be used as
vendors, and users before they are imple-
porium on Prinriphs
1981, pp. 187-199.
Uohm88] Johnson, R. E. J. O. Graver, and L. W.
Zurawski. An optimizing compiler for Smalltalk,
Proceeding
’88, November
of 00PSLA
[Suztil]
S.z&,
N. Inferring ~es
C.n*Remrdofthe
ofProgmmming
the type specifiers. If necessa~, a concrete
Smalltalk for production programming, it
stract classes and be subclass compatible
seems quite likely that at least some im-
with all of them. For this solution to work
for Smalltalk, the language wodd require
plementations of Smalltalk will support
static typing within the next several yews.
Ak
mten.sionsto support multiple inheritance.
Hopefully, a standard approach will be
of Engineen.ng of Instintion.r,
This, in itself, is a very controversial issue.
agreed upon by that time. ■
active in the &ebpment
exist for
W~-Brork irfiu&
ented systetm)r
in Smalkalk,
Eighth AnnualA~Sym-
class may inherit from many different ab-
approaches
1988,
pp. ] 8-26.
mented. But, given the growing use of
other
1986,
pp. 315-321.
In these lmguaga, a class can have several
defining typesin Smalltalk, One approach,
---,
U0hrIs86] Johnson, R. E. Type-checking Smalltalk,
mers think about using objects.
There are many issues that will have to
C++ and Eiffel programmers can solve
------
Ph.D. Thmis, University of Illinois at Ur-
thisproblem by using multiple inherimnce.
Many
SML
PO Box 3000
and Vice hestint
Inc. He ha been
ofprti”ca[
severdyearr
object-on”-
and k mpert in the
h~ign,
called signature typing, completely sepa-
[Bomi82] Borni.g, AH. and D.H.H. Ingalls. A type
orimtedpmgamrning
rates the meaning of type from the defini-
declaration and inference system for Smallralk,
ingInrti&onr,
tion of classes. In such a sys[em, a type is
ConfienceRecord
ginewat Tektronti Inc., where he WLUthe ticbical
specifiedby enumerating the messagesthat
may be sent to objects that are compatible with &e type. Instanms of a class will
be compatible with any types that speci~
posium on Principks
of Programming
Langua~es,
1982, pp. 133-139.
fiencefir
Object-Oriented
Programming
krrguuge~. Prior M fiud
W~-Bmck
Ieaderfir the dmehpment
thejrst
[Gravefi9] Graver, J. O. Type-Checkingand Tpe-In-
andapphcation
ofobject-
REFERENCES
oftbe NinthAnntilACMSym-
implernmtation,
Lanpges,
practiid
wara Prina~En-
of Tektronix SMlltalk,
mmmtrcial-qd~
impben-
tation of de SnraUtifipro~amming
ksnguage.
Lan-
67
CLOS
Toward a definition of objectoriented languages, part 3
by Nickieben Bombaki
n the last two columns, I talked a
guages, dl behavior is in the form of mm-
little bit about the ways that CLOS
sages that are sent to individual objects,
monomethod is selected to run if its first
~ment
is an instance of a particr.darclazs,
has interpreted the object-oriented
which =n respond. In the first column,
the method shodd be able to inspect and
charter, In this column, I want to
we saw that a blind devotion to message-
alter the internal state of the obje~; when
discuss the definition ofobject-ori-
passing can result in poorly modularized
this is extended to multimethods, it im-
ented languages as a category and move
behavior and loss of finctiond
encapsu-
plies that a method wodd be able to in-
toward the most interesting d~erence be-
lation. Here, the philosophy of object ori-
~pect and alter the internal states of several
tween CLOS and other mainstr-
entation, taken too far, an bacffire. h’s
objects at once, destroying encapsulation
look at this in more detail.
of the object.
I
ject-oriented language+the
ob-
Metaobject
Protocol.
The theory of object-oriented
pro-
The flaw in this is that the activities of
In particular, I want to contrast the
ways in which classid object-oriented p-
isthat objects are things that can
~~ing
be manipulated by programs and have be-
selection
son that a method chosen according to the
and access are not inherently
linked. That is, there is no necessary rea-
gramming has fixated on objects with the
havior. Objects viewed this way have more
ways in which it has failed to rake itself se-
importanm than had previomly been at-
classesof severalobjects at onm shodd also
riously enough. The fixation on objects
has been detrimental to programming lm-
tributed to data structura, and objects are
active, unlike passive daw structures that
be able to directly manipulate the states of
guagea, and the fillure to de
itself seri-
sometimes have only ephemeral existenu
ously has lost the advantages of using ob-
(on the stack in activation records). There-
those objects. It is perfectly plausible to
use mr.rltimethods for selection only and
as a means to deckue and ensure that its
ject-oriented techniques in the definition
fore, early object-oriented programming
arguments obey particular protocols. For
of object-oriented languages.
languagesrethought the role of objects, and,
example, if one writes this in CLOS,
Object-oriented
programming
has
strived to raise the object as a unit of
as a result, in object-oriented languages objects
are organiwd
into
hierarchical
computation to the level occupied by the
classification schemes and have associated
fiction,
behavior that is triggered by me-
procedure, and subroutine, which
be-
have held primacy in other languages. A
ing sent. Msages
whole generation of programmers
was
defined in the class of the receiver or by
taught that good programming practice
methods inherited from superclassesof that
lay in the direction of breaking up the realization of behavior into well-structured,
class. In addition, objects have a IoA state
that GUIbe maniphted by methods.
bierarchid
are handled by methods
This theory had such appeal and ap-
finctions or procedures.
(defrnethod operation
((argl chsl) (arg2 cbs2)).,.)
it is -teed
that the operations of class1
can be applied to argl and that the operations of class2 can be applied to ug2. This
enables the progriunmer to write safe code
within the body of fils method because
the only way to-invoke this method is by
lessons
a language-defined mechmism whose semantics guarantee that the actual argu-
havior of objects into well-structured, hi-
of the past about the importance of operations was forgotten. The result is that otdy
erarcbid
monomethods—methods
strate this later in ‘m example.)
With object-oriented programm~
the
goal is to break up the structure and bechunks. Yet in doing so, almost
parent beauty that-it
seems-the
specialized on
(I will demon-
Whether operationdirectly manipulates
every mainstream objet-oriented language
exactly one class-are
has chosen to either freeze the state of evo-
sicalobject-oriented languages,which hrces
the innwds of argl and argz is a sepwte
lution of the behaviod component at the
levelof earlierprocedural languages or have
the definitions of natural multimethods
matter, and arguing against selection de-
into contortions. Arguments justifying this
termined by several arguments at once
regressed even further back.
situation are powerfi.d but flawed.
The primary argument is that, since a
where that argument is based on encap-
In such “classical’ object-oriented lan68
supported by clas-
ments are of the ri~t cl=.
sulation doesn’t seem to make sense.
JOOP
OmOEIER
1991
—
One solution is to insist that methods
like operationuse only ac-sors,
which are
CLOS
—
by the behavior of individual objects. For
~ple,
when a car crashes it is not the
ject selfcontains directly stored height information,
because the class owns the
person who “crashes himself,” damaging
method, her all, and the programmer can
jects. Note that such reader and writer
the car he drives and killing the tree into
see this Facc and it reflects that the object
methods do not necessarily have to manipulate information stored directly in ob
which he crashes, nor is it the car that
other is opaque with only a method ameas
“crashes itself,” pulling in dl concerned.
protocol to determine its height. There-
methods to read and wtite facets of the ob-
jects, but can operate on computed infor-
There is a behavior called “crashing” in
fore, one presumably cordd find a method
mation or on information only indirectly
which a number of objects participate and
like this on the class of othe~
associated with the objects (e.g., through
none of them is a priori” in ch~ge of the
hash-table-represented relations).
For purposes of precision, we can define
behavior, The behavior is independent and
a reader as a side-effect-free generic hnc-
(detiethod height
((self <cIsss2>)),..)
operates equally on its participants. The
laws of physics surround us and treat each
tion (operation) that returns the value de-
of us like any old object, and we have the
Now, suppose that <chssl>#<classz>
and taller-thanis supposed to be symmet-
termined at initi~lmtion or at the last in-
laws of physics in us, too, causing us to
vomtion of the write method. A writer is
a method whose only discernible side ef-
impact on other objects.
fect is to determine what subsequent reads
rically defined. Then there are methods
If we look at the world of humanity,
a reader-generic
we see that individuals don’t completely
dictate their own behavior. When a per-
<obj>) has no observable
son is arrested and thrown in jail, the per-
side effects and returns a value; and, if the
due is set by the mprsion (sti (R <obj>)
son doesn’t arrest himself and throw him-
new-value) then the value returned by (R
<obj>) is new-value urdess there is m in-
under the operations dictatecland executed
wfi pmdum. That is, ifR
function then
(R
is
self in jail; he is arrested by someone else
by a system of laws within which a group
like tils, supposing that height is also directly stored in <classz>:
(defmethod tallefi
((self <classZ>)other)
(< (height other)
(slot-value self ‘height)))
(detinethod height
((self <cbsl>))...)
tervening write. And, (sd (R <obj>) new-
ofpeople act. Their behavior is determined
value) has only the observable side-effect
by these laws,which are in many ways anal-
of altering what (R <obj>) will return.
Now, CLOS does not enforce this re-
ogous to physical laws.
classicistsmake is that generic functions-
Classical object-oriented progdng
forces us to organize programs according
actttally multimethods-are
ject one needs to know about all operations
striction but the claim is that this restric-
ThK seems funny to me. The ti~ent
difficult be-
cause to understand the protoml of an ob-
tion ought to adhess the concerns of he
to a model that is useful but not universal
encapsulation crowd since every solution
in terms of its natural applicability. MS
~enericfictions)
to the multiaty operation problem in clas-
look at an example. Suppose we want to
here we know from the class definition of
sicalobja-oriented programming isworse,
as we will soon see.
determine which of two persons is taller.
<C~SSI>
The classicalapproach is to pick one of the
two objects as the remiver and to send the
but, to understand the properties of
tallerthan, we have to look also at its defini-
other object as an argument. 1’11repress
this in CLOS syntax, but I am assuming
tion in <chs2>, The issue is that one cannot truly know the protocol of an object
sented to the programmer by the language
with the real world. For example, the phi-
we we talking about a classical system in
which the method definition is within the
without not ordy understanding the operation names but also their semantics. Un-
losophy of object-oriented languages taken
syntactic scope of the class definition:
less the programmer is working with a lit-
One can often look at the approach a
programming language takes to providing
solutions by comparing
to the extreme-shall
the world pre-
a world in
which all behavior is derived from the behavior of individual objects, perhaps ghred
(defrnethod tallerthan
((self <cbsl>) other)
(< (height other)
(slti-nlue self ‘height)))
method
methods of a pwticular name in the system, which is exacdy the problem the classicistsuseto argue againstgenericfictions.
cinctly and compactly defined like tils
complish the behavior of larger operations,
of like the
is a ta~~efi~
The operation oftallerthan is more suc-
together with a string of messages that acbut still at this odd level-sort
there
erate system, *Is requires looking at all the
we call them o~ect-
obsessed ksnguages?-creates
&t
that operate on it. Well,
Here, I’ve emphasid
NO things in the
classid firing squad problem, in which an
code. One is that to determine the tallertttan
unknown number of soldiers in a line who
relation we need to run the operation <
can communicate only with their imme-
(on two numbers) and the other is that we
diate neighbors are required to fire their
are doing a IoA environment access on
guns at the same time after the command
self (indicated by the use of slot-value) and
is given to the soldier at the end of the line.
a message send to other. This reflects the
The real world does not operate only
fact that the programmer knows the ob-
(defmethod
tallerthan
(oneother)
(< (heightother)(heightone)))
Thismakessense be~use we saw that
to write the first two methods both <classI>
and <CIMS2> had to support rhe operation
69
—
CLOS
—
named height. This is also nice because it
support the height protocol because we
abstracts the property of height-now
know that both <classI> and <chss2z do.
we
need not worry whether it is stored or com-
However, let’s turn back to the real
puted nor do we have two different access
world to see how we like the idea of nam-
techniques to consider when we modi$
ing clwes like this when all we care about
tallerthan. The remaining problem is that
is a protocol.
the programming environment has to be
If I want to determine whether one
able to show this method when methods
thing is taller than another, I will use dif-
of either <classI> or <ckss2> are requested.
ferent techniques, depending on the con-
We can conclude-if
(defmethod talkrthan
((one physob) (other physob))
(< (height other) (height one)))
(defmethod tallerthan
((one holographic-image)
(tier physob))
(< (height other) (height one)))
(defmethod tallerthan
((one physob)
(other holographic-image))
(c (height other) (height one)))
we are of a
text, to determine the height of the objects
mind—that object obsession has made
our lives less fin in this example because
in question. For example, I can ask a person his height or I can measure him. For
we had to write a lot of extra code 10 ex-
some objects, I will measure some dimen-
Actually, what we want is a way to say
press a simple relation, tallerthan, and we
sion that is taken to be the height—it is
that there is a gtwct-.”c
operation that cap-
we forced in the future to browse 10N of
classes to understand what this relation
the vertical dimension when the object is
tures them all, which is defined on objects
canonically placed. For some other, com-
that obey a particular protocol—the height
I
The theory of object-orientedprogramming
protocol:
(defmethod tallerthan
((one heightil-object)
(other heightful-object))
(< (height other) (height one)))
had suchappeala~d apparentbeau~ that—
it seems— the bssons of thepmt about the
But, as we can easily imagine, heightful-object mi~t
importanceof operationswm forgotten.
be not a superclass of ev-
carshave a height. Some iM%inary objects, like Harvey the 6’ rabbit,
erything tit
have height, but others, like colorless green
really means. Further, we were tempted
pound objects, like a tennis net, the height
beyond resistance to avoid an abstrac-
is computed from the ground to a partic-
tachyons, probably wouldn’t be consid-
tion—the
dw point, such as the middle of the net
ered to have height. Yet the method above
locked us into a representation decision,
cord, and this height is not a natural part
at least a little bit.
of the compound object.
captures the notion of tallerthan perfecrly
and perfectly succinctly.
height abstraction—which
Therefore, object obsession caused us
The classical object-oriented
classi-
ideas, don’t. Some physical objects, like
fimtion scheme appears to be patterned af-
What we have discovered is that different characteristics can be mixed in at
language lessons: abstraction of operation
ter natural classification systems, such as
different levels of the hierarchy, requiring
and abstraction of data.
the genus-species classification taught in
multiple inheritance or a form of it to
highschool biology though the actual gen-
model exactly. Here, the key is that the
with tallerthan, which is that we might liie
esis appears to be to =pture incremental
mixin is used to name the subprotocol
to execute the < expression knowing that
changes to base repraentations.
In such a
rather than to be part of the main onto-
the calls to height will work—this problem was pointed out earlier. That is, we
single inheritance system, the categoriza-
Iogical classification. One can imagine the
tion according to whether an object has a
mixin:
might want to make sure that the method
heighr can be disjointed.
to forget some important programming
At this point, we still have a problem
is run only on objects of classes that sup-
For example, it might be that all phys-
port the right protocols. In CLOS, we write
ical objects have a height, but so can such
virtual objects as holographic images or
this as follows:
shadows (each of which has a different
(defiethod tillerthm
((one <cksl>) (other <cks2>))
(c (height other) (height one)))
Once the < expression is about to be
evaluated, it is known that one and other
70
height at every instant), and various sorts
of ccsmpound objects are treated different
VVZyS.
SO we wodd expect to see a number of simple-boring,
really-methods
like this:
(defclassheightil-objett
() ())
(de6nethod height
((self heightful-object))
(error
“-S doesnot have a ptiary-@
method for HEIG~
self))
We expect heightFu-object to be mixed
in and a real method for height to be provided. Thus,
m~riple
inheritance
JOOP
OnOBER
allows
1991
—
CLOS
—
JOU~AL
OF
0E31KT-mENTED
m
us to not only solve the reuse problem dis-
1
#
~~
BackIssuesAvailable
cussed in the last column but to also berter model the real and human worlds.
The effecr is char the obsession with a
1(1) AF~/MAY ‘88—Building Srnalltalk-80-fiwd
Budd
particular view of how objects are treated,
Computer
object-oriented developers
how classesown methods, and how classes
Reusability and Extensibility in Object-oriented
object-oriented pmgrarruning envircrnrnenk i3erroit,
are organized into simpleminded hierar-
Programrrdng Languages MimIle/ 9 Using Ob~ti
Btioit, Hemringer, & Velly
Music Tools: Pope
Encapsulation,
●
to Package User Interface Functionali~
chies requires us to ignore certain long-
1(2):
Iearned lessons: encapsulation of opera-
JLNE/JULY
‘8E-Active
Oriented Framework
tion, abstraction of operation, succinct
Schrrrucker
Objects: An Access-
for Object-Oriented
guages: OStSYtrYe
● tipling
Lan-
an Expert System Shell
repression, and commonsense reasoning,
This is the result of too strong a dedica-
with an Object-Oriented Database Systm
tion to a paradigm whose best use iswitiln
I DAgning
Ba[lou,
Chu, Garza, Kinr,Petrie, Russinof, Steiner & Wmlk
a wider-spectrum language.
Reusable Classes: Johnson & Faote
1(3):AUG/SEP ‘E6--Demetm
Thus, we have seen how classical ob-
A Case Study of Soft-
ware Growth Through Parametrized
ject-oriented programming has taken ob-
Lkhti
ject orientedness too far. Now let’s look at
View tintiller
& Riel ● A Cookbook for Using the McdelUser Interface Paradigm in Srnall-
1(5):
A common theme in object-oriented
JAN/FES‘8%Parameterized
_ A Language for
Database programmi~
of a class including classes [hemselves, We
have seen that generic ftmcrions and meth-
velopment
ods can be profitably considered as sepa-
graming
rate from classes.Therefore, it would make
1(6): MAR/APR
Types for C++:
Object-Oriented
~nerrs
of an Interactive
talk: van der Meullen
●
& Vermeir
Simulator
●
De-
in Small-
Multiparadigmatic
Pro-
Programming
should be objects as well and that they
ject-oriented
Goidaack, Di Maio, & Byan
■
Objects in shared memo~
Jordan 9 Industrial de-
NqUe: JambSon* Operatm overload~
guson
●
Object-oriented design using message
Dean ● A viauzl programming
flow d-position
erwiroment
for buifding Srnalltatk#
Purchase ~ Winder
model of ob~
reference, identity, and *tenw
types + abstract data types + abstract mnnector
tion: tirahim, Bejcek, & Cummins
‘89-A
Survey
Languages
System
of Object-Oriented
Saunders
● A Law
Ob-
Rozenshtein & Minsky ● what
4(4): JULY/AUGUST‘91—Why the OMG Object W
quest Broker should mean good news for object
Atwood
Lai & Guzenda
is not taken in many object-oriented sys-
2(3) SEP/~
as an object-oriented progrw.
To ~demd
& Malik
●
Object-Oriented
Schemd & Kim ● Conceptual Design ❑f a Software
I
Object Library for SimAtion
of Semiconductor
Manufacturing Systems: Glassy & Adigia
3(6): FEBRUARY
‘91-Generalized
r ------
.
I
number ofmerhods, and a number of pro-
i
I
get things done. The programmer will ex-
I
1
tend the program by making new subcks,
definingor extentig methods, and defining
i Name
I
and mtendlng protocols. The programmer
I Addreu:
will be happy when the functionality of the
~ Ci~
original program was close to the functionality of the desired program, and by cus-
i
tomizing, exrending, and specializing the
I
1
original program he can obmin the desired
Asyrrchrony and Wsit-
Carorrrsl9 Sharing and Organization
■
How to benchmark
●
an
The object database
market stranger than it needs to b?: Ingari . Perspectives On c~nges
fOr ODBMSs: BflrrY “
ODBMSS: strengths md weakness= Kim ●
The Active KDL O-O database system and its applimtion
to sirmdation
& Ucara
protocols in Object-oriented Systems: Tmrdinson,
a number of classes in a class hierarchy, a
tomls, which is how to use the methods to
Software Reuse - The
Taenzer, Ganti & Podar
2(41 Nov/Dsc ‘8~rvim,
buys the average programmer. A programprogram that contins
vs. inheritance vs.
Prototypes in Prolog Leonardi, Mello &
Yoyo Problm.
about what object-oriented programming
ing object-riented
‘89-Generitity
Natali
this, let’sdivergeand talk
mer will often be asked to modify an tist-
Bergin & Greenfield
Delegation vs. Conformance vs...: Blair, Gallagher
By-N_i~
●
Kent- Abstract object types = absbact knowledge
databases:
do a remarkably simple, remarkable thin~
you a treat your object-oriented language
A rigorous
programming
00DBMS
tions and methods being objects, you can
views: ]iarrg
4(3): JUNE‘91—Debugging tools for object-oriented
ented Programming?:
■
tech-
in C+% Fer-
4(2) MAY‘91—Reusability in Srnrdltak arose study
Does Modda-2 Need to Fully SuppcIrt Object-Ori-
tion of first-class functions.
Once you take the step of generic ftmc-
Imtantiation of C++
velopment of software with an o~-orimted
should be instances of classes that describe
their structure and behavior. This decision
tems, which have not inherited Lisp’s no-
concur-
rency and distribution in DRAGOON: Atkinson,
types: Park 9 tnstance specialization with delega-
in ModCap Wells
sense that generic finctions and methods
Gibson ● SPOKE: an
& Bourns
Stroustrup
languages is that everything is an instance
Flattening the learning curve educating
4(l): MANCH/APRIL‘91-Object-oriented
bzarm
Classes
talk#O Krasrrer & Pope
how it hasn’t taken ir far enough.
●
■
suppoti Miller,Potter, Kochut, Keskin,
Development of tTASCA Ayws, Barry,
Dolejsi,Galarrreuu,& Zot?ller
4(5): SEFTSmSR‘91—EC++ Extended C+* Masotti
9 Why I need Objective-C: bzinski
●
Conceptual
design of object-oriented databases: McFadden
Apprmches
●
to reusability in C++ and Eiffel Al-
Haddad, George, & %mdzadeh
aritrnetic in C+*
------
------
------
----
1
IOOP Back Issues Order Form
Yes, send me back time(s):
n
i
Vol. 3, Nos.
Vol. 4, NOS. _
Vol. 1, Nos. _
vol. 2, Nos. _
I
I
I
I
Company
I
Phone:
I
I
zip:
State:
I
i
I
I
I
I
I
Make ch~ payableto JOOP
Checksmus~be paid in U.S.doOarsdrzwnon a US bank.
Issuesshippedprompdy upon reccip[of payment
I
I
I
Remit
10:
I
Jo.rnaf of Objmt-Orientsd Programming
Am Back Ixues Dept.
I
I
5EB Bmarlwy, suite ~04, NEWyOrk,NY 10012
For krther info call (212)274-0640
Circle
31 on Reader
or fax (212)274-0646
3ervim
Card
I
DIKA
I
1
—
CLOS
functions
such
—
program. His happiness originates in the
and
ht that he has reused the titing
defrttethod.This layer is called the user in-
not had to write it km
mde and
scratch.
There are lots of object-oriented progmrns that would be useti.
as defclass and
clasmsand slotsand to modify ifieritance,
but it would not be possible to write dif-
terFam layer but it isn’t a user interfam in
ferent sorts of generic functions and meth-
the mouse, window, keyboard, and graph-
ods nor to customize method combina-
Some obvi-
ics sense: it’s a user interface to the oper-
tion strategi~.
ous ones are operating systems, mmpilers,
ational part of the CLOS language. This
and text editors.
user interface corresponds
One temptation many have with the
Metaobject Protocol is to try to write a
A nonobvious one is the programming
language itself.
tinition
to language
in other programming kutguages.
The next lower layer is the connection
When one meatsthe implementation of
layer and is implemented by functions.
vastly different language than CLOS. This
would WI for the same reason that trying
to make an operating system out of a comI pilerwould M: the difference between the
starring point and the goal is too far apti
and any apparent success would cost, es-
Chsica[ object-orientedprogr~mmingforcesus
to orgunizeprogramsaccordingto a mohl that
k u~l
but not universalin termsof its
sentially, writing the entire desired program nmt to the misting one.
The interesting point is that in fsiling
to Ae object-oriented programming seriously enough other language designershave
tied
naturalapplicability.
efi
to provide pro=ers
m~tha pow-
tool: a customizable language system.
The thmretical underpinnings or side-
pinnings of systems like this can be found
an object-oriented_
as m object-ori-
ented program, one has a rn*bjcctpro@-
The user interface macros expsnd to calls
in the work on r@cti-on. Reflection is the
to functions in this layeu in addition, this
abili~ of a program to manipulate as data
COL
With the protocol, one can write a pm-
layer mntains functions thar map names
something representing the state of the
_ing
_
but customid,
to metaobjects. For example, 6rtd-class is
program during is own mecution. There
a fiction
are No aspects of such maniphtion:
that is like the original
extended, and S-i
in this layer.
in-
Finally the deepest layer is the metaob-
trospectionand #ctuatz”on. Introspection
cial differences between this example and
ject layer. Meraobjects are first-class ob-
is the ability of a program to observe and,
othem M-reference and performanw.
jects that provide the behavior of classes,
therefore, reason about its own state. Ef-
instances, slot access, generic functions,
fectuation is the ability of a program to
to
be
a little bit &ent.
There are two cru-
With respect to self-reference, the degree to which the customizing programmer is allowed to alter =isting behavior
must be limited—the
program that the
modi~ its own mecution state or alter its
inheritance, and method combination.
A lot of CLOS programs will use only
the user in*
layer, somha
own interpretation or meaning. Both as-
dipping
pecw req~re a mechanism fo~ encoding
the
state as datz providing such an enmding
programming language is written in is the
inti them-on
program that is being altered. So cettsin
verynatureofcLosAtobecusto*
is called rctfication.
changes to this program can cause every-
and the metaobject layer must be usecl
thing to stop working or to work in a
CLOS, dongwirh the Mmbject
Pmtoal, is defined in such away that imple-
Some call th=e newer variations on object-oriented programming the “neo-clas-
bimrre and possibly unpredictable way.
This can be addressed with a careful
specifi=tion of the modifications allowed.
WI* respectto p~rmartce, object-orientecl implementation techniques are possibly too inefficient to use in a real imple-
la~r. But sobes
mentors are somewhat ccmstrained by having not only the user inte~ce layer but
sicti’ approach. Some find them hard to
swallow, but I tilnk, with a little reflection, they go down ~.
■
parts of the connection and metaobject
layers specified.
The U
Metaobject Protoml describes
Nic&ben Bourbaki receiuedaDoctorat#$tit
mentation, md so the implementation has
how classesare made md represented, how
m Mathimati”ques
App~uiesfim
to be cleverto use&t techniqu= when there
slots we rep=nted,
d
isno custotition
plernend howgenericfunaions and methods me made and represented, how generic
but m revertto old tech-
niqu onc a customization is defsned.
To accomplish
the goal of having a
metaobject pmtocsd, CLOS was designed
in layers. The outermost layer—the one
that pmgranuners d
ti
72
typically us~n-
the synm of CLOS ddned by macros
bctions
how inheritic
is im-
Su@-mre& Saint-Cb4
He b a writer
d
and Printipd
Ecoh Nor-
Frarue, in Ig73.
Comltantfir
Lu-
Hk interesfiincld kan~ges, rnuimnmenfi,
invokemethods, andhowmethod
mmbinations are represented md used.
Without first-class generic functions
and methods, it would be possible to modify the strucrure and representation of
jOOP
~OBER
1991
Book
Review
OBJECT-ORIENTED
DESIGN
Peter Coad and Edward Yourdon
Prentim Hall, Englewood ClilTs, NJ, 1991
ISBN 0-13-630070-7
Reviewed by Steven C. Bilow
O
Design is
includlng design and management, as well
ented. ” Given that, it is invigorating to
the second in a series of
as simply establishing the validity of the
read a book written by people with both
books by Peter Coad and
technology, fie
many fires of the book
tremendous enthusiasm toward, and long
Edward Yourdon on the
make it a good introduction to object-ori-
standing devotion to, object orientation.
subjectsofobject-oriented
ented design but somewhat limit its cov-
Peter Coad and Edward Yourdon
among those people and the book radiates
July 1991 from Prentim HaU Books. The
erage of specifiu.Portions of the book are
recessively detailed for management-ori-
book is essentially a written description of
ented readerswhile other sections ae some-
their fervor on nearly every page.
The authors have approached the sub-
the design process supported by Coad’s
what overly general for designers and im-
ject of design through a series often con-
commercially available computer-aided
software design tool. It includa a businms
plementors, The book is still extremely
cise chapters. The first two are introductory in nature. The following four deal
bject-Oriented
analysis and design~It becsme available in
reply card with which readers may pur-
usefil in numerous ways, but will be most
at home on the desks of those who we ac-
chase spies of the tool shodd they desire
tually using Coads tools.
Mer
putsuit of the techniques presented.
This book and it’s mmpanion volume,
Despite a few inconsistencies
are
with specific aspects of the design process.
The final four cover the independent sub-
in the
jects of language, design criteria, computer-
book’s degree of specificity, it has quite a
aided softwue engineering (CASE) tools,
and techniques for bringing object-ori-
office almost simultaneously. My choice
number of outstanding points. Primary
among them is the book’s optimistic and
to read the design book first was based on
enthusiastic presentation of the subject,
amples are drawn from several problem
a desire to see how well it stands on it’s
Coad’s system appears to be quite com-
domains including the design of a sensor
Object-Oriented Ana~sis, arrived in my
ented design into a project. Practical ex-
design
plete and it’s presentation in the book ex-
monitoring system and the tilgn of bad’s
methodology works best with a compara-
cites the reader to see the tools in action.
own object-oriented analysis tool (OOATool). The book details Coad’s personal
own. In general,
a particular
ble system of analysis. My gods were to
The explication of terms is excellent and
determine whether Coad’s design system
is uniquely supported by dlctionaty and
design pro-s
was dependent on his analysis system and
encyclopdlc
definitions as well as object-
msses of several other leaders in the field.
wheth~r the book is able to sw-d soundly
oriented ones. The conversational style is
The ultimate goals me preparing engineers
on it’s own. While Object-On”entedDesigrs
refreshing and the bibliography among the
to design in the object-oriented style and
reviews the required analysis techniques,
proving the validity and applicability of
it is fi]r to say that the book is not entirely
most well organized available.
Both Coad and Yourdon are known as
independent-of it’s predecsor.
In kct, for
proponents of object-oriented technology.
cludes with three summary appendices and
the serious student of Coad’s techniques
The practical tilghts provided in &Is book
an impressively complete, well-structured
Object-OrientedAti~~b is best read first.
This is not intended to downplay the qual-
are a welcome addition to a subclass of
bibliography.
ity or usefulness of Object-Oriented De~i~; the two books me simply very closely
computer literature that is far too often
known for it’s esoteric nature. The past
Chapters one and two present the introductory material. This includes basic
year has seen the appearance of numerous
terminology, the principles and techniques
related and have significant dependencies.
new books on object-oriented subjectsrang-
for managing complm systems, a discus-
ing from database design to PC program-
sion of the positive results of protoryping,
ming techniques. With the increasingpop-
the motivation behind object-oriented de-
dariry and easy accessibilityof languages
such as C++, it is becoming the vogue to
refer to almost anything as ‘object-ori-
sign, and the general principles behind
Coad andYourdon have written a book
that is quite concise. It spans slightly less
than 200 easy-to-read, conversationally
written pages. It deals with the subject of
object oriented design on multiple levels
as well as analyr,ing the pro-
object-riented CASE tools. The book mn-
multilayer and multicomponent
design
models. The first four of these topics are
73
—
Book
Review
—
the current level of sophistication of the
discussedin a straigh~orward and succinct
different feel, fich
manner. The fifi is covered in greater de-
independent
tail and comprises the whole of Chapter
orientation
two .
the book presents language issues, the ap-
when the authors state: “YOUhave spent
plication of 00D
of them deals with an
object
design community. The book concludes
to a project. In these chapters
with an anthem to object-oriented design
aspect of delivering
problems in terms of five layers and four
tools, and techniques to bring the design
the past chapters reading about 00D.
Now is the time to stop reading about it
components. The five layers are the sub-
methodology to fruition.
and start doing it. ”
Coad and Yourdon model all design
ject layer, the class-&-object layer, the structure layer, attributes, and services.The four
criteria, the use of CASE
Object-Oriented Design by Coad and
Yourdon is well worth the rime it takes to
Chapter seven begins with a brief discussion ofseveral languagesin which 00D
components are the problem domain, hu-
can be implemented. It is quite succinct
read and absorb. It is unique in several as-
man interaction, task management, and
and does not provide enough detailed in-
data management. In Coad’s system and
formation to make a language selection for
pects. The book is a mere 197 pages of
very easy reading. It is optimistic about the
I
current
maturity
and future
prospects
of
00D.
It is very practical and it’s inform~lty is refreshing. The authors do a bit
of name dropping and the book is somewhat morivated by bad’s
“Youhave spent tbepast chapters
readingabout OOD.
Now is the time to stop readingabout it
and startdoing it.”
desire to sell his
tools, Then again, the accessibility of good
tools is so rare that it’s satis~ing to see him
rea~lng for rhe widest possible audience.
Though the book has some inconsistencies and deals with the subject through
a mixture of specificity and generality, its
strong points far outweigh iti weak ones.
I recommend
Obje~-Oriented De~i~ to
anyone interested in analysis, design, or
programming in the object-oriented style.
It is a unique book and a welcome addithe design tool that supports it, specific
a large project. That does not appear to be
notations are used for each of the layers
it’s intent. The purpose of the chapter is
and applied to each of the components.
to praent some basic material, simple ex-
Chapter two is essentiallythe introduction
to the system, while chapters three through
amples, and important points. One of the
most significant of these is the postulate
Stien
six provide the details.
that object-oriented design can be a use-
SupportSprialist
ful tool even in the absence of an object-
at Tektmnti in Wkonv~,
Over the murse of the four chapters
tion to any computer science librq.
C. B&w b current~ a Senior Terbnical
in & Compuh
that mrrespond to the design mmponents,
oriented language. The chapter makes a
penkt
the authors bring out many significant
points. One of the prim~ onm is to avoid
specific attempt to explore languages like
C, which the authors call “Less Than an
*_titiO%
destroying the analysis in the course of the
00PL.”
design proms. Design and analysisshould
that designers can choose the object-ori-
via e-~.latsteveb@oma
be iterative but in the design phase changes
ented paradigm even before their management is willing to commit to a new
at (503)@G5~,
to the analysis must be strongly justified.
Analysis results may require additions but
This reinforces the proposition
language.
Chapters 8, 9, and 10 conclude the
should not be altered haph-rdly.
Other
principle points mentioned in these chap-
book with a look at the people and design
ters are the benefits of reuse, generaliza-
automation aspects of object orientation.
tion, inheritance, human task scenarios,
Here we learn about interdependence and
categorization and prioritization of tasks,
cohesion, clruity, simplicity, volatili~, and
and dau layout design. By the end of chap-
eleganm. We also see how these are assisted
ter six we have been led through the en-
by CASE tools. FinaUy, the authors pre-
tire design methodology for each of the
sent their vision of the future with a dis-
four components.
cussion of the maturity of the object-ori-
Chapters seven through ten have a very
74
ented paradigm and their perception of
■
Graphti Group
Oregon, andan inh
in 3D-&ngandgeom~
codnt
systemr.Hti rurrent interesti inrlu~ parametric
andtbeX
o~ti+tidgraphti,
Wi&w
BibandAsrociatfi,
tie
Sy~tem. Bib
C++,
can be contucted
wo.tik.eom, ti
te~bow
or via US mailat Steven Craig
16950 SWhk&ge
Drive,
Oswego, OR 97034.
I
—
JOOP
OmOBER
1991
Prentice Hall Offers You the Latest
Advances in Object-Oriented Programming
OBJECTLIFE CYCLES:
MODELING THE WORLD
IN STATES
Stephen Mellor and Sally Shlaer
1992,0-13-629940-7,288
OBJECT-ORIENTED
Peter
DESIGN
Coad and Ed Yourdon
1991.0-13-630070-7.256
pp., cloth, 6
1992,0-13-247925-7,
DESIGNING
SOFTWARE
300
pp., paper,
Rebecca
7x9W
OBJECT-ORIENTED
Wi$v-Brock,
and Luuren
~iented
I
Brian Wilkerson,
Wiener
1991,0-13-629825-7,
36H pp.,
7 x 9 M“
paper,
I
ProgrammingTitles
OBJECT-ORIENTED
PROGRAMMING
WITH C++ AND OSF/MOTIF
TOOLS 4: TECHNOLOGY OF OBJECT-ORIENTED
LANGUAGES AND SYSTEMS
Douglas A. Young
Bertrand
350 pp., pa~r, 7 x 9 W
pp.,
415 pp., paper, 7 x 9 lA”
TOOLS 5: TECHNOLOGY OF OBJECT-ORIENTED
LANGUAGES AND SYSTEMS
Hekmatpour
1992,0-13-174129-6,264
Meyer
1991, O-13 -9231W-9.
A BOOK/DISK PACKAGE FOR C PROGRAMMERS
C++:
Sharam
Bertrand Meyer
1992.0-13-923178-1,425
paper,book/disk,7 x 9 ‘W
pp., pa~r, 7 x 9 W
OBJECT-ORIENTED
SYSTEMS ANALYSIS:
A MODEL DRIVEN APPROACH
OBJECT-ORIENTED
Barry Kurtz, Scott Woodfield, and David
1992,0-13-629973-3,256
pp., paper, 7 x 9 k“
Bertrand Meyer
1989, O-13-62W9-3,
OBJECT-ORIENTED
Peter
ANALYSIS,
Embley
PROGRAMMING
2E
Stephen
Coad and Ed Yourdon
1991,0-13-6299814,255
9“
pp., paper,7 x 9 %“
EIFFEL: THE LANGUAGE
Bertrund Meyer
1992,0-13-630252-1,
X
C. Dewhurst
SOFTWARE
4~0 pp.,
and Kathy
paper,
Available at better bookstores or direct from Prentice Hall at (201) 767-5937. Corporate Customers:
For orders in
excess of 30 cupies to be billed to a mrporate address, please call (201 ) 461-8441. Govemmerrt Customers: For GSA
pricing information, please call (201 ) 767-5994. Prices subject to change without notice.
AA36
7
X
9 ‘A”
IN C++
1989,0-13-723156-3,235 pp.,
pp., C]Oth,7 X9 lA”
CIOth,
CONSTRUCTION
T. Stark
7 x 9 M“
~
Prentice Hall
The Professional’sChoice
Circle
5
on
Reader Serviw Card
Book
Review
OBJECT-ORIENTED
MODELING AND DESIGN
J. Rumbaugh, M. Bl~
W. Premerlani, F. Wdy, and W. hrensen
Prentice Hall, Englewood Clifi, NJ, 1.991
ISBN: 0-13-629841-9
Reviewed by Sanjiv Gossain
-his
text is one of the most
is not surprising to read that the authors re-
important contributions to
ally ordy use one-third of the object model-
the advancement of object-
ing Concepu d~ribed,
oriented technology today.
dmcribed and the rationale behiid them are
tained within this tat.
Part 2 of the book describes how the
I wodd put this tat along.
side that of Meyer’s Object-Oriented Sofi-
well illustrated although I would question
models of part one are arrived at. The it-
the usefulness of modeling attributes of a
erative nature of object-oriented develop-
ware Cor.zitructionin terms of importance
base class Witiln the subclass. In fact, the
ment does not come through in the de-
to the fieldof object-orientedsobre engineering. Object-Ort”entedMo&ling and
databasebackground of the mn~ts
scription
Desi~
derived links, and candidate keys.
clearly describes a notation and
parent in the modelii
In general, the ideas
design. Booth’s object diagrams wodd be
a useti addition to the modelling con-
ate ap-
of derivedattributes,
of the OMT
methodology
although the authors take great pains to
stress that the process is iterative rather
method for object-oriented development
Dynamic modeling is well thought out
that is based upon the use of objects within
and well mplained. The discussion of ar-
The method consistsof three steps: anal-
models of the real world. It is a result of
riving at sate diagrams horn event traces
ysis, system design, and object dwign, The
than sequential.
some years of development carried out at
and scenarios is particularly well done.
method iswell describedand has numerous
GE, the outcome being a very comprehensive notation based on semantic data
State diagrams are farntlar to most read-
examplesthat serveto d~be
the processes
modelling and a method that will withstand the strain of large projects.
The book is in fou main parts: part 1
presents object-oriented
ideas at a high
level arid introduces the modelling concepts and noration; part
2 describes an ob-
ject-oriented methodology for software development
I wou~ questionthe m+lness offinctional
model[ingand wouUpersonally view htaflow
diagramsm the exceptionratherthan the mh.
empha.sising the language
independent
of the approach; part 3 de-
in each SW. The now well-used ATM m-
scribes the implementation of object-ori-
agratns, smte generalization
ers but the description of nested state cliand concur-
arnple servesto provide detail to the anrdy-
ented designs in non-object-oriented lan-
rent states is truly outstanding in both its
sis phase that is most convincing. k
guag= as well as using relational databasa
in object-oriented languages; and part 4
clarity and content.
I would qumtion the usetiness of finc-
thoritative,however,W-design.
presents case studies of actual applications
tiond modelling and would personally
thepreviotsschapter. Object designcertairdy
developed by the authors at GE.
view data flow diagrams as the ex~ption
provided many useti tiques
The authors present three modelling
techniques to the readec object, dynamic,
rather than the n.de. The auhors do, how-
design optimimtionj design of associations,
ever, come new to convincing me of their
adjustment of inheriranm, and imPlernen-
and functional modelling, All three are pre-
potential usfiness
sented in a clear and authori~tive manner
putation of data values in operations, The
tation of control. The method, although
well described, did seem to fil to provide
that is both stimdating and persuasive.
description of the three models and their
interrelationships is acellent.
covering” function/procedure-like clwses
The object modeling notation is a ri~,
repressive one that is more than sufficient
to repr=nt
all static relationships pertain-
ing to classes,attributes, and associations. It
76
in showing the am-
One void that the notation did not fill
auThis
chapter buked the depth and coverage of
including
an tilght into the creative pro-of
“dis-
thatwhenwell-designed and Acientlyused
for me was that which describes the se-
provide some of the major benefits of the
mantics of mechanisms
object-oriented approach.
in the logical
JOOP
O~OBER
1991
The OMT method is compared against
SNSD, JSD, and other object-oriented ap
preaches. A more detailed compwison with
other object-oriented
Back issues
approaches would
have been more useful here as opposed to
V.I.2. No. IOIAUU’9
[ = Disuiburcd obicm inan-cnc
im-
available
Vol.1. No.1 1/%. ‘90sfnimdtimOOPS
&&
&
— i$s d
what seemed to be a very superficial, almost token compwison.
The chapter on programming style was
very useti although more detail on rhe rop
ics revered: reusability, mtensibility, rohthelargewould
b~
andp~
have been more beneficial to the reader. In
fict, I was a little disappointed to seethe discussion on reusabili~ limited to ttu-eep=
when I thii
it should permeate all aspects
of design and be discussedthroughout. The
d~ussion on the exdent work on Demeter was, I thought, a bit too brief
The chapters on mapping of objectoriented designs to borh object- and nonobject-oriented
languages, dealing with
technical issues in the main, Me clear md
concise, which will prove them useful as
reference material for some time to come.
The chapter on relationaldatabasesseems
odd and out of pk
in the mntext of rhii
book. The reasons for including it are given
as being their increasein popularity and the
relativeimmaturity of object-oriented datama,irz
contribm. Given that the chapter’s
bution is the mappirsgof object models to ta-
bles, I feel that thii muld have been more
usefullydone as parr of an ertamplein part 4.
The ~ple
applicationsmvereclin part
4 are an object diagram mmpiler, mmputer
animation, md an electrical distribution
design system. These applications are useful examplm of how to use che OMT nomtion and method but, once again, I wozdd
havelikedto have seenmore derailand some
discussion of the problems ~
during development. I tilnk rhis is the section of the
book I am least likely to read again.
r ------
Some general comments: the organiza:
Each chapter concludes with a summary
I
that covers that the key points raised in the
I
chapter. I found these summaries to be a
very useful t-t of my understanding spe-
I
cially as each chapter contains so much
I Ciy
valuable information. The references section following the summary is to be commntinnrd
------
------
----
1
BACK ISSUES ORDER FORM
Yes,send me back issue(s):vol. 1, NM
tion of material in this book is excellent,
[
-----THE HOTLINE
I
Vol. 2, Nos.
I
I
Name:
&mpany
Addms
Phone:
:
stare
:
Zip:
I
:
Chcckr
must be paid in
MA chek payable to: The Hodine.
U.S. dollars and drawn on a U.S.bank. Iwuu sent promptly upon receipt .Fpaymmt
I
on page 79
I
The Hothm
Am Back Issue Dept.
588 BroadwaySire 604, New York, NY 10012
For fuzther info call (212) 274-0640 or & (212)274-0646
Clmle32 orIWader3ervjeeCard
fimir
:
I
I
I
I
I
w
DIKA
:
1
I
I
1
Conference
Overview
The 00PSLA ’91
Technical Program
by Alan Snyder, OOPSLA ’91 Program Chair
o
OPSLA ’91, the Sixth An-
of research. To encourage timely reporti-
plications, real-time and embeddedsystems,
nual Conference on Ob-
ng of practi~
arfiltecture handbooks, reflectionand met-
ject-Oriented
technical progrram includes a new forum
alevel architectures, and distributed appli-
ming Systems, Languages
for short oral presentations by practition-
=tions. Attendanm at a workshop istiugh
Program-
resdts, the 00PSLA’91
and Applications, will be
ers reporting on their real-world experi-
submisson and acceptanm of a short posi-
held October &l 1 in Phoenix, Arizona,
ence using object technology. To inaugu-
tion paper related to the topic of the work-
Sponsored by the Association for Computing Machinery’s Special Interest Group
rate this new format, we have selected ten
shop as described in the advanced program.
on Programming
terest to practitioners and resachers
Languages, 00PSLA
experience reports that are sue to be of inalike,
Nineteen tutorials will be given on Sun-
The technical sessions start on Tuesday, October 8. Twenty-three technical
papers will be presented in eight sessions.
’91 continues the tradition of bringing together leadlng-edge rtiearch and advanced
day and Monday, October 6-7. The tuto-
There me seventeen research papers re-
practice in th~ increasingly impomt
rials cover a wide variety of topics at be-
veringthe key areas of ongoing research:
~ln~
intermediate, and advanced levels:
Introduction to C++, Case Studiesin Sd-
concurrency and persistence, types, and
subject of great inter~st and activi~. This
trdk, Object-Oriented Programming and
Expert systems, CLOS, Object-Oriented
experience papers that report on experi-
year over 200 papers were submitted to
Project Management, tincepts
ence obtined
00PSW
Oriented Programming, Object-Oriented
of object-oriented
area
programming
tech-
nology,
Object technology continues to be a
compared
from all corners of the globe,
to 194 submissions
to last
of Object-
Programming in Modula-3, Sobe
De-
year’sjoint cnfirence with ECOOP. Con-
velopment with Eiffel, Object-Oriented
sidering that ECOOP
language, implementation, environments,
sofmare
engineering.
There
are six
using object technologies.
Six panel sessionswill address issues of
current praciical and researchinterest. Panel
topics include: Can Structured Methods
Modeling and Design, Object-Oriented
be Objectified?, Issues in Moving from
129 independent submissions, the increase
Database Systems, Object-Oriented Frame-
C to C++, Formal Techniqum for Object-
in reported activi~ worldwide this year is
works, Programming in Beta, The Design
Oriented Software Development,
dramatic, indeed!
and Management of C++ Class Libraries,
nomics of Software Reuse, Object-Ori-
A remarkable chatacteristc of the object concept is its applicability
to a wide
.-
The Behavior of Behavior, Object-Ori-
ented Programming and AI, and Managing
the Transition to Object-Oriented Pro-
‘91 itself received
ented Application
Development
in the
Eco-
range of areas in information technology.
Corporate Environment, Concepts of Ob-
gramming.
The invited papers will address the impact
ject-Oriented Data Modeling and Programrni~ Programming in DRAGOON,
deprh comparison of four analysis and de-
of the object concept on two specific domains. The keynote ad&ess by John Tib-
Query
betts will review object orientation
00DBs,
and
Languages
and Processing
in
and Object-Oriented Design.
A special event at 00PSLA
signmethodologies. In pdel
’91 is an insessions,four
mperts will apply their analysis and design
transaction pro=ssing. An invited paper
Eleven workshops wdl be held on Sun-
methodologies to a mmmon problem. The
by Professor Henry Levy will focus on
parallel sessionswill be followed by a joint
object orientation and operating systems.
day and Monday, in parallelwith the tutorials. The workshops provide a forum for
As object technology plays an increasing role in commercial software develop-
experts in an area to discuss current topim
and present their latest work. The work-
ment, it is important to report on and eva-
shops addr=s a reange of important topics,
includlng garbage collection, modeling,
luate its effectiveness in practice. Such
evaluations are a valuable contribution to
knowledge and help direct the next stage
78
panel in which the design decisions of [he
parricipanw ate discussed and challenged.
’91 revives the demonstra00PSLA
tions track of previous conferences. A
variety of exciting live demonstrations will
reuse, finding objecu, development envi-
be pr=nted of working systems, both com-
ronment, domain analysis,commercial ap-
mercial and academic.
JOOP
OmOBER
1991
. .— —..
together the leading vendors of 00P
++ “ ‘ I ‘<
_
In addition, a major &lbition willbring
lan-
Ba=k issues
guages, environments, tools, and training.
We anticipate a number of new product
VIII.I No, 1 Im ‘BY Stand.d,zim
ohjcuerii”wd
announcements by these vendors during
crcII=
the conference. ■
C+- Srromuu~ - Tumid:
The
P, ,i — dcrivariom ~oldsfein uRcf-
pro~nur,
in C+* Carroll . Pmd.cc review — hnccb
C++ Cnm-
pikr (phorocopicd version)
Vol.1
No.2Fch ’62
siaricmiablm C++ Iibrarim 5chwarz
I.itiig
For information on attending OOPS~
b~m
91, conwti &role Mann, OOPSM 91 ~titi
P.O. Box 7659, Maiti
Product rev~
(ph.-pied
vcmio.)
InterV,~
.
(pbo-
Vol.1 No.4 Apr ’89 Using i.line fu”crions effectivdy, Pr. 1: Ratie/
hnpkmaring.
&
OASYS/Glakcnspkl
i. C++
Carroll- Pmd.cI rcviw
D=iEncr C++ for UNIX S~mm V13B6
. TumA:
❑bjccr-orirnmd
The
pm~mmcr,
Pm 2 — imposi-
PmducImim TheNIH *
mended. There are also some exercises at
tion Goldstein .
the end of each chapter the answersto some
Vol. 1 NO.6 J“nc ‘E9 C++ md ph~im mmputariom Dreitfein &
of which are provided. The exercises were
giks: Co~ins
cetinly
gnmmcn
5avef. T.mriak Mm~”g
stimdating although I would have
mim
. Pmd.u
DAumr
co C — bur no
tincw:
~c
M StAs
2,0: Eckel. T.m~
et al. and Booth.
rnim
Cafroll. ~k
Wtcn- & Pinson’s An Indunion
Caulmn
m 00P
and C++
co..rs
in G+: Bruck.
Bwk miw
Im
Tumriak Some swragc man~c”r
for conrti”cr ck:
VJI,2 No.2 Feb ‘9o: ln~i
nongc q.
rubniqw
jcu-orhmS
KIW
Lea . Bunk m.im
hnuion in Gx
Lea. A firerLookat ok.
& Vi/or. Bunk=.
MS
Using C++
ti~.
P/auger
a“d objms
Booth
& ViJot . Bmk rc-
its 500 pages that it is impossible for me
VOI.2 No.4 Apr ‘9o C+* The knguage Ada -
supped
Holden . Turorkk Mukipk inhcrimnu
rc=ch
This is one book that I know I shall refer
Cafgill.
to for years to come. It is a big step in mov-
Bwrh
HanM’s Thr C++ Answer Bmk
and Vilot. Prod...
rcviw
ET++
ounshi~ tih
G+ ti~
En~”neer at
UK He hoL!d.r
a PhD in O@cct-Oriented
arni Wld. Book reviw %
Cnmpla
Devel-
Dam Abs~nction and Objcm-Oricnrd
Turoriak six-”
riw
Book r,
world: i“ccrvicws wih C++
u . Dmi~n: Crearin5 mu~bk
\DOS\ C++ and Winhws
ob.
Lane . Ture
Mendelssohn
data wmmur,imrio”s
~lngw~
B-h
& ~1~. \DONc++
Lane Turoriak k & idc.city?: Adcock
VIJI.3NL..3 Mar. ‘91: G+ i“ rhc red wnrl& inrcrviCorneau . Dcsi~
plicacia” develop=
wi+ C++ap
cr~rin~ muable objects
& Vilot. \DOS\C++ and wink:
Lane . Turoriak Ob
M.mdelmhn
dam wmm.”icatio”x
Vol.3 N0,4 April ’91: Using multiple inhmim”m to in,pkmcnr da~
krmctiim
Carrel. A cririqm of the Skiplim/tiiative
Dai~
Array . . .
Took far objccr-orimrcd daigm kl
VLd.3 No.5 M.y ’91: Using mmrim to n-duaw C++ Mane/.
kui.E my th.”ghrs on &jcaaricnred
Ccd
pmEmmminK SchiAel,
DmiEni”g with exccptinm Bmch & Vi/et . \DOS\C++
bierarchiw Lane
kc&
VOI.3 N0,6 Ju”, ’91, ANSI C++ Updam worki”~ 011h.
C++ da
hmrk:
drtaik
Boc.ch & Vilot . Tutorial
car~rim
●
\OOS\C++: Applicarior
Larfe
VOI.3 No.7JIdy/Auwsr
’91, Tbr USENIX C+, Adva”md Topb
Workshop
. Dcsigw workinE tirh misting ~ccms
Davidson
tda-
~P
dam hicrtics
C++ Primer
VOI.3 No.8 Sqr’9 1: Sn@cIIm tirh CRC A
. Dmi~
Objecr+ric. ted md~is
& dcsb
kk
R.viw
gmmming wirh Turbo C+% &ic&
Lane
in AT&T: CW/ief
Booth & Vilof. T..
Object-Oriented
Pro
by Bibw
------
------
-----
-----
1
C++ Report Back IssuesOrder Form
Yes, send me back issue(s):
Vol. 1, Nos,
:
vol. 3, Nos.
Vol. 2, Nos.
SMte
i“
at +44.223.423123.
of behavior f.
Bcuch & Vilot,
ANSI C++ UpdaU mccptiom a.xcpred: Sak!
‘ -~~%rn~
I*
cksshicmti,m
i Gy
on objcct-
a moti
Tbr object snucm
Coma
Sonch & Vilot.
jcu.
ensai[ at psrain @sjcius.teh. nokia.j, or by phone
seoeralpapen
Programming i“ C++
waysIn suck a m,, prr 2: 5wstrup.
application kl.~rs:
Phone
UK and hm published
T.
C++ — A Guide kr C l>m~rammcrs
oriented method.i arui C+ +. He can be remhed by
of hex,
& Vild.
Ball. Phpical dcsi~
of multiple i“h.-irm=
:
I
Bwch
VId.3 NO. I Jan ’91: Fi”icc sram Mti,”m
[ Name
I
, Addrew
opment and Reuse from the Univesrity
obj-s
a at, pan 3: Stroustrup. Bmk review
torhl: CRC car&: C~~’fl.
r ------
Emch & Vilot. Turo
Eckel
dbn: Btick. Objca and &
Vcd,2 No.6 June ‘9o. ANSI C++ updam 5akJ. T.,orial: Altcrr.a-
Cam-bridge,
Dmigm ~nntii”g
WP r. sti
Booth & Vilot. \DOS\C+#
. Tumrkk DA*
bl=~ tclllPk~a
X3J 16
projtmk
Identifying and docummri”~ elms and objecr wmantics
tive impkmc”mtio.s
Ltd.,
Still.
m b.?:
VOI,2 No.5 my ‘9& Tbc Sc.nnd USF,ttlX G+ Cnnti
industrial development. ■
Gossain is a Senior Desip
Miller.
mriak Stien
Canrainus and itcmmm in G+: Eckel
to large-scale
Tehcommunicatioru
C++ U@w
Vcd,2 NLI.1ONov/Dcc ’90 A rcporr on rhc C++ arWork~90 Con.
Saks . Desi~
to fully appreciate it in just two readings.
from
Objecr.
in C++ 2,0: Koen!g & Liw-
. T.mi-iak V1rrti mbk optimization
clxm
‘W ~SI
~plc Schwafi.
& Vilot
vim
Sanjiv
dmigm Booth & Vilot . Ohjcaa a
HCRIC++ & dbxtm 2.2
Dmi~
man . l&n~ing
Lane . OmiEn
NMU mangLing in 00S:
Mancl - T.mriak %mc
br mnmincr b:
B-h
Iecb-
Mulh”’s Objccr-
i“ C++
VOI.2 N..3 Mm ‘W. ThcANSI C++ owti.ML
feel, so much information condensed into
vcmion;
of Pascal m C++ Cnnvcmio”
w stop worrying abaur it and
Oric”ud Program Dmig. wirh fimpks
rich in valuable information. There is, I
Iifcry
lmk a the hlIH dw lib~
Saks. Dcsi~. Inhcriunce rdatio”shi~
Bmh
C+* Goldstein.
“iqm
of development is explained in a lucid and
Nokia
VOI.2 No.9 0.,
j,cr+ric.=d
convincing manner.
In summaty, I found tha[ this book is
small-scale programming
Ball
Lipp-
man’s The C++ Prima
behind the authors’ approach to each singe
and am
Eunctia” argumenm md IISIILU:Cargil/ I Pmd.cr rcviw
Vd,3N0,2Fcb’91:
i. ~
m du L+ ndi-
Vrd,2 No, 1 Jan “90 How 1 karnd
rect one. The importance of and rationale
ds,
Turbo C++ 1.0 (ph”~d
Evolvi”~ an objcm-ric”ud
rid: Ohjecr-oricnxd
Programming in C++
b indtion
. Turorial: Uscf.1 w
independence is, in my opinion, the cor-
k
and rhc soti
VOI.3 No.3 .Mar ’91: C++ i“ &c &
Vol.1 No, 10 NOVIDCC‘B9 Implementing muhipk inhuimnm
The emphasis on modelling and language
development
Vdu=
Gnu G+ Cnmpikr
Vol. 1 No.9 CkI ’89 NEWqualifim br mcmhu hctim
. kk
&rhd
VO1.2 NLI.8 Scp ‘9o O-O Be.fiIs
C++: Hiineke . DtiF.
srnuI.rs jordan. Tutorial: PmWIng G+ p~
tilnk it provides an mcellent companion
ing object-oriented
md C
Poh~s C++ for C Pro-
(phorompkd w.io.)
Ti~ann
large-scale object-oriented development. I
by Wfi-Brock
. Book rcvi-
Vol. 1 NO.B Sepr ’09 CLaS dnivario” a.d cmuktion nfvinud mn-
able for anyone interested in attempting
to the t-
C++ Iibrarim— !.M[rcctories
& Bollela
clmec Koenig & Stroustrup. Tuwrid: Objrns m burn
The material in this book wodd be suit-
Inhcritancc, virti
Design 5uausY, *,
CICSooth and Vi/et. Tutorial: A cl-
km
Vol. ] N..7 Jdy/Aug ‘8% C+% as cloR as piblc
liked more solutions provided. Maybe *IS
point could be addressedin fiture editions.
Weiner &
rial: Sixmcn ways to stack a cac Sfroustrup . Prod”cc review
R. 2: Rafrer
VOL.]NcI,5 Mzy ‘E%Using inlinc finctiom flcctiwly,
pap 77
and Vilot - Book rcviw
works
farc++
wmpicd vtio”)
. Turord:
. %SII:
Waldo . \DOS\C++:
T.mrid: WIIaris ,his?: Lippman. Product rn.iw
FL327%
VId.2 N0,7 JuLy/Aug’~
Ball. Prcducr ~
C++ Compiler& Dc-
Vml.1 h’o.3 Mar ’89 The imponmcc of KtnE abstm.c ]ohnson
7659, UM or cad (40B 628-3602.
mntinucdfim
Oregon S.ti
Beach
Pinsom’s The C++ Workbook
DS0u2a
. As$ignnunt M initiali=tion in C+* Ball. Is G+ m. c.mplm?:
C~ins.
available
& impknunmrion
:
1
I
~mpany
i
Zip:
I
Make cbeck~poyabk to: C++ ~ort.
Checksmurt bcpoid in U.S. &llom and drawn on a US. bank
:
:
I
Remit to: The C++ Rgort
Atrn Back Issue Dept.
I
I
I
I
588 Brosdway, Suite 604, New York, NY
For further
I
I
10012
info call (212) 274-0640
or fax (212)274-0646
Clrele 29 on Reader Wrv”= Card
DIKA
I
I
I
Product
News
What’s new?
Saber Sob
announces
integration of Saber-C++ with
ObjectStore ODBMS, signsmlume
purchase agreement with SunSoft
can also be used with Computer Innova-
the capabilities of traditional 4GLs and a
tions DEBUG*2000
migration path to object-oriented
Forfirther
source debugger.
in.rmation,
Innovations, Inc., 980 Shrewsbu)yAve.,
F&,
VZ
NJ07724,
tech-
nology. FACETS makes it easier to create
contict Computer
Tinton
screen-breed, data-intensive applications
such as order entry, financial processing,
(201) 542-5920.
and other data base-oriented 4GL applica-
Programmer V2.O delivers
software components
Saber Software announces integration
of Saber-C++ with ObjectStore ODMS,
signs volume purchase agreement with
SunSoft Saber Software, Inc. has
components VZ CORP announced
announced the integration of the Saber-
availability of VZ Programmer V2.O for
C++ programming environment and the
ObjectStore object-oriented
data base
development package which conta ins the
management system from Object Design,
functiodity
Inc. Developers
nents for applications developers. VZ Pro-
agreement, Gemini Consulting, a subsidiary of the Paris-based Sogeti Group,
acres to the ObjectStore database through
grammer’s complete development envi-
has made an equity investment in Parc-
Saber-C++ . Objeccs created in Saber-C++
ronment generates easily-modified
Place. The two companies will work to-
cars be stored in the ObjectStore database.
Likewise, objects stored in the database can
expendableapplications. A developer’s own
gether to enhance object-oriented
software component library, created with
nology to firther
be “transpare ntly” retrieved and brought
VZ Programmer, is an wendable library of
Gemini Gn.sdting’s large base of corporate
into Saber-C++.
announced a major purchase agreement
appli=tionswhichmayincludea graphld
userintefiace(GUI) or multiple applica-
will collaborate with Gemini to intend the
under which it will provide 300 limns~ of
tion functions encapsulated into a single
its Saber-C++ and 100 licenses of its Saber-
component. VZ Programmer’s use of the
Objectworks\Smalltalk portability capabilities to include information sources such
C programming environments to SunSoft,
C/C++ languages increases p roductivity
as corporate databases.
the systems so f~are
of DOS Windows and 0S/2 PM software
Forfirtber
Microsystems. The products will be used
development.
tems, 1550 P~mouth
for both ongoing and new development
projects,
Forfirthrr
Forfirthcr
now have interactive
Saber Software
in+wtion,
Inc., Co~oraw
subsidiary of Sun
~
(613
VZ Programmer V2.O delivers software
the
DOS Windows, m integrated applications
of reusable software compo-
infirrnation,
Wmt South Tmph
84101,
conwSaberSo@are,
Headquarter,
~m~e,
also
tions that are fully portable across UNIX
and
contact W CORI? 57
St., Salt Luke Cig,
UT
10 Fawce~St.,
498-3000.
Computer Innovations, Inc. annound
PiucPlace Systems announces
shipment of FACETS, ParcPlace and
Gemini Consdting teamup
ParcPlam Systems announ~
Gemini Consulting, a worldwide strategic
management mnsdting firm, announced a
mrporate investment and software develop
ment agreement. Under the terms of the
tech-
address the needs of
clients. As psrt of the agreement, ParcPIacc
information,
94043,
contict ParcPh.e
St., Mountain
SyI-
fiew,
CA
(415) 691-6700.
Addison-Wesley announced
Advanced C++ Programming Styles
and Idioms
(801) 595-1352.
02138-1110,
Omputer Innovations announces
C++ hr UNM SVR4
workstations, MS Windows 3.0, and Macintosh mmputers. ParcPlace Systems and
Addison-Wesley PubIii
b. annound
the publication of Advanced C++ Programming Styles and Idioms by James O.
Coplien of AT&T Bell Laboratories. The
shipment
book helps programmers to develop their
programming expertise by giving a feel for
the availability of Computer Innovations
of FACETS, ParcPlace and Gemini Con-
C++ Version 2.1 for UNIX System SRV4.
sulting team up ParcPlace Systems an-
the styles and idioms of the language. The
UNIX System 5 Re vision 4 developers on
nounced that it has signed a distribution
Intel 80386 and 80486 platforms can now
agreement
approach IS organked around the abstractions that C++ suppom abstract data rypes,
enjoy a complete C++ language implementation that conforms to the latest
FACETS,
and
begun
shipment
of
(4GL) application development tool from
combining types in inherimnce structures,
object-oriented programming, and multi-
a fourth generation language
Reusable Solutions to be used with Ob-
ple inheritance. The book also explores id-
Intel,
jectworks\Smalltdk. The combination of
ioms that the core of the C++ language
and others are supported.
FACETS and Objectworks\Smalltalk de-
does not support directly, such as virtual
Computer Innovations C++ Version 2.1
livers an expendable object-oriented 4GL
constructors,
works with ting
development environment by providing
vanced garbage collection techniques. It
AT&T
standards. UNIX SVR4 systems
from AT&T,
NCR, UHC,
80
ESIX, InterActive,
UNIX system tools and
prototype objects, and ad-
]OOP
O~OBER
1991
—
Product
News
–
shows the benefits and potential pittils of
ment for the GemStone object database
that supports DLL calls: C, C++, Turbo
using advand
management
Pascal
C+~ usesexamples to show
how C++ abstractions can be combined ef-
system (ODBMS).
IBM
plans to use GemStone in a mmufactur-
fectively provides guidelines for translat-
ing automation application. Financial de-
ing object-oriented designs into C++ im-
tails of the agreement were not disclosed.
plementations;
“This agreement further substantiates
covers all the features of
Relesse 3.o of C++, showing how templares
the growing acceptance of object databases
can be used to support reusability, and ad-
for commercial applications,” said Donal
dr=ses important large-scale system devel-
OShea, president of Servio Corporation.
opment issuesincluding library dmign, ex-
“ODBMSS have reached the level of ma-
ception
turity that is allowing major players in the
handling,
and
distributed
for Windows,
SmalltdW,
Forfirtberinfimation,
Techniqws,
Visual
Basic,
Actor, and many more.
contict Data
Inc., 1000 Business CenterDr.,
120, Savannah, GA 31405,
Ste.
(800) 868-8003.
Whitewater announces
ObjectGrapbia for Twbo PA
Wlndovvs
for
processing. Thii book is geared toward any
industry, like IBM, to use them internally
~ltcwarer introduces the newest version of ObjectGraphics, a Klgh-level, ob-
systems or appli=tions programmer working in C++.
to stay mmpetitive in the marketplace.”
ject-oriented graphics library that extends
Forfirther
infinrsation,
~ Pubkhing
contact tion-
Co., lJacob
0186z
Wm-
Way, ReadinG M
Forfirther
infirnuttion,
contact Servio Colo-
ration, 1420 Harbor Bay Pkwy., Absveh,
94501,
(415) 748-6200,
CA
fm (415) 748-6227.
the power of Turbo Pascal fot Windows
to create comprehensive, platform-independent support for graphics including diverse shapes, bitmaps, irons, multiple fonts,
(613944-37oo.
and t-styles.
Object Design introduces CFI
proto~ing
program for
ObjectStore
typing program for ObjectStore
Object
jectWindows
Tigre ships multiplatform rapid GUI
class library used for developing Windows
libraty in Turbo Pascal for Windows. Ob
prOgramaPPli~tiom-
W’hi=ter
and Borland hve
jointly submitted a dtafi standard of Ob-
tems speeds development
jectWlndows to the Object Management
of complex
graphical user interface software, rapidly
Group.
work initiative (CFI) prototyping program
creating applications in M color deliverable
Forfirther
for its object-oriented
database manage-
witbout modification on a range of plat-
ment s ystem, ObjectStore. The CFI de-
forms. This new development system, con-
sign representation programming interfaa
sisti ng of the Tigre Intefi
(DRPI), which Object Design implements,
the
&tie
posed by CFI to provide userswith a m-
Release4 by PatcPlace Systems as its script-
of exchanging dmign information among
point tools within a CAD framew ork,
ing language.
For+rther infirrnation,contactTi~e Objcti
“CFI’S mission is to develop guidelines for
Sy~ternr,
3004 MissionSt., Santa Cruz, CA
design automation frameworks which will
95060, (408) 427-4900.
of
said Thomas
Atwood,
chairman
and
object-oriented
Tigris
Data
Techniques
ImageMan
Library
in+rrnation, contactObjectDeri~,
One New Enghnd fiecutive Park, Burlington,
MA 01803, (61~ 27&979Z
GemStone ODBMS Iimnsed for
strategic ammercial application
Serviobrporation
The Whitcwa-
60201,
(708) 328-3800.
multiuser
introduces
for
Computer Innovations announms
the releaseof DEBUG*2000 for
mm SVR4
Computer
Innovations
announced
availability of DEBUG*2000
Data Techniques introduces
ImageMan Library for Windows
CFI, Object Design is committed to sup
plying CFI-compliant interfaces to ObForfirtber
contict
system usesObjectworks\Smallti
founder of Object D&gn, “As a member of
jectstore.”
information,
ter Group, 1800 Ridge Ave., Evanrton, IL
Designer and
is a procedural inte rface guideline pro-
a vari ety of tools from multiple vendors,”
is a language-independent
rning Environment horn Tigre Object Sys-
Daign, Inc. has announced a CAD frame-
enable the coexistence and aoperation
extends the
TIgre ships mtdtiplatform rapid
GUI application builder
application builder The Tigre
Object Design introduces CFI proto-
Objedraphia
power of the ObjectWmdows graphics claas
Windows
ImageMan,
now available from Data
Techniques,
Inc., is an object-oriented
SVR4 on Intel 80386
the
for UNIX
and 80486
plat-
forms. DEBUG*2000 is Computer Innovations’ popular fill-screen, multiwindow,
source-level debugger for C, C++, and Assembly
programming.
DEBUG*2000
works with sll development rhat adhereto
the SVR4 standards including AT&T’s C
Windows libra~ &at allows developers to
and C++ and Computer Innovations’ C++
add advanced ima ge display and print
for SVR4.
DEBUG*2000
capabilities
tions.
to their Windows
ImageMan’s
applica-
object-oriented
approach allows applications to access a 11
types of images with the same set of stan-
announced that International Business Machines Corpora-
dard function calls. Because it is supplied
as a Windows dynamic link library (DLL)
tion (IBM) has signed a licensing agree-
ImageMan cars be used with any language
lets programmers de-
bug their programs without being experts
in debugging. Special support for C and
C++ is included (including the ability to
easily display dam structures of all kinds).
For C++ programmin~ variable names ue
presented in human-readable format and
81
THE
– AdvertiserIndex–
Page#
00P
DIRECTORY
Circle
87 ................................AGS InformationServices(Recruitment)
89 ........................ ........ArrificialIntelligenceTechnologies,Inc. (Recruitment)
88 ................................Ascenthgic Corporation (Recruitment)
88 ................................Baldwin-Rorrester,Inc. (Recruitment)
83 .........Berard
...............BerardSoftwareEngineering
C4., ............9 ................Bor1andInternational
57 ....-.......48...............-C++ at Work Conferenm
79 ............29 ................ The C++ Report—
Back Issues
59 ............23 ................ The C++ Repoti
88 ....... ,,.......................Contract Solutions (Recruitment)
C2 ............34 ................Digitalk
37 ............45 ....... ......... Focuron Ana~sir &De~ign
13 ..............8 ................ Franz
4......Glockenspiel
............Glockenspiel
C3... .........59 ................Gold Hill
77 ............32 ................HotLineon Object-Oriented
Technology—
43 ..............4 ................Instantiations
82.., .........5 O................ Intemationd
~andy 425-page sourcebook
ins everything you need to
an 00P-related
purchasing I
OOPDirecto~
39 ............ 19 ................ Itasca
71 ............31 ................]OOP—
Back Issum
on:
Badt Issues
90.., .........47 ................]OOPVldeo
711..........54...l ...... ...... Knowledge Systems Corp.
88 ....... ......................... Lee Johnson International (Recruitment)
29 ............52 ................Lagickts
87 ...... ..........................btus
(Recruitment)
200 Wrslparlies
ly 300 prodwts
titants & seruices
CLrtick?s
rrts of ~
~TQP& by stir/article
erences & setirs
33 ............26 ................Lund Software House
8 ............22 ................M1crotec
ss-referenced by languages
& systems supported
45............lo ................oasys
3 ............17 ................ Object Design
15 ............60 ................ Objecr International
o-o
eAcca?ss tothe Entire
hno[~
Spectrum at Your
85, ......... O@ectMag&ine
........ O@ectMag&ine
Mn-ps
64 ............30 ................ Object Orchard
. ..-.
55.. -...........6 ................Oregon Software
17 ..............3...... .......... Paradise Software
Foreign
A enclo=d @yable to 00P -)retgn ordera must be prepaid in US
}drawn on US bank)
ClVisa
D MC
rge my
#
Exp_
53 ............21 ................ Qualware
49 ............43 ................Rationrd Consdting
56 ............56 ................ Set Labs
:ure
51.1 ..........20 ................ Simr.da
Rtport
21 ...... ......28 ....... ......... Softpert Division, Coopers & Lybrand
47 ............25 ................ Solution Systems
Sny
Ss
State
Country
40 ............53 ................Systems E.wentials
63 ............55 ................VC Software instruction,
25 ............11 ................WhiteWater Group
86.., .........39 ................ The XJoumal
65 .. ............7 ................Zuniq
82
I
$71
3 Domesttc
75 ..............5 ................ Prentice Hall
67 ............49 ................ Swbh
.................
GmbH
o:The International
E
DOP
Directory,
P.O. Box 3000, Dept. DIR,
, NJ 07834, or order by phone (212) 274DI KA
FAX (21 2) 274-0646
mr Services,
c
:
9
~
..=
Object-Oriented
Software
Engineering
I
Products
I
Consulting In
Training In
Object-Oriented
Object-Oriented
Technology
1
I
Software Engineering
L Technical
r
ObjectOriented
Project
Manager
k
‘ObjectOriented
Modeler
Berard Software Engineering meets the needs of its
clients with a comprehensive approach that covers
more than just definitions and references. Understanding the procedural, cultural, political, and competitive
aspects of object-oriented technology is equal] y important for the success of any project.
:si
The company’s founder has been heavily involved in
object-oriented software engineering technology since
1982. During this time, he has:
9
conceived of, and managed the development of over 1,000,000 lines of object-oriented software,
●
researched and documented many key
aspects of object-oriented software engineering,
●
trained thousands of individuals in object-oriented software engineering, and
●
provided consulting for specific objectoriented software engineering problems
for more than 50 clients in the U. S.,
Canada, Europe, and Japan.
For more information, contact Dan Montgomery at Berard Software Engineering,
101 Lakeforest Boulevard, Suite 360, Gaithersburg, Maryland 20877
Phone: (301 ) 417-9884 — FAX: (301) 417-0021 — E-Mail: dan@bse.com
Circle 59 on Reader Service Card
Inc.,
-
Product
News
–
class/method definitions can be displayed.
browse classes and related merhods, even
dows development today, not in the dis-
Permanent and pop-up windows are used
in code that won’t compile in the current
tant hture.”
to present information on the program be-
image, e.g., when porting V/286 code to
ing debugged. Extensive use of menus and
V/Windows.
Most significantly, Actor now offers
database developers access to Windows-
lists saves typing, Keystrokes are intuitive
classes a
and on-line help is provided.
single keystroke,
Supported operating systems include
UNIX SVR4 from AT&T, Intel, ESIX,
Dell, Interactive Systems, UNISYS, NCR,
UHC, and others. UNIX SVR3.2 versions
are already available, and other ports are
For@rtbw
Single methods or whole
be loaded into the image with a
contact SojiPert Sy.-
Coopw~ & LYbran~
621-3670,
fti
(61fl
One Main
02142,
dox, DBase, and Excel files. For an additional fee, users can purchase DLLs for
SQL Server, DB2, Oracle, and 0S/2
Ex-
tended Edition Database. An Actor class
in progress.
For firther
language (SQL) &tabases, A set of dynamic
link libraries(Dk)
provide access to Para-
621-3671.
St., Box z Cambridge, ~
(Glfl
Whitewater is introducing an
object-oriented interfam to smctured query
information,
ttnu Division,
based 00P.
information,
Fa&, NJ 07724
library provides uniform access across all
contact Computer In-
novations, Inc., 980 Shrew~bury Ave., Tinton
Gold Hill announas
GoldWorks III
The popular expert system development
(201) 542-5920.
environment releaseclin May, 1991, under
AMIST Release 3.5 ships
databases.
Actor is a Windows-hosted
develop-
ment platform, allowing users ro create ap-
Microsofi Windows 3.0, is to ship on IBMs
plications for windows in Windows with-
R/S 6000, Hewlett-Packards HP 700, md
Sun Micro~tem’s RISC-based platforms in
out having to suffer the complications of
developing in DOS. The new version
the fourth quarter of this year. GoldWorks
boasts a significant improvement to Ob-
III is a hybrid tool supporting rule frames
jectWlndows, Actor’s class Iibraty that lets
AM/ST Release 3.5. AM/ST, the Applica-
and object-oriented programming. Gold-
developers
tion Manager for Digitalk’s Smalltalk/V,
is a sokre
engineering environment for
Works’ rule base utilizesforward, backward,
quickly and easily. In addition, Actor is the
only devdopment platorm that offers trtdy
The So~ert
Systems division of Cooper &
Lybrand announced
the availability of
create Windows
interfaces
Digiralk’s SmaUmlk/VPM and Srnalltalk/V
and goal-directed forward chaining for inferencing. This latest version is to include a
Windows object-oriented
fill implementation of Common Lisp Ob-
Actor is available in two versions: Ac-
ject System (CLOS). This functionality is
added to GoldWorks’ powerful developer
tor 4.0 and Actor 4.0 Professional. Actor
programming
environments.
AM/ST defines Smalltalk/V applications as logical groupings of classes and
methods, which can be managed in source
files independent of the Smalltalk/V im-
inte~ce,
graphics toolkit, menu interface,
and external interfaces.
Gold Hill, Inc. provides a wide range
safe mtdtiple inheritmce via protocols.
4.0 is for users who want to learn Windows development and object-oriental programming. For developers that need SQL
ac~s, Actor 4.0 Professional adds SQL li-
of products inchrding GoldWorks, Gold-
braries for DBase, Excel, Paradox, and
Works Runtime, Golden Common LISP
ASCII, plus the ObjectGraphics
while other developers can browse the ap-
(GCLISP), GCLISP Developer, GCLISP
Developer Runtime, and consulting, edu-
and the Wbitewater Resource Toolkit. Ob
jectGraphics 1.1 now offers full device-in-
plication sourm code, but cannot modi@ it.
cational, and supporr services.
dependent bitmap support, palette anima-
age. Applications
source control.
represent the unit of
An application
can be
locked and modified by one developer,
tion, and arbitrary scaling of images to
Multiple revisions can be managed easily.
AM/ST provides automatic documentation templa~, execution tuning and pro-
library
create graphid user interfaces (GUIS). The
filing tools, cross-reference browsing and
Whitewater introduas Actor 4.
WhiteWater Resottr~ Toolkit lers users create and cttstomim Windows resources such
analysistools, and graphid disphys of class
and application hierarchies.
Whitewater annound it is releasinga major upgrade of its Actor object-oriented
as dialog box=, bitmaps, cursors, icons, accelerator tables,string tables,and pall-down
Softpert Systems also announced a
brand new object-oriented product, the
programming (OOP) platform. Actor 4.0
now offers access to the most popular data-
menus in a WYSIWYG
ChangeBrowser for Digitalk’s Smalltalk/V.
bases, safe mtdtiple inheritance, and an en-
ChangeBrowser 1.0 is available for Small-
hanced ObjecrWlndows class library.
talk/V PM and Smalltdk/V Windows,
The ChangeBrowser supports browsing of the SmallralW
change log file or
any file in the Smalltalk/V chunk format.
information,
fashion.
contart Wbitewater,
1800 Ridge Ave., Evan~ton, IL 60201,
(800) 869-1144.
“This is the seventh and most signifimnt release since we introduced Actor in
1987 on Windows 1.0,” says Mark Achier,
president ofwhitewater “WItb Actor, de-
With a single command, you can restore
all changes made sinu the last time the im-
velopers have a pure and simple path to
age was saved. OR, you can selectively
livers all the tools needed for serious Win-
84
Forfurther
object-oriented programming, Actor de-
JOOP
OCTOBER 1991
-....—...—
—— .— .——— .
EVERYPIECE
IN OUR
INFORMATION
MAGAZINE
IS REUSABLE.
- he concept of reuse is quickly
expanding on an international
level,
Reuse provides for a more efficient, less
expensive environment.
Object-based
development will improve the quality of
your work by avoiding redundancy
of
efforts and duplication of costs — saving
you valuable time and money.
Object
Magazine is an international
publication targeting the field of object
orientation. Every issue is dedicated to
informing
both experienced
and beginner
computer
professionals
on
getting
the job done quickly
and
effectively using object technology.
We
discuss
analysis and design methodologies, language comparisons, developmental environments, database advances
and project management techniques. All
are based on real-world applications,
extractable ideas and advice that you can
use again and again in your object-based
software implementations.
Your environment
is complex.
Object Magazine strives to simplify it by
supporting
the widespread
growth of
object development and reuse.
Bringing you the
r
------
------
:, U ye5,signmeup
1
I
------
Object Magazine
generation in sofiware development.
n-t
------
------
SPECIAL
as a charter
------
CUTER
Subscriber
to
------
------
SUBSCRIBER
~
1 year (6 issues]
[outside
-$25
~
~fij
2 years (12 issues]
-$40
(rO,C@o.d~ must~
1
, ~ Bill me
[ Card
I
~
Charge
~ Visa
~
Master
Card
Exp. date:
#
~ Signature:
I
Object Magazine,
L ------
my
------
Circle 27 on Reader Service
Card
~;~=r’
j
,
I
pmpsid in US dolfs.adrawnon a US bank)
(payable to Object magazine)
Check enclosed
:
magaz~ni
the U. S., add $24 a year for air service)
1 Method of pa~ent
------
OFFER
I
1
I ~
------
Object Magazine
at the special low rate of $25, a savings of 14% off the regular rate.
:
------
Name:
I
Company
:
Address:
:
I
m
i
CitylStatelZip:
Telephone:
Subscrtbm
------
Svce.. Dept. OW,
------
~ Ba
------
3000,
Denvllle. M 07834;
-----------
fax (212) 274-0S46.
------
Offer qires
------
12/31/91.
------
DIKA
------
1
A
Objecl Magazine TM psnding
Special
QYes, sign
me
Charter
Subscriber
up as a Charter Subscriber to The X
$10 savings off the regular $49 rate.
Q 1 year (6 issues) — $39
O~”de
of payment
Method
2
prepaid in M
my
Journal
at,
— $78 J~-p .Xzfl
for eir service
doll.m
drawn on a US bsnkJ
on a US bank and made peyable to
D Charge
me
Q 2 years (12 issues]
the US, add $30 per year
[foreign ordem must b
Check encloeed (dram
D BIII
O~r
D VISS
THE X JWRNAL]
D MseterCsrd
Exp. dete
Card#
Signature
T~le
Name
Compeny
Addreea
c@/sT/zip
Country/Poawl
code
Telsphone
The X Journal, Subscriber Services, Dept XXX,
PO Box 3000, Denville, NJ 07834;
or fax 212.274.0646
DIK,
World-Class
KE
Opportunities
Throughoutthe U.S.
For over 23 years AGS, a NYNEX Company,
has playeda major role in designingand
buildingcomputersystems for renowned
companies in computer manufacturing,
telecommunications,
financial services, consumer
products and government. We employ over
2,500 computer professionals in 50 offices in the
U.S., Canada, and England.
We are seeking Senior Knowledge Engineers
with a minimum of three years’ experience,
Duties will include application selection, knowl.
edge acquisition, technology transfer, proposal
writ ing, educational instruction, systems
integmtion, and hands-on development with
tools such as:
s Level 5 Object
s NEXPE~
Object
s pm Kappa
QTIRS
ADS
s Am lM
● Kappa
● KBMS
●
AGS offers outstanding career advancement,
competitive salaries, and an excellent benefits
program.
TO find out why over 2 ,5C10computer
professionals consider AGS a “WorldClass”
employer, send your resume to:
AGS Information
Services, Inc.
Ami Pro
Work with the beat in GUI appliition software
development. At Lolus Development
(908)
654-9794
0S/2 PM
MSWindows
Corpotition Word Procaaslng tivision you’ll
build products
for Macinloah,
X windows,
0S/2
PM, or WIndowa. Experience the challanga
and enjoy living in sunny Allanta, cite of the
Software
Engineers&
GroupLeaders
1966
Olympi=.
Poeftlone In Atlanta require:
■
BS, MS, or PhD in computer science
■
US Cltizenehip or permanent residency
■
2 or mora years of application development in one of the following
National Resources Manager
Attn: Dept AI
1139 Spruce Drive
Mountainside, NJ 07092
Fax
Macintosh
X Windows
■
Macintosh
■
x windowa
■
0S/2 Praaentation Manager
■
MS Windowa
■
Serious C programming and debugging skills
■
A strong work ethic end the ability to get quality work done quickly wfih
your team. Good communication akllls helpful.
Seneti
include thrae weeks vacation, slock purchase plan, 401(k), and a
stimulating, focused small-group environment with big-mmpany indust~
leadership. We offer an oulatending eoflware development environment.
Apply Today. We’re Reedy to Start
Resume to Bruce Brownlee, Lotus WPD,
5600 Glenridge Drive, Atlanta GA 30342.
Phona (404) B51-0007 x266, FAX (404)
843-2353, AppleLink Ken Frenklin D2663.
An equal opportunity employer.
Lotus.
a
I
Ncent Logic
Corporation
orrester & mmpamy
Work on two leading edges
“ In~tive _
trIolsfossystem-leveltigners
“ Object+ted
develaprnent
for~ti
products
Multlple Benefits
●
Ertplore
how objectworks/smalltalkcanbe Ud to
developtivartced &sign aidsfor SystemEngineem
“ Gmwwitha smaller,dynamiccompanydedicatedm
theSII* of itsatomers
If youcan makean outstandingretribution in the
khitectuse of Object-ented Systems,ObjectChimtedSoWare Engi-g,
Object-Oriented
Data
ManagementandGroupware,QualityAssuranwof
Ob@t-OrientedSystemsEase of Leasrtinof Use
andhave>5 y- of SmaUtalkexperiencewitha BS or
MS,pleasesendyourresumew
Ascentbgic Corporation
1S0Rose OrchardWay, Suite ~
San Jose, CA 95134
0s call4os-M3a30
eanplcyer.
Anequal
_ty
Califorfliah
in
pmen~inent
tile ptvcumnlent
firnl
xpeciuiizing
atlcI assigttn~ellt
leading
edge
soJL’wam
designers and dewlopers.
of
visionaries)
Career and consulting opportunities uist
Baldwin
Forrester
and
Con~patly across the spcctninl of todayk
burgeotting
object
iecllflology
nlarketp[aee.
tllmugll
IJyou wish to assunze your place in {Ilis
utmordinary new wvrid, call Ms. Elaine
Kaspian at 41S 8562929, or FAX your
msunle to her at 852-9292.
!~tl’
Embarc;]dero
Road
●
Palo ,<lro, Calliorri.,1 94 ;O~. I ;9?
Obj=works/SmaUtalk is a tmdeanark
OEParcPlace Systems, fnc.
.,. LISTEN, even thoughyou’re not “looking” now.
Exceptional career-advancing opportunities for a ptictiar
person occur infrequently. The best time to investigate a
new opportunity is when you don’t have to!
You cm increase
your chances of bemminsawareof such
opportunitiesby gettinsyourresumeintoour fill-text
UWIOCKYWR~NTIAL
We have a full range of 00PS contracts across the
country and assignmentsto help you move up. We’ll
support you with a lucrative compensation package that
includes dental, long term disability, 401 K, life insurance,
vacation and holiday pay.
Raks $35. to $65. per hour.
.
Two Kww~ydin Dr. Silem NH 03079
FAX: (-103
-893420H
J.F.K. P.O. B(IX8886. Bost[m, MA 02114
in MA 800-227-8152
in NH 603-893-6776
Matchin~ Tahti b Technolo~
database which indexes every word in your resume. (We
use a scanner md OCR software to enter it.) bter, we will
advise you when one of our search assignments is an ~
match with your e~perience and interests; a free service.
We are a 17 year-old San Francism Bay Area based
employer-retained recruiting aud placement fim
specializing in Object-Oriented software development
professionals at the MTS to V.P. level throughout the U.S.
aud Canada.
We would like to establish a relationship with you for the
lon~-term, as we have with hundreds of other Obeet-Oriented
professionals. Now is the time for you to add a new node in
your network of antacts!
Established 1974
Iutem* le_johnaon@cup.pOrInl.com
Vo& 415-52~7246 FAX/BBS (8, 1, N. 1200 beud): 415-524-0416
555 Pierce St., Suite 150S, Albany, CA 94706
rj
Developingfresh ideastakesthe
ability to see things differently. And it is
4
this ability that has allowed Artificial Intelligence
Technologies,Inc.to thrive,
L
4
-w&
We’re attacking today’s most complex systems
challenges with Mat is considered some of the
world’s best software. Specifically, our Mercuy
KnowledgeBaseEnvironmentis the new standard in
Expert Systems Architecture, offering developers
unequaled performance, integration, productivity,
database connectivity, and modeling power.
.,::
4
Y
w
4.
“G
>.,..
Unparalleledacceptance
of our sotiare coupledwi~~’~,.
havecreated “-$~
<,g
/
in
cture and
Requirements include skillwith LISP. Knowledge of ‘C’,
Relational Databases, and Object Oriented
programming would be helpful.
A part of our team, you’ll enjoy an attractive
compensation and benefits program including stock
options, and assistance for on-going education.
Assignments are available at our suburban
headquarters, located about half an hour north of
New York City in scenic Westchester Coun~, or one
of our field offices.
You may have Mat it takes to join our team of
professionals. For confidential consideration, send
your resume to: HumanResourcesDepatiment-J,
Mificial Intelligence Technologies,Inc.,
40 SavvMill RiverRoad, Hawthorne,New Yofi
10532. We are an equal opportunity employer.
Ar#ificiaI
InPell;gence
Technolo .‘es
YF?
●
-
VIDEO COURSE
“Filled
icleas, insights and infomtion
yti can use right away!”
with
~
yt)u really need ti~ know heforc implementing
object-oriented” programming — no matter what
‘. your ilpplicatit)n.
\
>
since the
early 1980’s. L[)vc ;~nd Phillips have sl]cccssfully
advised miiny c[]mpanies
in their application of
ubjcct technology.” on these tapes wc prescnr nt)t
theory, not texrh~)ok — hut practical, proven
advice rhat works in rhc real w-[)rld.
crratitm
~
\
L)( the [)hjcct-t~rientcd
industry
;
.,
~
j
j
\
.,
objec~oriented
methods
Dr. Tom Love, software
management
A decade of object-oriented
experience in a three-hour
video course
consultant and instructor,
co-founder
of Stepstone
Reed Phillips, President
Corp.
of Knowledge
Systems
Corp.
Save time and money — no travel, no registration fees, no
hassles. Watch
In cooperation with Hewlett-Packard
Corporate Engineering & HP-TV Network
.
—.
In this four-part,
Part
Objetis
1
Complete
review
in
two-cassette
nutshell —
❑
and comprehensive
of the basics
- Easy to
understand
explanation
terminology
and relationships
among
objects,
binding,
dynamic
and
- Learn
the
and drawbacks
object-orientad
Code
clasaes,
inheritance
encapsulation
benefita
of
reuee
techniques
statistics
can be gained
orianted
of
with
reveal
what
object-
Pari 2 experiences
course
in using ob-
jects — Three project managers at
HP give sound advice and reveal
traps and pitfalls - Don’t reinvent
Part 3 Options for development
tools — History and mmparison of
object-oriented languages such as
C++, Smalltalk, Objective-C,
Actor. Eiffel, Hypertalk. Object
Pascal, MacApp - evaluate criteria such as education, develop
ment productivity,development
support tools, aystema integration,
and delivery issues - rwiew an
edit debugging cycle.
Ieeaons
team,
— Some costly
explored
analysia
ing objects
choosing
on training
& design,
~-- ------------------! Please
suring
realistic
oriented technology - Avoid costly
Get
productivity,
gaina
helpful
hints, analyze
mistakes: get inside tips on what
and look at the future
really works,
technology.
—
.—
the
reuse
of object
1
methods”
~
I “J Foreign
$265
:
~
[I 77 min.,PAL)
~ J Volume discount
PIUS $35 shipping & handling
deduct $50 per video for an order of three or more.
~ Method of paymenk
“dCheck enclosed
d Credit card
Card#
Signature
D1KA
(payable to
~ ‘~ purchase order # __.
“~ Visa
~
I
JOOP in US fundsdrawnon US bank)
—
4 Mastercard
Exp. _
i
1
I
I
I
I
I
I
!
Name/Title
Company
-
projects
object-oriented
~
productiv-
what
are from
------------------------------
rush me “Choosing
$195 plus $5 shipping & handling in US
the
mea-
delivery
~ d Domestic [ITT Min,vHsI
introduc-
environments,
today
Call (21 2)274-0640
into your organization,
ity and quality experiences,
have suc=asfully used object-
of your office;
or mail or fax this coupon for immediate
Part 4 Leeeons Ieerned end rec-
the wheel; learn from others MO
Circle 47 on Reader Service Csrd
Order
you will learn:
ommendations
technology.
and learn in the convenience
train as many of your people as you need.
Address
i
I
i
Download