A traditional approach to realize self-adaptation in software engineering (SE) is by means of feedback loops. The goals of the system can be specified as formal properties that are verified against models of the system. On the other hand, control theory (CT) provides a well-established foundation for designing feedback loop systems and providing guarantees for essential properties, such as stability, settling time, and steady state error. Currently, it is an open question whether and how traditional SE approaches to self-adaptation consider properties from CT. Answering this question is challenging given the principle differences in representing properties in both fields. In this paper, we take a first step to answer this question. We follow a bottom up approach where we specify a control design (in Simulink) for a case inspired by Scuderia Ferrari (F1) and provide evidence for stability and safety. The design is then transferred into code (in C) that is further optimized. Next, we define properties that enable verifying whether the control properties still hold at code level. Then, we consolidate the solution by mapping the properties in both worlds using specification patterns as common language and we verify the correctness of this mapping. The mapping offers a reusable artifact to solve similar problems. Finally, we outline opportunities for future work, particularly to refine and extend the mapping and investigate how it can improve the engineering of self-adaptive systems for both SE and CT engineers.
翻译:在软件工程中实现自我适应的传统方法(SE)是通过反馈回路实现软件工程(SE)的自我适应的传统方法(SE)的。这个系统的目标可以作为正式的属性,根据系统的模型加以核查。另一方面,控制理论(CT)为设计反馈环环系统提供了牢固的基础,并为基本属性提供了保障,如稳定性、沉淀时间和稳态错误。目前,这是一个未决问题,是否以及如何通过传统的SE自适应方法来考虑CT的属性。回答这个问题具有挑战性,因为两个领域在代表属性方面存在着原则差异。在本文件中,我们迈出第一步来回答这个问题。我们遵循了一种自下而上的方法,即我们为Scuderia Ferra(F1)所启发的案件指定了控制设计(在Simmlink),为稳定和安全提供了证据。然后,设计被转移到代码(C),这是进一步优化的。我们定义了能够核实控制属性是否仍然维持在代码级的属性的属性。随后,我们通过使用共同语言对两个世界的属性进行测绘来巩固解决方案。我们验证了这一方法的正确性,我们核查了这一绘图的准确性,我们最后可以改进工作,从而改进了自己的工程规划工作,从而改进了我们又如何改进了工作。最后改进了工作,改进了工程工作,改进了工作,改进了。我们改进了工作,改进了工作,改进了工作,改进了方向,改进了工作,改进了工作,改进了工作,改进了。最后又改进了。