Model-Based Programming of Fault-Aware Systems