Description:It has been argued that fault tolerance management during the entire life-cycle improves the overall system robustness and that different classes of threats need to be identified for and dealt with at each distinct phase of software development, depending on the abstraction level of the software system being modelled. This book builds on this trend and investigates how fault tolerance mechanisms can be applied when engineering a software system. In particular, it identifies the new problems arising in this area, introduces the new models to be applied at different abstraction levels, defines methodologies for model-driven engineering of such systems and outlines the new technologies and validation and verification environments supporting this.