  Modularization is an important architectural principle underlying many types
of complex systems. It tends to tame the complexity of systems, to facilitate
their management, and to enhance their flexibility with respect to evolution.
In software, modularization has been practiced and studied thoroughly in local,
i.e. non-distributed systems. But very little attention has been paid so far to
modularization in distributed systems. This is, in part, because distributed
systems are inherently modularized, in the sense that the internals of each
component of such a system is inaccessible to other components, thus satisfying
the Parnas hiding principle. It is, however, the thesis of this paper that
there is much to be gained by being able to treat groups of distributed
components as modules, called here distributed modules. And that besides the
conventional hiding principle, distributed modularization should provide
additional capabilities, which rarely, if ever, figure in conventional
modularized systems. These capabilities include, but are not limited to: the
ability to impose constraints on which kind of messages can be sent from a
given distributed-module to its outside; and the ability to create AOP-like
crosscutting modules. This paper introduces a model of modular distributed
system, orMDS, which satisfies such capabilities, and which is implemented via
the LGI middleware.
