(Classifier), Chapter 9 (Manufacturing work cell), Chapter 10 (Mobile
robot exploration), Chapter 14 (Supermarket operation support system).
The case study has exemplified the development of a framework that tracks
the evolution of a software application, supports the undo and redo of its
state transitions, and allows its automatic recovery after a crash.
Requirements analysis . The framework requirements have mainly been
derived from a careful analysis of the domain. Two basic approaches have
been identified: physical recording and logical recording .
Framework scope . The RECAP framework is a typical example of a service
framework. It offers functionalities that are not tailored to any specific appli-
cation domain, but instead support the development of any application that
requires recovering functionalities.
Framework customization . The framework is offered in the form of black-
box component that does not need to be customized. Any application
developed with the RECAP framework simply delegates to it the recording of
execution states and transitions.
Service components are software modules that simplify
the access to and the exploitation of global resources,
such as a file system, a database, the network.
Complex software applications are usually structured as
hierarchies of components and subcomponents. Service
components offer functionalities that cut across this
inclusion hierarchy. The problem is that of implementing
interactions between a service component and a large
number of an application's components.
Forces or tradeoffs
Information hiding simplifies software development and
enhances maintenance and reuse. Objects interact only
through their interfaces, which make functionalities
visible and hide data structures and implementation.
When objects at different levels of the inclusion hierarchy
need to access the same resource or functionality, the
reference to the component offering it must be passed to
all of the objects across the inclusion reference.
Implement service components as classes with static
methods and static member variables. Such methods and
variables belong to the class itself, rather than to specific
objects. Static methods may be simply accessed through
the class name, thus preventing the need to pass a
reference to a class instance throughout the application's