While developing distributed systems, our experience is that many design
problems are recurrent and have similar solutions in different applications.
Basically, distributed systems development requires decomposition into
subsystems or control modules, which share resources and communicate in
complex patterns of interaction in order to achieve a common objective.
The case studies addressed in previous chapters represent our past design
experience and domain knowledge. Our goal now is to reuse that experience
and knowledge in order to build an internet-based software framework. The
framework is intended to simplify the development of open distributed
systems by providing mechanisms, abstract classes and customizable
building blocks to support the interconnection of distributed resources. It
must enforce well-known (de facto) standards for data visualization (HTML,
WML), communication protocols (TCP
IP, HTTP, WAP), and inter-process
communication (Remote Procedure Call, Sockets). We call it the “multi-
modal interaction” (MMI) framework.
The MMI framework is a typical system infrastructure that consists of well-
defined software architecture and a library of reusable software components.
The key feature of the MMI framework is the distributed object model, which
defines how the generic component controls local resources and how it
interacts with remote resources.
Three main aspects characterize the distributed object model of the MMI
Control modules are active objects that perform multiple activities
simultaneously and manage concurrent access to shared resources.
Control modules are collaborative objects that synchronize their activities
with those of other control modules.
Control modules are distributed objects that interact with one another by
exchanging information through the internet.
In Chapters 9, 10 and 11 we developed three applications that simulate real
control systems. All of them exemplify control applications that build on one
of two basic execution models or on a mix of them, namely the event-based
and the process-based execution models.
In Chapter 9 (Manufacturing work cell) the AGV uses a finite capacity
buffer to transport semi-finished pieces and executes transport missions on
demand. Requests for transport services are received asynchronously, but
the AGV can execute only one mission at a time. When the AGV is busy,
mission requests are queued.