During the development of software it is infeasible to find all its bugs, which can reach as far back as the design phase. Therefore, it is reasonable to deal with the remaining software faults (bugs) during runtime to increase the overall reliability. This course will evaluate a selection of fault-tolerance mechanisms and analysis methods that can be applied statically or dynamically.