A system that remains dependable when facing changes is called resilient. The fast evolution of systems, including safety critical systems, requires that fault tolerance mechanisms-FTM-remain consistent with their assumptions and the non-functional requirements of the application. A change event may impose the adaptation of an FTM to the current assumptions that can be made. Consequently, system resilience should rely on adaptive fault tolerant computing. In this paper, we report on an analysis of the link between applications and their attached FTM. We show how a set of FTMs or their composition can be a solution according to a change event occurring in the system. We propose a measure to estimate the resilience of a system. According to application characteristics and fault tolerance requirements, we show the impact of assumptions on FTM selection. We finally draw some lessons learnt for the development of resilient systems.