Adaptive embedded software evaluates its own execution and reconfigures itself as needed to improve system survivability. Its concept addresses needs in aerospace, automobile, and many other fields where embedded software in a safety-critical application is expected to operate even in event of failure or unexpected environmental change. Adaptive embedded software presents some major challenges to current software engineering research and practices: it adds one more dimension of complexity to often already complicated safety-critical embedded system design. The additional requirement for self-adaptation makes it even harder to validate and verify adaptive embedded software. Finally, lack of a formal process also contributes to difficulty in developing dependable adaptive embedded software.
In this talk, I will discuss our research on model-based synthesis of adaptive embedded software. We proposed a temporal-logic-based formal language to capture requirements for self-adaptation. We designed algorithms that could synthesize model-based monitoring and reconfiguration mechanism from requirements. We also developed a formal technique that could augment an existing model-based design with self-adaptation capability based on formal requirements. Our approach can be integrated into an existing model-based development process. It can automatically generate adaptive embedded code from a system design and a formal specification for self-adaptation.