Using Model-Integrated Computing to Compose Web Services for Distributed Real-time and Embedded Applications

Commercial-of-the-shelf (COTS) middleware technologies have matured considerably over the past decade. They are now widely used to help enhance the quality and reduce the time to develop an increasingly broad range of application domains. Historically, middleware has been applied to enterprise applications, which comprise a large class of applications that perform important business functions, such as planning enterprise resource usage, automating key business functions, and managing supply chains and customer relationships. Examples of enterprise applications include airline reservation systems, bank asset management systems, and just-in-time inventory control systems. More recently, middleware has been applied to distributed real-time and embedded (DRE) applications with stringent quality of service (QoS) requirements for latency, efficiency, scalability, dependability, and security. There are many types of DRE applications, but they have one thing in common: the right answer delivered too late becomes the wrong answer. Examples of DRE applications include industrial process control systems , such as hot rolling mill control systems that process molten steel in real-time, and avionics systems , such as mission management computers that help aircrafts navigate through their route legs. DRE applications are an increasingly important domain since over 99% of all microprocessors are now used for embedded systems to control physical, chemical, or biological processes or devices in real-time. Regardless of the domain that middleware is applied in, it helps expedite the application development process by shielding programmers from many accidental and inherent complexities, such as platform and language heterogeneity, resource location, and fault tolerance. Component middleware is a rapidly maturing type of middleware that enables component services to be composed, configured, and installed to create applications rapidly and robustly. In particular, component middleware offers application developers the following reusable capabilities: Connector mechanisms between components , such as remote method invocations and message passing Horizontal infrastructure services , such as request brokers, and Vertical models of domain concepts , uch as common semantics for higher-level reusable component services ranging from transaction support to multi-level security. Examples of COTS component middleware include the CORBA Component Model (CCM) [1], Java 2 Enterprise Edition (J2EE) [2], and the Component Object Model (COM) [3], which use different APIs, different protocols, and different component models. Ironically, one of the original motivations for middleware was to reduce system heterogeneity via layers that made the software infrastructure appear vi tually homogeneous [4]. Unfortunately, the proliferation of middleware technologies over the past decade has created a new level of heterogeneity that needs to be addressed. Since the cost of abandoning existing, working middleware can be prohibitively high, there is a trend towards so-calledWeb services[5] that help integrate different types of middleware technologies. Emerging Web services technologies are positioning themselves to become the “middleware of middleware” [6] by intentionally accommodating