CHAIMS: Mega-Programming Research Compiling High-level Access Interfaces for Multi-site Software CHAIMS Stanford University Objective: Investigate revolutionary approaches to large-scale software composition. Approach: Develop & validate a composition-only language. Contributions and plans: • Hardware and software platform independence. • Asynchrony by splitting up CALL-statement. • Performance optimization by invocation scheduling. • Potential for multi-site dataflow optimization. www-db.stanford.edu/CHAIMS June 1998 CHAIMS 1 Participants • Support – DARPA ISO EDCS program (1996-1999) – Siemens Corporate Research (1996-1998) – DoD AFOSR AASERT student support (1997-1999) – Sloan Foundation - computer industry study (1996-97) • People – Gio Wiederhold (Prof. Res) PI - Marianne Siroker (Administration) – Dorothea Beringer (postdoc EPF Lausanne) since Dec.1997 – Ron Burback (CS PhD cand.) – Laurence Melloul (CS MS) - Neil Sample (CS PhD Student) Woody Pollack (CS MS) – MS and BS CS graduated: Joshua Hui, Gaurav Bhatia, Prasanna Ramaswami, Kirti Kwatra, Pankaj Jain, Mehul Bastawala, Catherine Tornabene, Wayne Lim (I.E.), Connan King (E.E.). – Louis Perrochon (postdoc ETH Zurich) Fall quarter 1996 June 1998 CHAIMS 2 Gio Wiederhold: Personal Background • 1936 born Varese, Italy • 1957: Learned programming at NATO SHAPE ADTC • 1958-1975 Programmer and software engineer – at IBM, UC, Stanford, Index, MaSCOR • 1963 - now Consultant for government, Industry • 1974-1976 PhD on Database Design at UC SF • 1976- now Professor Stanford – Computer Science, Medicine, Electrical Eng., Business School • Elected fellow ACMI, IEEE, ACM • Innovations: – solid rocket fuel combustion - A-format - incremental compilers – timeshared real-time data acquistion - time-oriented databases – database design - knowledge-based system concepts – object creation from relations - mediators - security filters. June 1998 CHAIMS 3 Dorothea Beringer: Personal Background • Masters in Computer Science: hybrid-monitoring tool for debugging and software performance analysis for distributed software • Software engineer: telecommunication systems • Consultant: software methodologies, quality assurance, project management, CASE-tools • PhD: Modeling scenarios in object-oriented analysis • Teaching: Fusion • Now: CHAIMS -- large-scale software composition, distributed systems June 1998 CHAIMS 4 Presentation • Motivation and Objectives – changes in software production – basis for new visions and education • Concepts of CHAIMS – CHAIMS language – CHAIMS architecture and composition process – Scheduling – Dataflow optimization • Status, Plans, Conclusions June 1998 CHAIMS 5 Shift in Programming Tasks Integration Coding 1970 June 1998 1990 CHAIMS 2010 6 Languages & Interfaces • Large languages intended to support coding and composition have not been successful – – – – Algol 68 PL/1 Ada CLOS • Databases are being successfully composed, using Client-server, Mediator architectures – – – – June 1998 distribution -- exploit network capabilities heterogeneity -- autonomy creates heterogneity simple schemas -- some human interpretation service model -- public and commercial sources CHAIMS 7 Typical Scenario: Logistics A general has to ship troops and/or various material from San Diego NOSC to Washington DC: – – – – – different kind of material: criteria for preferred transport differ not every airport equally suited congestion, prices actual weather certain due or ready dates Today: calling different companies, looking up information on the web, reservations by hand Tomorrow: system proposes possibilities that take into account various conditions » hand-coded systems » composition of processes June 1998 CHAIMS 8 Scaling alternatives ? June 1998 CHAIMS 9 CHAIMS Megaprogram for composition, written by domain programmer CHAIMS Megamodules June 1998 CHAIMS CHAIMS system automates generation of client for distributed system Megamodules, provided by various megamodule providers 10 Megamodules - Definition Megamodules are large, autonomous, distributed, heterogeneous services or processes. • large: computation intensive, data intensive, ongoing processes (monitoring services) • distributed: to be used by more than one client • heterogeneous: accessible by various distribution protocols (not only different languages and systems) • autonomous: maintenance and control over recourses remains with provider, differing ontologies ( ==> SKC) Examples: – logistics: “find best transportation route from A to B”, reservation systems – genomics: easier framework for composing various processing tools than ad-hoc coding June 1998 CHAIMS 11 Challenge: Fat Clients Domain expert Client computer I/O Control & Computation Services c a b I/O e d Wrappers to resolve differences Data Resources June 1998 CHAIMS 12 Challenge: Thin Clients Domain expert IO module Client workstation IO module C Computation Services MEGA modules a T Sites e b R d S c U T Data Resources June 1998 CHAIMS 13 Challenge: Heavy-weight Services Services are not free for a client: • execution time of a service • transfer time for data • fees for services What we need: ==> monitoring progress of a service ==> possibility to choose among equivalent services based on estimated waiting time and fees ==> parallelism among services ==> preliminary overview results, choosing level of accuracy / number of results for complex processes ==> novel optimization techniques June 1998 CHAIMS 14 Challenge: Empower Non-technical Domain Experts Company providing services: • domain experts of domain of service (e.g. weather) • technical experts for programming for distribution protocols, setting up servers in a middleware system • marketing experts “Megaprogrammer”: • is domain expert of domain that uses these services • is not technical expert of middleware system or experienced programmer, • wants to focus on problem at hand (=results of using megaprogram) • e.g. scientist, logistics officer June 1998 CHAIMS 15 Challenge: Purely Compositional Language Possible? Which languages did succeed? – Algol, ADA: integrated composition and computation – C, C++ focus on computation Why new language? – complexity: not all facilities of a common language (compare to approach of Java), – inhibiting traditional computational programming (compare C++ and Smalltalk concerning object-oriented programming) – focus on issue of composition, parallelism by asynchrony, and optimization June 1998 CHAIMS 16 CHAIMS “Logical” Architecture Customer Megaprogram clients (in CHAIMS) Network/Transport (DCE, CORBA,...) Megamodules (Wrapped or Native) June 1998 CHAIMS 17 CHAIMS Physical Architecture Megaprogram Clients in CHAIMS Network DCE, CORBA, JAVA RMI, DCOM... Megamodules (wrapped, native) each supporting setup, estimate, invoke, examine, extract, and terminate. June 1998 CHAIMS 18 Decomposing CALL statements CALL gained functionality progress in scale of computing Copying Code sharing Parameterized computation CHAIMS decomposes CALL functions Objects with overloaded method names Remote procedure calls to distributed modules Constrained (black box) access to encapsulated data Setup June 1998 Estimate Invoke CHAIMS Examine Extract 19 CHAIMS Primitives Pre-invocation: SETUP: set up the connection to a megamodule SET-, GETATTRIBUTES: set global parameters in a megamodule ESTIMATE: get estimate of execution time for optimization Invocation and result gathering: INVOKE: start a specific method EXAMINE: test status of an invoked method EXTRACT: extract results from an invoked method Termination: TERMINATE: terminate a method invocation or a connection to a megamodule Control: WHILE, IF June 1998 Utility: GETPARAM: get default parameters CHAIMS 20 Megaprogram Example: Overview General I/O-megamodule InputOutput » Input function takes as parameter a default data structure containing names, types and default values for expected input - Input - Output RouteInfo AirGround - AllRoutes - CityPairList - ... - CostForGround - CostForAir - ... Routing RouteOptimizer - BestRoute - ... - Optimum - ... June 1998 Travel information: » Computing all possible routes between two cities » Computing the air and ground cost for each leg given a list of city-pairs and data about the goods to be transported Two megamodules that offer equivalent functions for calculating optimal routes » Optimum and BestRoute both calculate the optimum route given routes and costs » Global variables: Optimization can be done for cost or for time CHAIMS 21 Megaprogram Example: Code io_mmh = SETUP ("InputOutput") route_mmh = SETUP ("RouteInfo") ... best2_mmh.SETATTRIBUTES (criterion = "cost") // Setup connections to megamodules. // Set global variables valid for all invocations // of this client. cities_default = route_mmh.GETPARAM(Pair_of_Cities) input_cities_ih = io_mmh.INVOKE ("input”, cities_default) // Get information from the megaprogram user WHILE (input_cities_ih.EXAMINE() != DONE) {} // about the goods to be transported and about cities = input_cities_ih.EXTRACT() // the two desired cities. ... route_ih = route_mmh.INVOKE ("AllRoutes", Pair_of_Cities = cities) WHILE (route_ih.EXAMINE() != DONE) {} // Get all routes between the two cities. routes = route_ih.EXTRACT() … //Get all city pairs in these routes. //Calculate the costs of all the routes. // Figure out the optimal megamodule for IF (best1_mmh.ESTIMATE("Best_Route") // picking the best route. < best2_mmh.ESTIMATE("Optimum") ) THEN {best_ih = best1_mmh.INVOKE ("Best_Route", Goods = info_goods, Pair_of_Cities = cities, List_of_Routes = routes, Cost_Ground = cost_list_ground, Cost_Air = cost_list_air)} ELSE {best_ih = best2_mmh.INVOKE ("Optimum", Goods = info_goods, //Pick the best route and display the result. … ... // Terminate all invocations best2_mmh.TERMINATE() June 1998 CHAIMS 22 Operation of one Megamodule • SETUP M handle • SETATTRIBUTES provides context M handle M handle • ESTIMATE serves scheduling M handle • INVOKE initiates remote computation I handle • EXAMINE checks for completion I handle I handle • EXTRACT obtains results I handle • TERMINATE I / ALL M handle June 1998 CHAIMS 23 CHAIMS Megaprogr. Language Purely compositional: – no primitives for arithmetic ==> math megamodules – no primitives for input/output ==> general and problemspecific I/O megamodules Splitting up CALL-statement: – parallelism by asynchrony in sequential program – novel possibilities for optimizations – reduction of complexity of invoke statements • higher-level language (assembler => HLLs, HLLs => composition/megamodule paradigm) June 1998 CHAIMS 24 Architecture: Runtime b CSRT a (compiled megaprogram) d e c MEGA modules Distribution System (CORBA, RMI…) June 1998 CHAIMS 25 Architecture: Composition Process Megamodule Provider wraps non-CHAIMS compliant megamodules adds information to Wrapper Templates CHAIMS Repository b MEGA modules de e a c June 1998 CHAIMS 26 Architecture: Composition Process Megaprogrammer writes information Megaprogram (in CHAIMS language) information CHAIMS Repository CHAIMS Compiler generates CSRT (compiled megaprogram) June 1998 CHAIMS 27 Architecture: Overview Megamodule Provider Megaprogrammer writes wraps non-CHAIMS compliant megamodules adds information to information Megaprogram (in CHAIMS language) information Wrapper Templates CHAIMS Repository CHAIMS Compiler b generates CSRT a (compiled megaprogram) d e c MEGA modules Distribution System (CORBA, RMI…) June 1998 CHAIMS 28 Architecture: CHAIMS-Language and CHAIMS-Protocols Megaprogrammer CHAIMS API defines interface between megaprogrammer and megaprogram; the megaprogram CHAIMS-language is written in the CHAIMS language. Megaprogram The CHAIMS protocols define the calls the megamodules have to understand. These protocols are slightly different for the different distribution protocols, and are defined by an idl for CORBA, another idl for DCE, and a Java class for RMI. June 1998 CHAIMS-protocols CORBA-idl DCE-idl Java-class M e g a m o d u l e s CHAIMS 29 Architecture: Gentype Minimal Typing in CHAIMS: Integer, boolean only for control All else is placed into an ASN.1 bag, transparent to compiler : A Gentype is a triple of name, type and value, where value is either a simple type or a list of other gentypes (i.e. a complex type). Simple types: given by ASN.1, the ASN.1-conversion library for C++, our own conversion routines. Example: Person_Information Name of Person complex First Name string Personal Data complex Joe Date of Birth June 1998 Last Name date 6/21/54 CHAIMS string Address Smith Soc.Sec.No string 345-34-345 30 Wrapper: CHAIMS Compliance • CHAIMS protocol - support all CHAIMS primitives • State management and asynchrony: » clientId (megamodule handle in CHAIMS language) » callId (invocation handle in CHAIMS language) » results must be stored for possible extraction(s) until termination of the invocation • Data transformation: » all parameters of type blob (BER-encoded Gentype) must be converted into the megamodule specific data types (combination hand-coding/decoding routines June 1998 CHAIMS 31 Architecture: Three Views Composition View (megaprogram) CHAIMS Layer - composition of megamodules - directing of opaque data blobs Transport View Distribution Layer Objective: June 1998 moving around data blobs and CHAIMS messages Clear separation between composition of services, computation of data, and transport CHAIMS 32 time time time Scheduler: Decomposed Execution s,i s,i e e synchronous asynchronous s i e decomposed (no benefit for one module) execution of a remote method i e available for other methods June 1998 s CHAIMS setup / set attributes invoke a method extract results 33 Optimized Execution of Modules i1 e1 M2 e2 time i3 time i2 M1 M3 i4 e3 i3 i1 i4 e1 i2 e4 e3 e2 i5 e5 M1 M3 M4 (>M1+M2) (<M1+M2) M2 M5 optimized by scheduler M4 according to estimates M5 data dependencies execution of a module e4 i5 e5 non-optimized June 1998 invoke a method extract results i e CHAIMS 34 Decomposed Parallel Execution M1 M4 M3 <M1+M2) M2 M5 set up / set attributes invoke a method extract results optimized by scheduler according to estimates June 1998 (<M1+M2) time Long setup times occur, for instance, when a subset of a large database has to be loaded for a simple search, say Transatlantic fights for an optimal arrival. CHAIMS 35 M2 M3 (>M1+M2) M3 (>M1+M2) M4 M4 (<M1+M2) (<M1+M2) M2 prior time M1 M1 time Decomposed Optimized Execution M5 M5 set up / set attributes invoke a method extract results optimized by scheduler according to estimates June 1998 CHAIMS 36 M2 M3 (>M1+M2) M3 (>M1+M2) M4 M4 (<M1+M2) (<M1+M2) M2 prior time M1 M1 time Repeated invocations M5 M5 set up / set attributes invoke a method extract results optimized by scheduler according to estimates June 1998 CHAIMS 37 M2 M3 (>M1+M2) M3 (>M1+M2) M4 M4 (<M1+M2) (<M1+M2) M2 prior time M1 M1 time Repeated Extractions M5 M5 set up / set attributes invoke a method extract results optimized by scheduler according to estimates June 1998 CHAIMS 38 Scheduling: Simple Example 1 cost_ground_ih = cost_mmh.INVOKE ("Cost_for_Ground", 1 List_of_City_Pairs = city_pairs,Goods = info_goods) 2 WHILE (cost_ground_ih.EXAMINE() != DONE) {} cost_list_ground = cost_ground_ih.EXTRACT() 3 cost_air_ih = cost_mmh.INVOKE ("Cost_for_Air", 2 List_of_City_Pairs = city_pairs,Goods = info_good) 4 WHILE (cost_air_ih.EXAMINE() != DONE) {} cost_list_air = cost_air_ih.EXTRACT() order in unscheduled megaprogram June 1998 3 4 order in automatically prescheduled megaprogram CHAIMS 39 Scheduling: Possible Actions INVOKES: call INVOKE’s as soon as possible » may depend on other data » moving it outside of an if-block: depending on costfunction (ESTIMATE of this and following functions concerning execution time, dataflow and fees (resources). EXTRACT: move EXTRACT’s to where the result is actually needed » no sense of checking/waiting for results before they are needed » instead of waiting, polling all invocations and issue next possible invocation as soon as data could be extracted TERMINATE: terminate invocations that are no longer needed (save resources) » not every method invocation has an extract (e.g. print-like functions) June 1998 CHAIMS 40 Compiling into a Network current CHAIMS system Mega Program Module B Module F Module D Module A Module C Module E control flow data flow with distribution dataflow optimization Mega Program Module B Module D Module A Module C June 1998 Module F Module E CHAIMS 41 CHAIMS Implementation • Specify minimal language – minimal functions: CALLs, While, If * – minimal typing {boolean, integer, string, handles, object} » objects encapsulated using ASN.1 standard – type conversion in wrappers, service modules* • Compiler for multiple protocols (one-at-time, mixed*) • Wrapper generation for multiple protocols • Native modules for I/O, simple mathematics*, other • Implement API for CORBA, Java RMI, DCE usage • Wrap / construct several programs for simple demos • Schedule optimization * • Demonstrate use in heterogeneous setting * • Define full-scale demonstration * in process June 1998 CHAIMS 42 Status • Definition of architecture for Megaprogramming – bottom up assessment of code to be generated • examples: room reservation, shipping – primitives – handles for parallel operation – heterogeneity -- common features of distribution protocols • Minimal language that can generate the code – no versus very few types -- ASN.1 for complex types – natural parallelism -- still a major research issue • Awareness of novel optimizations – information flow constraints -- scheduling – direct data flow between megamodules June 1998 CHAIMS 43 Focus for Future • Finishing basic infrastructure and demo examples. • CHAIMS interpreter to complement compiler. • Dynamic scheduling of invocations and extractions. • Flexible interaction with megamodules; extracting and handling overview results. • Direct dataflows between megamodules – (future project). June 1998 CHAIMS 44 Upcoming Changes to Architecture: PreCompiler + Interpreter Compiler: user megaprogram in CHAIMS language network CHAIMS compiler, simple scheduler Idl-file generator and compiler executable client (CSRT) client code in C, C++, Java, stub code C++, Java compiler and linker Interpreter: user user complete megaprogram in CHAIMS language some CHAIMS statements June 1998 serves as input to CHAIMS execution machine (interpreter and scheduler) CHAIMS-protocol serve as input to CHAIMS network 45 Interpreter • Dynamic scheduler: » Parsed input is stored in an executable dependency graph. » Execution machine (interpreter / scheduler) works through the graph and makes appropriate calls: – estimate-calls are inserted to get necessary run-time information for scheduling (cost-function) – every invocation is issued as soon as possible (data-flow) and reasonable (according to cost-function) – all invocations for which the CSRT waits for results are polled regularly, and results extracted and new invocations issued as soon as possible CSRT would still be sequential! • Overview results, flexible interactions: » megaprogrammer can program statement by statement and get results immediately; results will influence what he/she does next » like ftp, web June 1998 CHAIMS 46 Conclusion: Research Questions • Is a Megaprogramming language focusing only on composition feasible? • Can it exploit on-going progress in client-server models and be protocol independent? • Can natural parallelism for distributed services be effectively scheduled? • Can high-level dataflow among distributed modules be optimized? • Can CHAIMS express clearly a high-level distributed SW architecture? • Can the approach affect SW process concepts and practice? CHAIMS June 1998 CHAIMS 47 Other Research Projects Related by common issue: Large-Scale Interoperation • Mediation -- modules in 3-tier Information Systems – {acess, abstraction, integration, summarization, delivery} – maintenance management is a major benefit • Security and Privacy Mediators – filter results to complement access control – for healthcare privacy / manufacturing collaboration • Scalable Knowledge Composition – develop algebra ( - )over ontologies – articulate distinct distinct domains to create user contexts • Image databases – rapid search by match using wavelets – identifying pornography – extracting text from images and icons for privacy/search June 1998 CHAIMS 48 Paying for SW Services You can not run an effective (SW) business and not be reimbursed for it. How? Four approaches: – Sell Software sell oilfield to customer – Lease copy / usage rights lease well – Time / user limited access fill tank – Charge by use instance provide bus General problems, effects differ protect – IP protection? – keeping SW updated update bill – billing for est.value perform – performance effect June 1998 CHAIMS Buy Lease Limit Use poor some fair good poor ok good good simple simple awkw. hard no no little some 49 Conclusion: Questions not addressed • Will one Client/Server protocol subsume all others? – distributed optimization remains an issue • Synchronization / Concurrency Control – autonomy of sources negates current concepts – if modules share databases, then database locks may span setup/terminate all for a megaprogram handle. • Will software vendors consider moving to a service paradigm? – need CHAIMS demonstration for evaluation June 1998 CHAIMS 50 Integration Science Databases access storage algebras Systems Engineering analysis documentation costing Integration Science Artificial Intelligence knowledge mgmt models uncertainty CHAIMS June 1998 CHAIMS 52 Backup slides June 1998 CHAIMS 53 Composition of Processes... • versus composition and integration of Data » data-warehouses » wrapping data available on web • versus composition of Components » reusing small components via copy/paste or shared libraries locally installed » large distributed components within same “domain” as composition, e.g. within one bank or airline CHAIMS: » processed information » composing autonomous execution threads June 1998 CHAIMS 54 Summary • CHAIMS requires rethinking of many common assumptions – gain understanding via simple examples • Work focused on CALL statement decomposition – to accomplish integration of large services – exploit inherent asynchrony • First version of architecture and language drafts are completed; basic infrastructure partially available (compiler, wrapper templates). • More demos will come soon. Half-way through a four year project. http://www-db.stanford.edu/CHAIMS June 1998 CHAIMS 55 CHAIMS proves that... • We can do composition in a high-level language. » same language for Java-RMI-invocations and CORBAinvocations (and DCE, DCOM, TCP/IP protocols) » (single megaprogram can deal with multiple protocols simultaniously) » multiple megamodules can run in parallel • Large-scale composition can be automated. » in contrast to manual non-software composition (e.g. telephone, cut&paste) » in contrast to fixed programs for one specific problem (e.g. transporting military goods within US) • We can do schedulings of programs in a way right now only smart logistics officers can do, avoiding unnecessary waits. » Scheduling of invocations can be optimized. June 1998 CHAIMS 56 Long-term Objectives of CHAIMS 1 Implementing a system for a simple and purely compositional language hiding differences of diverse protocols 2 Automatic optimized scheduling of invocations (taking advantage of inherent parallelism and estimatecapabilities of megamodules, hence splitting up of CALL-statement) 3 Decision-making support (direct) interaction with megamodules, based on overview and incremental results (fixed flow, not yet interactive changes to megaprogram) 4 Automatic dataflow optimization (direct dataflows between megamodules), not yet June 1998 CHAIMS 57 Assumptions, Additional Constraints • Heterogenous legacy modules ==> wrapping of modules, mixing protocols on client side or in wrappers. • Parallelism of megamodule-methods not through multithreading on client side but through splitting up CALL-statement (==> sequential program on client side); this leads to useful parallelism because we deal with coarse-grain parallelism. • CHAIMS-compliancy for megamodules is achieved by wrappertemplates, for new native megamodules as well as for legacy ones (CHAIMS-compliancy is more than just knowing CHAIMS-protocol!). • No reliance on existence of one specific higher level protocol like CORBA, DCOM, RMI ==> implementing an independent data-encoding and marshalling with ASN.1, instead of using one of them and then having converters in the wrappers. • Interfaces of megamodules match <==> no investigation into opaque datablobs on client side necessary. • Thin client, client should be able to run anywhere (not quite fulfilled right now - we need local ORB, DCE, JavaVirtual-machine). • Clear seperation client - server, minimal repository. June 1998 CHAIMS 58 Non- (not yet)-Objectives of CHAIMS • No commercial product. • No specific controls over ilities (security, nameserving, etc.) that they are normally present in distributed systems. • No sophisticated front-end, no graphical programming/composition, no browser for repository, no higher-level language as input (not yet). • Not solving all problems of megamodule composition that are mentioned in the various CHAIMS-papers (e.g. differing ontologies, non-matching interfaces of megamodules), only the ones mentioned in objectives and additional conditions. June 1998 CHAIMS 59 Short-term Objectives of CHAIMS Rest of 1998: » Basic infrastructure (fixing most severe flaws, moving to consistent architecture, all primitives, types, associative lists with handling it, having CORBA) ==> conceptual and implementation work -CONSOLIDATION » More examples (descriptions of scenarios as well as implemented demos), wrapping one (maybe two) additional suites of megamodules. ==> implementation work -- CONSOLIDATION » Mixing of protocols in client (CORBA, RMI) or/and TCP/IP-three-tier architecture » Preparing for more capable scheduler (examples with current scheduler, reading about other scheduler-problems and implementations, redesigning architecture of compiler (interpreter?), designing scheduler algorithm and architecture, writing paper about all this…) ==> lots of conceptual work, some implementation -- looking ahead for better Scheduler 1999 (depending on where we are at the end of 1998): » Scheduler June 1998 CHAIMS 60 Upcoming Changes to Architecture: Other Approach to Heterogeneity client site Client (megaprogram) TCP/IP sockets CHAIMS protocol sites of servers different wrapper site June 1998 RMI wrapper CORBA wrapper RMI wrapper CORBA RMI server-specific protocols native server 1 native server 2 native server 3 CHAIMS chaims compliant module chaims I/O module 61 Reasons for an Alternative Architecture Overall: • Simpler architecture: fewer wrappers, just one protocol on client side Server-side: • No direct linking with legacy code also for CORBA-wrappers, different sites for wrapper and legacy megamodule possible • All native CHAIMS-megamodules will be built using wrapper templates ==> no reason for several protocols, they can all use TCP/IP. • Dataflow-optimization: direct messages between megamodules/their wrappers necessary (without bridges) Client-side: • Thin client that could run everywhere (TCP/IP is available everywhere, but not CORBA or DCE, RMI also is easily available everywhere). • CSRT could be implemented by interpreter instead of compiler, maybe also possible with current architecture, but more complex. • We use just transport-facility (really true? what about native CHAIMS-types like string, integer, boolean?) of CORBA, RMI, DCE (for data we have ASN.1); this is already offered by TCP/IP ==> no unnecessary overkill Drawback: missing one of the current funding objectives (heterogeinity on client side). June 1998 CHAIMS 62