The case study describes the development of a software framework for
distributed system interconnection.
Requirements analysis . The framework has been designed taking into
account the requirements of systems and applications presented in previous
case studies and generalizing from their common features and function-
alities. The framework requirements were compared with the specifications
of available commercial technologies, such as Sun J2EE, CORBA and
Framework scope . The framework is a middleware infrastructure that
simplifies the development of open and heterogeneous distributed systems.
In particular it supports multi-task execution, multi-mode synchronization,
and multi-protocol communication.
Framework customization . The framework consists in well-defined soft-
ware architecture and a library of reusable software components. It provides
mechanisms, abstract classes and customizable building blocks to support
the interconnection of distributed resources.
Abstraction by generalization
Frameworks are software templates that support and
simplify the development of a variety of different but
similar software artifacts for the same application domain.
Building a framework is cost-effective only if it reduces the
effort of developing an entire family of new applications.
Building a reusable framework is usually difficult: it
requires a deep understanding of the application domain
for which it has been conceived in terms of the entities
and relationships that can be captured and reused. The
more concrete the framework's components are, the more
specific their interactions become, and the less likely they
will meet the requirements of future applications.
Forces or tradeoffs
The framework approach builds on the concepts of code
reuse and design reuse. Code reuse means reusing an
existing class library developed in the past for other
applications. The more tightly a class library is developed
for the functional requirements of a specific application,
the less it is reusable in future applications. Design reuse
means taking the architecture of an existing application as
the starting point for the design of new applications.
Architectural design is usually more reusable than class
libraries, but choosing the right architectural model is
highly difficult and is one of the key success factors of a