., -, 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