一、基本信息

标题:Ways of Applying Artificial Intelligence in Software Engineering
时间:2018
出版源: IEEE
论文领域:软件工程,人工智能
引用格式:R. Feldt, F. G. de Oliveira Neto and R. Torkar, “Ways of Applying Artificial Intelligence in Software Engineering,” 2018 IEEE/ACM 6th International Workshop on Realizing Artificial Intelligence Synergies in Software Engineering (RAISE), Gothenburg, 2018, pp. 35-41.
链接:https://ieeexplore.ieee.org/abstract/document/8452880

二、研究背景

人工智能快速发展,它提供的解决方案通常看起来与软件组织和工程师所习惯的非常不同。这为软件组织带来了一组新的、独特的风险和机会,他们需要理解和分析这些风险,以选择合适的策略。软件工程师接近这些技术,并且很可能是在他们自己的问题、方法和工具上应用这些技术的早期采用者。
软件工程的进步使得AI技术可以被打包并通过RESTful APIs作为自动化云解决方案轻松地重用,该解决方案可以在选择和自动调整其中一项/多项技术之前使用多种技术。
所以作者提出分类

  • 早期工智能的使用分为五大类:软件工程方法、编程技术、目标机器的体系结构、应用领域和目标软件的历史
  • Davis等人提出了一种自适应分布式实时嵌入式(DRE)系统的人工智能方法分类。分类法根据自适应DRE系统所需的五个属性对AI方法进行分类:i)支持分布式环境,ii)支持实时需求,iii)支持嵌入式环境,iv)可靠地处理新数据,v)在系统运行时将新数据合并到方法中。
  • Charte等人提出了另一个在SE中为特定AI应用定制分类的例子。它们的分类为自动编码器(AE)提供了一个广阔的视角,自动编码器是人工神经网络(ann),为输入数据生成编码,并经过训练,使其解码尽可能接近输入。

与现有的分类法,我们提出本文AI-SEAL(人工智能软件工程应用水平),目标是更普遍的,并允许分类超越一个特定的主题,例如一个特定类型的软件系统,例如,DRE系统,或一个特定类型的人工智能技术,例如,AEs。

我们的总体目标是支持公司和组织为此类应用开发策略。
我们的重点是帮助组织更好地了解风险。

三、创新点

在SE的所有不同的知识领域(例如,需求和测试[43])提出了几个分类,但是很少有系统地创建[44]。Usman等人对分类法在软件工程中的使用进行了系统的映射,并提出了一种开发此类分类法[44]的方法,我们在定义AI-SEAL时使用了这种方法。

在规划过程中,我们决定包含软件工程中的所有知识领域(例如,测试,过程),而不是寻求如何应用AI的更基本的方面。

我们为我们的分类提取了三个关键方面:应用点、自动化水平和AI技术。

选用实用程序演示是SE中最常用的验证分类法的方法,它允许我们展示分类法[44]的分类范围。

应用点 Point of Application (PA)

包括在(时间)和(位置)人工智能技术是应用(图1)。有三个主要层次方面,前两个相关部署的软件系统(过程和产品),而第三个是代表运行时应用程序部署后的人工智能软件系统。
在这里插入图片描述

  • 流程级别表明AI应用于软件开发流程,并不一定会直接影响将要部署的源代码。一个例子是测试分析,它可以用来优化测试,但它本身不会直接改变代码
  • 产品级别表明AI直接影响源代码。一个具体的例子是自动程序修复,它直接操作代码来自动修复缺陷[35]。
  • 运行时级别表示在运行时期间影响已部署软件系统的AI应用程序。典型的例子是自主和自适应软件系统,其中一些人工智能技术正在学习和改变系统本身的反馈回路[42]

跨PA:
自动驾驶,在人工智能开发部分代码,然后编译成二进制代码进入最终产品的情况下,它将被分类到产品应用程序级别。然而,如果人工神经网络使用来自执行软件的运行时信息来动态更新自己,那么它的PA分类将被设置为AI的运行时应用。
作者观点:运行时>产品>过程

AI类型 Type of AI (TAI)

因为AI是什么甚至还没有达成共识,所以很难为这方面提出一套特定且稳定的关卡。

