A Guided Tour of the Coign Automatic Distributed Partitioning System Galen C. Hunt Microsoft Research Michael L. Scott Department of Computer Science University of Rochester July 1998 Technical Report MSR-TR-98-32 Microsoft Research Microsoft Corporation One Microsoft Way Redmond, WA 98052 Submitted for Publication A Guided Tour of the Coign Automatic Distributed Partitioning System Galen C. Hunt Michael L. Scott Microsoft Research One Microsoft Way Redmond, WA 98052 galenh@microsoft.com Department of Computer Science University of Rochester Rochester, NY 14627 scott@cs.rochester.edu Abstract Distributed object systems such as CORBA and DCOM bring many advances to distributed computing. The distribution process itself, however, has changed little: programmers still manually divide applications into subprograms and assign those sub-programs to machines with little automated assistance. Often the techniques used to choose a distribution are ad hoc. Due to high intellectual cost, applications are seldom repartitioned even in drastically changing network environments. We describe Coign, an automatic distributed partitioning system (ADPS) that significantly facilitates the development of distributed applications. Given an application (in binary form) built from distributable COM components, Coign constructs a graph model of the application’s intercomponent communication through scenario-based profiling. Later, Coign applies graph-cutting algorithms to partition the application across a network and minimize distribution costs. Using Coign, an end user without source code can transform a non-distributed application into an optimized, distributed application. Through a guided tour of Coign’s architecture and usage, we present an overview of its features. We describe the automatic distributed partitioning of three applications: Microsoft Picture It!, the Octarine word processor, and the Corporate Benefits Sample program. All are distributed automatically, sometimes with startling results. For example, Coign makes significant changes to the programmer-assigned distribution of the Corporate Benefits Sample. 1. Introduction Distributed object systems such as CORBA and DCOM bring the advantages of service location transparency, dynamic program instantiation, and object-oriented programming to distributed applications. Unfortunately, the process to distribute program components has changed little: programmers still manually divide applications into sub-programs and manually assign those subprograms to machines. Often the techniques used to choose a distribution are ad hoc, one-time solutions. 1 Given the effort required, applications are seldom repartitioned even in drastically different network environments. User usage patterns can severely stress a static distribution of an application. Changes in underlying network, from ISDN to 100BaseT to ATM, strain static distributions as bandwidth-to-latency tradeoffs change by more than an order of magnitude. Nonetheless, programmers resist repartitioning the application because it often requires extensive modifications to source code and program structure. In this paper, we present a guided tour of Coign [5], an automatic distributed partitioning system (ADPS) that promises to significantly ease the development of component-based distributed applications. Given an application built with COM components, Coign uses inexpensive scenario-based profiling on a single computer to quantify inter-component communication costs for both singlemachine and multi-machine distributions. Intercomponent communication is modeled as a graph with nodes representing components and edges representing inter-component communication and location constraints. Using graph-cutting algorithms, Coign selects a distribution of the application that minimizes communication costs. At run time, Coign manipulates program execution (with negligible overhead) to produce the desired distribution. Coign analyzes an application, chooses a distribution, and produces the desired distribution all without access to application source. As a corollary, Coign is completely language neutral; it neither knows nor cares about the source language of the components in the application. Moreover, because it operates on binaries, Coign preserves the ability to build applications from reusable, third-party components. In the following section we describe related work. In Section 3, we illustrate how to use Coign to automatically distribute an application. We describe Coign’s architecture in Section 4. Section 5 contains an experimental evaluation of Coign’s effectiveness in distributing three applications. Finally, in Section 6 we conclude and discuss future work. 2. Related Work 2.1. ICOPS The idea of an ADPS is not new. The Interconnected Processor System (ICOPS) [8, 14, 16] supported distributed application partitioning in the 1970’s. Under the direction of Andries van Dam, ICOPS pioneered the use of compiler-generated stubs for inter-process communication. ICOPS was the first system to use scenario-based profiling to gather statistics for distributed partitioning; the first system to support multiple distributions per application based on host-processor load; and the first system to use a maximum-flow-minimum-cut (MAXFLOW/MIN-CUT) algorithm [4] to choose distributions. ICOPS was used to automatically distribute HUGS, a two dimensional drafting program developed at Brown University. HUGS consisted of seven modules. Three of these—consisting of 20 procedures in all—could be located on either the client or the server. ICOPS was never intended for shrink-wrapped, commercial applications. Tied to a single language and compiler, it relied on metadata generated by the compiler to facilitate transfer of data and control between computers. Modules compiled in another language or by another compiler could not be distributed because they did not contain appropriate metadata. ICOPS gave the application the luxury of location transparency, but still required the programmer or user to explicitly select a distribution based on machine load. 2.2. IDAP Kimelman et al. [7] describe the Intelligent Dynamic Application Partitioning (IDAP) system, an ADPS for Smalltalk applications. IDAP is an add-on to IBM’s VisualAge Generator. Using VisualAge Generator’s visual builder, a programmer designs an application by instantiating and connecting components in a graphical environment. The builder emits code for the created application. The “dynamic” in the IDAP name refers to scenariobased profiling as opposed to static analysis. IDAP first generates a version of the application with an instrumented message-passing mechanism. IDAP runs the instrumented application under control of a test facility with the VisualAge system. After the application execution, the programmer either manually partitions the components or invokes an automatic graph-partitioning algorithm. The algorithm used is an approximation algorithm capable of multi-way cuts for two or more hosts [3]. After choosing a distribution, VisualAge generates a new version of the application. IDAP supports distributed partitioning only for statically allocated components. Although initially based on Smalltalk, the distributable components are large-grain 2 components, not the fine-grained objects native to Smalltalk. Kimelman’s team has tested their system on a number of real Smalltalk applications, but in each case, the application had “far fewer than 100” components [7]. The latest version of IDAP generates C++ code for connecting CORBA components, but still does not support dynamic component instantiation [6]. Moreover, the use of CORBA restricts IDAP to a distribution granularity of whole processes because CORBA does not support loading multiple component servers into the same address space. The IDAP programmer must be vary aware of distribution choices. IDAP helps the user to optimize the distribution, but does not raise the level of abstraction above the distribution mechanisms. With a full-featured ADPS, such as Coign, the programmer can focus on component development and leave distribution to the system. Although it supports multiple languages, IDAP still requires that applications be constructed with a specific application development toolkit, the VisualAge Generator. Like ICOPS, IDAP supports automatic distributed partitioning of static application pieces only. In the case of ICOPS, the application pieces are procedures. In the case of IDAP, the pieces are CORBA components or large-grain Smalltalk objects. 2.3. Summary Prior to Coign, no ADPS allowed distributed partitioning of binary components dynamically instantiated during the execution of the application. Dynamic component instantiation is an integral feature of modern desktop applications. One of the major contributions of our work is a set of dynamic component classification algorithms that map newly-created components to similar components identified during scenario based profiling. Our research differs in scope from prior work because we automatically distribute an existing class of commercial applications. All of the applications in our test suite were developed by third parties with no knowledge of the Coign system. 3. A Guided Tour To solidify the concept of an ADPS, we describe a detailed example of Coign’s usage to automatically distribute an existing COM application. The application used in this example is a preliminary version of a future release of Microsoft Picture It! [12]. (The original, uninstrumented version of Picture It! application is designed to run on a single computer—it provides no explicit support for distribution.) 3.1. Creating a Distributed Application Starting with the original binary files for Picture It!, we use the setcoign utility to insert the Coign profiling instrumentation package, see Figure 1. Setcoign makes two modifications to the pi.exe binary file. First, it inserts an entry to load the Coign Runtime Executive (RTE) Dynamic-Link Library (DLL) into the first slot in the application’s DLL import table. Second, setcoign adds a data segment containing configuration information to the end of pi.exe. The configuration information tells the Coign RTE how the application should be profiled and which of several algorithms should be used to identify components during execution. Because it occupies the first slot in the application’s DLL import table, the Coign RTE will always load and execute before the application or any of its other DLLs. It therefore has a chance to modify the application’s address space before the application runs. The Coign RTE takes advantage of this opportunity to insert binary instrumentation into the image of system libraries in the application’s address space. The instrumentation traps all component instantiation functions in the COM library. Before returning control to the application, the Coign RTE loads any additional Coign components (described in Section 4) as stipulated by the configuration information stored in the application. With the Coign runtime configured for profiling, the application is ready to be run through a set of profiling scenarios; see Figure 2. Because the binary has been modified transparently to the user (and to the application itself), profiling runs behave from the user’s point of view as if there were no instrumentation in place. The instrumentation gathers profiling information in the background while the user controls the application. The only visible effect of profiling is a degradation in application performance of up to 85%. For our simple example, we start Picture It!, load a file for preview, and exit the application. For more advanced profiling, scenarios can be driven by an automated testing tool, such as Visual Test [2]. During profiling, the Coign instrumentation maintains running summaries of the inter-component communication within the application. Coign quantifies every intercomponent function call through a COM interface. The instrumentation measures the number of bytes that would have to be transferred between machines if the two communicating components were distributed. The number of bytes is calculated by invoking portions of the DCOM code, including the interface proxy and stub, within the application’s address space. Coign measurement follows precisely the deep-copy semantics of DCOM. After calculating communication costs, Coign compresses and summarizes the data online to keep instrumentation storage requirements at a minimum. If desired, the application may be run through profiling scenarios for days or even weeks to more accurately track user usage patterns. In all of our tests, storage overhead for Coign never exceeded 1.5 MB. 3 D:\apps\pictureit\bin> setcoign /p pi.exe Config: Logger: Coign Profile Logger Informer: Coign NDR Interface Informer Classifier: Coign EP3C Classifier Sections: 4 ___VAddr ___VSize ___VAEnd ___FAddr ___FSize .text 1000 10e343 10f343 400 10e400 .rdata 110000 501c3 1601c3 10e800 50200 .data 161000 11224 172224 15ea00 d400 .rsrc 173000 15868 188868 16be00 15a00 .coign 189000 6cd0 18fcd0 181800 6e00 Debug Directories: 0. 00000000 00181800..00181910 -> 00188600..00188710 1. 00000000 00181910..001819c0 -> 00188710..001887c0 2. 00000000 001819c0..001819ea -> 001887c0..001887ea Extra Data: 512 ( 181a00 181800) Coign Extra Data: {9CEEB02F-E415-11D0-98D1-006097B010E3} : 4 bytes. R 0 0 0 0 0 L 0 0 0 0 0 R 0 0 0 0 0 L 0 0 0 0 0 Figure 1, Inserting Coign into the Application. Setcoign rewrites the pi.exe binary to insert Coign profiling instrumentation into Picture It!. Figure 2, Executing a Profiling Scenario. With Coign instrumentation in place, the application is run through one or more profiling scenarios to measure inter-component communication. In this scenario, Picture It! loads and renders a composite image. At the end of the profiling execution, Coign writes the summary log of inter-component communication to a file for later analysis; see Figure 3. In addition to information about the number and sizes of messages and components in the application, the profile log also contains information to classify components to determine component location constraints. Log files from multiple profiling executions may be combined and summarized during later analysis. Alternatively, at the end of each profiling execution, information from the log file may be inserted into the configuration record in the application executable (the pi.exe file in this example). The latter approach uses less storage because summary information in the configuration record accumulates communication from similar interface calls into a single entry. Invoking adpcoign initiates post-profiling analysis, see Figure 4. Adpcoign examines the system service libraries to determine any location constraints on application components. For client-server distributions, adpcoign recognizes components that must be placed D:\apps\pictureit\bin> pi.exe [Coign Runtime Environment: 00000080 636f6900 00000000] [Coign EP3C Classifier/9999] [Coign NDR Interface Informer] [Coign Profiling Logger (16 cycles)] [CoignRTE: DLL_PROCESS_ATTACH] [CoignRTE: DLL_THREAD_ATTACH] [CreateFileMoniker( D:\apps\pictureit\docs\MSR.mix )] [StgOpenStorage( D:\apps\pictureit\docs\MSR.mix )] [CoignRTE: DLL_THREAD_DETACH] [Elapsed time: 26400 ms] [CoignRTE: DLL_PROCESS_DETACH] [Inter-component communication: ] [ Messages : ____16 ____64 ___256 __1024 __4096 __16384 __Totals ] [ In Counts : 105240 1629 473 1599 66 45 109052 ] [ Out Counts: 102980 4303 843 783 131 12 109052 ] [ In Bytes : 782022 57912 49616 815034 157619 237963 2100166 ] [ Out Bytes : 455207 130140 95473 304592 239239 70019 1294670 ] Figure 3, Logging Communication. At the conclusion of the profiling scenario, Coign logs the intercomponent communication to a file for later analysis. D:\apps\pictureit\bin> adpcoign pi.log Binaries: pi.exe mso97d.dll mfc42d.dll mfco42d.dll oleaut32.dll Dependencies: 01 D:\apps\pictureit\bin\pi.exe piperf.dll oleaut32.dll 00 D:\apps\pictureit\bin\piserv.dll mfc42d.dll 00 D:\apps\pictureit\bin\mfco42d.dll 00 C:\winnt\system32\ole32.dll Objects: 112 Interfaces: 792 Calls: 38286 Bytes: 743534 Proc. Speed: 200MHz Figure 4, Post-Profiling Analysis. Adpcoign analyzes the log file to create an abstract model of intercomponent communication. D:\apps\pictureit\bin> setcoign /f:pi.set pi.exe Config: pi.set Informer: Coign Light Interface Informer Classifier: Coign EP3C Classifier Sections: 5 ___VAddr ___VSize ___VAEnd ___FAddr ___FSize .text 1000 10e343 10f343 400 10e400 .rdata 110000 501c3 1601c3 10e800 50200 .data 161000 11224 172224 15ea00 d400 .rsrc 173000 15868 188868 16be00 15a00 .coign 189000 83f8 1913f8 181800 8400 Debug Directories: 0. 00000000 00189a00..00189b10 -> 00189c00..00189d10 1. 00000000 00189b10..00189bc0 -> 00189d10..00189dc0 2. 00000000 00189bc0..00189bea -> 00189dc0..00189dea Coign Extra Data: {9CEEB022-E415-11D0-98D1-006097B010E3} : 4980 bytes. {9CEEB030-E415-11D0-98D1-006097B010E3} : 904 bytes. {9CEEB02F-E415-11D0-98D1-006097B010E3} : 4 bytes. R 0 0 0 0 0 L 0 0 0 0 0 R 0 0 0 0 0 L 0 0 0 0 0 Figure 5, Inserting the Model into the Application. An abstract model of inter-component communication is written into the application binary for distribution. on the client in order to access the Windows GUI libraries or that must be placed on the server in order to access persistent storage directly. Combining location constraints and information about inter-component communication, adpcoign creates an abstract graph model of the application. In the current implementation, adpcoign combines the abstract graph model with data about the network configuration to create a concrete model of the cost of distribution on a real network. Adpcoign then uses a graph-cutting algorithm to choose a distribution that minimizes communication costs. In the future, the construction of the concrete 4 model and the graph-cutting algorithm could be performed at application execution time, thus potentially producing a new distribution tailored to current network characteristics. After analysis, the application’s inter-component communication model is written into the configuration record in the application binary; see Figure 5. Any residual profiling logs are then removed from the configuration record. The configuration record is also modified to disable the profiling instrumentation. In its place, a lightweight version of the instrumentation will be loaded to realize (enforce) the distribution chosen by the graphcutting algorithm. Aside from the inter-component communication model, perhaps the most important information written into the application configuration is data for the component classifier. The component classifier matches components created during distributed executions to components created during the profiling scenarios. The abstract model of inter-component communication contains nodes for all known components and edges representing the communication between components. To determine where a component should be located in a distributed execution, the classifier tries to match it to the most similar component in the profiling scenario. The premise of scenario-based profiling is that profiled executions closely match post-analysis executions. Therefore, if a component is similar to a component in a profiling execution, then it will most likely have similar communication patterns. Based on the chosen distribution for a similar profiled component, the classifier decides where new components created during the distributed execution should be instantiated. Figure 6 shows the distribution chosen for our profiled scenario. In this scenario, the user loads and previews an image in Microsoft Picture It! from a server. Each of the large black dots in Figure 6 represents a dynamic component in the profiled scenario. Lines between the components represent COM interfaces through which the connected components communicate. In the on-screen version of Figure 6, lines are colored according to the amount of communication flowing across the interface. Red lines represent interfaces with large amounts of communication (communication hot spots) and blue lines represent interfaces with minimal communication. Solid, black lines represent interfaces that are not remotable (i.e., pairs of components that must reside on the same machine). An interface may not be remotable for any of the following reasons: the interface has no Interface Definition Language (IDL) description to enable parameter marshaling; one or more of the interface parameters is opaque, such as a “void*”; the client directly accesses the component’s internal data; or the component must reside on the client or the server because it directly accesses system services. The “pie” slice in the top half of Figure 6 contains those components that should be located on the server to minimize network traffic and thus execution time. In our example, the operating storage services, the document file component, and three “property set” components are all located on the server. Note that approximately one dozen “property set” components (of the “PI.PropSet” class) are located on the client. In order to achieve optimal performance, a component-based ADPS must be able to place components of the same class on different machines. After the abstract distribution model is written into the binary, the application is prepared for distribution. When the application user instructs Picture It! to load an image from the server, the lightweight version of the Coign runtime will trap the related instantiation request and relocate it to the server. The four components chosen for distribution in Figure 6 are automatically distributed to the server. Coign distributes the component to the server by starting a surrogate process on the server. The surrogate acts as a distributed extension of the application; described components reside in its address space. A distributed version of the Coign runtime maintains communication links between the original application process on the client and the surrogate process on the server. Figure 7 shows the distributed version of Picture It!. The window in the lower right corner of Figure 7 contains the surrogate process and the components distributed on the server. Coign automatically created a distributed version of Microsoft Picture It! without access to the application source code or the programmer’s knowledge of the application. The automatic distributed application is customized for the specific network to minimize distributed communication costs. Figure 6, Choosing a Distribution. Coign cuts the graph using online network performance parameters to minimize distributed communication costs. The pie slice in the upper right contains the components selected for distribution on the server. 3.2. Discussion We envision two Coign usage models to create distributed applications. In the first model, Coign is used with other profiling tools as part of the development process. Coign shows the developer how to distribute the application optimally and provides the developer with feedback about which interfaces are communication “hot spots.” The programmer can fine-tune the distribution by inserting custom marshalling and caching on communication intensive interfaces. The programmer can also enable or disable specific distributions by inserting or removing location constraints on specific components and interfaces. Alternatively, the programmer can create a distributed application with minimal effort simply by running the application through profiling scenarios and writing the corresponding distribution model into the application binary without modifying application sources. In the second usage model, Coign is used onsite by the application user or system administrator. The user enables application profiling through a simple GUI to the setcoign utility. After “training” the application to the 5 Figure 7, The Distributed Application. Component instantiation requests are relocated to produce the distributed application. The new, distributed application is functionally equivalent to the original, nondistributed application. Distribution is achieve by modifying the application binary at run time, not the application sources. user’s usage patterns—by running the application through representative tasks with profiling—the GUI triggers post-profiling analysis and writes the distribution model into the application. In essence, the user has created a customized version of the distributed application without any knowledge of the underlying details. In the future, the Coign could automatically decide when usage differs significantly from the profiled sce- narios and silently enable full profiling for a period to reoptimize the distribution. The Coign runtime already contains sufficient infrastructure to allow “fully automatic” distribution optimization. The lightweight version of the runtime, which relocates component instantiation requests to produce the chosen distribution, could count messages between components with only slight additional overhead. Run time message counts could be compared with relative message counts from the profiling scenarios to recognize changes in application usage. 4. Architecture of the Coign ADPS The Coign runtime is composed of a small collection of replaceable COM components; see Figure 8. The most important components are the Coign Runtime Executive (RTE), the interface informer, the information logger, the component classifier, and the component factory. The RTE provides low-level services to the other components in the Coign runtime. The interface informer identifies interfaces by their static type and provides support for walking the parameters of interface function calls. The information logger receives detailed information about all component-related events in the application from the RTE and the other Coign runtime components. The information logger is responsible for recording relevant events for post-profiling analysis. The component classifier identifies components with similar communication patterns across multiple program executions. The component factory decides where component instantiation requests should be fulfilled and relocates instantiation requests as needed to produce a chosen distribution. 4.1. Runtime Executive The Coign Runtime Executive is the first DLL loaded into the application address space. As such, the RTE runs before the application or any of its components. The RTE patches the COM library and other system services to trap component instantiation requests. The RTE reads the configuration information written into the application binary by the setcoign utility. Based on information in the configuration record, the RTE loads other components of the Coign runtime. The RTE provides a number of low-level services to the other components in the Coign runtime including: interception of component instantiation requests; wrapping of component interfaces to intercept inter-component messages; management of thread-local stack storage for use by other components in the Coign runtime; and access to configuration information stored in the application binary. The current Coign runtime contains a single RTE. The DLLs for profiling and “regular” program execution differ in the choice of components to run on top of the RTE. 6 ,QWHUIDFH ,QIRUPDWLRQ &RPSRQHQW &RPSRQHQW ,QIRUPHU /RJJHU &ODVVLILHU )DFWRU\ &RLJQ5XQWLPH([HFXWLYH57( Figure 8, Coign’s Component Architecture. Runtime components can be replaced to produce lightweight instrumentation, detailed inter-component communication trace logs, or remote component instantiation. 4.2. The Interface Informer The interface informer locates and manages interface metadata. With assistance from the interface informer, other components can determine the static type of a COM interface, and walk both the input and output parameters of an interface function call. The current Coign runtime contains two interface informers. The first interface informer operates during scenario-based profiling. The profiling interface informer uses format strings generated by the MIDL compiler [13] and interface marshalling code to analyze all function call parameters and precisely measure inter-component communication. Profiling currently adds up to 85% to execution run time. Most of this overhead is incurred by the interface informer. The second interface informer is used after profiling to produce the distributed application. The distributed informer only examines enough function call parameters to locate interface pointers. As a result of aggressive preexecution optimization of interface metadata, the distributed informer imposes an execution overhead of less than 3% on most applications. 4.3. The Information Logger The information logger summarizes and records data for automatic distributed partitioning analysis. Under direction of the RTE, Coign runtime components pass information about a number of events to the information logger. The logger is free to process the events as it wishes. Depending on the implementation, it might ignore the event, write the event to a log file on disk, or accumulate information about the event into in-memory data structures. The current implementation of the Coign runtime contains three separate information loggers. The profiling logger summarizes data describing intercomponent communication into in-memory data structures. At the end of execution, these data structures are written to disk for post-profiling analysis. The event logger creates detailed traces of all component-related events during application execution. One of our colleagues has used traces generated by the event logger to drive detailed simulations of the execution of component-based applications. The null logger ignores all events. Use of the null logger insures that no extra files are generated during execution of the automatically distributed application. 4.4. Component Classifier The component classifier identifies components with similar communication patterns across multiple executions of an application. Coign’s scenario-based approach to automatic distribution depends on the premise that the communication behavior of a component during a distributed application can be predicted based on the component’s similarity to another component in a profiling scenario. Since, in the general case, it is impossible to determine a priori the communication behavior of a component, the component classifier groups components with similar instantiation histories. The classifier operates on the theory that two components created under similar circumstances will display similar behavior. The output of the post-profiling graph-cutting algorithm is a mapping of component classifications to computers in the network. The current Coign runtime includes eight component classifiers created for evaluation purposes. Experiments indicated that the most accurate results are produced (at reasonable cost) by grouping components of the same type that are created in the presence of the same stack backtrace. 4.5. Component Factory The component factory produces the distributed application. Using output from the component classifier and the graph-cutting algorithm, the component factory moves each component instantiation request to the appropriate computer within the network. During distributed execution, a copy of the component factory is replicated onto each machine. The component factories act as peers. Each traps component instantiation requests on its own machine, forwards them to another machine as appropriate, and fulfills instantiation requests destined for its machine by invoking COM to create the new component instance. The job of the component factory is very straightforward since most of the difficult problems in creating a distributed application are handled either by the underlying DCOM system or by the component classifier. Coign currently contains a symbiotic pair of component factories. Used simultaneously, the first factory handles communication with peer factories on remote machines while the second factory interacts with the component classifier and the interface informer. 7 4.6. Summary The component structure of the Coign runtime allows it to be used for a wide range of analysis and adaptation tasks. The scenario-profiling runtime is converted to the distribution-realization runtime by changing the interface informer and information logger components. By changing just the information logger component, one of our colleagues has generated extensive traces of the activity of component-based applications. These traces were used to drive a simulator to analyze the performance of algorithms for a large distributed object system. 5. Evaluation Because it makes distribution decisions at component boundaries, Coign depends on programmers to build applications with significant numbers of components. For our experiments, we use a suite of three applications built from COM components: Microsoft Picture It!, Octarine, and the Corporate Benefits Sample. We believe that these applications represent a wide class of COM applications. Microsoft Picture It! [12] is a consumer application for manipulating digitized photographs. Picture It! includes tools for selecting a subset of an image, applying a set of transforms to the subset, and inserting the transformed subset into another image. Picture It! is a non-distributed application composed of approximately 112 COM component classes in 1.8 million lines of C++ source code. Designed as a prototype to explore the limits of component granularity, Octarine is a document processing application similar to Microsoft Word. Octarine contains approximately 150 classes of components ranging in granularity from less than 32 bytes to several megabytes. Octarine’s components range in functionality from userinterface buttons to generic dictionaries to sheet music editors. Octarine manipulates three major types of documents: word-processing documents, sheet-music documents, and table documents. Fragments of any of the three document types can be combined into a single document. Octarine is composed of approximately 120,000 lines of C and 500 lines of x86-assembly source code. The Corporate Benefits Sample [11] is an application distributed by Microsoft Corporation to demonstrate the use of COM for creating client-server applications. The Corporate Benefits Sample provides windows for modifying, querying, and creating graphical reports on a database of corporate employees and their benefits. The entire sample application contains two separate client frontends and four distinct server back-ends. For our purposes, we use a client front-end consisting of approximately 5,300 lines of Visual Basic code and a server back-end of approximately 32,000 lines of C++ source code with approximately one dozen component classes. Benefits leverages commercial components (distributed in binary form only) such as the graphing component from Microsoft Office [10]. Each of the applications in our test suite is dynamic and user-driven. The number and type of components instantiated in a given execution is determined by user input at run time. For example, a scenario in which a user inserts a sheet music component into an Octarine document will instantiate different components than a scenario in which the user inserts a table component into the document. 5.1. Simple Distributions For our first set of experiments, we ran each application in the test suite through a simple profiling scenario consisting of the simplest practical usage of the application. After profiling, Coign partitioned each application between a client and server of equal computational power on an isolated 10BaseT Ethernet network. For simplicity, we assume that there is no contention for the server. Figure 9 contains a graphical representation of the distribution of Microsoft Picture It!. In the profiling scenario, Picture It! loaded a 3 MB graphical composition from storage, displayed the image, and exited. Of 295 components in the application, eight were placed on the server. One of the components located on the server is the component that reads the document file. The other seven components are high-level property sets created directly from data in the file. The property sets are located on the server because their output data set is smaller than their input data set. As can be seen in Figure 9, Picture It! contains a large number of interfaces that can not be distributed; represented by solid black lines. The most important nondistributable interfaces connect the sprite cache components (on the bottom and right) with the user interface components. Each sprite cache component manages the pixels for an image in the composition. Most of the data passed between sprite caches moves through shared memory regions. These shared-memory regions correspond to non-distributable component interfaces. While Coign can extract a functional distribution from Picture It!, most of the distribution granularity in the application is hidden by non-distributable interfaces. To enable other, potentially better distributions, either the non-distributable interfaces in Picture It! must be replaced with distributed IDL interfaces, or Coign must be extended to support transparent migration of shared memory regions; in essence leveraging the features of a software distributed shared memory (DSM) system [1, 15]. Figure 10 contains a graphical representation of the distribution of the Octarine word processor. In this sce- 8 V Q Q J J 5 5 P P X X Q Q ( ( \ \ J J H V H W V V V V V V V V D O D V D O O & D V V O & V & V V & W D Z V Q OD W V S O R R G LW & S OD 2 & W L V V V V D O V D O V & V & V U OD OU OD J & W 0U & & H J H S Q 0Q S D Q D U H U U J W W W W H H U U D J J H U H H H H W W W Q H D D J JH H U U H H H U D J 6 66 6 D Q J H H U H 6 66 D DQ Q QD D J J H UD S S S S LN 0 S S S D J R R R R 00 D D Q Q D D U Q W R W U U U UR D W W 0 H U U UR UR LOH D DQ Q R Q J H U 6 3 3 3 3 3 H Q Q W W00 ) D , 3 D J H U , , H H 0Y , Q Q W 0 0 , , ,3 F Q D J H U 3 33 3 ( Y Y YH H Q QW W W0 D Q D J JH HU U 3 33 R LOH , ( Y H H Q J H U 0 D Q D ' ) 3 , ,( ( ( Y Y H HQ W 0 D DQ QD D J H Y 0 3 3 , , ( Q W Q D J Y H Q W 0 D D Q D 3 3 , ,( ( Y H Q W 00 D Q U , 3 3 3 ,( ( Y YH HQ QW W 0 D JH HU 3 , ,( D Y H Q W 0 3 Q DJ H W D 3 ,(,( (Y Y HQ Q 0 DQ 3 W 3 , ,( Y YH Q W0 W 3 H 3 ,(( Y HQ 6H HW 3 , W S 6 3 ,( (Y UR S 6H HW 3 , W 3 ,3 3UR S S6 H UR W 6 3 , 3 ,3 3UR S 6H HW UR S W 3 , 3 ,3 UR S66H U 3 ,3 UR S JH U HW DQD JH 3 ,3 UR U S6 0 3 ,3 DQD JH U 3 ,3URYHQW 0 DQD JH U 3 ( QW JH U 3, (YH QW0 DQD DQD JH U 3, (YH QW0 QD 0 3, (YH QW 0D QDJH U 3, ,(YH QW 0D QDJHHU YH D 3 ,( YHQW 0 DQDJ 3 ,( YHQW 0 3 ,( YHQW 3 JHU ,( DQD 3 W0 JHU YHQ DQD 3,( YHQ W0 DQD JHU 3,( YHQ W0 DQD JHU 3,( YHQ W0 DQD JHU 3,( YHQ W0 JHU DQD HU 3,( W0 YHQ QDJ W0D 3,( JHU YHQ DQD 3,( W0 JHU YHQ DQD 3,( YHQ W0 QDJHU HU W0D 3,( YHQ W0DQDJ 3,( YHQ HW 3,( URS6 3,3 H V W D D , 2 V Q L V V & Q L D UW O O S V V D R 8 S , U Z $ S V UW V & V V & D D S R :S R N 2 N 6 V U PD , V D , O U $ 83 W , 6 F U G H O D G R W Q 8 ( U O D H R Q R Q F P H R G R W %8 O &8 & Q L ( / H U S * & D F L H R L ( D H , :V & , D , PF F H ' : ( / / 2J H D & $ \ S ( / D H , 8U 8 J 3 3 K :' 2 H D , , , , 6 $ 8 W H Q 6 ' H K Q U D , , , / 22 8U D R R &' , H 3 33 3 D H U 2 , , PD 33 3 2 H K KF FD Q H F P && N H , , 3 3 3 ( 0 H K F D D K W D 6 , , , LQ 3 ( / P K F D &W P F U & , , 3 3 ( / 2 R D 2 F D & H R , W Q 3 3 6 ( / 2H I D && H , , 3 WL LU HY 0 & V ( / 2 H K H 3 W F 3 Q / 2 H K & H , W LU U S ( H 3 OL F D D H 3 U WL LU S S 6 2 H K , , ) 7 H K F D & U S 66 H 3 WL Q K FD D & S 6 , , 3 H R F & U W LW 3 LU S 6 H 3 L D & , , W ( S 6 V & H 3 W L / , W R H L U 3 , 2 H S WL US S 6 ( 3 / Z 6 PUS 6 6 , 3 S R 6 , 2WH H L 3 Z 6 9 R U & , , 3 3 H (/ L S ) 3 , , 3 W 9 R P U 1 2 H U , 3 ) Z 6 R , 3 IV , H S 3 L W 1 , 3 Q H 9 R U DU ( 6 ) 3 3 / 7 S , 1 , 2W H [ R , 3 U Z 6 ) 3 3 , H S WU W L 3 H , 9 R U $ 6 ) 3 , S , 13 W R , 3 H H OL U W 3 H 6S ) 3 F , 6 R S U3 R 3 R W H ' , U 3 , 3 W H 6S R U 3 W H 6S , 3 R 3 W H 6S U 3 UH , U 6S R 3 3 U H JD Q W H 6S RU 3 , 3 J D , U H DQ 0 R W U 3 QH 3 U H JD D 0 W Y( , 3 J Q QH , U H DQ D 0 Y W 3 ( Q U H JDQ D 0 , H W 3 QH Y ( U H JD Q D 0 , JD D W Q Y ( , 3 H W QD 0 3 QH Y ( 0 W Y , 3 QH ( , Y U HJ 3 ( D QD , U HJ 3 0 W Q D H U HJ QD 0 W Q Y ( , HY ( 3 D , 3 U HJ QD 0 DQD W QHY , 3 U HJ 0 W QH ( D Y( , U HJ QD 0 W Q D HY ( 3 , U HJ QD 0 D QD W QHY ( 3 , 3 0 U HJ W QH D Y( , 3 U HJ QD 0 D QD W QHY ( , 3 U HJ 0 W QH D Y( , U HJ QD 0 W Q D HY ( 3 , U HJ QD 0 D QD W QHY ( 3 , U HJ 0 D QD W QHY ( 3 , 0 W Q HY ( 3 , 3 3,6SULWH&DFKH2 /( 3,3URS6HW 3,6SULWH&DFKH2/( 3,3URS6HW 3,1,)9LHZ2/( 3,3URS6HW 3,6SULWH&DFKH2 /( 3,3URS6HW 3,1,)9LHZ2/( 3,3URS6HW 3,6SULWH&DFKH2/( 3,3URS6HW 3,1,)9LHZ2/( 3,3URS6HW U HJDQD 0 W Q HY ( , 3 U HJDQD 0 W Q HY ( , 3 U HJDQD 0 W Q HY ( , 3 U HJDQD 0 W Q HY ( , 3 W H 6S RU 3 , 3 W H 6S RU 3 , 3 W H 6S RU 3 , 3 W H 6S RU 3 , 3 W H 6S RU 3 , 3 W H 6S RU 3 , 3 W H 6S RU 3 , 3 W H 6S RU 3 , 3 U HJDQD 0 W Q HY ( , 3 U HJDQD 0 W Q HY ( , 3 , 3 Y( W QH 0 , 3 DQD HY ( W Q Y ( , 3 U HJ QD 0 H D W Q , 3 U HJ D QD 0 HY ( 3 W Q Y ( , U HJ 0 H D QD 0 W Q U HJ , 3 Y( D QD W QH U HJ 0 , 3 D QD HY ( W Q U HJ 0 , 3 DQD HY ( 3 W Q Y ( , 0 U HJ H D QD 0 W Q Y ( , 3 U HJ H D QD 0 W Q Y ( , 3 U HJ D H DQ W Q Y ( , 3 0 U HJ H D QD 0 3 W Q U HJ , D QD Y ( , 3 U HJ QH ( 3 W QHY ( 0 , 3 QD 0 W QHY ( , 3 JD QD 0 W QHY ( , 3 U H JD D W QHY ( , Q 0 3 U H JD , QD 0 W QHY ( 3 U H JD Y W , QD 0 QH Y ( 3 U H J D QD W 0 , H QH U 3 3 D U JD W R , U H JDQ D 0 6S RU 3 , 3 3 3 U H JDQ W H 6S U , 3 3 R W H UH , U 3 3 6S R U , 3 H 6S R ( W 3 , H 6S HY ( , 3 W Q HY ( H 3 , W W Q HY ( 0 , 3 W W Q HY Y ( , QD 00 ( , 33 Q H D QD Q HY ( W 3 J D , QD 0 W H Q HY 3 ( , U HJ D QD D 0 W Y ( , , 3 3 0 WQ U HJ D Q H Y ( U HJ D QD 0 Q H Y ( , , 3 3 ( U HJ JD QD 3 W W Q QH HY Y ( , U 0 3 D H ( , Q H Y 33 U HJ ( , D 0 W W H 3 Q D 00 W Q Q HY Y U ( , , 3 3 W D Q D Q H Y ( ( , , 3 3 Q D 00 D J , W W Q H Y Y (( 33 H J D Q QD D 0 ( , , Q H H Y 3 3 H J D U 0 Q 33 3 , , , H Y Y ( ( U H J D DQ QD D 3 33 3 3 3 (( W W W Q Q H H Y Y , , , H J U 0 , Q Q H H U H J D Q 0 Y Y ( 1 3 0 W W 6 3 , , , , , , H J D Q Q U D Y , & 31 3 6 3 0 W H H H J U U S U Q D D 0 H ) R Q Q U H W W R U , U S U D Q Q D D 00 Q 9 S U R U 0 W PR ) R U R J D D Q Q D D W W L 6 WL S 00 H J J D D Q Q D S 9 S WL S H 6 H 0 H H J S 6 Q D U 6 H 6 Z H &H D D L U U H J J D D R H H &H Q Q D 2 W D W U H H J J V Z H U U H H F D D Q L W 2 W D W U U K J J D / F LW H R H H J ( K / H 2 Q U U ( H U 7 / 2 U ( D / Q ( V I R 33 , , 13 , U R ) 9S L 6 H H ZW 2 / ( 3 , 6 S U LW H & D F K H 2 / ( 3 , 3 U R S 6 H W 33 3 , , , 13 6 , R U S ) U 9 S LW LH 6 H & ZH D 2W F K / H ( 2 / ( 3,& RPS 3,3 RVL WL RQ7 URS6 3,6 HW UDQV SULW IRUP H& 3,3 URS6 DFK H2 3,1 HW /( ,)9 3,( LHZ 2/( YHQ W0 3,( DQD YHQ JHU 3,( W0D QDJ YHQ W0 3,( DQD HU YHQ JHU 3,( W0 DQD YHQ JHU 3,( W0D QDJ YHQ W0 3,( HU DQD )LO H0YHQ W0 JHU RQLN DQD JHU )L HU OH 3, 0RQ & 3, ( R3 LNHU DL 3 ,( YHQW QW6 3 ,( YHQW 0 WU D DQ WH 3, YH ( QW 0DQ DJ J\(Q HU 3, YH 0 ( QW XP DQ DJ 3 5 ,( YHQW 0D DJ HU JQ 3 ,( YHQW 0 QDJHHU 3 DQ ,( YHQW 0 DJ U 3 ,( YHQW 0 DQDJ HU 3, YH 0 DQD HU JH 3 (YH QW0 DQ DJ U QW 3 ,( 0 DQD HU JH 3 ,( YH DQ U DJ 3 ,( YH QW HU 3 ,( YH QW 0 3 ,( YH QW 0 DQ 3 ,( YH QW 0 DQ DJ 3 ,( YH QW 0 DQ DJ HU 3 ,( YH QW 0 DQ DJ HU Q ,' D YH 0 Q D H 3 3 ,' R Q W0 DQ D JH U U 3 ,( R P W0 D D J P DLQ D QD JH HU 3 , 3 Y D Q J 3 , H LQ H U D J 3 , 3 UR Q H U 3 , 3 UR S W U 3 , 3 UR S 6 0 6 H D 3 , 3 U S Q 3 , 3 UR RS 6 H W D 3 ,3 3 UR S 6 H W J UR S 6 H W 3 ,3 H 3 U U 3 , ,( UR R S6 6H HW W 3 S ( 3 , ,( Y S 6 H W 3 6 H W Y H ,( ( 3 Y H Q H W 3 , ,( Y H Q W W 3 ( Y H 3 3 , ,( Y H Q Q W 0 3 W 0 Y H Q , 3 3 , , ( ( Y H Q W W00 D D Q H Q W 0 Y , ( ( 3 3 D Q Q W 0 3 3 , , ,( ( D Q D D Y Y H 3 3 J Y H H Q ( W 0 D Q 3 33 , , Y 0 D D Q DD J H , , ( ( Y Y H H Q Q W J H Q , , ( Y H Q Q W W 0 , 6 3 ( ( D Q D D J H U U Q H H W 0 3 Y Y Q D JJ H U H Y Y Q Q W W 0 0 D D J H H U U S UR H H H Q R U Q W W 0 0 D D Q J H U U Q Q 0 0 D Q Q D W S LW S H U W W D D Q D D 6 H 6 W 0 0 J U Q Q D D D J & H 00 Q Q D D J J H H H D D D D J J H H U U W D W D D Q Q U Q J H F Q J H H U D D K H D D U U J J H U U J J H H 2 H H U U U U / ( U P Figure 9, Microsoft Picture It!. Of 295 components in the application, eight are placed on the server. H F V Q H V V L H W H \ H L L U WU WU X U \H U S T D V H H H U F Q \ H S S DR U LW H H LR Q V U QU D U R R U H V H J 6 W W H U U R L L 3 H X Q H H D H LF H \ W 3 W \ OS LW WU V R U S T J 3 H FG H L Q WL U U H S ' U Q W V D V KV K L Q H D R U H + H S D V U K D H H F H UR Q 6 L S Q S SS S ' X O UR S R Z Z 3J R D H 0H S DR R H 6Q P V J 3 R ZU LW D H U U U U R V R U 'R U D Z F L R PD W U W RW R W WU LWH U G \ \ U R H R ZU Z V L U H 3 J LH H S H LI G G UDLOH W Q F U J OH WL X H %, U U U 0 LW J3 L L SQQ H Q H Z 3 3 3 U IL J P O W PR H \ F F W DV [ LQ Q LQQ LQ GLI W G W R LHW R H D UH VK U R O6LW W W L R V S 8 WR) H W DW D L RX R H LH H W H \ OS Q W LQ Q LQ G LI L U ' W R Q U [U W H KSS H X U R0 H I J O W R W RRW Q L J * 6F 7 D D D L RD H L Q W Q G G &UR6 Z T R U S \ IL LW H [ \ [ D H D R Q \ S V U & 6 , 6 L S 3: 3 3: D L R L LQ LQ Q U U D R 1 + D U OS 6 U U W W H ' ' \ S H U W V H3 R : S H 3 1, & ( W PW R ZU Z H O H JH DU U HH 13: S 3 1D D L O P R R W H 67 37 6$ H V D R U H 6 F LW L SQD R U 3J L LI J W P\ RR : / RQU LQ G W GRLH Q7 W '2 2222 LQ+ 3: , 3 V H 2222222 Q OS LW 3J I W R Z 6 H WUR QLN 22222 R U R D LQLQ JW DIL LW H [ 11 RW : 22222 G O O H ' H 6 222 R U LW U 0 LW GD H WL 2& 3 222 D LQ WL LQ G WGR RO LWRQ HU RLQ R 3 U W R W H 6& R+ D 2 2 Q U 2 2 ) & H V [ R LQ LQ U H U R 3 W U 222 Q7 3 22 F D V U H W H % W LW QWU O H D 1, H S : D D LQ WU 6 & LN 0 L SQ O 22 22 : 1 R H O Q 6 R 3 Q P Q S R LI J [ \[H D 73 22 22 1 O U RX 0 : 3 22 22 ' R U ( R ,'R R O LWHR WULWH 3 W R R U R S\ U LW H U \U 3 22 22 : R / W H 67 R WU Q SH U U U 3 0RJQWU & 22 22 & HU Q O PR R Q 7 O WU 6&R 6 D H VK H 3 R , 222 22 ) W H 2P U R/(Q PRQ&RO R LI J W[P\ 1 Q J VK SS U W R HOS 2 22 H 3 H WU R U WW WU & R LW H HR 6&6 22 LW Q S LW VD S SDRUDU H & ,W L R ( W O+ 22 U Q & 22 2 6&R 6LWH J IL & X /RQ URW F 7 L S DRU UJ3 H W D W R R Q ) U Q 2 2 O , % 2 2 R U 1 UP LH RO LWHQWUR G LV LR S 3 O \ ' 2 22 2 D[ U 0 & R EH 2 / FW R DFN HU U 3 W [U HD31 UH D RWLIQWU 6 2 2 Q O D 7 2 2 ) D U H W H &%Z OH 2 2 /1 RRUP S W Q H H \U + OH LI J [ \W H73 R 2 22 & /( \ L R H UP 6 U H 2 U V \U D L LW W W 76 R QNQ H LNH + 2 2 ) O RQ D VU F UP 2 2 2 , 2 D QQR H L 1 RU R WLYRQ W Z 2 ) L OL Q R F W 2 2 8 L W )H3' 2 2 ) LQ GR Z R U QR L W F H0 2 2 $ L F D LQLQWGR H & W F LO 2 2 L F ' HN L L ' ) 3 D LQ R'2 H GRQR( 2 : 2 U / ' G F 2 3 QWGRZ 2 H UH R L 2 : DLLQ 2 2 2 3 QW L LIL FL Q 0 H HN OL Q W Q 8 2 :DLLQ GRZ H GR R R 8 )2 U 2 3 Z 2 2 :DLQWGR U HN U GR FL 0 1 2 H 2 3 LQ LILH H L LI FL Q P 2 2 : RW QW Z H G QRLW RQ 8 W, H U 2 1 DLLQGR 8 2 2 3 U GRRFL 0 1 H QW OL U HN U L H 2 2 :DL GRZ L FL Q P 2 ) 2 3 LQ LILH H P U HN Q IL W Q 8 W, RU 2 :RW QW Z U HNL Q R R 8 2 )H H L 2 1 DL GR 01 QR N 2 2 3 LQ QW L QRR 0P LW F QD Q 2 :DL GRZ FH W V W,2 U R 0H O H O H Q 2 3 LQ O R Z ,W HL ) 6 2 :RWLILH HL UW H H 0 HOL ) 9 QR 2 1 Y H U HU H L W *R OL ) L DLQW Z O I 2 & EDN L Q LW F $ UH & W 23 LQGR OSHU a L / R R1 S O H SRUV KF 2:DLQW Z WU RO +H 2 WL 0 + H 23 LQGR LVW O GNFQ Z P OL 2 RUW D R U RZ6 2:/(&RQ ) RZ Q/ QNQ ) QR % 2 22 QNQ LVW HWL H 28 WUL QJ/ HU WL U 8 &P 2 U 6 (/R) O 6 O R 26 HQX,'0 RQLN 2 QLNH UW Z 20 URJ ZH U RUW P UR2 0R H 2 U QR L 9 L 9 H 23 U RJ,' VW L IL QR ) 2 UH & W G W 23 0RQLNH 2 U D\H R & RZ Q/L L / S O HSRUV ,WHP QNQ LVW 2 GQOO D 1 U + 28 WUL QJ/ O GNFQ Z P * QLNH U 2 W 6 RUW D R Q U D 26 HQX 0R QLNH 2 QR% NQR) 2 20U RJ,' 0R U H 23 U RJ,' WL & UR 8 2 P U 23 0RQLNH 6 (/ ) 2 U P ,WHP 0RQLNH UR 2 2 HWL 6 U HS ,WHP 0RQLNH ) O RU O H 2 W + O RU 2 ,WHP R& W QRU H L IL WQR 2 ,WHP 0 RQLNHU & ( 1 2 QR ,WHP 0 RQLNHU LW FH 2 H P/ 2 O 2 8QNQRZQ/LVW DU ) W H 6H 6 2 26WULQJ/LVW UH HJW [H 7 O GQ 2 2 0 HQX D+ U H GU L IL QD 5 2 23URJ,'0 RQLNHU U H DR L ILWW R 1 2 U HN 23URJ,'0 RQLNHU R1 L QRE\ H. 2 W [ H ,WHP 0 RQLNHU 0 ' 7 QRLW , 2 ,WHP 0 RQLNHU J U N FH L RRU 3 2 O HH ,WHP 0 RQLNHU HQ HOL ) U H6 Y 0 ,WHP 0 RQLNHU L QRLW F $ 2 U HN ,WHP 0 RQLNHU L Q U HN HW, R 0P ,WHP 0 RQLNHU L QR 0P U HN HW, ,WHP 0 RQLNHU L Q U HN R 0P HW, ,WHP 0 RQLNHU L QR 0P U HN HW, ,WHP 0 RQLNHU L Q U HN R 0P HW, ,WHP 0 RQLNHU L QR 0P U HN HW, 2 8QNQRZQ/LVW N L QR 0P HW, 2 6WULQJ/LVW 0P HW, 2 0 HQX U HN L Q R 0PHW, 23 U HN L Q R 0PHW, 23U RJ,' 0R U HN L Q R 0PHW, ,WHPU RJ,'0 QLNH U HN L Q R 0PHW, ,WHP0RQ RQLN U U HN L Q R 0PHW, ,WHP0RQ LNHU HU U HN L Q R 0PHW, ,WHP0RQ LNHU U HN L Q R 0PHW, ,WHP0RQ LNH U HNL Q R 0PHW, 28 0RQLNHUU LNH U HN L Q R 0PHW, 26 QNQ RZ U U HN L Q R 0PHW, 20WUL QJ/ Q/L VW LVW U HN L Q R 0PHW, 23 HQX U HNL Q R 0PHW, 23U RJ,' 0R U HN L Q R 0PHW, ,WHPURJ,'0 QLN U HNL Q R 0PHW, ,WHP 0RQ HU LNHURQLNHU U HN L Q R 0PHW, ,WHP 0RQLNH U HN L Q R 0PHW, ,WHP0RQ LNHUU U HNL Q R 0PHW, ,WHP 0RQLNH U HN L Q R 0PHW, ,WHP 0RQ LNH U U HNL Q R 0PHW, ,WHP 0RQLNH U U HN L Q R 0PHW, ,WHP 0RQ 0R LNH UU ,WH HW, QLNH 0P ,WH P HW, U L QR 0P ,WHP 0RQ U HN QR RU 3 2 2 P0RQ J U HNL ' HW, LN 2 8Q0RQ , R 0P 0 HU HW,, LNH 0P 2 6WUL L QRU HNL Q HW NQ LN U U HN L QRR 0P 2 0 Q RZ U HN HU HW,, L Q 0P 2 3 HQ J Q HW U HN L QR 0P ,WH3 U R X /LVW /L U HN 2 VW L QR(/ 2 ,WH PUR J,' 2 U HNR 6 ,WH P 0J,' 0 Q &O RU F 2 0 RQL 0 RQ O RUW U DEOH W R1 ,WH P0 2 RQL NH R LN O H W+Q R & U L IL P U R) ,WH P U HS RQ HU 2 O RU & NH U QLNH WL 6 H ,WH P 0 LN U 2 UW QURR) U ,WH P 0 RQ HU O R P R& 6 2 HWL H ,WH P 0 RQ LNHU WL 6 Q 2 O RUW (/ 2 ,WH P 0 RQ LNH 2 * HWL 6 2 ,WH P 0 RQ LNHUU OO DR 1 QR& H U W \ 2 LN RQ R 0 ,WH P O R\ D/ H ) L IL WQD 5 ,W P 0 RQ LNHHU O H+ U H W X U HS J 0 HOL 2 ,W HP 0 RQ LNHUU 0 XR 2 ,W HP 0 RQ LNHU R F$ HV D+ LNH 2 ,W HP L QY N LW X 5 O GQ 0 R 2 UH U 2 HP U H6 HU HO W R 1 2 8 2 0R Q ) 2 0 R Q LNH 2 6 L IL P O H UH U RR & LN U 2 2 0 QNQR QLN FH UW Q / 2 H 2 2 3 WULQ Q LW 6 ( R1 U QR LN 2 ,W WL O R H H 1 3 H R UR Q J Z H U 6 &L ILW W R 1 2 ,W H UR WL QR U H 2 H LIL L W RR 1 J X /LVQ U ,W H P U HH ,' / 2 ,W H P 0 J,' RUW LI IL W W 6 2 O U H L ,W H P 0 + R 1 0 W LV U 2 ,W H P 0 RRQ 0 \UIL W RR) W O H P S 0 LN H Q ,W L P U R & 2 D/ H UH 2 ,W H P 0 RRQ LN H RRQ R\ U 6 UW Q D * 2 ,W P 0 R Q LN H U Q LN 6 2 ,W HHP 0 LN H OO W X WL O R H H R Q LN H U W ) 2 ,W H P H U 69 \ QD 8 2 ,W 0 RQQLNLNHHU U U WL H P0 U RQ ) H L 2 ,W HHP 0 GP Z N LN H U ,W R D Q U R/ 2) 22 ,W HHPP 0 R Q H U R P GU Z ,W U R & 2 P 0 RRQQ LN (P 2 HP U R 1 9 2 LN 0 Q %& 2 HP Q R 2 22 0 R Q LN H L H D 2 8 UW ILW /U ) 0 R Q LN H U 2 Z L /NF QR 6 6 R L ( D H75 2 2 2 3 V 0 Q0 RRQQ LN HHU U WL O U H P[ D 1 W U GRUW H 22 WU N R Q LN H & 22 3 6 R O L R H6 2 W QW RR 17 URHQLQ Q Q LNLN H U U 8 UR S + W,W, 2 H HW Q 6 LN HH U H HJLIL ILW H 3 H W & H W, , J X J RZ 22 0 L W[ U P O HH O RU H W ,, / H U U S PH H 2 6 W QN J ,' R F H6 U U . WW , QRH O )& W H UL 22 2 + Q ,' LVQ U J 0 0 PPHH W , W U H LW W R H H W W, 22 )& R 0 W / , RR 00 P PP RU Q ' H R RD Q Q O 2 E\ Z0 O S QQ R H W, , LV 0 2 1 PP / U Q Q XJ 0 R H H R W , 2 R R L 0 0N L Q Q R 2 W H W W, , ) & R Q R Q U D P 2 (PWU G / 0 NL R PH H / Q LN W W, , , 22 )2 R R U Q GU RD R HH N L QQ RR 00 PP LV H W W , , HH 22 L L Q R 0 8 R /R Q WL PWU &6 O U + Q U U H HNN 2 LV LN H W W , , HH U W IL 6R LW G W L Q Q RR 0 0 PPPP 22 &1) U U H N L N HW W , , W HU U N L L )2 QD ) O R 6 00 P HH RQ U (P U H U U HH N W W , , , H N L QQ QR H 00 PPP 222 L 8)2 R R R U N P &6R U L 6Q H LW 0 W W W , , , HH U HH N U L L OG R 222 H 0 OH $) R/ Q W PQ WH WU W W W , 2, HH O U U H N 00 PPP HHH N 222 LW QQR R R W U HH H Q U (UP LI 00 PPP W W, W, W, , 2222222222222222)22222 U U HH RR Q R % R LW 6 12 7 0F R W L HR L L QQ Q 00 PPP W R HH H H NP N U 2)& R U H Z D Q H LW O X 3 W U L N L L QQ QR R R PPPP H 000 + HHN N H OL &$0) 8) F WU R R / R R LY PQ &6R U & ) & 2 * 000U P261) QQ R R NN L L R /R 1551) &2H $) U U HH H N R Q NL Q U Q W ( OE Q H R %R L O S RQ R 0000 / F H U U H N L L L Q RRRRR J G O ZD W 6 R R R R R / D R D X R R R / 0F R R S'U N UP(PW LI 0 OS U U H H HN N QQQ NN R R / U + Q QH L L L & D LN 6 U U U Q U Q U Q (O W Q O W U Q (R W H R WH , Q R R R R (R LW P QF L U P W OL , PQ & URH L N LV H U U HH L L L Q Q' P O N QQ Q SH H NWU R % 6 U R U H U U L L NNN U W W H LI J H LI PW Q Y U F O LI HHH 'U O Q& N N L L L L / GR H W R O H U U & &OS Z R L O \ LH H U LH U D QW 6 Q R &LN 6 O D U U U H H H 0H N N N L R EU 6 R6 R R H LV U O N U U U HH H WU WL D U 6O RH 6L QF HL + R HU L O L O R / U 6R F F RU U U U H QU W R L 6 Q HH W Q 0 N WU WH R WL W 6 W 6 Q S D W H H N H LW Q Q U / R H U UW & W R O G O UR L WL WL UW \ R H LW WU OH LV U O &S Q N R + H HRR : X H R F O H O R RH W R+ O X Q H SH QU + U V LQ +W O+ WL OS W H O WU R HU &S G H H R H Q O R + OS S R O RH U O O S H QU Z D H U H W U Q U U R G O O H U Figure 10, Distribution of Octarine. Of 458 components in the application, two are placed on the server. nario, Octarine loaded and displayed the first page of a 35-page, text-only document. Only two components of 458 are located on the server. One of the components reads the document from storage; the other provides information about the properties of the text to the rest of the application. While Figure 10 contains a number of nondistributable interfaces, these interfaces connect components of the GUI, and are not directly related to the document file. Unlike the other applications in our test suite, Octarine is composed of literally hundreds of components. It is highly unlikely that these GUI components would ever be located on the server. Direct documentrelated processing for this scenario is limited to 24 components. 3 3 6 6 U H 9 Q Q R R L L U V U V V H V U Q U U H D 9 R U H O H H L 9 H Y Y V 9 & O U V W 9 U V O V LI H R V V R Y W D U H U V W O V U H W D U H W O 9 V D O Q Q & Q O H Q Q 9 D & W H R R R O R U UH V W L & 9 R UW ) I V % ) L U V & & H WL W 9 I H & V D Q G V O WL I W U H 9 H G V U Q V D U R I H V O L & Q D 9 H V D D H / V O V Q L & WL H & D % % W V D Q I H / G G O & WL V V % W V H D H I WL U V O H Q Q V % & LI X WL I H Q V D D D % J W W D O & U WL WL H I V H W H Q W I K W D D I & H V H H L L W % Q Q U W H 6 6 WL I I H 9 H Q H % P 6 & H LI H U Q I H V , Q WL H 9 % Q H H % V H H V U Q I H WL H V % % Q H Q V 9 H V I H D W % % U O H LI H V V H Q % 9 V D & % H H V WLI O H Q % U W V WL H 9 V D % & Q VL V H H O W I V WL H % Q D H / 9 & V V I O W L % H V Q VW H / & VL V D H W LI % O Q V U V / WL V H % H D & L H O W I V Q U / 9 WL % H & VL H W I H Q V V WL / H % U 9 H VL VD I Q O VW H % / H VV H 9 LI & U Q W % D VW H O H H VL LI VV U 9 & Q % W / DO H H H V VL VW U Q 9 VD & LI / % W H O H H V VL VWL 9 % & Q U V W / I H D O H H VL VV VWL % Q & 9 / W I H D O H VL VW V % & LI QH VD W / V H O VL % WL Q & / U W IH H H9 VW % VL Q LI U / H V H H VD % VW 9 QH O & LI U W VV H VL H9 DO QH % / V & W U VV WL I VL % H9 HQ DO / & VWL H% W U VV IH H9 D O & VL / QH W VWL U VV % VL IH H9 DO / QH & VWL U W % IH VL H 9 VVD QH / O & V W VV U WL I % H9 HQ D U O & VL / V H H9 W WLI VV % VL HQ DO VV / H & VWL D W V O & % I HQ L/ WL V IH H WLI % QH HQ U H % V H 9 V WL I % VDO HQ & HH \RO S H% U H 9 V P( VWL I VD O & HQH NQ U H % D% 9 VWL I VV HQH DO & U H W VL % 9 / VWL V I HQ VDO H% & W VL U H / VWL 9 VV I HQ DO & H% W VL U H / VWL 9 V I HQ VDO H U H % & W VL 9 / VWL V I HQ VDO & H% U H W VL / VW 9 VV L I HQ DO & H% W VL / VW L I HQ H% O R U W Q R & U D % H LG 6 F L V D % O D X LV 9 H LO ) F R ' H V P D H % W V S \ S 6 $ U H 9 V U V H U U 9 OD H H U U U H U 9 9 H H V & 9 U H V 9 9 H H 9 V H OD V V 9 \ V V U & V V V D D H V V OR OD V O U O H V V 9 D U OD S H H V & & O & U H OD \ 9 W & & V W P OD H H & OR W V V 9 9 H V W ( & L W D V L S H V \ V W O L / / V V W V L U J P LV OR / / V & V H LV LV OD U V / S D W V OD / / OD 9 H U V V U V LW W( & LW P V L LW 9 H I R I W & LW V V I V W LV LW H H I W& ( 9 H / / V I U LW H H W LV V H W U I 6 Q Q H V IL LV H OD \ H Q Q WV U V / H H V H H LV V IL H Q & OD H H OR 9 / / LW V 9 Q Q W H I H 9 OD V LW S % % % V & H H I WV V W H % % Q LV V P IL U H OD WV V H W& Q LV % % / H H OD V IL H Q & % W( & LV / WV H 9 H H Q OD % IL W V / WV LV Q H \H HU & V % H IL H LV W WV / % OR 9 U Q OD H IL S H H % / LV WV Q & H P % H IL 9 VV WV / Q ( HH H V IL OD % H W U \ WV V Q H & H % LV IL OR H W OD Q 9 U H / S & H % LV H P WV W Q HU / % IL H 9 VV ( LV 9 V H D W V V O % Q / ILW V LV DV H H WV Q W& OD &O / % IL HU H N HU & H LV WV LQ 9 Q % 9 / LVW H VV HIL L W/ V VV % OD Q HI OD / ILW H HQ H WV QW& W& % Q % IL DQ H VW GD H /L Q % HQ V HQG HU H HS ILW % HS 9 HU ' QH W' HU VV LWV 9 %H LV OD HI VV 9 / & HQ OD HU VV VW LWV % & OD 9 HI /L & V V QN HQ VW ILW /L % O DV /L LW QH & V HI VW %H ILW HQ /L QH V % U ILW VW %H 9H /L ODVV HQH V QW& % ILW QGD HQH HSH U % 9H /L VW' DVV HILWV U W&O U %HQ 9H /LV 9H O DVV HILWV O DVV N& %HQ /L VW& IL W/LQ HILWV HQH 9HU U DVV %HQ /L VW% W&O 9H HILWV GDQ ODVV %HQ SHQ QW& 'H QGD HILWV HSH U %HQ /L VW' 9H HILWV O DVV U U %HQ /L VW& 9H 9H HILWV O DVV O DVV %HQ N& /L VW& L W/LQ HILWV QHI %HQ W%H /LV HILWV %HQ , 8 * %HQHILWV'HSHQGDQW &O D VV9HU %H QHILWV/LVW'HSHQGDQW&O DVV9HU %HQHILWV/LVW&O DVV9HU %HQHILWV/LVW&O DVV9H U %HQH ILWV%HQH ILW/LQN&O DVV9HU %HQHILWV%HQHILW/LQN&O DVV9HU %HQH ILWV%HQ HILW/LQN&O DVV9HU %HQH ILWV%HQ HILW/LQN&O DVV9HU U H 9 V V D O & W Q D G Q H S H ' W VL / VWL I H Q H % %HQHILWV%HQHILW/LQN&O DVV9HU U H 9 VV D O & W QDGQHSH ' VWL I H Q H % U H 9 VV D O & W QDGQHSH ' VWL I H Q H % U H 9 V V D O & W Q D G Q H S H ' VWL I H Q H % %HQ HILWV /L VW% %HQ HQH HILWV ILW/ 'H LQN SHQ &O DVV HILW GDQ V' W&O 9H HSH DVV U QGD 9HU HILWV QW& 'H ODVV SHQ 9H GDQ HILW U W&O V/L DVV VW' %HQ 9HU HSH HILWV QGD /L VW& QW& O DVV ODVV HILWV 9 9H /L VW& HU %HQ U O DVV HILWV 9H %H U %H QHIL W/L QH QN& ILW ODVV % V 9H HQ %H U HI QH %H LWV ILW % QH / HQ % ILW L QN HQ V HI & % LW HI OD HQ /L LWV %H VV QN HI % QH 9 LW & HQ ILW /L OD %H HU V HI QN VV QH LW /L & 9 /L VW %H ILW OD QN % HU V VV QH HQH /L & 9 ILW VW OD %H V ' IL W/ VV HU QH /L HS 9 VW LQ ILW %H HQ & N HU V QH & OD GD /L O DV VV % ILW VW QW V H & 9 & V %H O DV Q 9 OD HU % HIL QH VV HU V HQ 9 9 ILW WV % / HU H HU / H L QN ILW Q LV & % V H / W% H IL OD Q WV VV LV % H H 9 / W' HQ IL Q WV LV H HU % H ILW / W& HS ILW HQ / LV H % V OD H Q LQ % W H ILW V G & N % Q H V D V & HIL OD Q / QW 9 % HQ H V OD WV LV IL V & H H V ' W W Q HIL 9 U % OD V / % H LQ V H 9 WV H H % HQ S V IL Q U N H H H H WV ' H & QG 9 U % IL Q IL / OD H HU W/ D H % HQ WV V QW IL LV SH LQ V / H % H WV N Q W' Q & 9 / LV OD & % H H ILWV G HU IL OD Q V W& H D % H % LV V WV V H S Q Q H W 9 V % / W H IL H & OD Q H % Q H H & 9 WV Q V LV I OD U H % G H H V OD H Q U W ILW LWV D V Q % H H / % ILW V V Q 9 % H / IL Q H V LV V W H / % WV H ILW / LV Q H H LQ 9 & 9 Q W % U H IL H Q OD / V H LV % H H W& ' WV H ILW N& U Q % % H V U H ILW LV W H Q / % H V I / / & OD S OD Q LV % % LW H H W H V I LQ H H LV LW OD 9 & V Q Q H V W ILW V H H N Q Q V H IL / / W& & OD V & V H H V Q Q V L G U I W H V I OD V V / LW V L OD 9 H H I LW 9 DQ V OD W H I LV V LW V / / V 9 I V V LW W U L & H LW W V V V V V W 9 L & O V V U & H V / / V W & L D 9 / O 9 U L W H O V & / / V L V OD D D H & 9 L H U V W V O L V V U V W U D H V V O V W V & & W D V W V U & O 9 V V & & O 9 9 V O D D H O 9 V D H O V H 9 U D D V V U H V V 9 U V V H U V V H U 9 9 U 9 9 9 H H H U U H H U U U %HQ U H 9 VV D O & W QDGQHSH ' VWL I H Q H % %HQ U H 9 V V D O & W Q D G Q H S H ' VWL I H Q H % %HQ U H 9 V V D O & NQ L /WL I H Q H % W VL / VWL I H Q H % U H 9 V V D O & W VL / VWL I H Q H % %HQ U H 9 V V D O & H H\ R O S P( W V L / VWL I H Q H % H% I HQ / VWL W VL H% DO & I HQ VV 9 / VWL U H W VL H% DO & L I HQ VV 9 / VW H% W VL U H DO & I HQ / VWL VV 9 W VL H% U H DO & L I HQ VV 9 / VW U H W VL VDO & V 9 H% U H I HQ VWL G$ P $' QL 2 DO & (% ' VV H% 9 L JQ UH I HQ HQ / VWL % W VL DO & QH VV 9 IH % U H VWL QH / L % IH V VWL W QH / O & D IH VL H% VWL VV W / HQ O & 9 % D VL V H WLI W H V & U V HQ DO L/ % WLI H9 H VV W V & V U / HQ O 9 VL VD H WL I H% W V U & V / HQ % 9 DO VL WLI H H VV W V % Q U O & L / H H9 VD I W V QH & % U V H VWL O D 9 H LI H % / Q VV VW U H VL H 9 I / Q % H W WL H & U VL I V % O QH W / D & VWL H VL QH % VV O LI / W H VW VD & H VL % I 9 V Q O / W D VWL H H % & V VL H 9 Q U / O V H D W % H & LI H VL Q % 9 VW H U VV O W H LI H Q VD O & H % / VW 9 V LI H Q D U H % H VW V VL I / H Q 9 V U % WL W I H / VL V H H % & WL H 9 Q W V % U VL / O LI Q H H & H D % L VW W / Q H U V O & H % % V I L D Q H V ( W V WL I H % % O V & V H H Q D I H WL P W % % % V V Q Q V ( 9 O H H % % I WL D ( H H V S V P WL I Q H H H V H H 9 O Q Q V P ( ( H H R WL V I H Q Q H 9 S V U P \ I Q Q H H WL S ( O I H R P H H H WL 9 I U V ( S H H O V I H P WL \ WL I R U V I H O S WL I I P H ( V R & \ V WL O S ( WL H WL WL U \ R V V H ( / S O P P V V O D & H \ R % O H V P L R % % H \ % % O H S S V D V D \ & H H O S D D V Q & H O W R D D H O 9 V R O % N Q Q & D H \ Q Q O R H \ & V D O D & N H H \ N 9 N N & V V D U O Q H H H H D & V V & O & & O N V D H D V U 9 & O V V & O 9 V O O D D H & D D & V O 9 V H O D D V V O 9 V V O U H D U V D V 9 V V V V H 9 V V V U H V U V V H 9 9 9 9 U 9 9 H H U H H 9 9 H H U U U U H H U U U U % H Q H I LW V % D Q N & OD V V 9 H U % H Q H I LW V / LV W & % H Q H I LW V / LV W & % H Q H I LW V / LV W & % H Q H I LW V / LV W & H U H U H U H U OD V V 9 OD V V 9 OD V V 9 OD V V 9 Figure 11, The Corporate Benefits Sample. Of 196 components in the client and middle tier, Coign locates 135 of the components on the middle tier rather than the 187 components chosen by the programmer. V H F LH V V W Q U H V H H L LW F \ H H \ H W U L U S X U U U W Q V V \ U D RU T D H H H U H H H S S \ H X Q UH H Q L LW OS U S D U V H W U R R L 3J 6 R H U F LR D RU T Q H U U H WW U L W H H R + Q U HH W Q L J 3 3 H GD H LFH W U U H \ S S O U LFVQ W W \ R J6 H R V L 3 DV VK U OS S Q L 'HU Q RH F \ H X U R W D V H H U U L VQSKS 'R H U OS U S T D KDH H XD V U L WU LW FVG H H H 3 3 S SRS W L LW WU U U O U OS D RU H Q V Q L D R + HJH 6 R0 R H R J R UD U D U Q6H QP SQDV R ' U H Q U H 6 LW DVKV K ZU Z RO LW O H U U U H O LNLQ ' HH3 S LHS\JH + R D, H S RX R U U U 0 J R SS LRXP U WU J3 RLH R Z 6 Z FV U OW LW UR QGO L 3 H3 3 J L J OHLI P U U R0 HH S R U + O HRQ H% U \ W DH L SQSSRDU U HW DW D LI W P H\FFW GLI WG W R&UR W R Z S\ L LI J 6H W U R URH W O 8 U U G QWL DRDU U W O U [U W H[ \W RW H 3 R S V RH I G W Z ZO LW QH LQ F R Q W LW QR R OS U L W W U ' UU W RW RRW W L RVS L Q H U L D U H& [ [ LQR L LQLQ 3 H R 0 Q HRWULWH WU JW OHP W W H S DV UU U 0 J3JH LL Q(QPQG GL W R Q6 * W \ HDHD RQH Q H 3 D DL /RU L LQLQQWLILQ GW R R6 LN O% S X & 6 , ' ' \S 6 Q HQ 3 IL ILW H[P\RR + ' RR HW S 1 , 7&6 O R GWU & U R HH3 31 R R J VK W Q RD D L Q' RO LW& W DW D W HRW W Q 6737 UW 3:: U R0 RO6 H OU W RD LQLQQQPR , R : 1 L R 6$ 2& H 1, 7 H H LW VDVK SS S\LI JW H 3 UU 3 O [U [ DRR Q 61 )3: L U ( JWU& LW RG LV WLR & UR6 Q S 6 F S L 2 2 2 2 2 2 3 S & D H [ H : F D RR W R&R6& S RDU 2 2 2 3 2 2 1 H H UWH \ + O L SQ 1, 7 2 22 F H WUN V Q 1 2 222 2 22 /0RQ( O : 3 W HW H 73 DRDU U H LI JW O PR 2 W WU O 2 2 22 U O6 LW QF / H U R/ QUP 22 H\ : 22 22 H H JL \ RW RQ7673 L [P 2 2 & LW U 'R U UJ3 22 )2 RRXW ( H HR RD Q HO 22 P R QP 2 2 2 X IL W H , W RW + UUU 0 22 2 /R U E IL WU 6 U UW \\\ 2 222 3 V 3 Z HU W DW D 61 T U W R H 6& 22 &% U U WD 3 ) R 2 2 WH & 2 U WL R Q V H H H & [ P & Q U R Q 2 2 6 H H 7 D L H ,2 % & , 22 U QDDD V LI JW O [ DHD 1 LN H 2 2 )/ RRRU/( LW WU \U SRU W 6 2 2 UPQ HQ RZZ 1 222 2222 HRQQQ L R L L [\ H 73 1 YR W U H D U HW X H RQNUP 2 2 RHVW W H N & W HW 73 W R Z 2 2 L & 2 2 ) JX R WL 2 R WL LQ G H S Q 3 L LW OL U FR Q76 2 2 RR 2 2 GW R Z ) 2 2 S R Q LW W F)HL 1 8 F0 R DR \ V , 2 2 DLQLQ Q GW R H 2 2 O R(FF ' 22 22 ) DLQL \U R U LW VG Q\ D U R $ L L F3 GW LOH U U 3 Z 3 2 2 \ E /L ' : DLQLQ ' 2 L SQXDD// F H 2 2 D H 3 )2 3 DLQLQ GRHU Z LIS U ' R 2 U : H D02 2 VK 'RU R0 2 3 R H Q J V : D ' 2 KSS U S \UO LE W 7H WP 3 2 2 LQ IL WGR R : U 2 2 W RZ LW D SS OL 2 DU H3 RR 6 2 O W H 3 RWLLQ HOS 2 V Q RU U H P\WR & 2)2 DLQLQGILH Z 22 : W D71 F + L S DRUD JLILJ [ R DLQWL W R Z U 3 2 2 1 6 O W 3 U R LQ GW R U : R 3JW D 6 WH U 2 2 R LV W H& 3 ' D LQLQ G H Z H U 0 2 2 H W D[U R 2 2 : 7 2 WU/ Q IL W R 1 U H 2 U LN G , 2 2 3 D LQWLLQ O W UU HH3 W O [ DHD31 GW ZRQQ 2 2 R R 2 2 : LV RQ 3 7 2 D LQLQ GR UU HH 2 U : + LILIL JH[\WH73 RZ 1 / 0 2 2 D LQ(& 2 2 3 LNH \UHV H WH 6 QJ LILIL LWW R : 2 2 2 L 2 3 /QNLQ X,' Q RQ VW H ,7 2 2 2 HDQY LWW RR 1 2 : F WUHQJ U 0 /L H G 2 G 1 R HUU 8 Q Q 2 2 H U G RR LW $ ,'LNHU 1 LN 6 UR 2 2 H U N H Z LVW LNH 2 2 F RQ V LIRFLFL Q W 1 2 X H UL Q L D 2 0 3 U RJ QR/ 0RQ RQ N 2 2 H 3 0 TH 'D 2 LW L H H L RL W R Q 8 QN QJ 2 X,' 0 U ' 2 P U H GQ ILW 0 2 8 WUL 8 'LNHUU 6 ,WH HQ H R R H U G 1 R 2 2 6 RJ LNH S U W X H N RF 01 HU L H P 0UURJ, HUU /LVW 2 2 RQ \U H R 2 3 RQ LN QLIL FL L Q LN Q U HWJXR WL V W,2 HU 3 0 P 2 2 0 RQ D \ HR W RQ 8 2 P RQ LNH Z LVW RQLNLNHU P0 Q 3 U RS\UO E0 W, DR 8 H \D/ 0 RQ ,WH 1 Q R QR/ 2 ,WH P L W VGQ DP 2 LIL P H P0 DD/ VH 0 RQ R ,WH W 7 PQN QJ F X 0 H W R ,WH 8 0 L HUU L SR W,2 6 H WUL X,' \O E R ,WH V H WU H R H ,' LNH & 2 2 6 HQ ' L WU UU 3 S OU RD 1 U RJ RQLN HU S 2 2 0 2 HU 3 U RJ \W 7 U RQ LN HS R 2 0 U HW P 2 LN HUU 6 3 2 3 RW 6 0 RQ K 2 H R P [H LIJH U 2 RQ LN 0 P & VSSD L W 7 3 2 ,WH U 2 0 RQ LNH K \U ,WH P R U J W RQ 0 RQ V SS , 2 DQ HJD ,WH P D 0 DUU 3 U D 1 HUU 2 ,WH P RU R QD W[ 2 LW VS JD ,WH P 0 RQLN 3 3 LNH UU F H7 2 L RU 0 ,WH U D W[ LNH H H LVW 2 ,WHP 0RQ ' U 3 UH 3 0RQ RQLN 2 ,WHP W O[\WH7 HJ RZ Q/ U H G WHP 0 LVW 2 ,,WHP HU O R 6 2 UH QNQ L H QJ/ QLN U WH 7 2 + U H LILIL W R 28 WUL X 0R Q RQ LNH , 2 26 HQ 0 \UHVLUY 1 2 HLIIL WW R 1 HUU 20U RJ,' RJ,' DQ LG LW R 1 2 23 U 0 RQLN HG R $R 1 2 23 0RQLNH NHUU 2 ,WHP RL W L D W D U HH HP 0 RQL QLNH 2 ,W H U LVW UG R FL F Q ' ,WHP0R N H ' L Q L ILFL Q U HU 8 RZ Q/ 2 ,WHP 0 RQLN WR 8 LVW HUU HF N H 2 ,WHPQNQ L IR QJ/ RQLN HL Q L W 01 QH 2 28 WUL QLNH R H GR R P 26 HQX ,' 0 XT 0R U H U GR FL 01 W,2 U H 20U RJ H P LNH U H Q8 23U RJ,' N L ILFL Q L Q 6 W,2 0RQ LNH U H H 23 RW R 8 HP 0RQ WL QLNH 2 ,W H NHU 1 VR \ O 0 2 ,WHP 0R RQL NHUU P 2 ,WHP SU E D7 R W, U W 6 0 RQL QLNH P H ,W HP0 LNH R& 2 W ,WHP0R VH 0RQ R\D U H 2 ,WHP L WU H U W X L IL W HP R\ D/ 2 ,W R SRU HJX H O 1 DQD / \U ED7 2 3 ,WH P0 QLNH U G 2 RW 6 \U H ,WHP 0R RQ LNHU 2 V QX 0 \W 6 VH S OP ,W HP L WU H DQR L W FL SRUR3 2 R& ,WH P0 0R RQLNH QLNHUU S ' U HW [H 2 VH 2 / LVW L WU H RU 3 7 2 K SDU H 2 8QNQ 6WULQ RZQ J/LVW L ILJWHW Q SRU V , U J DU R 1 2 2 0 HQ X 3 SR 3 2 W [D3 2 3UR J,'0 RQL NHUU U HJ VKSSDU 2 H7 JD 2 3UR R QLNH RUU3 DQD 2 U D ,WH P 0J,'0 RQ LNHU W [ \U D 3 2 V SR 0 H QR ,WHP 0 RQL NHU O H7 2 LW F U 3 ,W HP L ' 6 W [\W 2 U H ,WH P0 0R RQLNH QLNHUU H7 2 U H ,WH P 0 R QLNH U L IJHW Q , 2 U H R1 L LW R ,WH P0 U HG 2 U H ,WHP 0 RQ RQLLNHU NHU L IILLWW R O R+ U 1 2 ,WHP NHUU H HVL Y L IL W 1 2 ,W HP 0 0 RQL R QLNH \U G $R DQ R 2 D1 ,W HP 0 R QLNH U HG W F D' RLF L W' ,WH P 0 RQ HG L Q 2 RF ,WH P RQ LNHU LNHU 8 2 L Q U HNLU H ,WH P0 0 L IL W R 8 2 ,WHP 0 RQ RQLNHU LNHU Q R 01 2 U HNU H ,WHP 0 RQ LNHU L I P L W R 1HW, 2 8QNQ RZQ /L VW HL GQ 2 RR 2 6WUL QJ/LVW P FL 0 Q8 2 H QX HW, 2 2 0 3UR J,'0 R QLNH U HUGH LW Q 2 2 3 URJ ,'0 RQ LNHU LRILF R8 1 2 ,WHP U HN L Q 0 W2 , ,WHP0R H ORE DP 7 H ,WHP0RQLNH \UP R W & 6 2 2 ,WHP0RQLNH U HF QH XTH 6 H WL VURH S R ,WHP0RQLNHU U 1 2 ,WHP0RQ QLN W XR\ D / LH OIL WER D7 2 ,WHP HU LNH W XR\ D / \U RW 6 2 ,WHP0R 0RQLNH U J 0 S H O \WR 6 2 ,WHP0 QLNHU VH L WU H SUR UH3 D GQ QD X & 2 ,WHP0 RQL U RQLNH U R UR 3 W P [H 7 2 2 ,WHP0R \U DQ R LW V F LS ' U Q , ,WHP0RQ Q NH U UH H LJ IL H WWR 1 2 ,W HP0 0R LNH U VH L WU H SR U 3 K SD U JD U D3 2 ,WHP Q LNH U LNHU RQLN VSR U 3 W [ H7 2 ,WHP0R HU VH L W U HS R U 3 V KS SR D JD D3 2 ,WHP0RQLNH UU0 3 WOU[ 7 2 28 0 QLNHU RQL U HJD \WH 2 26QNQ U NH U VQ SD R U 3 H W[ H6 7 2 20WUL RZ Q/ \U D QR LW F L ' UU H ,1 2 23 HQQJ/LVW LVW H LJ IL H WWRQ 2 23URJX UU H LLIILLWW R 1 2 28U ,'0 R 1 26 RJ,' 0R RQL UL H H L IG L W$ R 1 D2 2 20 QNQ UL QJRZQ/L NHU QLN U HG O R+ H V Y D W ' 26 WHQX /LV \U D QR LW F L ' 2 2&WDQ VW HU H GRF L Q8 2 2) RQ GDU W H GRF L Q8 2 2 RU WURO G0 2 2/ P 6L6LWH HQX 2 1 WH 2 & (& RQWU W,2 H L IL W R P 2 ) RQ U H 0 RO HW, R 1 2 1 +H Q P L IL W R 2 &RU WUR OS HU U HNLU H 2 RFL0 Q8 2) RW P6O6 L QR 2 2 2 RQLIL HU LWHLWH U HN L Q8 W2 WUR 1 HG RIF 2 ) RU H, /( P HUGH L LW R 2 8RU 0P 6O6 2 2 ) QN D7 P& L WHLWH L QR 2 6 O UER 2 1RU %RQ U HN H 2 QR \ WR & 2 & RW P DF 2 SILP 2 ) RQ R1 LILH ZQWUR 2 L O WE 2 2RU NGO + WL VURH D7 2 H WURU 2 2 ) /( /L UR W 6 H R P H6 / T U 6 HO D \ X W 8 VW \ & 6O6 H 2 RU S SH H R\\ D/ 2 W XX OP 2 ) QNP&RQ L RQD 0 R 7 & U HF Q 2 W JD )L $ RU QR % WHLWH RQ RSW [H , 2 2 2 O H0 W Q FW P ZDFWU U H3 WUR GQX U 3 JH 2 7 LY RO W RD1 U VLSR 2 NG UUH 2 2 ' L ILD O H SR 2RRRQH Q/L + 7 U H3 2 1 UR LW F L WU H DQR 2 /(OE LNH 6H UJ 3 HOS VH DU W [ 2 & RW VW 3 SR S U D 2 \U KS 2 ) RQ V JD OH H7 LIL&DU' [\ 2 & HU U 3 SDU 3WH W 6 2 2RU FW SR KS HU RQU 2 RQ V WUR RU 0 WO [ 2 ) /( H7 RF L RQ L WU HHSR U 3 2 ,1 2 2 VH Q WUR JH 8 RU P6O6 WUR WR DQDRU 3 2 2 ) N & L LWH O + L WU QN P O VH U HJ VFLS ' UU H 2 2 H L IL W RU WH 1 0 %RQ QR LW 2 2 $ HO P QR WR 1 2 ZDFWUR ' SH \U D 1 &S' L ILILW R 2 2 ) Q NGO + RD W D U L LW $ UH , ) $ 2 /L UR HO 2 R SOL UH 2 LO LI L ' 8 VW S SH H 2 2 Q FD H FRUP 8 2 YGLW LFQ U 2 & & U 0WLY WUR Q H W,2 VL QR 2 RQ RFFL R 1 WL P ) / R H6 H 2 1 +H 1 W, 2 R U D WUR HG GRLIL W 0 2 5 Q 6O RRQ(& 2 RW R P O R \ HU H G 2 LN LW6 Q O 8 5 RWL UP 2 2 1 L ILR 0 8 H LU Q 2 UH XO IL WUR RHHHLWH: N H W, LL Q Q 1 Q * H F D U 2 2 6 OH P 2 H Q U LQ NL GR 2 & DRWL Q U H O6 W RF WR 07 2 F ILR 2 2 ) G U HH LQ / OOH ILJH U LWH LWUR WL 2 HG 2 W 6 R ED & ULH R & RR ( H H O +R 2 2 ) O\U R 1 2 Z N H Q Q & \ U0 2 P UP 2 2 1 R RQ U H WR 7 WU / 6 2 ,W 2 H 6 L ILO ED WW6 RS R RQD RX H R 2 R UP OS & ,W,WHHP FU WU 6 O WU\ V 2 O \ WL V U / H\UH R 7 2 / WLIL 6 R LW H 6 P ,W,W HP R H P 0(ROO H \DD/ , 2 U HQ H LO6H LW R X + \ D0 2 2 ,W2HHP H 6 RR RS W [H W 1 3 U WHLW H O + 0 R&ED W 2 ,W H3 P 0 XDQQX XT W WXJ J W RDH73 DQ H 3 0 R QL R 2 ,W,W H PU 0 2 H QH HLIL DU [ D 7 QU& G NH 3 OS G UH 2 ,W,W HHP P0 2 RU U HW 6 R RRQQ W HF U JW D UU H 7 OH R S' 2 ,W,W HHP P 0 U URR HU JR LN , 2 \ Q J W[ VF DU 3 Q HS U ,W HP 0 R, QQL LN H O + L O [H 1 P 0 H 2 W R1 SRUDU 3 WU 1 2 ,W,W HHP NH D' L WU 0 RR Q'LN S 3 W JLH W RR 1 LW K U0 0 U 2 ,W,W HHP HRO VH P 0 2 VKS R W' HHUU QR 3 LIL IL W OS 0 RRQQQLNLN0 2 L W RD ,W,W HHP S D U U HH P 0 W, 2 8 D R U U 3 L IILW $ L Q8 H ,W HH P UU H H VDQSR' H 0 RRRQQ L LN HHU R L GLW F Q 1 P P 0 0 U W, )) ,W , H P \U S RU U H H LNN H Q L 0 RR QQL LN R FLFL W R0 1 J VF ) ,W,WHHWH P UL Y H U H 0 RR IL OLOL L a2 R P 0 LNN HH UU LN ,W,WHH VDQGG P 0 U HS U H R RRQQQLN LW H L W R R W O 2 , H & H P H ) ,W H U L WU R Q LN H U H Q P H 00 HR IL +U HH U L QH ,W WHH P P 2 0 RRQQQ LNLN L D 0 $1 OL 2 H UU V H ,W,W H P U N L RR 0 0 R \ 2 2 H6 2 ,W,WHHHH P P 0 0 H U * LNLN HH U V O \U G 2 , H 0 Q QQRRH W FR0 P 0 R Q LN HH U U 2 2 P Z )8 2 2 H WH P P L W ) 2 2 0 RRRQQ LN HH UU U L N LL Q 0 U N 2 2 P 2 2 0 L ,W HYIL RL U RQR/2) R Q H UU 2 2 3P & 0 H H NN 7 0 W PNU 2 2 L QF 1 2 1 RR QQ L LN 22 22 0 U 0 H Q H 2 U UUH 6 L K QP(URRRD* RR Q L L N 2 2 UW V6U N 2 2 2 2 51 RHUR0 RRR QQQ L LNNNHHH W )8 R & 22 PQWO D ) 22 D H HD Z R U )7 Q L N H 2 2 2 % UW IL H O Q RQR 2)& UE 2 22 QH O )&12U HD RWLWL[WJR QQQ L LNLNN HH U UU 2)2 L U 2 22 RH RR 1 )75 )2 O , 22 Q DR 6 ,' Q L L LNN HHH U U F 2 \ G PNU / H L 2 2 6)8 W W,W, W, , , , , RR/D[Q ILILH. F QWL6 (U Q R/UH 1 1 HLW F / O U9 D QP O H 2 222 * R/R LNNNHHH U UU W W WW ,, ,, , W HHHH 2 P W D DR 73H )2 )R 9 L NUW H 22 WW WW W , , ,, ,, ,, 161)& W RQU U QWLI (P J H U H0 H R & 2 2 U [Q W IL ( RHU 0 $P HHHH 2 2 2 2 2 L GU 11 V GR WL H P L P P , , , , , 22 1 W W WW WW WW ,, ,, ,, ,,,2 HHHHH W 6H U \ H U U U RRDDU N (P U Q UL P LO & Z% P W W H H Z R P R W RUO F HHHHHHH W W W W W W W W W W W W W W P P ) 2 RRWR R U QO QPQP URLH&HH 6RH P & JIL ILWW[ 15 9 P P HHHHHHHHH HHHHH H$51 ERU Z P 0 P P PP O 0 0 RR L L JR W 0 W & 6 Q DRL O U H6HH S+ 0 P P P P P PP 1 )&)&2* 0 L H., Q Y L 0 0 RQ P P P P P P PP 3P 26 0 RRR/W W W WL U LI P W HG R% 6O U R OH H W 6 R H 0 P P P P F QH H ) 0 0 R 0 0 D FXW U Q( 00 & Z DLN /NU W L Q O 6U U H ' LI LI LI I \ LH UR\D ZDRL 6 Q FH O L S HQRRRRRRR 0 0 0 FRRRRR/ DR WO 0 0 00 U N 0 0 0 0 0 0 00 W OL /U W W H 6 U W RRRRR U H L GR H RH 0 0 0 0 L L LHLH H H R0 U Q( OO WLI QRLYHLIL PWU & V \0 L QQQQQQQQ U QP U FH 9 QFQHLW WU W G R RRRR WP QU UO HL JQHU H R HH U / U L O6 R 6 L ( G W W R E Q Q L R L L L W N U U R R R Q Q H + W NNNL L L L R R+ RRRRRRRR RJRRRRR WH LH /NU W U W HHL 6 U UU D UW L L L L L Q QQQQQQQQ L O Q HHHHHNN RR NNN LI R U S O R 9 GR R QQQQQQQ Q, QQQQQ OO H R& \ N U O R LW Z NN L + + \ DQ &E L LL L L L L U H6 L 6Q O U U U U HHHHHHHNNN N ' 66 D Q O O H H L LVU O H W L NNNNNN L L L L L L L L HH U & U U UU R / 0 R Q UN H H H W R+ S U U U U U H HHHHHHH NNNNNNNN LN LNLNLNLNLNR D L O LW O G H F D UH LW WU X H O RH U HHHHHHHH H0 Z SH G S R O OS HHHHHQ U W U H6H6Q U UU UU UU HR QU H OH + \ W LW UU UU UU UU & H OS R & LW LW W U RU U U U U W O U R X F H U U D + UW Q U R H HR X V W U R Q Q R RH H L O O R G W QU H L O Q Q N + O W H OS + + W H U U H U R D HR H U O O Q S U OS O G H H O U H U U In the original distribution, chosen by a programmer, 187 of 196 components are located in the middle tier. The programmer’s distribution is a result of two design choices. First, the middle tier represents a conceptually clean separation of business logic from the other pieces of the application. Second, the front-end is written in Visual Basic, an extremely popular language for rapid development of GUI applications while the business logic is written in C++. Coign analysis shows that application performance can be improved by moving some of the business-logic components from the middle tier into the client. The distribution chosen by Coign is quite surprising. Of 196 components in the client and middle tier, Coign would locate just 135 on the middle tier. It would be extremely awkward for the programmer to create the distribution chosen by Coign because it runs counter to the programmer’s logical separation of the application. The Corporate Benefits Sample demonstrates that Coign can improve the distribution of applications designed by experienced client-server programmers. H J RZ RZRZHU Z UDLOH W GQWGW GLIL W GRW WRF) DLQLQDLLQDLQLQRWDLQLQDLQ 3:3:13: 6R 3: 3 ' 2222222222 Figure 12, Octarine with a Multi-page Table. Coign locates only a single component on the server for a document containing five-page table. Figure 11 plots the distribution for the Corporate Benefits Sample. As shipped, Benefits can be distributed as either a 2-tier or a 3-tier client-server application. In the 2-tier scenario, the Visual Basic front-end and the business-logic components are located on the client while the database is located on the server and accessed through ODBC [9]. In the 3-tier scenario, the Visual Basic frontend is located on the client, the business-logic components are located on the middle tier, and the database is located on the server. Coign cannot analyze proprietary connections between the ODBC driver and the database server. We therefore focus our analysis on the distribution of components in the front end and middle tier. 9 5.2 Changing Scenarios and Distributions The results in the previous section demonstrate that Coign can automatically choose a partition and distribute an application. The Benefits example notwithstanding, one could argue that an experienced programmer with appropriate tools could partition the application at least as well manually. Unfortunately, a programmer’s best-effort manual distribution is static; it cannot readily adapt to changes in network performance or user-driven usage patterns. In the realm of changing environments, Coign has a distinct advantage as it can repartition and distribute the application arbitrarily often. In the limit, Coign can create a new distributed version of the application for each execution. The merits of a distribution customized to a particular usage pattern are not merely theoretical. Figure 12 plots the optimized distribution for Octarine loading a document containing a single, 5-page table. For this scenario, Octarine places only a single component out of 480 in the application on the server. The results are comparable to those of Octarine loading a document containing strictly text, see Figure 10. However, if fewer than a dozen small tables are added to the 5-page text document, the optimal distribution changes radically. As can be seen in Figure 13, Coign places over 282 component on the server out of 786 created in the scenario. The difference in distribution is due to the complex negotiations for page placement between the table components and the text components. Output from the page-placement negotiation to the rest of the application is minimal. In a traditional distributed system, the programmer would most likely be forced to optimize the application V H VV H F L V W VH LH LH Q W U W H V V U U \ H H\ VV LH F WL H WU Q LH LH H HH U S XU U H \ F LW LW U \ UW UW H H S S D RU T D V H U U Q U U \ D S H U\ H F U H R Q UH H Q H H DU R H SX LW Q V V HH U U R3 SD S QU R X LRW RUT QH H 6W SS D OG H U H \ VV RHU H 3L J LW LW U Q UH 3 T R UR Q URU V U U RR L J V W R WL J 3 H X U R 3 LH LH VGD H LFH W HW W H U U \ W D H H LR J U S T D LW J6 K LFS HU K \Q U H U\ UW UW HU LFVDVK 3W 3 F QQ LW ' \+ WL HH SS ' D UH Q XX 6 DH L VQV J 33 VK F \ UH OG H SQS D HH \ U F LFVGD S S QR R KD U UH V SDS S RXD V U H H L VG W RR LW RD U ' S SS Q HH Q V L D R D K Q H N D V R R Q U SS U H R U U ' 6 K S R D U SQQ\\ LWH U U R U D R 6 LU R0 L U UU UUU UD RD ' H R H UR R D S U U R L 3J QS SS 'RXDV UUUR U U U UH3 F H Q PV XDDD V H H U0 JQHGGQY \+ LV U U U UU UR H HHH U Q R Q H X 3 LHS\J U WL J 3 W GDH JLH S I RDUU U U R0 S DRS 0 R H J D S WL 3 XP , R IL ILH L L 3 R/ UR N HH UH D IL RR R LR J 3 HH 3 3 R UH O HH3 3 T LP U OHW LW J 3 FVQQ UD W D LFVD U ' W DLIJW P LU D UR L LFLFWL G L L LI LI J / L 3 OHW S0 U S S\LILI JWH UU3 H3 H% W OHWD W J H V V WL 3 R H H H\ FW VKVK L S D D V H W W JW W H 0 8 I U U W H [ G LV L L G J O W W W S J H U U [ R D \ 3 R $ U L L L H Q H \RRWW W LFR S W 0 [ [U [UWL W OHU O LI \OH L R Q 'SQ H W RW J IIL JW H U W W H[\[ SK F S ' S K LFVGDXX6 OP RQQ LFDRR LV QSSS RX R HH + RRWHW\H V* RY UU UUUURD S [P EW PU RLIF R V L W H[P O HDR RS S W DWD Q L 3 W OH R W HW H D D HDRWH DU UUU R0 RS'SQQRRH O \ QH 1 S\ DRDR W 11 E WL LFWL G ILH UUD R\ & 6 , 6 ' ' \S 6P 1 8 8 ' HRW\WR LHLH U ' UUD U WRW RRQ R [U [U WRRW H , 7& 6 1 1 ,Q 7 LHH \ LH V 731 U UU U HH H DR H3 RWR R UILW J 3 UUURXD\ 6 WS H ,7 30 H U\ [ \ 1 ,Q7 D0 3 D Q & R H D 76 1 1 373 QQLF$ WLWLIWLIWLI J 3 OP H UW UWLH JLILI J & 3 UW \\\ HDH DUU U 0 & 6 7 J DDVLW 6 $ W 6 6 J 6 J 3 W H R W 7 1 U D + R W H H , 7 1 0 L & 6 D L 3 //U OG 7 L W H[P WD 31 U \RWR H 6 [ O[W DW D UU DW QHH3 P 2 2 2 2 2 2 2 ,2 2 2 2 ' 2 RRRWH 7 2 2 2 2 2 2 2 2 W R 73 Q U SH H \ U Q 2 2 2 2 2 2 H HR 1 Q 2 2 2 2 2 2 U[UWLI JW S R L WH RW 6 U H 8 2 2 2 2 DQV R D U OW[D U [UWRR WH 1 ,7 8 ' 2 2 2 2 2 2 2 2 LS HR D1 QHW\ 2 2 2 2 HDHDR U H H & [P OH 6 V Q RL LWILWJ 2 2 2 2 + WLRJH UR RS D 1 1 U\OH LN HH U\ Q HD 1 2 2 1 WH [\ & 2 ,76 LI H N Q 2 2 ,W2 H 2 2 2 2 HR H N , 7 W HD 73 LH LWH QHUG 1 DH R 22 ' 3 73 LFVD UG 7 WH 2 REWP U\ 3 U Q OLV H GL Q& R 2 2 Q7 W\ U L F G L 1 R 2 2 2 2 O U UH H L 3 2 , W V V UW U L R Q R 2 2 D R LV HN 7 L QH & 2 2 R ( WW F 6 R E IL RRY UUU 'SQ 3WLR Q H 1 LIR 2 2 SK 2 2 H N ,7 FH UG 6 H WR SH GQ 2 2 2 2 HH UU URD F 2 2 2 SK V LI R L L) D0WLLF 6 LFWL GILIL L FFR / LF 7 F3' 2 Q 1 2 LH 22 2 L UL Q H & Q URS R S LF RR HHN UR U ' 2 2 2 QLF$ LW WL LQ U LIR 2 PR 6 WLWL I ILHH ' 3 7 S ' 0UD UD ' 2 XH RQ0 2 22 2 QH LR R 2 2 2 H1 U H U GG L FF 0 R RRWLWL J JH H 2 W W3 J3U UUU W T 2 8 R R01 8 WDR O 2 G3 '2 2 H RILW W L LQ 8 2 ,W2 8 H N ' RWH [OH XXW H H L LRF U P [ DW J QQD L )2 RQ P 2 2 D1 1 1 0 2 ILJH3 XD W\ QH HN L U Q ILWF 1 R 2 HDU[UD U HH \R L LQ 0 8 H 8 1 \RH6 2 ' ,7 W R DD 1 W,2 LIR R 2 2 HDRWL [ 2 GQH H N P 2 HU H 6 S0 LU G W, 2 1 LW 0 Q 8 7 WH U RR 2 V P /U VLW U N H 3 / 2 H H P LU H 7 OG U\ QH LR 2 2 F U H HHG H V 8 2 2 Q OH \ F W 3 R H 1 IL L L 0 R H 2 1 U OH R D QLILR ,2 2 ,7 R H N U GR W, 2 IL S 2 UWL H W Q P W\ LN Q 1 EWLP QU UH RW 0 2 WR U\+ U 2 2 H UWL & Q H U\ H H HN L ULHQ P DR OH 2 2 G LR F H 6 W,2 8 2 DH RIL G WLR H SSH U H H R R1 8 R 6 R H 2 L ILWF LL Q 0 Q GQ WR LV 7 W, 2 2 R G 1 P DE WLLF UU N LF HU 2 0 YH Q P 2 R V J UR RRILR 1 LU H & R R W H 2 6 R LF G U N 2 2 Q WL UR U F 0 7 H SQD 8 W, 2 V HL H QLI FL 0 ILIL H UU'D R 1 8 H 2 Q 2 HP 1 LF$WLWL HH SK3 W2 V 2 L L Q 1 8 IL H UR S GQLIR V P 2 ,W2 8 G WDR N SK3 3 RRLW W RQ R WL ILJH LU H H ' P UR S 2, 2 U\ WLH 0 8 2 8 H W,2 UR HU QL RF 0 2 D1 RRWL W 3UD U RP 1 WH QD S IL F W,2 ' [ OH HNU 0 J UD 1 1 LL Q R 2 QH 2 WLR UR FH 2 2 [UW DW3 1 J 1 W\ U U HL Q , 2 LFV P LIL W0 H H H RQ 8 W,2 7 [UD HQ 3 GRH U HNU 2 U D JH 6 W G 2 R H H 8 W,2 7 QG HNUL H 1 2 LH U'S D QD H FL W0 RXXW HTX R P 2 3 2 OL QLIR 7 JHSUR 2 RXD HL Q LQ H 1 3 RWLI D\\R 6 LF H U Q P 2 2 LILR ) H [W3 0 GR W,2 2 1 QWH //D LWH 8 R W0 2 U HNH R 8 , OH RP H 2 U\H P W,2 7 FL W0 W\ HNULU G R P 1 2 H R U & LR WR 2 EOLILHU SRV U 2 2 U Q 6 ILF D HL H 1 QP 2 6 RW NH U H H GH WLR W,2 2 QR )H GR 7 QLR Q RPU\ ILR 8 2 U OH U HNU G 1 H W,2 2 RQL WR 01 8 WR LW F & U\ LH GHDU\+RO RF 2 DEWLI H UL H V R 2 2 6 2 Z 01 F Q UUH P RGH Q VH QL I FL Q QD 7 HN L H R LF P0 2 H WLH V H H Q LF 2 L L ILRLWLR Q8 P U OD W,2 WLR WLR HU WUV L QR Q 1 GYL N ,WH O R HN LN 8 9 H LF LH H 8 U 'LF SHU WLH 2 QR WR 01 W,2 HU 8 UW Q D$ 2 WLILIL 6 ' LH 2 2 2 SVDJ UR SHU ,LW Q H R HUU Q R 0 P OE U HU DW 2 WLILIL RW DQ UQ R& 1 UR 3 UR SV H H R R 0 2 ' 1 H P JH H K W 0 1 RW H 3 H UR , 2 S 0 DN O HSR L L ILY L * 1 WV W, 2 DSSV3 0H 2 1 WH [WOH3 OOLH K 2 L / QRWW F H RH JU URSK + ) 2 W\ OU G OLL ) WL R $ 2,Q 7 H[WD O R UD & NFQ Z F 6 RUW W3 ) 2 1 UW 7 DU 0 DU\ a 2 2 LHV D Z DJ RQP H[ H 2 H WLRQ R% WL H WQ 6 DU LHU 'LF R& UQ P 2 23 7 ZL Z R) OL ) NUQ H URSHUW 6 V 3 RWLIJHU LO 6 S & 2 G3WHU UR O HSR URSQDJ W LH L 9 ( 8 2 2 9 R P 2 H QWH H /2 21 SRXQ U ) [W3 U\H H + LUIWL WQ 2 2, R OUV / \RX W HTXHQF RP UH GN GU D 2 ) R 27 W\OH 0D /D H R OO D S UW FQ R 2 2& /D\RX GQ OH & Z 2 26 WRU\ D LWH6 1 LHU Q DEOH R P D % * UH 2 26 + QNU R W 6 2 RWLI SRV WL H WL R & O RH 27 O G RP P 2 21 U 6 ) 6 Q8 O R 2 WRU\ QR ( UR 2& QD QLNH DEOH LW UW QR /2 2 26 UW P ) HU UH 0R 2 UR 27 GH + RWLIL G WFH H 2 ,WHP U O6H H & ) L FR OGHU R& L I( L WQR \ RGH 2 21 Q UD HN QDUH+R H QLFGYLV 2 28 L R 6 /2 QR 1 WP 2 28 LFWLR U LHU LW F Q RE\ UU H [D D$ ) DU\ LJ 2 2' H7 2 RWLI LHU IL WQ D 'DW 0 LH LHUU 'LFWLRQ H' H O U RWLI 2 21 5 . R1 WR 2 RWLI WIL [ HH HU SHUWLHV UH , 21 U SV N L Q RWLILH JH 6 U 2 21 J 1 QDJ H 3UR R H N QWH V 2 21 HY 0D R U3 3UR SHUWLHV 7 N H[W UU H LL Q 2 2, HN Q URS SK 0 2 W\OH RL W F 27 \ SV 3UR H [W3 JUD N R H UU H LL Q 2 26 HN QR 0$ SK 3UR OL ) DUD 0 27 WLRQDU HUWLHV P JUD N R 0 H[W LL Q 23 QR P H U 'LF W,2 DUD URS V 0P H 27 WLILH P W JHU R 0 R G3 , 23 H URS 3RXQ QWH HWW,, 0P 21 P U HN H[W 2, H RPS L QR U H 27 HN WW, H 0P 2& QR N LL Q UU H R 0 HW,, N 26W\OH0 DQDJW HU 0P HN P QR H LL Q W, R 0 UU H 26WRU\/ D\RX H 27DE OH/D N 0P P HN QR H WW,, LL Q R 0 2 1RWLILH U \RX W UU H H 2 &RP N 0P P QR H HN WW,, N 2 6WRU\SR VL WH6H TX HQ FH UU H LL Q H 0P 27DEOH R 0 QR H HN WW,, UU H N ,WHP 0 RQ LNHU LL Q P 0P H R 0 U 21RWL ILH U H HN WW,, 2 8Q LFRGH LL Q P U QR 0P H H R 0 UH 2 8QL FR GH N H WW,, QR 2'L FWLRQ DU\ N R LL Q P 0P HW HN UU H 'DWD$ GYLVH+ROG HU N 0 QR H LL Q R 0 W,, P 2 1R ILHU H HN 2 1R WL WL P 0P L Q UU H H WW,,, 21R WLILHU ILHU R 0 H U N W L Q 2 1RWLI LHU H R N L P U QR 0 H HN 0P U H 2 , QWH JHU'L FWL RQ DU\ QR H N LL Q R 0 WW, U HN U P ,, 2 7H[ W3URS HN H 2 6W\OH0 DQV DJ HU L QR U P 0P QR H H WW, N , 27H[ W3URSV LL ' H 0P 0 Q W N 23DUDJ UDSK 3URS HUWL HV UH ,R H W 0 JR , 27H[ W3URSV UH P Q U 3 U HS R U W, N LLL Q 23DUD JUDS K3URS HUWL HV H 0 HN 2 21RWL ILHU R H + UH P QR 0 H OO R O RUW N L Q 2,QWH JHU'LFWLR QDU\ U P UW Q 0 HN H R 0 WW, P ,, 27H[ W3URS V L Q R& Q H W R 2&RP SRXQ G3URS P U R(0 H W , 26W\O H0 DQDJ HU HUWL H V D P E O& /2 W H , 26WRU\/ D\RX WW H W L U6 LO IR F6 27DE OH/D \RX L WU H 2 P 2 21RWL UR 1 R) 2 2&RPILHU SRVLWH 6HTX HQFH 2 26WRU\ H WL 6 R Q 2 2 7 DEO H WLOO 6 UUWW P UR R& ) ,WHP HWL H 6 R Q R & 2 21 0R U HS O H W+ OX R R U\ WD Q/ R & ( / 2 2 28 RWLI QLN \H OO D * 2 28QLFR HU H LJ IL Q W D R5 1 2 2 2' QLFLHU GH U H O GQD + HV X RU 0 UN H 'DW RGH LFWLR Q 0H ) 21 QDU QR LW F H O HH 6 LH Y LR WO F OL 2 21D$G RWLIL YLVH U X$ 5 2 21 RWLILHU HU \ +ROGH L ILH WU R 21 R HWL U6 H P R1 ) 2 2 2,QWH RWLILH WLILH U U H L Q 6 R O R UW ( Q/ R2 & 2 2 27 U HS O H+ O R UWW & 26 JHUU UU H LLIILLWW R 2 27H[W W\OH 'LFWLR H R1 1 2 23 H[W3UR 0D SV UU H LLIILLWW R 1 2 27DUD QDU\ 3UR QDJ H R 1 2 23 H[W J UDS HU W X R\ D/ \U R W 6 2 21DUD 3UR SV K3URS RWLI JUD SV L ILP WU R 1 2 2 2,Q HW6 LOU6 H R) 27 WHJLHU SK3UR HUWL HWLH R UWH R & 2 2 2& H[W3 HU' D \ OQD D * 26 R SHU HV PS ZH L Z 9 L G U9 GOQ 2 26 URSLFWLR W\OH RX P U WR6 ) 2 27 V QDU\ WLHV WRU\ QG 0D V LG /N F QD Z% R N 2 21DEO /D \RX 3URSHU O R UW Q R & SWR U QP UQ R8 ) 2 2& QDJ RWLIH /D\ U HS O H+ O R UW Q & 2 26 RP LHU HWLR 6 ( P U/R2 ) 2 27 WLHV RXWWHU WRU\SRV H WL 6 OU R ULWIL W QR R1 & 2 2 ,WH DEO LWH6HT P0 H 21 H U HS O H+ O R UW QR & ( / 2 28 RQLN RWLI XHQF H UH2 ) 28 QLF LHU HU QR L WWFH H O6 HH 6 J WP [D 2 2 2' QLF RGH H Q D7 5 2 'D LFWLR RGH 2 WD$ 2 1 QDU\ 1 GYL 21 2 L IL WW R 2 2 1 VH+ RWLI U H R 7 L 2 2 H 1 I ROGH LW [ H R LH 2 1RW UHH WW,, U 3 . U P JR0 27 ,Q R WLI U ,R H 2 LILLH WW,, RE\0 N H 0P Q P WLI LL' WH HUU 6H[ 27 QR H 2 LH GU LDQR R 0 UU H P JH WW,, H W\ W D+ 0 HN P LL Q N U HN 27 3H U 0 R H Q OH0 , 2 O GQ U UU H R P N W 3 UH Q 0 H DU [W H P ' L 21 3 H[DJ WW,, HN H 3 UR 2 LF U LL Q R 0 N QR 0P H DSV P UU H W3UD 27 ,Q DU UR QD WLRQD WW,, HN H DJ 2 RWLI LL Q R 0 N QR 0P H SV P J UU H 26 URSK &HWH WW,, R HN H 2 LHUD LL Q P R 0 N 0 H [WJH SV3 HU U\ Q P RP UU H N ,, 27 6 W\ U SK R 0 W H Q H 3 U L R P N UR 2 0P WW, WR OHSRX H 'LF3 LL Q UU H 2& UR HN H SHU QR 1 D U\ 0 0P N 2 WW,, EO SV WLRURS H UU H P 2 RWLI LL Q R 0 QR H 6 R H/ HN 0 DQ N ,WH 7 D\ G 0P WW,, QD HU WLH H /D QD WRP UU H P 2 LL Q R QR H HN 0 2 D SRV P W ,, P0 RX3 N U\LH 1 U \R EO JHU R 0 H UR U\ WLHVV P Q UU H 2 8 L R 0 W N H Q H HN 2 8 QL W RW RQ SHU LL QR 0P WW,, XW H ' UU H H ' Q FR LILHULN LWH6 HN 0P R P 2 DW LL Q R WW,, WLH N Q H LFLF P 2 R 0 N UU H H 1D H 0 GH HU HTX 2 V N LL Q WLR W, RG H 1 0P P QR UH R$ 2 1 R N HWW,,, WLIGYL QDU RW R 0 2 H N LL Q UU H HQ Q 1 R H 2 0P H N W2 WLILILLH H , R 2 7 UU H \ FH L QR 0P HUU VH+ P HN WLI LH H 2 0 WW,,, 6Q 2 ROG R U3 HWH LHUU 2 RJR0 P H 7 W, P H W\[W Q 3 LL Q 2 7 J HU N WW,2 2 , R 0 H N H HU 2 0P P H D H0 3 H UUH [OH 3 L' QR 2 2 1 R 0 2 W 0 2 , 0P 2 LL Q D [UD Q ' R HN 6 2 7 N QR 3 UR W J QR R U/F 1 & 2 2 2 SLF L Q UUU H WHWLUD UR DQ LN HN 6 N 2 H[ 3UD OO ( N R URR) & L Q 2 2 V ILH 6 2 R J URSS ) 2 UH UUH H E L IL WP 7 W\ R& 2 2 D WLR H P WJH UD QR U & 1 Q 2 WR 2 UW P UR U & R KV J Q OH S3 UW U WD D U * 2 ' 6 2 SSV /D2 L O6 R R 2 1 7 EU\ 0 UR UW Q ( O R R& H 6 R K 3 H D R WL + WR 2 R 2 OILO WQ OH/RX' 5 2 2 D5 P D WLORR& S LF 3 URU U\ H WL 6 2 UW Q 1 LH H 3F) Q OH & EU\IL R H DQ S U\H O WXR 2 2 V WL U S JH ) : Q/ 2 WLUW 6 2 G H R 3 OH SRU/D UH O D LOH D\ \RD UQ HUH 2 2 2 : R OL ) 3RQRS HU R \D 0 L ILP 2 2 H 3 R LQ O / LQ V D $ 2 2 0 J R U : UW ( +X X 2 2 3 LWHRX ) 1 LQ UR DU HU WLH LQ W 2 L O6R WUF &R R XW HU 2 W6 LP H $ : DLQGWGR O H W HV 2 S R& 6 SH\ WLH V W L Q 2 2 HY 2 N 3 DRLQ 2 SS 0 UH D+ WL QR WLILGW RZZ H6 WL O Q H 2 2 : UF V 2 LQ LQ HT R UWL 1 RUW OU H 2 8 ') Q L O6 R W6 3 D D H 2 2 2 O F H WH 2 + QR) 2 : H ,P UR O G XH LW UZ 3 LQ GR 2 2 LQ WL R 2 V UH LW H DRWL & 2 : U /R) O HQR Z 2 S QN( )2 2 L 2 Q Q : & UQRR1 2 DLQ LQILGW 2 2 R P UH ) P O2 FH 2 L Z 3 R /R7 H /LQLQG %& 2 2 2 2 WH W ILW(R $ 2 : GQ R 3 UH DR 6 2 RRQ(G : L O RW0 FR) 8 W R UZ 2 D 2 2 ZR 2 2 Q ) 1 FQ UP R 2 3 / &E 2 DLQ WL6 O U D L UNQR : N LQ ) QY 1 &ZZ 2 2 2 UW LH 2 L GR & 3 U /R : RLQLQGW WU D L H P ,W2 QP & RR ( 2 2 U WV W QR 2 U UQR RR) 8 ) H WL GW R6 HN R& 2 DLQLQ O 6 P H2 2 2 W ' O Q + WU 2 2 SR Z Q ) 3 22 2 % UW 2 P/ R Z LW 6 RUROU H Q D RRLQLQGIL & WH LIL P UR / ) 2 & R6 2 2 RH & 2 HLWWU QN P 1 OH ONFFH 2 2 U 0U QWU GW R (U R & + NWFQ 2 2 2 ) UZ RS & / WL O U Z R 22 2 R HRO H & QRRR) % RRJ(P P 2 2 2 Q % )6 2 LG LW V RZZ 2 & UH RU WL 6 Q D 2 R& R ) 2 2 O H QR 6 UW LW UQ U RR/(QWU + S W+ /R & 22 2 / 2 UW ,' Q 6O6 H F QR R 1 2 X O R 6 2 & W W0 ,, 2 Q LI P 8 WL6 ( UQR 2 ) SR /NUW H LW H O 3 2 R/WUP LNRQ H O UH W D W R 3 ) R H D P H , 2 H U 0 L G R& OS W WW,W, , 2 L ) W QQLU QUU 6 W WU & O% LWH RE U6 2 ) RR & UQ( 0 HH O 2 UO R H H P WL WV H R WW,, ,, 2 R HHH U GX QN R UWQ8 P R OH$8R/ RS 6 RR 2 WL H H PP 3 UWUR 6 2 + 2 : SR O R 3 & Q R UQ Q JQJJQH 2 WL6 HW WWW,W,, , : UH P L N0 P 2 FRQ U ( I WUR P U LQ 2 H H 3 Q O QWL OUD/ 2 0 & PHHH ,' 2 , XJQ 0 W W W, , 2 WULHO6 Q & R : N PP 2 LWO6 UW ' HH 3 0 O QR 0 2 R 0 : R 6 WLUW H P H 2 3 DLDL WLU S GLN + 0 P W 2 P GL Z P : Q & HHH 2 2 HL WU 2 2 1 H P RU &LO6 RQ RR P 2 DLQ O 3 QR 0 QQRY P QRH V Z / : RRR 0 LQH H 3 RH WL0 P 2 2 LQ %6 W 0 2 P 2 : 0 2 P 1 L QQ W,H W,W,W, , , ,, W Q0 0 2 Q 3 D DLQ LQG GW QH R 3 2 2 UW U R 0 RLO6RWHLWWUQ HR QQ LQHN 0 H : J U OS 3 08 2 00U3 R O H LN W W WW W,W, , , , 2 2 LN HHH /R 2 WR + N R V 1 : Q RW O LN ,W2 L 6ZDQWH LN 3 D DRLQLLQLQ 0 U W6 P P HH 2 O L L Q QRRRRR 0 W WW W, , 2 : 3 H 2 2 Q W/ U HHH + HHHH 2 2 2 : LL Q P U R 2 2 2 RH P LQLLQLQWL QGWG W RZZNH H QFWU LWH WU H O P H XQ V N Q 0P W 2 RRRRJ Q DLDR U H HHH P 2 2 ,W,W ,W,W ,W 8 H 0 U UU HH Q R L QQ P 2 2 , ,, 2 W,H W,W,W, W,W, W, W, , , , 2 R R + O WHN P P LUN0 JQ N L 0 2 2 2 , , ,, , 2 2 2 2 2 , , , , , ,, QQQ P H S H LN QLQWL GQGWILG U UU H N 36 0 P P HH 0 8 U OH/NR LN Q D DR P 0 WH WH W 2 W P 3 O 00 LN HH H RW R Z H WV Q,, X LN P 3 W W WW W W W W W W WW HHH I WR H HHHH Q WLLQLQG GO O OS LN 3 0 H HW HW H H 8 3 36 LN 6 8P 0 W Q/ LQL LQLQ P P Z H HH 'J RR UU LN 0 0 RRR P PP HHHHH HHHHHH P P 0 LN UU H W LH R U L ' 6 P P P P GW R F LVUR 0 0 U UHW QP UZ HHH RQ 0 3 3 0 + P P P 3 R R Q OS 0 UU HWU Q0 30 6 8 P P P P P 33 0 6 8 P P P P H U UUH Z QQQ L N( QGWILH RR U 0 P P P P P P WL W RR / RRRR 0 0 R ZUZZ 0 U UU UHHH0 0 00 W Q0 R R L N JJQQQ G W 0 0 U LN LN UU WQ U U HU LUN0 L L L LQ Q 0 0 0 U HW Q R RRRJJQQ R SH H L N 0 0 0 UUR V XJ & R R QQ 0 0 0 0 0 0 0 0 0 RR L N UZ QQQ JJQQQR R 0 0 0 0 0 OS RH RU Q R LUN0 Q & U QQQ R QHH H NNN RRRR R LUN ,' , ,' R LN ZZ QQ , XJ RRRR,, XJRQ LN ' LN LN RRRRRRJ JQQ Q LN Q W/ U UU UHHH N QQ R LN LN RRR RJJXJ QR /Z H ' L' QQ Q QRRR RRJ JQQQRRRRRR LN QQQQ' H UU L R R LN HH QQQQ ,' RQ L U , N L HHH QQ' , XJ , , XJ QQQQQQ Q N LN LN /Z QQ' V LN L LNLN /Z 0LVQ Q RQQQ QQQ Q, ' ' HHH 0 N L L 0 U R 0 L Z L ' H U N N H L L L L H W NNNNLNN LN L N HH0 UU U UU U 0LVQ QHH Z LN LN LN LN L Z WU LN LN LN L / WU HH H LN LN LN LN L N LN 0 N UU / / U RR WV HH N U RW / HHHH QH R R 0LV HH0 LQHHHHH0 0LVQHHHHHH HHH H0 R W / R QQ /U UU U QQ LVO UU U U UU U R WV /UU UU U R O U U UU U R R W Q Q L LL L R / LN V L U U UU U UU U UU RR W N N W+ Q L LN V Q L Q Q / LV QQ W N HH W N HH LNL H V L L LN L W HH UU N W N LN V N OS UU H UU H H W HH H H UU U UU U U lennium will provide automatic migration of live components. We are attempting to create distributed systems that are self-tuning and self-configuring; automatically adapting to changes in hardware resources and application workload. Creating a higher level of abstraction does not come without cost in performance. However, Millennium hopes to gain efficiency by spontaneously optimizing applications for the current distributed environment and eliminating unnecessary boundaries between the operating system and programming language runtimes. Bibliography [1] Figure 13, Tables Interspersed Between Text. With a five-page document containing fewer than a dozen embedded tables, Coign places 282 of 786 application components on the server. for the most common usage pattern. At best, the programmer could embed a minimal number of distribution alternatives into the application. With Coign, the programmer need not favor one distribution over another. The application can be distributed with an intercomponent communication model optimized for the most common scenarios. Over the installed lifetime of the application, Coign can periodically re-profile the application and adjust the distribution accordingly. Even without updating the inter-component communication model, Coign can adjust to changes in application infrastructure, such as changes in the relative computation power of the client or server (through an extension to the graph-cutting algorithm), or changes in network latency and bandwidth. [2] [3] [4] [5] [6] 6. Conclusions and Future Work We have described the Coign ADPS. Coign is the first ADPS to automatically distribute binary applications built from components. Coign has successfully distributed three commercial-grade applications: Microsoft Picture It!, the Octarine word processor, and the Corporate Benefits Sample from the Microsoft Developer Network (MSDN). The largest of these programs is 1.8 million lines of source code. In terms of complexity, several of the Octarine scenarios we have tested instantiate over 3,800 components. Coign has even proven effective in re-optimizing manually distributed applications. Coign is part of the Millennium project at Microsoft Research. The project aims to develop distributed systems that provide a new level of abstraction for application programmers and users, managing machines and network connections for the programmer in the same way that operating systems today manage pages of memory and disk sectors. Beyond the capabilities of Coign, Mil- 10 [7] [8] [9] [10] Amza, Cristiana, Alan L. Cox, Sandhya Dwarkadas, Pete Keleher, Honghui Lu, Ramakrishnan Rajamony, Weimin Yu, and Willy Zwaenepoel. TreadMarks: Shared Memory Computing on Networks of Workstations. In Computer, 29(2):18-28, February 1996. Arnold, Thomas R., II,. Software Testing with Visual Test 4.0. IDG Books Worldwide, Foster City, CA, August 1996. Dahlhaus, E., D. S. Johnson, C. H. Papadimitriou, P. D. Seymour, and M. Yannakakis. The Complexity of Multiterminal Cuts. In SIAM Journal on Computing, 23(4):864-894, August 1994. Ford, Lester R., Jr. and D. R. Fulkerson. Flows in Networks. Princeton University Press, Princeton, NJ, 1962. Hunt, Galen C. Automatic Distributed Partitioning of Component Applications. Ph.D. Dissertation, Department of Computer Science. University of Rochester, July 1998. International Business Machine, Inc. VisualAge Generator. Version 3.0, Raleigh. NC, September 1997. Kimelman, Doug, Tova Roth, Hayden Lindsey, and Sandy Thomas. A Tool for Partitioning Distributed Object Applications Based on Communication Dynamics and Visual Feedback. In Proceedings of the Advanced Technology Workshop, Third USENIX Conference on ObjectOriented Technologies and Systems. Portland, OR, June 1997. Michel, Janet and Andries van Dam. ([SHUL HQFHZLWK'LVWULEXWHG3URFHVVLQJRQD +RVW6DWHOOLWH*UDSKLFV6\VWHP. In Proceedings of the ACM SIGGRAPH, pp. 190-195. Philadelphia, PA, July 1976. Microsoft Corporation. Microsoft Open Database Connectivity Software Development Kit. Version 2.0. Microsoft Press, 1994. Microsoft Corporation. Microsoft Office 97. , Redmond, WA, February 1997. [11] [12] [13] [14] [15] [16] 11 Microsoft Corporation. Overview of the Corporate Benefits System. In Microsoft Developer Network, January 1997. Microsoft Corporation. Picture It! Version 2.0, Redmond, WA, September 1997. Microsoft Corporation. MIDL Programmer’s Guide and Reference. Windows Platform SDK, Redmond, WA, April 1998. Stabler, George M. A System for Interconnected Processing. Ph.D. Dissertation, Department of Applied Mathematics. Brown University, Providence, RI, October 1974. Stets, Robert, Sandhya Dwarkadas, Nikolaos Hardavellas, Galen Hunt, Leonidas Kontothanassis, Srivinasan Parthasarathy, and Michael Scott. Cashmere-2L: Software Coherent Shared Memory on a Clustered Remote-Write Network. In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles, pp. 170-183. Saint Malo, France, October 1997. van Dam, Andries, George M. Stabler, and Richard J. Harrington. Intelligent Satellites for Interactive Graphics. In Proceedings of the IEEE, 62(4):483-492, April 1974.