scieee Open visual document viewer

ATLAS, a platform for transparently developing distributed applications

Fairén González, Marta,Vinacua Pla, Álvaro

Abstract

We discuss the design and implementation of a software development platform that allows unsophisticated programmers to include advanced features to their applications with no or very little extra information and effort. These features include the splitting of the application in distinct processes that may be distributed over a network, a powerful configuration and scripting language, and several tools including an input system to easily construct reasonable interfaces. We attempt to describe both the techniques used to achieve transparency for the programmer and what exactly a user must do to build new ATLAS modules.

Full text

A las : a pla o m o anspa en ly de eloping dis ibu ed applica ions M. Fai en and  A. Vinacua Depa men o So wa e, Ins i u e o Rob o ics and Indus ial In o ma ics, U.P.C. Diagonal 647, 8 ena plan a E08028 Ba celona, Spain +34 3 401 6739 m ai en,al a g @lsi.upc.es ABSTRACT We discuss he design and implemen a ion o a so - wa e de elopmen pla o m ha allows unsophis ica ed p og amme s o include ad anced ea u es o hei ap- plica ions wi h no o e y li le ex a in o ma ion and eo . These ea u es include he spli ing o he ap- plica ion in dis inc p o cesses ha may b e dis ibu ed o e a ne wo k, a p owe ul congu a ion and sc ip ing language, and se e al o ols including an inpu sys em o easily cons uc easonable in e aces. We a emp o desc ib e b o h he echniques used o achie e ans- pa ency o he p og amme and wha exac ly a use mus do o build new A las mo dules. KEYWORDS Dis ibu ed applica ions, So wa e de elopmen o ols, Ex e nal da a ep esen a ion 1 INTRODUCTION A las ep esen s an a emp o acili a e o p og am- me s in ou lab he inco p o a ion o hei applica ions o ce ain se ices a a minimum cos . In ac , A las helps hem build dis ibu ed applica ions (p oblems in ol ed in dis ibu ion we e o cused in [2]), p o ides hem wi h p owe ul congu a ion mechanisms and a mac o lan- guage and include a jou naling acili y, among o he hings. All hese asp ec s equi e a subs an ial amoun o amilia i y by he p og amme wi h he said ech- niques, and a ai amoun o p og amming o hem on each applica ion. In a esea ch lab like ou s a la ge amoun o so wa e is cons an ly b eing de elop ed o demons a e ideas, bu e en ually has o b e ew i en when ce ain unc ion- ali ies need o b e combined. I also emains in an un- nished s a us and is usually ha d o use o demon- s a e by anyb o dy excep he au ho , b ecause o he high cos o nishing up" he de ails. We hen eal- ized ha a de elopmen pla o m ha acili a ed he cons uc ion o his so wa e gi ing easy access o many sophis ica ed esou ces and es ablishing basic ules ha eased he join op e a ion o mo dules was aluable o us, since i enabled exp e imen al so wa e o g ow in a mo e ha monious way, and acili a ed e en he euse o old comp onen s. E ol ing om he ideas o iginally p esen ed in [9] we designed A las o his pu p ose. Since ou wo k is cen- e ed in Compu e G aphics applica ions we included ce ain mechanisms esp ecially designed o ha domain which we' e discussed in sp ecialized o ums [6]. How- e e by a he la ges p o ions o eo and o co de in ol ed e y gene al o ols usable by in e ac i e applica- ions in mos o he domains. The e o e A las can also b e iewed as a gene al p og amming o ol ha g ea ly simplies he cons uc ion o ai ly sophis ica ed appli- ca ions. In his pap e we shall p esen a iew o A las om his las p e sp ec i e, discussing he gene al asp ec s no p esen in o he publica ions ab ou i and showing how and in which ways i can enhance he so wa e de elop- men p o cess. In he nex sec ion we shall enume a e mo e conc e e ob jec i es and c i e ia used in he design o A las . Sec ion h ee will b iey p esen he solu- ion adop ed o he in e p o cess communica ion, and sec ion ou will desc ib e asp ec s o he design and im- plemen a ion o an A las applica ion om he p oin o iew o he use | he p og amme building he appli- ca ion. Finally we will u n b iey o conclusions and u u e wo k. 2 OBJECTIVES AND DESIGN CRITERIA The  s p io i y in he design o A las has b een o make i s inne wo kings as anspa en o he use as p ossible. To his end, some asp ec s may no ha e he in insically b es o mos p owe ul o mos exible so- lu ion, bu use s can build applica ions on A las wi h- ou almos any conce n ab ou i , ye ge ing subs an ial b ene s om i s p esence. In e ms o unc ionali y, A las includes hese ob jec- i es:  Low le el o pa al lelism . A las applica ions ea- u e se e al dis inc p o cesses unning concu en ly in he same o die en machines in a ne wo k; p o cesses encapsula e A las comp onen s o use mo dules. The use implemen s ou ines ha a e 1 accessible o o he p o cesses as emo e p o cedu es.  In e p ocess communica ion . Since he applica ion is spli in se e al p o cesses, hese need o com- munica e o e he ne wo k and exchange da a b e- ween p ossibly die en a chi ec u es. This gi es ise o many die en p oblems ha need o b e ad- d essed [1].  S anda dized inpu model . A g ea deal o eo in an applica ion's de elopmen is sp en in i s use in e ace. A las p o ides a uni o m bu exible iew o inpu s ha allows many die en dialogue mo des in a uni o m way, somewha ela ed o Ab- s ac Da a Views [3].  Congu a ion and mac o language . A exible ye p owe ul way mus b e p o ided o a p og amme o desc ib e wha is in each o his mo dules, and how i should ela e o o he s, and also o dene he dialogues o he applica ion and i s b eha io in a simple way.  Jou naling mechanism . This is no ye imple- men ed and only men ioned he e in passing. I is pa ially designed and will b e a he hea o o he se ices oe ed by A las .  Faul ole ance . Since he applica ion is sp ead ou among se e al hos s, i b ecomes mo e exp osed o ansien o p e manen ailu es (o he communica- ions o o any o he hos s in ol ed). Faul ole - ance is anspa en ly p o ided based on he jou - naling mechanism and on hea b ea messages sen by all p o cesses so ha hei s a us can b e assessed.  Reusabili y . Each use mo dule is comple ely iso- la ed om o he s (in a sepa a e p o cess) excep h ough a well dened in e ace desc ib ed in A - las 's p og amming language. Thus new comp o- nen s can inco p o a e and use eliably old ones. No all hese asp ec s can b e discussed he e, as hey would ake an ino dina e amoun o space. The ollow- ing sec ions cen e a ound asp ec s o he p esen b e a e sion conce ning he housekeeping o p o cesses and communica ions, and how A las helps use s build ap- plica ions wi h hese ea u es easily. 3 IMPORTANT ISSUES IN THE A las COM- MUNICATIONS MECHANISM 3.1 P oblems Tha Need To Be Add essed Since A las  s p io i y is o oe he maximum ans- pa ency o he de elop e , he design o A las a chi ec- u e mus hide he in icacies o he in e p o cess com- munica ions om he p og amme . The communica ions mechanism has o add ess p ob- lems like how o s a a p o cess in an applica ion, how o manage he in e change o in o ma ion b e ween p o- cesses and also how o de ec ailu es in he applica- ion communica ions in o de o know when he aul - ole ance mechanism should b e ac i a ed. To s a a p o cess in a die en machine i is necessa y o ha e a p o cess lis ening o a connec ion in he cho- sen hos ( his equi es o ha e knowledge o low le el connec ions in he op e a ing sys em), and i would b e also desi able ha he p o cess o b e s a ed inhe i s he applica ion en i onmen . The in e change o in o ma ion b e ween p o cesses has also an added dicul y when hey a e unning in an he e ogeneous ne wo k b ecause da a can b e in e p e ed wi h die en meaning dep ending on he a chi ec u e whe e hey a e used. Nex subsec ion explains how hese p oblems ha e b een add essed in A las . 3.2 The App oach Used In A las The A las a chi ec u e is ep esen ed in gu e 1, whe e he o als deno e p o cesses and he a ows ep esen communica ions b e ween hem. I is a cen alized a - chi ec u e whe e he p o cess dis ac s as he mas e p o cess and is he cen e o each A las applica ion. This a chi ec u e allows an in elligen dis ibu ion o b e managed, i.e. he dis p o cess is able o decide he p o cesses dis ibu ion dinamically dep ending on he ap- i ude o each hos in he ne wo k o un each applica- ion p o cess. The e o e, his mas e p o cess is he mos c ucial one in his a chi ec u e and also in he communica ions mech- anism b ecause i is he communica ions cen e o each applica ion. I is also he one o ake ca e ab ou he s a us o each p o cess in execu ion a any ime. This is easy b ecause o he hea bea mechanism designed in A las . The hea bea mechanism makes e e y p o cess b eing ex- ecu ed in he applica ion send a sho message p e io di- cally o he mas e p o cess gi ing he equi ed in o ma- ion o con ol he global s a us o he execu ion. This mechanism is e y use ul o de ec i a p o cess o he communica ion wi h i ail, he e o e i will b ecome nec- essa y o he aul - ole ance mechanism which, al hough i is no a ailable ye , has b een almos comple ely de- signed. This mechanism will b e sho ly discussed in he u u e wo k sec ion b elow. Se e P ocess Design The A las se e p o cess is a simple bu e y imp o - an p o cess in he A las a chi ec u e. I s ole, in he 2 B-Rep Volume Command Subsys em Inpu Subsys em Sol e Cons ain s dis se e @hos Oc ee Machine Figu e 1: A sample execu ion o an A las applica ion. cu en e sion, is o accep connec ions om he mas- e p o cess dis and un he applica ion p o cess e- ques ed by i . In u u e e sions i will also implemen a handshake wi h dis o achie e a ce ain deg ee o load-balancing. As he se e daemon is no mally un a b o o ime wi h oo p e missions, i mus change i s p e missions o he use 's p e missions b e o e execu ing he use 's p o cess in o de o p o ec he sys em. Mo eo e , o do ha i mus b e su e o he iden ica ion o he use and also inhe i he use en i onmen o achie e a success- ul execu ion. This en i onmen in o ma ion is sen by he dis p o cess in he connec ion message. The use iden ica ion mechanism is based on a sp ecial 32 by es long use iden ie ha e e y A las use mus ha e gene a ed b e o e he execu es A las o he  s ime. Communica ions D i e s Design An A las applica ion p o cess execu ion is based on a emo e-p ocedu e-cal l -like pa adigm. A p o cess can b e hen conside ed as a se o ou ines o do he p o cess e- la ed wo k plus a communica ions d i e o manage he in e change o messages wi h he es o he applica ion (see sec ion 4). The communica ions d i e is he main p og am o he p o cess, and i s ole is o lis en eques s o messages om he mas e p o cess and o he connec ions added and dispa ch hem as needed. The mos ele an e- ques s o messages sen by he mas e p o cess can b e ela ed wi h a ou ine call, da a answe ing a eques , o an A las e en no ica ion (see sec ion 4.3). The main execu ion o an A las p o cess is hen he dispa ch ou ine o i s communica ions d i e . I en e s in a lo op lis ening in he g oup o channels ac i ed by his p o cess ( he de aul is only he connec ion wi h he mas e p o cess), and when i ecei es a message i dispa ches i and keep on lis ening o ano he one (see gu e 2). Apa om dispa ching messages he d i e can also dispa ch in e up ions (like signals). In ac he hea bea mechanism uses he SIGALRM in e up ion. D i e add ime add channel ou ine call ATLAS e en ea men answe da a dispa ch dispa ch dispa ch imeou handling imeou sub channel op ional Figu e 2: D i e ole scheme. The de aul ea men o an A las p o cess d i e is managing he messages comming om he mas e p o- cess and he in e up ion o SIGALRM. Bu he ac ual d i e is much mo e exible (as can b e seen in gu e 2). I also allows he p o cess o add channels o lis en o, add a ime ea men o emo e channels added b e- o e. This exibili y only equi es o ha e implemen ed he ea men o messages b eing ecei ed by hese new channels. The A las communica ions mechanism is implemen ed using so cke s, and i s implemen a ion akes p o o he w app e classes o so cke s oe ed by he public domain package ACE W app e s (see [7] and [8]). 3 The bigges p oblem o sol e in communica ions b e- ween A las p o cesses is he in e change o da a. Since hese p o cesses may b e unning in die en a chi ec- u es, da a mus b e sen h ough he ne wo k using a s anda d ep esen a ion in o de ha hey ha e he same meaning o he die en p o cesses. Fu he mo e, hese da a need o b e {a leas e y o en{ accessible o A las i sel , which includes a p og am- ming language o dene use -machine dialogs o o he - wise in e connec o die en mo dules (see sec ion 4). The p oblem o ac ually ans e ing he da a obus ly has long since b een sol ed. Indeed we jus ely on XDR [10] o ha pu p ose. To a ain hese da a sha ing wi h he maximum o anspa ency o he de elop e , A las includes a mechanism based on ou da a s uc- u es (called Va iables ) used o w ap use da a in each p o cess ( his mechanism is ho oughly explained in [5]). These s uc u es oe access me ho ds used by he in e - p e e o he command language, and also encapsula e me ho ds o enco de and deco de XDR s eams anspa - en ly. Using his mechanism and adding also he au- oma ic co de gene a ion explained in he nex sec ion, he de elop e needs no b e awa e o XDR and indeed almos no b e awa e o ou in e change me ho d a all. 4 DESIGNING AN APPLICATION. BENE- FITS TO THE DEVELOPER. 4.1 T anspa ency To The De elop e The mos imp o an aim ha A las wan s o achie e is a high le el o anspa ency o he de elop e . Almos all se ices ha A las oe s o applica ions de elop ed o e i a e echniques ha no mally equi e a lo o sp e- cialized p og amming. The emphasis in A las 's design is o elie he p og amme om his eo . Many acili ies oe ed by A las , like dis ibu ion o he communica ions mechanism, mus b e o ally man- aged by A las in o de o achie e he maximum ans- pa ency o he de elop e . The p og amme need no know ab ou hese mechanisms and can concen a e on he ob jec i es o his applica ion. Au oma ic Code Gene a ion The A las p o cess communica ions equi e qui e a bi o co de in each p o cess de o ed o handshaking wi h dis , gene a ing he hea bea messages a he ade- qua e a e, p epa ing he a gumen s o p o cess ou- ines o collec ing esul s and enco ding hem o b eing ansp o ed o e he ne wo k, and dispa ching calls o p o cess ou ines. To handle his, A las au oma ically gene a es co de s ubs ha he de elop e mus link wi h his p og am. These s ubs a e cons uc ed om he in- e ace decla a ion o he p o cess (like in gu e 3), which con ains he yp e deni ions used o a iables o b e exp o ed and he p o o yp e deni ions o he p o cess ex e n ou ines. The gene a ed co de also includes s ubs o au oma i- cally ans e he use 's da a in o A las Va iables and backwa ds, h ough b idge ypes used o isola e he de- elop e om he de ails o he A las Va iables (which an ad anced p og amme can use di ec ly i he wishes o). The b idge ypes a e used o build in e media e ob- jec s wi h he da a s uc u e o he p o cess ob jec s (as p e hei A las decla a ions) bu wi hou he me ho ds o he p o cess ob jec s (which emain unknown o A - las ). Each b idge ype has also me ho ds o ansla e o and om A las Va iables , making b o h ansla ions anspa en o he de elop e . The only bu den on he de elop e is hen o p o ide his classes wi h con e sion me ho ds o and om hese b idge ype ob jec s which is usually i ial (unless he de elop e choses o ha e a e y die en s uc u e o he A las da a ha he one used in e nally by his p og am). As an example we can see some ele an p o ions o his au oma ically gene a ed co de in app endix. 4.2 Design P o cess O An A las Applica ion An A las applica ion is a se o p o cesses which can communica e b e ween hem h ough he A las com- munica ions mechanism. Each p o cess can b e seen as a mo dule oe ing some public me ho ds ha can b e used by he o he p o cesses. The e o e, i mus b e designed as a se o exp o ed ou ines ha may b e called by o he p o cesses. This should b e he gene al iew o a p o cess b elonging o an A las applica ion. F om he de elop e p oin o iew, a p o cess consis s o wo pa s: i s in e ace and i s implemen a ion. The P ocess In e ace The p o cess in e ace is a mo dule w i en in ATL lan- guage which denes he p o o yp e o he public ou ines o he p o cess and he needed yp es o hei pa ame e s and e u n esul s. The ATL language (desc ib ed in de ail in [4]) is an im- p e a i e and mo dula language designed o A las ap- plica ions. I allows o dene yp es, a iables, unc ions and p o cedu es ha can b e exp o ed ( isible o he o h- e s) o lo cal. I also accep s he mos common con ol s uc u es inside unc ions and p o cedu es (condi ion- als, lo ops, e c.) and ou ine calls b o h synch onous and asynch onous. Al hough only i s p o o yp es and yp es a e needed o a p o cess in e ace, he mo dule dening he p o cess in e - ace can also include unc ions o p o cedu es dened in ATL which desc ib e he in e ac ion wi h o he p o cesses 4 in he applica ion o wi h he use (e.g. asking o in- pu da a). ATL mo dules which a e no he in e ace o any p o cess bu dene he execu ion co o dina ion and in e ac ion b e ween p o cesses can also b e dened in he applica ion, and use s may dynamically add hei own. An example o an ATL mo dule wi h pa o he in e ace o a p o cess called olum can b e seen in gu e 3. Since i is an example i is no comple e, bu i shows he de - ini ion o a se o yp es exp o ed by he mo dule (some o hem a e needed as pa ame e s o ex e n ou ines), he p o o yp es o wo ex e n ou ines ( hese p o o yp es and he yp es o i s pa ame e s would o m he in e ace o he p o cess), and he desc ip ion o a p o cedu e (b e- ing also exp o ed o b e isible o o he mo dules) ha combines he execu ion o he p o cess ou ines, asks o an inpu da um ( h ough GETDATA ) and also calls o a p o cedu e o ano he mo dule ( se::Ou pu ). USE se; EXPORT #de ype poin STRUCT x -> eal; y -> eal; z -> eal; ENDSTRUCT EXPORT #de ype ace VECTOR [3] OF STRUCT p1 -> poin ; p2 -> poin ; id -> in ege ; ENDSTRUC T EXPORT #de ype simplex STRUCT name -> s ing; sides -> VECTOR [4] OF ace; ENDSTRUC T EXPORT #de ype scene VECTOR [100] OF simplex EXPORT #de ype p ope y in ege EXPORT scene o alsc; ... PROT EXTERN FUNCTION segmen a io n (scene sc, p ope y p) RETURNS scene; EXTERN PROCEDURE display_ sc ene (scene sc); ... ENDPROT ... EXPORT PROCEDURE Segmen S im pl ex () IS display_s ce ne (segmen a i on ( o a ls c, GETDATA(" In pu he p ope y alue"))) ; se::Ou pu ("Segmen a i on comple e d" ,"m ") ; ENDPROCED UR E Figu e 3: Po ion o he in e ace deni ion in A las o he olume mo deling p o cess ( olum"). The P ocess Implemen a ion Since gi ing he p o cess in e ace in he ATL mo d- ule allows A las o gene a e co de s ubs o implemen he communica ions d i e o his p o cess (see subsec- ion 4.1), om he de elop e p oin o iew he p o cess implemen a ion consis s o he se o C++ ou ines de- cla ed as ex e nals in he ATL mo dule plus he deni- ion o he C++ classes used by hei pa ame e s. This implemen a ion can also include wha e e he de elop e wan s as a p i a e pa o he p o cess. This pa won' b e isible ou side he p o cess. Figu e 4 shows how an A las execu able p o cess is gen- e a ed om i s sou ce les. The les depic ed on he le mos column a e hose ha he de elop e mus imple- men . The au oma ically gene a ed co de is di ided in h ee les: he a l p ocess.hh le denes he C++ p o- o yp es o he p o cess ou ines decla ed as ex e n ou ines in he ATL mo dule; he a l p ocess.H le has he b idge ypes implemen a ion o ha yp es used by he ex e n ou ines o he p o cess; nally he a l p ocess.C le implemen s he main co de o he communica ions d i e and also auxila y ou ines which con e A las Va iables o he p o cess C++ classes and backwa ds in o de o b e able o call he co e- sp onding p o cess ou ine wi h he co ec pa ame e s and esul a iables. 4.3 O he Bene s To The De elop e The e a e also o he b ene s p o ided o he de elop e ha mayb e a e in e es ing o b e men ioned:  A un ime, he A las ke nel keeps some s uc- u es con aining in o ma ion ab ou he s a us o he applica ion (wha p o cesses a e in execu ion, i he e is some eques wai ing o an inpu da a, e c). To gi e he opp o uni y ha an applica ion p o cess b e in o med ab ou changes in his in e nal s uc u es, A las oe s he A las e en s mecha- nism ha allows he p o cess o ask o a subsc ip- ion o a pa icula A las e en (ADD PROCESS when a new p o cess s a s in he applica ion o ADD INPUT when an inpu is p o duced by he end use , o example). Whene e an A las e en is p o duced he dis p o cess sends he co esp ond- ing e en message o e e y p o cess subsc ib ed o ha e en , and he d i e o he p o cess, when i ecei es his e en message, calls he ou ine a - ached o his e en a subsc ip ion ime.  In o de o add ess he s anda dized inpu model p esen ed as an A las ob jec i e in sec ion 2, A - las also oe s a gene ic inpu handling p o cess. I p o ides a window in which all he ex ual in e - ac ions o ccu (issuing commands o en e ing nu- me ical da a), bu can also b e ins uc ed o cap- u e e en s om o he windows (owned by he es o he p o cesses in he applica ion) and conside hem inpu da a o b e channeled o hose p o cesses. The inpu sys em is also ex ensible. In ac i is also an in e ace b e ween A las and an ex ended Tcl/Tk [11] engine, so sc ip s in Tcl can b e sen o i o ins an ia e new in e ace comp onen s. Using his A las comp onen he de elop e can p epa e he use in e ace o his applica ion al- mos i ially, and dedica e mos o his ime o he p op e sub jec o his applica ion. 5 (p o o ypes) ATLAS p ocessgene a ed ilesde elope iles a l_p ocess.hh a l_p ocess.H a l_p ocess.C (b idge ypes) (d i e main) p ocess.a l in e ace p ocess.h (C++ classes) includes includes p ocess.C p i a e pa + ou ines ex e n implemen a ion p ocess Figu e 4: C ea ing an A las p o cess.  The i ual machine ha in e p e s ATL co de al- lows b o h synch onous and asynch onous calls o ex e nal ou ines. Some p o cesses may he e o e ac as la ge ba ch p o cesses ha a e execu ed con- cu en ly wi h he applica ion. To endez ous wi h hese asynch onous calls, A las uses a simple de- ice: he i ual machine ags all ou pu pa am- e e s o e u n alues o an asynch onous call as di y", and any a emp o use one o hem as an - alue eezes he execu ing h ead. Thus asyn- ch onous calls may b e issued and o he p o ions may p op e ly awai hei comple ion in a anspa - en manne . 5 CONCLUSIONS AND FUTURE WORK We ha e p esen ed a so wa e pla o m designed o al- low de elop e s o inco p o a e ad anced ea u es in hei de elopmen wi h he leas hassle. I is p esen ly b eing used wi hin ou lab o p o se e al packages de elop ed he e, and also o build new ones. I 's design a o s he cons uc ion o eusable mo dules ha can ela i ely easily b e combined wi h each o he . This seems e y desi able, esp ecially in an en i onmen like ou s, whe e la ge p o ions o co de a e cons an ly b eing gene a ed by s uden s which la e depa . The use s may jus as easily add p o cesses o implemen a new applica ion o o ex end A las i sel . P esen ly, o ins ance, a menu-handling mo dule is b eing con- s uc ed, ha will hen b e a ailable o all o he A las applica ions o dene hei own, e y exible, menus. We a e cu en ly p o ing he cu en e sion (0.2) o A las o die en pla o ms, cu en ly including Suns unde b o h Sola is 1.x and 2.x, and HPUX, bu so on o include also SGI's IRIX 6.x and Windows NT. We a e also comple ing he jou naling mechanism, which will no only allow eplays o sessions, bu will supp o he aul - ole ance wi hin A las , and will p o ide un- limi ed (alb ei exp ensi e) undo's and edo's h ough a commi " blo cking ins uc ion wi hin he jou nal, and supp o o in e se unc ions. Among he nea u u e p o jec s, we plan o add some supp o o CSCW by he simple de ice o cloning he applica ion o he die en use s collab o a ing, and es- ablishing sp ecial connec ions b e ween he co esp ond- ing dis p o cesses, only one o which ac s as mas- e . This, al hough limi ed, would u n essen ially e e y A las applica ion in o an CSCW-capable applica ion, wi h no o ex emely li le eo by he de elop e s, as p e A las 's equi emen s. REFERENCES [1] G. R. And ews. Pa adigms o P o cess In e ac ion in Dis ibu ed P og ams. ACM Compu ing Su - eys , 23(1), Ma ch 1991. [2] R. S. Chin and S. T. Chanson. Dis ibu ed Ob jec - Based P og amming Sys ems. ACM Compu ing Su eys , 23(1), Ma ch 1991. [3] D. D. Cowan and C. J. Lucena. Abs ac Da a Views: An In e ace Sp ecica ion Concep o En- hance Design o Reuse. IEEE T ansac ions on So wa e Enginee ing , 21(3), Ma ch 1995. [4] M. Fai en and A. Vinacua. ATLAS. Sis ema de Co- mandes: Manual ecnic (in Ca alan). Repo LSI- 95-11-T , 1995. h p://www.lsi.up c.es/~ m ai en. [5] M. Fai en and A. Vinacua. In e p o cess da a ans- e in A las , a pla o m o dis ibu ed applica- ions. 1997. Submi ed o he OPENARCH'98 con- e ence. [6] M. Fai en and A. Vinacua. A las , a pla o m o dis ibu ed g aphics applica ions. 1997. To app ea in he p o ceedings o Eu og aphics Wo kshop on P og amming Pa adigms in G aphics. [7] D. C. Schmid . The ADAPTIVE communica ion en i onmen : Ob jec -o ien ed ne wo k p og am- ming comp onen s o de eloping clien /se e ap- 6 plica ions. In 12 h Sun Use s G oup Con e ence , 1994. [8] D. C. Schmid . Reac o : An ob jec b eha io al pa - e n o concu en e en demul iplexing and e en handle dispa ching. In P oceedings o he 1s Pa - e n Languages o P og ams Con e ence , Augus 1994. [9] A. So o, S. Vila, and A. Vinacua. A To olki o cons uc ing command d i en g aphics p og ams. Compu e & G aphics , 16(4):375{382, 1992. [10] R. S ini asan. R c 1832: Xd : Ex e nal da a ep- esen a ion s anda d, Augus 1995. [11] B. B. Welch. P ac ical P og amming in Tcl and Tk . P en ice Hall PTR. Upp e Saddle Ri e , New Je sey 07458, 1995. APPENDIX: AN EXAMPLE OF THE AUTOMATI- CALLY GENERATED CODE Using he p o ion o he olum p o cess in e ace shown in gu e 3 he A las co de gene a o makes au o- ma ically he les a l olum.hh , a l olum.H and a l olum.C which a e pa ially depic ed in gu es 5 h ough 7. #i nde __ATL_ o lu mh h_ _ #de ine __ATL_ o lu mh h_ _ #i nde NOHEADER #include " olum.h" #endi #include "a l_ olu m. H" scene segmen a i on (s ce ne, p op e y) ; oid display_ sce ne (s ce ne) ; #endi Figu e 5: The au oma ically gene a ed a l olum.hh le. Figu e 5 shows he co de gene a ed o dene he C++ p o o yp es o he wo ex e n ou ines decla ed in he in e ace. This le also includes he olum.h le im- plemen ed by he de elop e b ecause he p o o yp es use p o cess yp es only known by he de elop e co de. In gu e 6 we can see wo o he  e b idge ype deni- ions co esp onding o he exp o ed yp es dened in he in e ace: he mos simple one is he one co esp onding o a yp e deni ion which dep ends on ano he yp e de- ned b e o e, and he o he one is he one co esp onding o he mos complex one whose con en s dep end on an- o he yp e dened b e o e and i s me ho ds show how his b idge ype is made om an A las Va iable and back- wa ds. These wo me ho ds make p ossible he au oma ic ansla ion b e ween he b idge ype and he co esp ond- ing Va iable , isola ing he de elop e om his A las ex e nal ep esen a ion. The las one, gu e 7, shows a p o ion o he main co de o he d i e . This co de includes an auxilia y ou ine o each one dened as an ex e nal ou ine in he in e ace (in he gu e only he one o segmen a ion ou ine is shown), and he main ou ine o he communica ions d i e . The auxilia y ou ine is he one o ansla e he pa ame e yp es om Va iables o he p o cess yp es ( h ough b idge ypes ) in o de o call he p o cess ou- ine in he co ec way, and also o ansla e back he esul o he p o cess ou ine o ha e a Va iable o go h ough he ne wo k. The main ou ine o he d i e only ha e o make some ini ializa ions o i and en e in he dispa ching lo op. 7 ... namespace olum { ypede a l_py a mi d a l_simpl ex; } namespace olum { s uc a l_scene { a l_simp le x con [10 0]; ope a o Va iable () { // au oma i c ansla io n o a Va iable Type (" olum: :s cen e" , "V[100]S( nam e s ing,ba se V[3]S(p1 S(x eal,y eal,z eal), p2 S(x eal,y eal,z eal), iden in ege ) , sides V[3]V[3] S( p1 S(x eal,y eal,z eal), p2 S(x eal,y eal,z eal), iden in ege ) )" ); Va iable ( ,"") ; .build_ ee () ; o (in i1=0;i1 <10 0; i1 ++) { *((*( .T e e( ))) .a cc ede (i 1) ) = *(((Va i ab le )c on [i 1] ).T e e( )) ; } e u n ( ); } a l_scen e( ) {} a l_scen e( Va ia bl e & ) { // cons uc o om a Va iable i ( .T ee() == NU LL) a l_exi (- 1) ; // In alid a iable o (in i1=0;i1 <10 0; i1 ++) { Va iable 2("S(nam e s ing,ba se V[3]S(p1 S(x eal,y eal,z eal), p2 S(x eal,y eal,z eal), iden in ege ) , sides V[3]V[3] S(p 1 S(x eal,y eal,z eal), p2 S(x eal,y eal,z eal), iden in ege ) )" ," "); 2.build_ ee (); *( 2.T ee () )= *(( *( . T e e( )) ). acc ed e( i1) ); a l_simpl ex paux( 2 ); con [i1]= p au x; } } }; } ... Figu e 6: Po ion o he au oma ically gene a ed a l olum.H le. Comunic_D is dis ib( CAN AL _C OMU NI C_ DI STR ); S ing namep og am ; D i e d i (dis i b) ; ... oid aux_segm en a io n( S in g codi, DLLis <Va ia bl e *> ¶me e s ) { Pix p=pa ame e s. i s () ; a l_scen e p p0(*(pa am e e s(p )) ); scene pa 0(p p0 ); pa ame e s .ne x (p ); p ope y p p1(((n od ein *)pa ame e s(p )- >T ee () )- >G e al ue ()) ; pa ame e s .ne x (p ); --> scene es=segme n a ion (p a 0,p p 1) ; a l_scen e es p; es p= e s. con e s io n_ o_ b idg e_ y pe (); Va iable * =new Va iable( es p ); Re u nVa lu e * =new Re u nVal ue (c od i, ) ; dis ib. se nd( ); } ... oid main(in a gc,cha **a g ) { namep og a m=a g [ 0] ; ini_ o_c al ls( ); // some inicializ a i on s o he d i e d i .se _n ame _p o g am( na me p o g am ); ini_p oc es s() ; // inicial iza i on s o he p ocess i sel d i .Dis pa ch () ; // loop close(CA NA L_C OM UN IC _DI ST R) ; exi (0); } Figu e 7: Po ion o he au oma ically gene a ed a l olum.C le. The a ow has b een added p oin ing o he p oin whe e use co de is ac ually in oked. 8