作为一个出发点,我们认为Domingos[15]提出的“AI的五个部落”分类可能是有用的:

  • Symbolist, e.g., inverse deduction.逆演绎的学习算法
  • Connectionist, e.g., backpropagation.反向传播神经网络
  • Evolutionaries, e.g., genetic programming.遗传算法
  • Bayesians, e.g., probabilistic inference. 贝叶斯概率推理
  • Analogizers, e.g., kernel machines. 核方法,支持向量机

自动化水平 Level of Automation (LA)

因此,自动化程度越高,自动化程度越高
人工智能技术在与应用它的元素(如产品、过程或运行时)相关的决策中发挥作用。我们认为,风险越高。
在这里插入图片描述

在这里插入图片描述

四、实验结果(评估)

#1论文 Automated prediction of defect severity based on codifying design knowledge using ontologies.

由Iliev等人撰写的论文#1。[26]使用基于涉众提供的设计信息的本体来自动预测缺陷的严重程度。AI会向利益相关者建议严重性级别,而利益相关者则可以接受或忽略这些建议。
PA: Process
LA:2
TAI: Analogizer

#6论文 Learning gestures for interacting with low-fidelity prototypes.

论文#6由de Souza Alcantara等人撰写。[12]提出了一种方法,工具可以学习一组手势,UI设计师可以使用这些手势来为多点触控设备设计基于手势的应用程序。

PA: Produce 开发应用程序中包含的工具的最终手势识别输出
LA:4
TAI: Symbolist 因为它分析了特定手势的不同步骤之间的关系和原因,这些步骤是基于一组原语推断出来的。

#15 论文 High assurance human-centric decision systems.

由Heitmeyer et al.[25]撰写的第15篇论文的标题为“以人为中心的高保证决策系统”,并提出了一种方法,其中人工智能技术被用来检测和帮助决策系统的操作员,考虑到决策系统中任务的复杂性,这些操作员开始感到超负荷。

PA: Produce 应用程序处于产品级别,因为重载模型在运行时不会更新,尽管作者计划在未来的工作中解决这个问题。
LA:7
TAI: Analogizers 根据操作员过去与系统的互动来预测人类超载。

#31 论文 A selflearning approach for validation of communication in embedded systems.

由Langer和Oswald[32]撰写的第31篇论文的题目是“在嵌入式系统中验证通信的自我学习方法”。作者使用神经网络(Connectionist)来学习在分布式嵌入式系统中哪些通信跟踪是有效的。该方法用于自动化集成测试,

PA: process
LA:7
TAI: Connectionist 神经网络

五、结论与思考

作者结论

在本文中,我们提出AI- seal分类,以帮助研究人员和从业者对软件工程中的不同AI应用进行分类。分类法允许其用户分类,有三个方面的应用程序(过程,产品和运行时),人工智能技术的类型(,起初,在提出的五个部落多[15])和自动化水平的应用技术(灵感来自Sheridan-Verplanck s 10水平的自动化[41])。
AI- seal除了帮助用户了解SE中的AI应用领域之外,还为软件工程师考虑应用AI的风险提供了一个基础。例如,这一优势允许从业者在流程和产品中引入人工智能技术时进行权衡。

在这里插入图片描述

此外,分类法不受特定领域应用程序的限制,因此涵盖了软件工程的所有知识领域。我们通过对过去RAISE研讨会中的15篇论文进行分类来演示分类法的使用。大多数论文关注于在开发过程中支持涉众,但没有直接影响源代码或系统的运行时行为。
人工智能方法的使用也参差不齐;特别是缺乏贝叶斯定理和令人惊讶的神经网络。我们的实用程序演示的主要限制之一是论文的有限样本(包括大小和地点)。
当然,为了更好地理解AI-SEAL的效率,我们需要在更好的论文样本上使用它,这是目前正在进行的工作。未来的工作还包括研究工具对分类的支持,以及为风险分析提供更详细和明确的支持。

总结

这是一篇涉及软件工程和人工智能的论文,主要工作是划分在软件工程使用不同的人工智能技术将带来哪些风险,作者从应用点、AI类型、风险等级划分。本文并未涉及具体细化AI的分类问题,比较当今何为人工智能作者认为还没明确确定。也未涉及相关AI领域算法。作为一篇软件工程领域论文读读即可。

思考

参考

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