Given the complexity of modern software systems, it is of great importance that such systems be able to autonomously modify themselves, i.e., self-adapt, with minimal human supervision. It is critical that this adaptation both results in reliable systems and scales reasonably in required memory and runtime to non-trivial systems. In this paper, we apply computational complexity analysis to evaluate algorithmic options for the reliable creation and adaptation of emergent software systems relative to several popular types of exact and approximate efficient solvability. We show that neither problem is solvable for all inputs when no restrictions are placed on software system structure. This intractability continues to hold relative to all examined types of efficient exact and approximate solvability when software systems are restricted to run (and hence can be verified against system requirements) in polynomial time. Moreover, both of our problems when so restricted remain intractable under a variety of additional restrictions on software system structure, both individually and in many combinations. That being said, we also give sets of additional restrictions that do yield tractability for both problems, as well as circumstantial evidence that emergent software system adaptation is computationally easier than emergent software system creation.
翻译:鉴于现代软件系统的复杂性,非常重要的是,这些系统必须能够自主地修改自己,即自我适应,并尽量减少人的监督;这种适应性必须导致在必要的记忆和运行时间到非三元系统时,在必要的记忆和运行时间方面产生合理的可靠系统和规模;在本文件中,我们应用计算复杂性分析来评价相对于几种流行的精确和近似高效溶解性的结构,可靠创建和改造新兴软件系统的算法选项;我们表明,在软件系统结构不受限制的情况下,所有投入都无法单独解决任何问题;当软件系统在多时被限制运行(从而可以根据系统要求进行核查),这种可忽略性仍然与所有经审查的有效准确和近似溶解性类型相对。此外,由于对软件系统结构的个别和多种组合存在各种额外的限制,我们遇到的问题在如此限制的情况下仍然难以解决。我们说,我们也有一系列额外的限制,使这两个问题都具有可伸缩性,以及偶然的证据表明,在计算上,即软件系统的调整比突然软件系统创建系统在计算上比突然创建软件系统容易。