  The structures for the expression of fault-tolerance provisions into the
application software are the central topic of this dissertation. Structuring
techniques provide means to control complexity, the latter being a relevant
factor for the introduction of design faults. This fact and the ever increasing
complexity of today's distributed software justify the need for simple,
coherent, and effective structures for the expression of fault-tolerance in the
application software. A first contribution of this dissertation is the
definition of a base of structural attributes with which application-level
fault-tolerance structures can be qualitatively assessed and compared with each
other and with respect to the above mentioned need. This result is then used to
provide an elaborated survey of the state-of-the-art of software
fault-tolerance structures. The key contribution of this work is a novel
structuring technique for the expression of the fault-tolerance design concerns
in the application layer of those distributed software systems that are
characterized by soft real-time requirements and with a number of processing
nodes known at compile-time. The main thesis of this dissertation is that this
new structuring technique is capable of exhibiting satisfactory values of the
structural attributes in the domain of soft real-time, distributed and parallel
applications. Following this novel approach, beside the conventional
programming language addressing the functional design concerns, a
special-purpose linguistic structure (the so-called "recovery language") is
available to address error recovery and reconfiguration. This recovery language
comes into play as soon as an error is detected by an underlying error
detection layer, or when some erroneous condition is signaled by the
application processes.
