Testing and code reviews are known techniques to improve the quality and robustness of software. Unfortunately, the complexity of modern software systems makes it impossible to anticipate all possible problems that can occur at runtime, which limits what issues can be found using testing and reviews. Thus, it is of interest to consider autonomous self-healing software systems, which can automatically detect, diagnose, and contain unanticipated problems at runtime. Most research in this area has adopted a model-driven approach, where actual behavior is checked against a model specifying the intended behavior, and a controller takes action when the system behaves outside of the specification. However, it is not easy to develop these specifications, nor to keep them up-to-date as the system evolves. We pose that, with the recent advances in machine learning, such models may be learned by observing the system. Moreover, we argue that artificial immune systems (AISs) are particularly well-suited for building self-healing systems, because of their anomaly detection and diagnosis capabilities. We present the state-of-the-art in self-healing systems and in AISs, surveying some of the research directions that have been considered up to now. To help advance the state-of-the-art, we develop a research agenda for building self-healing software systems using AISs, identifying required foundations, and promising research directions.
翻译:测试和代码审查是提高软件质量和稳健度的已知技术。 不幸的是,现代软件系统的复杂性使得无法预测在运行时可能出现的所有问题,从而限制通过测试和审查可以发现的问题。因此,考虑自主自愈合软件系统很有意义,这种系统可以在运行时自动检测、诊断和包含意外问题。这一领域的大多数研究都采用了模型驱动方法,根据说明预期行为的模型检查实际行为,当系统行为超出规格时,控制员采取行动。然而,制定这些规格并随着系统的发展而不断更新并非易事。我们提出,随着机器学习的最近进展,这些模型可以通过观察系统而学习。此外,我们认为,人工免疫系统(AIS)特别适合建立自愈合系统,因为它们的检测和诊断能力不正常。我们介绍了在自愈系统和AIS系统中的状态,调查一些研究方向,调查一些研究方向,我们目前考虑利用AIS系统自己开发的有前途的研究方向。