throbber
Designing Distributed Applications
`with Mobile Code Paradigms
`
`Antonio Carzaniga
`Politecnico di Milano
`Piazza Leonardo d a Vinci, 32
`20133 Milano, Italy
`+39-2-239 9-36 38
`carzaniga@elet.polimi.it
`
`Gian Pietro Picco
`Politecnico di Torino
`Corso Duca degli Abruzzi, 24
`10129 Torino, Italy
`+39-11-564-7008
`polito .it
`picco@athena
`
`Giovanni Vigna
`Politecnico di Milano
`Piazza Leonardo da Vinci, 32
`20133 Milano, Italy
`f39-2-2399-3666
`vigna@elet.polimi.it
`
`A B S T R A C T
`Large scale distributed systems are becoming of
`paramount importance, due to the evolution of technol-
`ogy and to the interest of market. Their development,
`however, is not yet supported by a sound technologi-
`cal and methodological background, as the results de-
`veloped for small size distributed systems often do not
`scale up. Recently, mobzle code languages (MCLs) have
`been proposed as a technological answer to the problem.
`In this work, we abstract away from the details of these
`languages by deriving design paradigms exploiting code
`mobility that are independent of any particular tech-
`nology. We present such design paradigms, together
`with a discussion of their features, their application do-
`main, and some hints about the selection of the correct
`paradigm for a given distributed application.
`Keywords
`Mobile code, design paradigms, distributed applica-
`tions.
`I N T R O D U C T I O N
`Distributed systems have been investigated for years,
`but recently research on this subject has gained a new
`impetus, partially due to the explosive growth of the In-
`ternet. Being the largest distributed system ever built,
`Internet is making distributed systems available to the
`general public, taking advantage of both the achieve-
`ments in network technology and the ever-increasing
`interest of markets in long-haul communications. Con-
`sequently, a great deal of research is focusing on the
`exploitation of new broadband communication devices
`and in the provision of new services on large scale dis-
`tributed systems, such as the Internet.
`The technological and methodological background de-
`veloped for conventional distributed systems often fails
`to scale up when applied to the problem of providing
`
`Permission to make digitalhard copies of all or part of this material for
`personal or cl'wsroom use is granted without fee provided that the copies
`are not made or distributed for profit or commercial advantage, the copy-
`right notice, the title ofthe publication and its date appear, and notice is
`given that copyright is hy pemiission of the ACM, Inc. To copy otherwise,
`to republish, to post on servers or to redistribute to list?, requires specific
`permission and/or fee
`ICSE 97 Boston MA USA
`Copyright 1997 ACM 0-89791-914-9197/05 ..$3.50
`
`large scale distribution. As often happens, researchers
`tried to overcome the problem with a bottom-up ap-
`proach, by developing technology providing ad hoc sup-
`port for this kind of systems.
`One of the outcomes of this research is the recent pro-
`posal of a number of new programming languages, espe-
`cially conceived for the Internet, that are all character-
`ized by the capability to provide some sort of code m o -
`bility, i.e., the capability to reconfigure dynamically, at
`run-time, the binding between the software components
`of the application and their physical location within a
`computer network. Work on code mobility is not new;
`other approaches [3, 81 already investigated the capabil-
`ity to provide.code mobility at the language level. The
`novelty of the new approaches is in their emphasis on
`the application of code mobility to a large scale setting.
`In our view, good technology addresses only a part of
`the problem. Software engineering taught us that a
`good software product does not come just from tech-
`nology. Rather, higher level phases in the development
`process, such as specification and design, play a cen-
`tral role in the final success [1, 161. Research on dis-
`tributed systems partially fails to address these issues
`within a well-established framework able to guide an
`engineer through the development of a distributed ap-
`plication, and this deficiency is even more evident when
`large scale systems are involved.
`In this paper, we are concerned mainly with the design
`of distributed applications, that aims at identifying the
`distributable components and their interactions which
`together satisfy the system requirements [lo]. Our goal
`is to develop a repertoire of design paradigms [15] that
`can be used to design distributed applications exploiting
`code mobility. We achieve this by leveraging off of the
`experience we gained in our ongoing research [4] about
`programming languages supporting code mobility, of-
`ten called mobile code languages (MCLs). We proceed
`bottom-up, trying to abstract away from MCLs and
`conceptualize the design paradigms they embody. The
`resulting paradigms are quite general and independent
`of the specific technology one may choose for the im-
`plementation although, of course, each design paradigm
`
`22
`
`IBM-1014
`Page 1 of 11
`
`

`
`can be implemented more naturally by languages pro-
`viding specific features [6]. Independence of the design
`paradigm from the underlying technology is a major
`point in the general software engineering practice. As
`an example, the benefits of an object-oriented design do
`not stem from the availability of an object-oriented lan-
`guage to be used in the implementation. Rather, they
`are valuable per se, for example in terms of improved
`understandability and reusability of the design.
`The following section gives an overview of currently
`available MCLs, classifying them according to the de-
`gree of mobility they provide. Then, we give the ratio-
`nale for mobile code design paradigms, followed by their
`definition and explanation. Subsequently, we discuss
`why and when mobile code paradigms can be benefi-
`cial and we tackle the problem of choosing a particular
`paradigm via analysis performed at the design stage.
`The final section illustrates further directions for this
`work.
`A BRIEF OVERVIEW OF MOBILE CODE
`TECHNOLOGY
`The interest about code mobility has been raised mainly
`by a new family of programming languages, usually re-
`ferred to as mobile code languages (MCLs), that were
`proposed recently’. Although languages belonging to
`this family are being developed both in industry and
`academia, marketing forces are playing a fundamental
`role in the acceptance of such languages in the com-
`munity of potential users. This is proven by the fact
`that two of the most well-known MCLs, that is, Java
`by Sun Microsystems [18], and Telescript by General
`Magic [ 1 I], come from industry.
`Although both Java and Telescript are considered
`MCLs, they are at the extremes of a continuum repre-
`senting the degree of code mobility that can be provided
`by a programming language. Telescript provides a so-
`phisticated form of thread migration, in which a thread
`running on an interpreter (or engine, in the Telescript
`jargon) is able to migrate autonomously to a different
`engine, possibly run by a different machine, by execut-
`ing a go operation. This operation causes the engine to
`suspend the thread, serialize it (together with its state),
`and transmit it to the destination engine specified as ar-
`gument. There, it will be unserialized, and its execution
`will be resumed from the instruction following the go.
`Telescript is a very rich language, in which support for
`mobility of both the code and the associated state has
`been a driving factor for the whole language design.
`On the other hand, in Java there is no support for mi-
`
`IFor simplicity, we refer to the technologies mentioned here as
`“languages”, even when they are extensions of existing languages.
`Furthermore, we will describe only briefly problems and issues in
`MCLs. An in-depth discussion is provided in [4].
`
`gration of executing code. The only language feature
`that can be directly exploited for code mobility is pro-
`vided by a programmable class louder. Instead of hav-
`ing a fixed policy for resolving class names at run-time,
`Java provides the capability to program where the code
`corresponding to an unresolved class name has to be re-
`trieved. Hence, Java programs can download code from
`the net and link it dynamically at run-time.
`13etween these two extremes there is a full spectrum
`of MCLs that provide different degrees of mobility for
`(EU). Currently available MCLs
`their execution units’
`l~rovide support for at least one of the following:
`
`Strong mobility is the ability of an MCL (called
`strong MCL) to allow EUs to move their code and
`execution state to a different site. Executing units
`are suspended, transmitted to the destination site,
`and resumed there. For instance, Telescript, is a
`strong MCL.
`
`‘Weak mobility is the ability of an MCL (called weak
`MCL) to allow an EU in a site to be bound dynam-
`ically to code coming from a different site. This
`encompasses two cases: either the EU dynamically
`links code downloaded from the network (as can be
`done in Java), or the EU receives its code from an-
`other EU. In the latter case, two more options are
`possible. Either the EU in the destination site is
`created from scratch to run the incoming code, or
`a pre-existing EU links the incoming code dynam-
`ically and executes it.
`
`Strong MCLs are a minority, because of the challenging
`problems they pose in both defining and implementing
`the semantics of strong mobility. Besides Telescript, the
`family of strong MCLs includes languages such as Ty-
`coon, Agent Tcl and Emerald. Tycoon [la] provides
`thread migration like Telescript, but lacks Telescript’s
`richness of abstractions and features. Agent Tcl[7] pro-
`vides strong mobility where the whole image of the in-
`terpreter can be transferred to a different site by execut-
`ing a jump instruction. Agent Tcl also supports weak
`mobility, as it provides a submit instruction that al-
`lows transmission of Tcl [14] procedures, together with
`a portion of their global environment, to an interpreter
`running on a different site. Emerald [3] also provides
`a form of strong mobility, though it is not completely
`under programmer’s control.
`Weak mobility has been around for quite a long time un-
`der many shapes. For example, the well-known UNIX
`s h shell language together with the run-time support
`
`”ereafter, we will use the term execution unit to refer to the
`run-time representation of a single flow of computation, e.g., a
`UNIX process or a thread in a multithreaded environment.
`
`23
`
`IBM-1014
`Page 2 of 11
`
`

`
`provided by the r s h d daemon can be regarded as a lan-
`guage implementation supporting weak mobility, in that
`it allows a user to send a shell script to be executed on a
`remote machine. In addition, the REV [8] system, that
`inspired much of the work on code mobility, provides an
`extension to remote procedure call (RPC) that allows
`one to send both the actual parameters and the code for
`a procedure to be executed on a remote machine. More
`recent approaches have been inspired by applications de-
`velopment on the Internet. As we mentioned, the Java
`class loader allows the programmer to customize the res-
`olution of a class name, possibly downloading the cor-
`responding code from any machine on the network. An
`extension of Java, called MOLE [17], adds the capabil-
`ity of sending code to another Java interpreter without
`modifying the Java interpreter. TACOMA [9] is an ex-
`tension of Tcl that allows the programmer to send code
`together with any kind of data to a remote machine, in
`order to be executed there. Facile [5] is a higher-order
`functional language conceived for concurrent distributed
`programming where code mobility is naturally achieved
`because Facile functions are first class elements of the
`language. MO [19] differs from the above languages in
`that it is not conceived to be the language in which
`mobile code applications are programmed. Rather, its
`goal is to provide a middleware layer supporting code
`mobility for higher level layers.
`DISTRIBUTED APPLICATIONS AND CODE
`MOBILITY
`When designing the architecture of a distributed ap-
`plication, interaction among the various components is
`usually considered independent of the components’ lo-
`cation. The location of components is simply regarded
`as an implementation detail. In some cases, such de-
`tails are explicitly stated by the programmer in the im-
`plementation stage. In other cases, they are automat-
`ically defined by some middleware layer. For example,
`CORBA [13] intentionally hides the location of com-
`ponents to the programmer. In this framework, there
`is no distinction between interaction involving compo-
`nents residing on the same host and components resid-
`ing on different hosts of a computer network.
`This, however, is not the only possible approach to the
`design of distributed applications. There are cases when
`the concepts of location, binding of computational re-
`sources to locations, and migration to different locations
`need to be taken into account during the design stage.
`In some cases, the interaction among components resid-
`ing on the same host is remarkably different with re-
`spect to the case where components reside on different
`hosts of a computer network, in terms of latency, access
`to memory, partial failure, and concurrency. As stated
`in [20], hiding such differences can lead to unexpected
`performance and reliability problems.
`
`In this paper, we address the class of applications for
`which the concepts of location and mobility are so im-
`portant that they affect the conceptual structure of the
`application as it is conceived in the design stage. The
`next section illustrates a number of design paradigms
`that emerged from our research. Such paradigms are
`general and provide a repertoire of architectural pat-
`terns that can be used to design distributed mobile ap-
`plications in a systematic fashion.
`MOBILE CODE PARADIGMS
`In this section we will abstract away from the specific
`features provided by the language in which a distributed
`application is written. Our goal is to identify design
`paradigms encompassing code mobility which can pro-
`vide guidance for the design of distributed applications.
`Design paradigms will be defined in terms of the follow-
`ing basic abstractions:
`
`Components are the composing elements of an archi-
`tecture. They can be further divided into:
`Resource components embody architectural el-
`ements representing passive data or physical
`devices, e.g., a file, a network device driver, or
`a printer driver. A particular kind of resource
`is represented by code components which con-
`tain the know-how necessary for the execution
`of a particular task.
`Computational components embody a flow of
`control. An example is a process, or a thread.
`They are characterized by a state, which in-
`cludes private data, the state of their execu-
`tion, and bindings to other components, in
`particular to code components and resource
`components.
`Interactions are events that involve two or more com-
`ponents. For example, a message exchanged be-
`tween two computational components can be re-
`garded as an interaction between them.
`Sites are execution environments; they host compo-
`nents and provide support for the execution of com-
`putational components.
`In our paradigms, sites
`embody the intuitive notion of location. Hence, in-
`teractions among components residing in the same
`site are considered less expensive than interactions
`taking place among components located in different
`sites.
`
`Implicitly, we assume the existence of an underlying net-
`work which provides support for all the communication
`facilities.
`We will present our design paradigms in terms of inter-
`actions patterns that define the coordination and reloca-
`
`24
`
`IBM-1014
`Page 3 of 11
`
`

`
`tion of components needed to perform a service. To this
`end, we consider a computational component A, located
`at a site SA, that needs the results of the computation
`of a service. We assume the existence of another site
`S g , which will be involved in the delivery of the ser-
`vice. In order to obtain the service results, A starts the
`interaction pattern that leads to service delivery. Ser-
`vice execution involves a set of resources, the know-how
`about the service (its code), and a computational com-
`ponent responsible for the execution of the code. In
`order to accomplish the service, these elements must be
`present at one site ut the same time.
`In this context, we identify three main design paradigms
`that extend the well-known client-server paradigm to
`exploit code mobility. We will call them: remote eval-
`uation, code on demand, and mobile agent. We distin-
`guish the design paradigms according to the location
`of the different components before and after the execu-
`tion of the service, the computational component that
`is responsible to execute the code, and where the com-
`putation actually takes place (see Table 1).
`The presentation of the paradigms is based on a real
`life scenario where two friends-Louise and Christine-
`interact and cooperate to makc a chocolate cake. In or-
`der to make the cake (the results of a service), a recipe
`is needed (the know-how about the service), as well as
`the ingredients (the resources that can be moved), an
`oven to bake the cake (a resource that can hardly be
`moved), and a person to mix the ingredients following
`the recipe (a computational component responsible for
`the execution of the code). To prepare the cake (to ex-
`ecute the service) all these elements must be co-located
`in the same home (site). In the following, Louise will
`play the role of component A, i.e., she is the initiator of
`the interaction, and the one interested in its effects.
`Client-Server (CS)
`
`Louise would like to have a chocolate cake, but
`she doesn’t know the recipe, and she has at
`home neither the required ingredients nor an
`oven. Fortunately, she knows that her friend
`Christine knows how to make a chocolate cake,
`and that she owns everything needed at her
`place. Since Christine is usually quite happy
`to prepare cakes on request, Louise phones her
`asking: “Please, can you make me a chocolate
`cake?”. Christine makes the chocolate cake
`and delivers it back to Louise.
`
`the server to draw a filled rectangle passing the coordi-
`nates of the upper-left and lower-right corners. As a
`consequence, the server executes the procedure that ac-
`tually draws the rectangle driving the physical display.
`In this paradigm, a computational component B (the
`server) offering a set of services is placed at site Sg.
`Resources and know-how needed for service execution
`are hosted by site SB as well.
`The client component A, located on SA, requests the ex-
`ecution of a service with an interaction with the server
`component B . As a response, B performs the service re-
`quested by executing the corresponding know-how and
`accessing the involved resources co-located with B. In
`general, the service produces some sort of result that
`will be delivered back to the client with an additional
`inter action.
`Actually, a server may rely on other components in or-
`der to perform parts of the required service or to retrieve
`parts of the required data, but, in this case, the server
`would act as a client in another client-server interaction.
`From the original client’s viewpoint the server owns all
`necessary data and knowledge.
`Remote Evaluation (REV)
`
`Louise wants to prepare a chocolate cake. She
`knows the recipe but she has at home nei-
`ther the required ingredients nor an oven. Her
`friend Christine has both at her place, yet she
`doesn’t know how to make a chocolate cake.
`However, Louise knows that Christine is happy
`to try new recipes, therefore she phones Chris-
`tine asking: “Can you make me a chocolate
`cake? Here is the recipe: take three eggs...”.
`Christine prepares the chocolate cake following
`Louise’s recipe and delivers it back to her.
`
`There are several examples of a remote evaluation de-
`sign paradigm3 implemented using the available tech-
`nology. For example, in the UNIX world, the rsh com-
`mand allows a user to have some script code executed
`on a remote host. Another example is the interaction
`between an application (e.g., a word-processor) and a
`PostScript printer. The resources involved in this inter-
`action are the printing devices (e.g., laser raster, paper
`tractor, and so on), while the code is the PostScript file,
`.which is executed by the PostScript interpreter hosted
`by the printer.
`
`The client-server paradigm is well-known and widely
`used. An example is the X Windows system. In this
`case, the server manages a physical display while client
`applications use the display through the services pro-
`vided by the server. For instance, one client may request
`
`3Hereafter, by ‘Iremote evaluation” we will refer to our design
`paradigm. Although it has been inspired by work on the REV
`system [8], they have to be kept definitely distinct. Our REV is a
`design paradigm, while the REV system is a technology that may
`be used to actually implement an application designed using the
`REV paradigm.
`
`25
`
`IBM-1014
`Page 4 of 11
`
`

`
`Paradigm
`
`Clien t-Server
`
`SA
`
`A
`
`Remote
`Evaluation
`
`know-how
`A
`
`Code on
`Demand
`
`resources
`A
`
`Mobile
`Agent
`
`know-how
`A
`
`Before
`
`After
`
`SB
`know-how
`resources
`B
`
`resources
`B
`
`know-how
`B
`
`S A
`
`A
`
`A
`
`resources
`know-how
`A
`
`resources
`
`-
`
`SB
`know-how
`resources
`B
`know-how
`resources
`B
`
`B
`
`know-how
`resources
`A
`
`Table 1: Mobile code paradigms. This table shows the location of the components before and after the service execu-
`tion. For each paradigm, the computational component in bold face is the one that executes the code. Components
`in italics are those that have been moved.
`
`In the REV paradigm, a component A has the know-
`how necessary to perform the service but it lacks the
`required resources, which happen to be located at a re-
`mote site SB. Consequently, A sends the service know-
`how to a computational component B (which we call
`“executor”) located at the remote site that, in turn, ex-
`ecutes the code using the resources available there. An
`additional interaction delivers the results back.
`Given the above definition, it may be argued that REV
`is nothing more than a special case of the client-server
`paradigm in which the server exports an execute-code
`service that takes a code fragment as parameter. To
`some extent, this is true. Yet, we believe that it is useful
`to distinguish between the two paradigms. In particular,
`it is the ability of the server/executor to offer customiz-
`able services that makes the difference. A server in the
`client-server paradigm exports a set of fixed function-
`alities. In turn, an executor in the remote evaluation
`paradigm offers a service that is programmable with a
`computationally complete language.
`Code on Demand (COD)
`Louise wants to prepare a chocolate cake. She
`has at home both the required ingredients and
`an oven, but she lacks the proper recipe. How-
`ever, Louise knows that her friend Christine
`has the right recipe and she has already lent it
`to many friends. So, Louise phones Christine
`asking “Can you tell me your chocolate cake
`recipe?”. Christine tells her the recipe and
`Louise prepares the chocolate cake at home.
`
`Many upcoming Internet applications are based on this
`paradigm. For example, consider a generic terminal that
`
`is able to download, link, and execute some code from
`the net. The terminal could get documents that come
`in a particular format that the terminal is unable to
`elaborate. The header of the document may contain
`a reference to the code that is needed to interpret the
`document so that the terminal, after downloading the
`data, could fetch the necessary code.
`In the COD paradigm, component A is already able to
`access the resources it needs, which are co-located with
`it within SA. However, no information about how to
`process such resources is available at SA. Thus, A inter-
`acts with a component B contained in SB by requesting
`the service know-how, which is in SB as well. A second
`interaction takes place when B delivers the know-how
`to A, which can subsequently execute it.
`Mobile agent (MA)
`
`Louise wants to prepare a chocolate cake. She
`has the right recipe and ingredients, but she
`has not an oven at home. However, she knows
`that her friend Christine has an oven at her
`place, and that she is very happy to lend it.
`So, Louise prepares the chocolate dough and
`then goes to Christine’s home, where she bakes
`the cake.
`
`As an example of an application that is conveniently
`modeled with mobile agents, consider a network man-
`agement activity. The network manager would like to
`test the status of a set of network nodes and perform
`some corrective actions on each faulty node following the
`net topology (e.g., because the faults may be caused or
`propagated by adjacent nodes). Current mainstream
`
`26
`
`IBM-1014
`Page 5 of 11
`
`

`
`protocols for network management, e.g. SNMP, are
`based on a pure client-server paradigm where a man-
`agement station continuously polls and updates data on
`the network devices by means of very low-level get/set
`operations. As discussed in [Z] , this is likely to generate
`a huge network traffic in proximity of the management
`station, thus worsening the situation that management
`is supposed to solve. A mobile agent, in turn, could be
`composed of a diagnostic routine that travels among the
`faulty nodes performing all the needed get/set opera-
`tions locally, without overloading the network.
`In the MA paradigm, the service know-how is owned by
`A, which is initially hosted by SA, but some of the re-
`quired resources are located on Sg. Hence, A migrates
`to SB carrying the know-how and possibly some inter-
`mediate results with itself. After it has moved to S B ,
`A completes the service using the resources available
`there.
`The mobile agent paradigm is different from other mo-
`bile code paradigms in that the associated interactions
`involve the mobility of an existing computational com-
`ponent. In other words, while in REV and COD the
`focus is on the transfer of code between components, in
`the mobile agent paradigm a whole computational com-
`ponent, together with its state, the code it needs, and
`some resources required to perform the task, are moved
`to a remote site.
`DISCUSSION
`The mobile code design paradigms introduced in the
`previous section define a number of abstractions that
`provide an explicit model for the bindings between com-
`ponents, locations, and code and their dynamic re-
`configuration. Our initial experience in applying the
`paradigms [a, 61 suggests that these abstractions are
`effective in the design of distributed applications. Fur-
`thermore, their independence of the particular language
`or system in which they are ultimately implemented is
`an additional asset.
`Mobile code paradigms model explicitly the concept of
`location. The site abstraction is introduced at the archi-
`tectural level in order to take into account the location
`of the different components. Following this approach,
`the type of interaction between two components is de-
`termined by both components’ code and location. In-
`troducing the concept of location makes it possible to
`model the cost of the interaction between components
`at the design level. In particular, an interaction between
`components that share the same location is considered
`to have a negligible cost when compared to interaction
`that is carried out through a communication network.
`Most well-known paradigms are static with respect to
`code and location. Once created, components cannot
`change either their location or their code during their
`
`lifetime. Therefore, the types of interaction and its qual-
`ity (local or remote) cannot change.
`Mobile code paradigms overcome these limits by pro-
`viding component mobility and remote code linking.
`By changing their location, components may dynami-
`cally change the quality of interaction, reducing inter-
`action costs. To this end, the REV and MA paradigms
`allow the execution of code on a remote site, encompass-
`ing local interactions with components located there.
`Components that are able to link code dynamically can
`extend the types of interaction they support. The COD
`paradigm enables components to retrieve code from
`other remote components, providing a flexible way to
`extend dynamically the behavior of a component.
`SOME SCENARIOS FOR CODE MOBILITY
`In this section, we depict informally some scenarios that
`are expected to gain great benefit from the exploitation
`of a mobile code paradigm, in order to show how they
`can help in building distributed applications.
`Deployment and Upgrade of Distributed Appli-
`cat ions
`Code mobility can be exploited to support software de-
`ployment and maintenance. Traditional software engi-
`neering addresses the problem of minimizing the work
`needed to extend an application and to keep trace of
`the changes in a rational way, by emphasizing design
`for change and the provision of suitable development
`tools. In a distributed setting, however, the action of
`installing or rebuilding the application at each site still
`have to be performed locally by an operator.
`‘The REV and MA paradigms could help in providing
`automation of the installation process. A scheme could
`be devised where the installation process is coded in a
`program that is transferred to a set of network nodes.
`On each node, the program could analyze the features of
`the local hardware/software platform and perform the
`correct configuration and installation steps.
`Code mobility can go even further. For instance, let
`us suppose that a new functionality has to be added
`to an application; say, a new dialog box must be shown
`when a particular button on the user interface is pushed.
`In a distributed application designed with conventional
`techniques, the new functionality needs to be introduced
`by reinstalling or patching the application at each site.
`This process can be lengthy and, even worse, it is put in
`place even if the user never activates the corresponding
`functionality.
`The COD paradigm could help in many ways. First, all
`changes would be centralized in the code server reposi-
`tory, where the latest version is kept. hrxeover, changes
`would not be performed proactively by an operator on
`each site, rather they could be performed reactively by
`
`27
`
`IBM-1014
`Page 6 of 11
`
`

`
`the application itself, that would request automatically
`the new version to the cent,ral repository, as soon as
`the corresponding functionality is activated. Hence,
`changes could be propagated in a lazy way, concentrat-
`ing the upgrade effort only where it is really needed.
`Customization of Services
`Conventional distributed applications built following a
`client-server paradigm provide, by their nature, an u-
`priori fixed set of services accessible through a statically
`defined interface. It is often the case that this set of ser-
`vices, or their interfaces, are not suitable for unforeseen
`client needs. A common solution to this problem is to
`upgrade the server with new functionality, thus increas-
`ing both its complexity and its size, without increasing
`its flexibility.
`The REV and MA paradigms could help in increasing
`server flexibility, yet keeping both the size and com-
`plexity of the server limited. In these paradigms, in
`fact, the server actually provides a unique service, the
`execution of remote code; as a consequence, it does not
`need to be changed, unless the language in which code
`is programmed and executed is changed. Hence, the
`server provides the maximum flexibility, in that it can
`execute a7ty service requested by a client. By converse,
`each client is responsible for the correct specification of
`the service it needs, described by the code sent to the
`remote server.
`This approach is well-known in certain fields of com-
`puter science. For example, it is just the way distributed
`relational databases work; the DBMS server is not re-
`sponsible for providing answers to specific and pre-built
`queries, rather, the only service it provides is the execu-
`tion of SQL code that comes from application programs
`or SQL shells acting on the client side.
`However, the paradigm exploited by SQL systems dif-
`fers in two respect with the ones we proposed. First,
`the MA paradigm defines migration of a computation
`that is already in e

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket