Checkpointing is a commonly used approach to provide system fault-tolerance. However, using a constant checkpointing frequency may compromise the system's overall performance when there are multiple types of QoS requirements involved. Hence, it is important that the checkpointing frequency is customizable and runtime adaptable. However, for open distributed and embedded applications, often there is a large number of entities involved in an application and these entities may join or leave the system frequently. The scale and the dynamicity make it difficult to apply the adaptive checkpointing strategy unless we have a model that encapsulates the issues within a well-defined structure and further shields complexity from application developers. In this paper, we introduce a behavior-based adaptive checkpointing approach for open systems and present an architecture support to optimize system's overall performance through using adaptive checkpointing frequencies.