Software Rejuvination



Definitions

Software Rejuvination
an architectural mechanism in which an application or software component gracefully terminates execution and immediately restarts it in a known, clean, internal state.

Discussion

Applications and software components often suffer from random and transient failures due to latent defects that are just too costly to find and fix (a.k.a., Heisenbugs named after Werner Heisenberg’s uncertainty principle). The associated failures often show up only after a significant amount of execution time, and they are typically due to such defects as memory leakage, unreleased file lockage, and data corruption. They often prevent an application or component from achieving its operational availability requirements and reliability requirements. A way is needed to allow the defects to remain in the application and software components, while simultaneously preventing the associated failures from occurring.

Objectives

The typical objectives of software rejuvination are to:

Description

Software rejuvination can typically be described as follows:

Stakeholders

The typical stakeholders of the software rejuvination mechanism are:

Phases

The software rejuvination mechanism is typically developed during the following phases:

Preconditions

The software rejuvination mechanism can typically be started if the following preconditions hold:

Inputs

The typical inputs to the software rejuvination mechanism include:

Limitations

Software rejuvination is typically subject to the following limitations:

Guidelines