<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Modeling Interactions between Web Applications and Third Party Systems</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Nathalie</forename><surname>Moreno</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Antonio</forename><surname>Vallecillo</surname></persName>
						</author>
						<author>
							<affiliation key="aff0">
								<orgName type="department">Dpto. de Lenguajes y Ciencias</orgName>
								<orgName type="institution">Computación</orgName>
							</affiliation>
						</author>
						<author>
							<affiliation key="aff1">
								<orgName type="institution">Universidad de Málaga</orgName>
								<address>
									<country key="ES">Spain</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Modeling Interactions between Web Applications and Third Party Systems</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">B4EE0D0FA5FE6B924E2C240FEEFC7475</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T21:52+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Web-based applications are no longer isolated systems. Now they need to interoperate with external service providers and legacy systems, which are available in a wide range of different platforms, and may follow disparate communication mechanisms. Modeling the interactions between these systems is not simple, and need to be properly addressed within any model-driven development scenario. Many of the existing Web Engineering proposals do not take this fact into account, or address it in a very simplistic way. In this work we use an MDA approach for encapsulating the different interaction abstractions and mechanisms into a separate platform-independent level, and show the transformations required to produce platform-specific models depending on the particular details and interaction mechanisms of each technology platform and middleware.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>As the demand and the number of available distributed Web applications grows, so does the need to easily design, deploy, maintain, integrate and interconnect such Web applications in heterogeneous environments. MDA <ref type="bibr" target="#b17">[18,</ref><ref type="bibr" target="#b4">5]</ref> seems to be one of the most promising approaches for addressing these issues: it provides the right kinds of abstractions and mechanisms for improving the way applications are integrated and interconnected nowadays.</p><p>A proper integration approach requires an structured and efficient way to assist software architects and developers achieve such integration not only at implementation level, but also during all phases of the development process. In this regard, any integration with legacy data and external services at the PIM level requires modeling them, too (their structural features, behavioral descriptions, etc.)-allowing the manipulation of the external entities of such systems as native elements of our models. Special care should be taken in this case with the bridges that connect the system with its external partners applications, for which transformations are also needed, as mentioned in <ref type="bibr" target="#b10">[11]</ref>.</p><p>Although a priori there are no major problems with this approach, we may face different kinds of incompatibility issues when trying to integrate external pieces into the system (e.g., external services or legacy applications). For instance, the interface of the services required by our application (as specified in one of the PIMs) may not match the interface of the actual service, as provided by the external service provider. There is no problem if these incompatibilities are explicit because they can be easily detected and corrected-as it happens with signature incompatibilities, for example. These situations can be treated with the use of adaptors, wrappers, or any kind of adaptation techniques.</p><p>The major problem appears in the cases of implicit assumptions on the interaction models and mechanisms followed by clients and servers. Normally, these assumptions are implicitly made by software developers with previous knowledge about how the target platform(s) work. Whenever all the application is generated from the initial PIMs using a single platform technology, and therefore all parts follow the same interaction models and patterns, this problem does not happen. However, when we need to work with external entities, the interactions models of each party should be made explicit to be able to detect and resolve potential inconsistencies and conflicts at design level.</p><p>This work presents an approach for modeling the communication mechanisms between a Web application and its related external systems, that makes explicit both the programming abstractions through which the client and service provider view the communication, and certain implementation choices about the selected target platform that generally are implicit. This is specially relevant in those contexts in which several platform technologies may be simultaneously used.</p><p>In general, there is no standard way of describing implementation decisions such as concurrence, security or transaction aspects, in order to get computationally complete PIMS, i.e., PIMs that contain all the information required to produce real program code.</p><p>Several approaches that address this issue by identify-ing these concerns at different levels of abstraction have appeared recently. Almeida et al. <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b1">2]</ref> introduce the abstract platform concept that defines characteristics that must have proper mappings onto the set of concrete target platforms that are considered for an MDA design process. Following a different approach that uses a UML profile, Witthawaskul and Johnson <ref type="bibr" target="#b21">[22]</ref> define the unit of work concept which can be applied on a UML operation to support platform independent transaction modeling. Likewise, our work follows an approach based on marks (using a UML metamodel) that guide both the PIM to PSM transformation, and the PSM to the Implementation Model transformation too. They represent interaction model capabilities and services provided by potential target platforms abstracted and specified in a platform-independent way.</p><p>Another controversial issue is related to where implementation decisions are expected to appear: (i) directly in the PIM; (ii) in the target platform model, or; (iii) in the transformation model. The MDA community still struggles to deal with this issue, as a quick look at the discussion happening in the MDA mailing lists clearly reveals.</p><p>The structure of this document is as follows. After this introduction, Section 2 provides a brief description of the interaction styles supported by technologies like CORBA, Enterprise Java Beans, J2EE, Web Services or .NET. After that, Section 3 derives a UML metamodel based on the existing similarities found among the previous interaction models. Using this metamodel, Sections 4, 5 and 6 show how to apply it in a service-oriented scenario. Finally, Section 7 draws some conclusions and outlines some further research activities.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Interaction Models for Web Applications</head><p>Currently, Web applications need to interoperate with third party systems (external portlets, Web services or legacy applications) in a variety of ways-interaction models-which reflect the heterogeneity of applications built upon disparate implementation technologies such as J2EE, CORBA or .NET. Generally, each middleware technology has its own interaction model, although traditional client-server interaction patterns are likely to be common.</p><p>A Web application may require to communicate with a great variety of systems in different address spaces and running on heterogeneous platforms-which use different communication abstractions and interaction models. Here we will briefly describe the interaction styles of the most commonly used technologies, which are able to connect applications implemented using heterogeneous technologies.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Calling Service Provider for a Web Application</head><p>Currently, three main technologies support communication between modules of disparate systems, hiding platform and language specific details: CORBA, Enterprise Java Beans, J2EE and Web Services and .NET.</p><p>CORBA Service Provider. To request a CORBA service provider, the client may follow two approaches <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b15">16,</ref><ref type="bibr" target="#b19">20]</ref>: (i) a static invocation method or (ii) a dynamic invocation method. For the former, the client has to acquire at compiletime an object reference to the CORBA object. Then, this reference is used to initialize a proxy object that represents the remote object in the client's address space. For generating the proxy implementation, an IDL specification of the CORBA object is required and compiled into the client program. IDL specifications can define both synchronous (request/reply) operations and asynchronous (one-way) messages.</p><p>For dynamic invocations there is no information about the types and interface specifications of the required CORBA service. The client can look this information up by querying an Interface Repository (a service that provides IDL definitions at run-time). In consequence, a client request consists of operations for setting the name and parameters of the request and retrieving the returned values or an exception at run-time. Once the client has acquired a valid remote object reference to the CORBA server object, it can call the server object's methods as if the server object resided in the client's address space. The mapping of the object name to its implementation is handled by the Implementation Repository.</p><p>Enterprise Java Beans/J2EE Provider. For a client to call a business method, it needs to go via an EJB object (a generated Java class based on the Component Interface). This means that a client never accesses an enterprise bean directly <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b20">21]</ref>. In this regard, the client has in first place to call a factory object (which is the EJB Home Object) to either locate an existing EJB object or create a new EJB object. Once it is generated during compile or deployment time, EJB objects act as bridges between the client and the bean instances <ref type="bibr" target="#b18">[19]</ref>.</p><p>There are several types of EJBs: session beans, entity beans and message-driven beans. The two former kinds of beans provide their interfaces to allow remote clients to invoke them. However, message-driven beans do no make public their interfaces. On the contrary, a message-driven bean listens for messages that are sent using Java Message Service and processes them anonymously (asynchronous invocations) <ref type="bibr" target="#b9">[10]</ref>.</p><p>An XML file describes how an Enterprise Java Bean should be assembled and deployed, its name, and other external dependencies of the bean. Java/RMI. This mechanism is tied to the Java programming language and virtual machines <ref type="bibr" target="#b8">[9]</ref>. RMI allows to invoke operations on Java objects. The client should contact first an RMI registry, and request the name of the service. RMI URLs identify services, including the hostname on which the service is located, and the logical name of the service. Then, the registry will point the client to the direction of the service it wants to call. The mapping of Object Name to its Implementation is handled by the RMI Registry.</p><p>RMI generates proxies and stubs from Java interface definitions. Furthermore, RMI uses Java's capabilities for dynamic linking to load the classes of parameters or returned objects over the network, allowing clients or servers to receive objects of classes unknown at compile time.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Web Services &amp; .NET Provider.</head><p>In order for a client to be able to consume a Web service, the client should know where the Web service resides and how to invoke its methods (that is, how to serialize the call to the Web service and how to deserialize received messages from the Web service). This information is provided by the WSDL specification of the Web service <ref type="bibr" target="#b22">[23]</ref>-an XML document that specifies the data types of the messages, the protocols that are accepted, the Web service's endpoint, and the bindings.</p><p>Since notions involved in creating the SOAP message to send to the Web service, making the actual HTTP request, deserializing the HTTP response, etc. could be complex, they are abstracted using a proxy class. A proxy class is a class that encapsulates the complexity of calling a Web service and exposes this complexity through a simplified interface <ref type="bibr" target="#b11">[12]</ref>. From the client application's perspective, the Web service is simply a local component-the client doesn't have to worry about the specifics of how to serialize a SOAP message, or how to make an HTTP request.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Modeling interactions</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Interactions</head><p>The basic interaction model works according to the three-step process shown in Figure <ref type="figure">1</ref>, being different interaction models supported by combinations of this configuration-mainly combinations of the second and third steps.</p><p>Step 1. A service provider publishes a description of their services in a publicly accessible registry.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Service requester</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Service provider</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Service Registry</head><p>Bind Publish Find</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 1. Basic Interaction Model</head><p>Step 2. A service requestor discovers those services by querying the registry and binds to the selected service. (Note that we will call the service requester a client)</p><p>Step 3. Client interacts with service provider.</p><p>According to Figure <ref type="figure">1</ref>, an interaction between two endpoints can be defined in terms of:</p><p>• The set of messages accepted by the service provider (Provided Interface)</p><p>• The set of messages required by the client (Required Interface)</p><p>• A protocol that defines the partial order between the exchanged messages.</p><p>• The programming abstractions through which the client and server view the protocol (the client-side and server-side programming interfaces). This is important, because these programming abstractions encapsulate the agreement between both parties on: the data format, the mechanism for transforming and reconstructing object state into this format, the transport protocol, etc.</p><p>Most approaches focus just on the first three points. However, the fourth is not explicitly stated or modeled anywhere; instead, it is usually implicitly assumed by both the client and the server, and therefore hard-wired into their models, transformation rules, and code. This is neither flexible, nor provides the platform-independence required in a true MDA approach. Besides, these assumptions are usually separately made, which may cause contradictory assumptions. Thus, being able to express this kind of informationparticulary the last point-in a Platform-Independent way is a step forward to achieve abstracts models established in more details that allow code-generation MDA tools to obtain really implementations. In our proposal we have tried to use as much as possible existing UML elements, in particular UML 2.0 elements because they provide some useful architectural concepts and mechanisms for our purposes. Table <ref type="table" target="#tab_1">1</ref> shows a summary of the profile we have defined for representing these concepts. In particular, we consider each system as a UML 2.0 Component, which represents "a modular part of a system that encapsulates its contents, designs as well as implementations features, without losing the ability to describe deployment information and being replaceable within its environment" <ref type="bibr" target="#b16">[17]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Identifying Model Elements and their</head><p>Component interactions are carried out through a layer of abstraction that allows clients to instantiate and access to the methods of the external services provider. In this sense, we can define one or more Ports through which a component invokes and receives method calls.</p><p>Since each endpoint can act as either a provider or a client in each of the Web interactions in which it plays a role, we have modeled causality by a Port stereotyped as ClientPort or ServerPort.</p><p>The interaction between a ServerPort and a ClientPort falls into one of the following categories:</p><p>• Synchronous invocation. The ClientPort invokes a remote procedure and blocks until a response or an exception is received from the ServerPort.</p><p>• Asynchronous invocation. The ClientPort invokes a remote procedure and continues processing without waiting for a return, although the returned value will be received in any moment.</p><p>• One-way invocation. The ClientPort invokes a remote procedure but does not block or wait to receive a return since it will not receive a return value.</p><p>In a first approach we will consider that each Port is associated with only one Interface. More precisely, a ClientPort is associated with a RequiredInterface and a ServerPort is associated with a ProvidedInterface. A ProvidedInterface specifies public operations that are remotely available. On the other hand, RequiredInterfaces complement Provided-Interface and describe the features that make up a system that depends on in order to implement its functionality.</p><p>Similar to Interfaces, Ports describe how a System interacts with its environment, but is different in that Interfaces contain just syntactic information about methods provided by a System and Ports encapsulate the required business logic that allows a Requirer to interact with a Provider, tying that business logic with a concrete "implementation choice". Note that in many cases some implementation choices will only be supported by certain target platforms.</p><p>Each Port has associated a Protocol that defines the partial order in which the objects expect their methods to be called, and the order in which they should invoke other object's methods. Port's Protocols show a global perspective over its constituent external applications protocol descriptions. For simplicity we have supposed that each Port is associated with only one Interface, and hence Port's protocols will be coincide with Interface's protocols.</p><p>ServerPort's Protocol can be given inside text files as BPEL4WS or WS-CDL specifications, for example. On the other hand, ClientPorts interfaces can be augmented with behavioral descriptions based on protocol state machines that define usage constraints among features of the associated interface.</p><p>Many aspects of the ClientPort are determined by the external system the client connects to. In consequence, the ClientPort can be classified into three main categories based on the third party system that they can interact with:</p><p>(i) Stub Clients are never required to be downloaded or distributed to clients and they are specific for a certain protocol, transport option and server requirer (accorded at compile time). The client must obtain a reference to the Stub before using it, which represents an instance of the server provider. In order to obtain it, both the remote interface and its implementation have to be available so the client relies on an implementationspecific class.</p><p>(ii) Proxy Clients, as Stub Clients, refer to static invocation of server provider methods. They are not portable across implementations either-in this case, the code for the Proxy Client is created during runtime, but the reference to the interface specification of the external provider is obtained at compile-time.</p><p>(iii) Dynamic Clients can access a service discovering its interface description dynamically. In the same way, they can invoke server provider methods at runtime. This implies an extra work at runtime to fetch and process the server interface.</p><p>At this point, a benefit of using Ports is that the constraints and requirements on the communications between applications can be modeled without forcing software developers to take into account the platform specific notions in their designs. In this way, the designs can be reused to be run on different platforms (hence following the platformindependence philosophy dictated by MDA).</p><p>The kind of Client Port to be used is important, and strongly influences the kinds of client-side artifacts that need to be generated at development-time. Both Stub and proxy clients require the complete interface specification of the external services. That is, the client does not need to discover the required service but instead it has, at developmenttime, to know the external system's details (location, configuration file, WSDL or IDL URL, namespace, etc.). In contrast, Dynamic Clients must dynamically discover and invoke an external system without any prior knowledge of its details (signature of the remote procedure or the name of the service). For a Dynamic Client, there is no coupling between the service interface and the client. This makes the client code easy to modify if the external systems specifications change.</p><p>On the other hand, one of the most significant differences between Stub Clients and Proxy Clients is how external functionality is invoked. For the former, the client-side programming interface is embedded inside the client business logic. On the contrary, for Proxy Client and Dynamic Client, the client-side code is packaged apart from the client application.</p><p>Please note that the selection of these Ports only affects the client side. From the server perspective, it only receives and returns messages which are identical for all client types.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Adaptors</head><p>In case there is a strong requirement of using an external service provider (e.g., for Stub Clients), the software designer can specify what should be done if the behavior/specification of both parties is incompatible. Since we have available the interface of the required external systems (provided interfaces), we can carry out static checking for comparing them and determining whether they fulfil our requirements (required interfaces).</p><p>If not, the designer can decide at designing-time to implement an intermediate business logic (adaptors) that conforms to a given interface or consume a required external system. Adaptors mediates between the ClientPort and ServerPort interactions, resolving service provider and service requester differences at interface and protocol levels.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Example: The Travel Agency</head><p>In order to illustrate the use of interaction patterns in the definition of Platform Independent and Platform Specific Models, let us consider a Travel Agency service that sells vacation packages to its customers. The packages include flights, hotel rooms, car rentals, and combinations of these. External service providers include transportation companies (airlines, hotels and car rentals) and financial organizations (credit companies and banks).</p><p>To book a vacation package, the customer will provide details about his preferred dates, destinations, and accommodation options to the Travel Agency System (TAS). Based on this information, the TAS will request its service providers for offers that fulfill the user's requirements, and then will present the list of offers to the customer. At this point, the customer may either select one of the offered packages, reject them all and quit, or refine his requirements and start the process again. If the customer selects one of the packages, the TAS will book the individual services to the corresponding transportation companies, and charge the customer.</p><p>The straightforward application of MDA to develop a system is based on the following steps:</p><p>Step 1 Create class diagram (PIM) describing object model.</p><p>Step 2 Mark PIM elements with stereotypes.</p><p>Step 3 Customize the marked PIM with annotations.</p><p>Step 4 Specify the target platform.</p><p>Step 5 Generate a PSM.</p><p>In general, the MDA software development process becomes an iterative model transformation process where each step transforms one (or more) PIM of the system at one level into one (or more) PSM at the next level until a final implementation model is reached (see Figure2). Here, an implementation model is just another PSM, which provides all the information needed to construct a system and to put it into operation).</p><p>Note that, we will call technology platform to the last platform (i.e., the one that provides the executable PSM, or implementation). The intermediate platforms that transform PIMs into PSMs that will be used as PIMs in the next step are considered as abstract platforms.</p><p>Given that an element of the PIM may be marked several times with marks that come from different metamodels, it will be transformed according to each of the mappings. The semantic of the resulting marked element is given by the gathered features through the MDA model transformation process. In our approach we need to go though two main phases. Firstly, we need to identify the system scope and boundaries, i.e, which services will be provided by our system, and which ones will be externally required. The result of this phase is a high-level architectural view of the services and components of our global system. In the second phase, we need to determine the concrete platforms and communication mechanisms between our application and the external systems identified previously.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Identifying the scope and boundaries of our system</head><p>In our previous work <ref type="bibr" target="#b14">[15]</ref>, we presented a model-based framework that allows the high-level integration of Web applications with third party systems aligned with the MDA principles. It enables the manipulation of the external entities and systems as native elements of our models.</p><p>At design level, software developers are able to spec-ify/mark: the system elements that require code generation; the system elements that will be remotely accessed using its provided interface specifications and implementations; the system elements that need to interact with others; and the system properties that are used for identifying them. All this is done in this first phase in a platform-independent manner, i.e., independently from the communication asbtractions and mechanisms used, and the platforms in which our system and the external services are implemented. These details will be added in the second phase.</p><p>In the first place we need to create the PIM of the system, which in our case is shown in Figure <ref type="figure" target="#fig_1">3</ref>. It is focused just on the operation of the system, while hiding the rest of the details (software architecture, distribution, system boundaries, communication protocols, implementation platforms, etc.). This solution is specified in terms of UML packages and their interconnections in a platform independent way, where no implementation decisions have been explicitly specified (what greatly simplifies the application PIM making it reusable across different target platform environments). As previously mentioned, any integration to legacy data and services may require that the interfaces to those elements are also modeled. The kind of information that is available from them will allow us to check whether they match our requirements or not, as described by the system model <ref type="bibr" target="#b13">[14]</ref>. More precisely, this information should be able to allow us to:</p><p>(a) model the component or legacy system (e.g., by describing its structure, behavior, and choreography);</p><p>(b) check whether it matches the system requirements (this is also known as the gap analysis problem <ref type="bibr" target="#b6">[7]</ref>);</p><p>(c) evaluate the changes and adaptation effort required to make it match the system requirements (i.e., evaluate the distance between the models of the "required" and the "actual" services, see e.g., <ref type="bibr" target="#b12">[13]</ref>); and</p><p>(d) ideally, provide the specification of an adaptor that resolves these possible mismatches and differences (see e.g., <ref type="bibr" target="#b5">[6]</ref>).</p><p>Although the integration of third party systems with a Web application should be address at three levels of abstractions (e.g., at presentation, business process and data level) <ref type="bibr" target="#b14">[15]</ref>, for the sake of simplicity in this paper we will only consider the process level.</p><p>Once the high-level PIM is identified, we need to identify the system scope and boundaries, and then build a model of the system with this information. That target model (PSM) will be built by transforming the original PIM using marks. To identify the elements in the TAS PIM that should be transformed in a particular way, we will use the stereotypes ExternalSystem and</p><p>ExternalAssociation . An ExternalSystem defines any other external system interacting with the system under consideration. In the same way, an ExternalAssociation defines an interaction between the system under deployment and an ExternalSystem .</p><p>Implicitly, each type of model element in the PIM is only suitable for certain marks, which indicate what type of model element will be generated in the PSM.</p><p>Marks are not a part of the platform independent model although they appear on the marked PIM (see Figure <ref type="figure" target="#fig_2">4</ref>). Note that the marked PIM is, by definition technology independent. In consequence, the prefix "External" used by the stereotypes ExternalSystem and ExternalAssociation in Figure <ref type="figure" target="#fig_2">4</ref> does not imply any implementation decisions. Instead, it is only used to limit the system scope that has to be development.</p><p>Once we have the marked PIM, we need to transform it into a PSM that can be translated into a target implementation code. As "platform" we will use here the UML 2.0 constructs and infrastructure for describing software architectures, because what we want to build in this phase is the software architectural description (i.e., model) of the system. This transformation will be guided by the following mapping rules:</p><p>• Packages transformation. Each UML package is mapped to a UML Component initialized with the same of its corresponding UML package.</p><p>• Classes transformation. The UML class stereotyped as InternalSystem or ExternalSystem is mapped to a UML Class holding the same characteristics as its original (name, attributes and operations).</p><p>• Associations transformation. For each UML association stereotyped as ExternalAssociation two component ports will be generated, each one as Association ends of that relationship. Ports will be associated to the UML Component derived in previous step. Its behavior is defined in terms of an interface associated with that port, which specifies the nature of the interactions that may occur over that port. Thus, the port interface's name is given the value of the UML class name from which it derives and its operations correspond to its UML class operations.</p><p>• Association's ends transformation. For the endpoint of an ExternalAssociation stereotyped as InternalSystem a usage dependency from the port to the interface is generated, showing how the InternalSystem provide a set of services.</p><p>For the endpoint of an ExternalAssociation stereotyped as ExternalSystem an implementation dependency from the port to the interface is generated, showing how the ExternalSystem require a set of services.</p><p>• Finally, an assembly connector is defined from a required Interface to a provided Interface.</p><p>Applying these mapping rules on the PIM in Figure <ref type="figure" target="#fig_2">4</ref>, we obtain the PSM shown in Figure <ref type="figure" target="#fig_3">5</ref>.</p><p>As previously mentioned, the MDA software development process is an iterative model transformation process </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">A Platform Specific Interaction-Model</head><p>Once we have the (UML 2.0) architectural description of the system, that identifies its scope and interactions with external services, the next phase focuses on the specification of such external interactions using the particular platforms and communication mechanisms of the required services. By adopting an MDA transformation process based on marks and annotations, we have to define the marks and transformations required.</p><p>Basically the information that the transformation process has to generate from the marked PIM is: the communication mechanisms between the Components; how the communications will be carried out; and the information that describes the architecture of the Web application. Therefore, the model shown in Figure <ref type="figure" target="#fig_3">5</ref> have to be marked again to specify that information.</p><p>Once we have applied previous transformation rules on the PIM, the resulting PSM is also platform-independent. We will mark them with decisions which are considered and taken in the context of a specific implementation design based on the concepts discussed in Section 3:</p><p>• Ports that specify services provided by external entities are stereotyped as ServerPorts</p><p>• Ports that specify required services are stereotyped as ClientPorts .</p><p>• Finally, assembly adaptors connecting interfaces have been stereotyped as Interactions .</p><p>The resulting model is shown in Figure <ref type="figure">6</ref>.</p><p>Now it is the time to include information about the technologies used to interact with the external services.</p><p>In the particular case of the Travel Agency System, we are going to make use of external service providers which include transportation companies (airlines, hotels and car rentals) and financial organizations (credit companies and banks). For illustration purposes we have selected different technologies for each external service. More precisely:</p><p>• A CORBA implementation of the Hotel Service. As previously mentioned, to participate in an interaction with a CORBA server application, the client (that is, our Travel Agency Service) must be able to get an object reference for a CORBA object and invoke operations on the object. To accomplish this, the client need information about references to the environmental objects that provide services for the CORBA application we plan to use and the IDL specification for implementing a stub-style invocation. Figure <ref type="figure" target="#fig_5">7</ref> shows how this information is specified using notes associated to its corresponding stereotypes.</p><p>• Another CORBA implementation of the CarHire Service. In this case, we plan to implement a dynamic interaction pattern so the IDL file will be looked up into an Interface Repository where it must be stored.</p><p>In that sense, no IDL file has to be provided by the external server provider.</p><p>The exact steps taken to access the Interface Repository depend on whether the client is seeking information about a specific object, or browsing the Interface Repository to find an interface. In both cases, before a dynamic client can browse the Interface Repository, it needs to obtain the object reference of the Interface Repository to start the search. Once the client has the object reference, it can navigate the Interface Repository, starting at the root.</p><p>• The two others external services are supposed to be available as external Web services. Their respec-   tive WSDL interface descriptions are required as illustrated Figure <ref type="figure" target="#fig_5">7</ref>. Additionally, the code for the interaction with the Airline Web service relies on an implementation-specific class since it use an stubstyle. This means that its implementation should be also available.</p><p>At this point, we also need to decide on the implementation technologies and platforms of our own system. Imagine that we decide to implement the Travel Agency using Java and Web Services technologies.</p><p>In this case we could use the transformation rules of any of the existing approaches for converting our marked and annotated PIM (in Fig. <ref type="figure" target="#fig_5">7</ref>) to the corresponding PSM (shown in Fig. <ref type="figure">8</ref>). For instance, we could follow the approach by Bezivin et al. <ref type="bibr" target="#b2">[3]</ref>, and then proceed according to the following steps:</p><p>1. Code the service endpoint interface and its implemen-tation class. A service endpoint interface declares the methods that a remote client may invoke on the service. In this regard, each UML class is mapped to a JavaClass initialized with the same characteristics of its corresponding UML class. Based on it, the JavaInterface is also derived.</p><p>2. Build, generate, and package the files required by the service. In this sense, each UML class is also mapped to a WSDL Specifications :</p><p>WSDL types , WSDL operations , WSDL bindings and WSDL services .</p><p>3. Deploy the service. Four deployment files are required: web.xml, jaxrpc-ri.xml, config-wsdl and config-interface. In this sense, the JavaClass is mapped to a JWSDPweb.xml , JWSDPjaxrpcri.xml , JWSDPconfig-wsdl and JWSDPconfiginterface files. For the CORBA services, we will add: the client stubs for each interface (interfaceStub.java), the CORBA helper class (interfaceHelper.java) and the CORBA holder class (interfaceHolder.java) that describe everything it is needed to use the client stub from the Java programming language. For the rest of the services, no more classes are generated. On the contrary, the code is embedded in the JavaClass implementation.</p><p>The PSM obtained, shown in Figure <ref type="figure">8</ref>, includes all the details required to build the final implementation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Conclusions and Future Works</head><p>In this paper we have discussed some of the (many) problems that may happen when integrating Web-based applications with external systems. In particular, we have concentrated on the interaction issues due to potential incompatibilities between clients and servers of different implementation platforms and middlewares. Our main contribution is to make such interaction models and mechanisms explicit, so incompatibilities can be detected, and bridges or adapters can be easily built. Besides, we have done it according to the MDA principles, encapsulating those interaction concepts and mechanisms in a platform-independent manner, and then providing transformation rules to the different implementations available of these concepts in most commonly used platforms and middelwares. Now that the interaction issues are solved at this level, we plan to move forward, trying to address two other major issues. First, the (semi-)automatic derivation of adaptors in case incompatibilities are detected at this level. And second, move up one level of abstraction, and study how to model systems so potential mismatches that may happen at the behavioral semantic or contract (e.g., QoS) level can be detected.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 2 .</head><label>2</label><figDesc>Figure 2. The PIM to PSM iterative process</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. The TAS PIM</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 4 .</head><label>4</label><figDesc>Figure 4. The marked TAS PIM</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 5 .</head><label>5</label><figDesc>Figure 5. The PSM after applying the MDA transformation</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head></head><label></label><figDesc>Figure 6. Marked PIM</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 7 .</head><label>7</label><figDesc>Figure 7. The Annotated TAS PIM</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 8 . PSM 4 .</head><label>84</label><figDesc>Figure 8. PSM</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Rela- tionships UML Base Element Stereotype</head><label></label><figDesc></figDesc><table><row><cell>Port</cell><cell>ServerPort</cell></row><row><cell>Port</cell><cell>ClientPort</cell></row><row><cell>Port</cell><cell>StubClient</cell></row><row><cell>Port</cell><cell>ProxyClient</cell></row><row><cell>Port</cell><cell>DynamicClient</cell></row><row><cell>Interface</cell><cell>InterfaceSignature</cell></row><row><cell>Interface</cell><cell>ProvidedInterface</cell></row><row><cell>Interface</cell><cell>RequiredInterface</cell></row><row><cell>Assembly Adaptor</cell><cell>Interaction</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 1 . Summary of the stereotypes used</head><label>1</label><figDesc></figDesc><table /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">On the notion of abstract platform in mda development</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Almeida</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Dijkman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Van Sinderen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">F</forename><surname>Pires</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The 8th International IEEE Enterprise Distributed Object Computing Conference</title>
				<meeting><address><addrLine>Monterey, California, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2004-09">Sept. 2004</date>
			<biblScope unit="page" from="253" to="263" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Platform-independent modeling in mda: Supporting abstract platforms</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">P</forename><surname>Almeida</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Dijkman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Van Sinderen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">F</forename><surname>Pires</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of Model Driven Architecture: Foundations and Applications</title>
				<meeting>Model Driven Architecture: Foundations and Applications<address><addrLine>MDAFA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2004-06">2004. June 2004</date>
			<biblScope unit="page" from="217" to="231" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Applying MDA approach to B2B applications: A road map</title>
		<author>
			<persName><forename type="first">J</forename><surname>Bezivin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Hammoudi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Lopes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Jouault</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Workshop on Model Driven Development (WMDD 2004) at ECOOP 2004</title>
				<meeting><address><addrLine>Oslo, Norway</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="volume">3344</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Overview of the enterprise javabeans component model</title>
		<author>
			<persName><forename type="first">D</forename><surname>Blevins</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Component-Based Software Engineering: Putting the Pieces Together</title>
				<imprint>
			<publisher>Addison-Wesley</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="589" to="606" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Model driven architecture: Principles and practice</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">W</forename><surname>Brown</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software System Model</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="314" to="327" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Theoretical foundations for compensations in flow composition languages</title>
		<author>
			<persName><forename type="first">R</forename><surname>Bruni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Melgratti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Montanari</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGPLAN Not</title>
		<imprint>
			<biblScope unit="volume">40</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="209" to="220" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">UML components: a simple process for specifying component-based software</title>
		<author>
			<persName><forename type="first">J</forename><surname>Cheesman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Daniels</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2000">2000</date>
			<publisher>Addison-Wesley Longman Publishing</publisher>
			<pubPlace>Boston, MA, USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Advanced CORBA Programming with C++</title>
		<author>
			<persName><forename type="first">M</forename><surname>Henning</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Vinoski</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1999">1999</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Remote Method Invocation</title>
		<author>
			<persName><surname>Javarmi</surname></persName>
		</author>
		<ptr target="http://java.sun.com/j2se/1.4.2/docs/guide/rmi/spec/rmiTOC.html" />
	</analytic>
	<monogr>
		<title level="m">Sun Microsystems</title>
				<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title/>
		<author>
			<persName><forename type="first">Juan</forename><surname>Bla</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2005">2005</date>
			<biblScope unit="volume">3</biblScope>
		</imprint>
	</monogr>
	<note>p edition</note>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">MDA Explained. The Model Driven Architecture: Practice and Promise</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kleppe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Warmer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Bast</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2003-04">Apr. 2003</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<title level="m" type="main">NET Web Page</title>
		<ptr target="http://www.microsoft.com/net/" />
		<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
		<respStmt>
			<orgName>Microsoft Corporation</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Semantic distance between specifications</title>
		<author>
			<persName><forename type="first">R</forename><surname>Mili</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Desharnais</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Frappier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mili</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Theoretical Comput. Sci</title>
		<imprint>
			<biblScope unit="volume">247</biblScope>
			<biblScope unit="page" from="257" to="276" />
			<date type="published" when="2000-09">Sept. 2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">What to we do with re-use in MDA</title>
		<author>
			<persName><forename type="first">N</forename><surname>Moreno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Vallecillo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">? Second European Workshop on Model Driven Architecture (EWMDA-2)</title>
				<meeting><address><addrLine>Canterbury, Kent</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2004-09">Sept. 2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">A model-based approach for integrating third party systems with web applications</title>
		<author>
			<persName><forename type="first">N</forename><surname>Moreno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Vallecillo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Fifth International Conference on Web Engineering (ICWE2005)</title>
				<meeting><address><addrLine>Sydney, Australia</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2005-07">July 2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<title level="m" type="main">CORBA 3.0 -IDL Syntax and Semantics Chapter</title>
		<ptr target="http://www.omg.org/docs/formal/02-06-39.pdf" />
		<imprint>
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
	<note>Object Management Group</note>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<ptr target="http://www.omg.org/cgi-bin/doc?ptc/03-08-02.pdf" />
		<title level="m">UML 2.0 Superstructure Specification</title>
				<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
	<note>Object Management Group</note>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">Model Driven Architecture. A Technical Perspective</title>
		<author>
			<persName><surname>Omg</surname></persName>
		</author>
		<idno>OMG docu- ment ab/2001-01-01</idno>
		<imprint>
			<date type="published" when="2001-01">Jan. 2001</date>
			<publisher>Object Management Group</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">Just Enough Enterprise Java Beans Concepts</title>
		<author>
			<persName><surname>Openenterprisex</surname></persName>
		</author>
		<ptr target="http://www.OpenEnterpriseX.org" />
		<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<title level="m" type="main">CORBA 3. Fundamentals and Programming</title>
		<author>
			<persName><forename type="first">J</forename><surname>Siegel</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2000">2000</date>
			<publisher>John Wiley &amp; Sons. OMG Press</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m" type="main">The J2EE 1.4 Tutorial</title>
		<ptr target="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html" />
		<imprint>
			<date type="published" when="2004-06">June 2004</date>
		</imprint>
		<respStmt>
			<orgName>Sun Microsystems</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<title level="m" type="main">Transaction support using unit of work modeling in the context of MDA</title>
		<author>
			<persName><forename type="first">W</forename><surname>Witthawaskul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Johnson</surname></persName>
		</author>
		<ptr target="http://weerasak.com/Unitf" />
		<imprint>
			<date type="published" when="2005-03">Mar. 2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<ptr target="http://www.w3.org/TR/wsdl" />
		<title level="m">Web Services Description Language (WSDL) 1</title>
				<imprint>
			<date type="published" when="2001">2001</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
