Building trustworthy (dependable) systems is a major challenge faced by software developers. To this end, various fault tolerance mechanisms have been developed by researchers and used in industry. Unfortunately, more often than not these solutions ignore earlier development phases most importantly, the architecture design to exclusively focus on the implementation instead. This creates a dange...