自适应软件

       自适应软件最近研究非常火热,引起了工业界、学术界的强烈兴趣。比如IBM发布的Autonomic Computing (自治计算),包含自配置(self-configuration),自优化(self-optimization),自治愈(self-healing),自保护(self-protect),这些通常被称为自**性质(self-* property)。学术界主要提出自适应软件(self-adaptive software)。

       IBM在2001发不了自治计算,当时提出该问题的背景是,IBM预测到21世界末,将有数十亿的用户、数百万的业务,利用互联网环境下数万亿互联的设备完成。对这些人员、业务、设备的管理和维护讲需要超过2亿的员工,相当于美国整个工人的总和。因此期望软件应该像人一样是自治的。比如,当人在受到惊吓时,会表现出心跳加快、血压升高、面色发红等,这些并不需要通过大脑控制,而是各个器官自主发生的。因此期望未来的软件具有这样的特性,在运行过程中,并不需要管理员的控制,而能表现出自配置,自优化,自治愈,自保护等特点。IBM提出了基于控制论自主元素(Autonomic Element),每个自主元素都包含被控实体(Managed Element) 和一个由控制环路组成的控制实体(Autonomic Manager)。因此每个自主元素都包含一个闭环控制,从而表现出自主性。而整个系统是由自主元素组成,自主元素之间形成层次结构,因此整个系统表现出自主性。但是21世界末已经过去了,并没有出现IBM曾经预测的问题,当前IBM提出的美好愿景还依赖于很多其它技术,比如AI,这些技术目前还没有发展到这个水平,也在一定程度上限制了该技术的发展。

       虽然工业界IBM的自治计算已经随着21世界末的到来悄无声息,但是学术界的自适应正搞的如火如荼。近年来国际国内各种自适应会议多入牛毛。本文不对自适应技术做深入研究,主要分析一下软件自适应研究的来龙去脉。最初的软件开发技术,只关注软件的分析,设计,实现,很少考虑到软件的和运行和维护,以及有的学者所认为的软件老化。自从Lehman提出了软件演化的8大定律后,软件的维护就越来越引起人们的关注。软件的演化分为两种方式:离线演化和在线演化(动态演化)。离线演化是指系统可以停机,在线演化是指系统不能停机必须在运行态演化,也称为动态演化。由于目前很多软件只要上线运行后,并不能随便停机,因此动态演化的研究引起了学术界的广泛兴趣。虽然动态演化可以在某些程度上解决不能停机问题,但是它还存在以下问题,必须有人员参与,需要时间长,因为从发现问题,设计出解决方案,对运行态系统进行动态演化这需要很长时间。但是有些软件并不满足这两个前提。比如某些安全相关的软件,从出现问题到解决问题只有很短的时间,否则就会酿成很严重的后果。因此期望软件在运行过程中能构自己进行动态演化,这也就是今天学术界研究比较多的自适应演化,为了和动态演化做区分,也称为自适应。

       工业界的自治计算和学术界的自适应,只是人们对未来软件的美好期望。从理论上分析,软件的变化是必然的,因为软件是对现实世界在计算机世界的映射,现实世界是不断变化的,而且有些变化是不能预期的,因此软件也必须不断的变化,即传统的设计阶段和运行阶段的边界越来越模糊,软件永远处于Beta版,而没有最终版。 期望随着人工智能技术的发展,软件能像人一样具有自适应、自学习、自成长能力,能够根据环境的变化和用户的需求进行不断的自适应调整。一方面减轻软件维护对IT人员的负担,另一方面也增强了用户的使用体验。

你可能感兴趣的:(自适应,自治计算,动态演化)