人工智能在软件工程领域优缺点的综述-赵继涛博士
2024-10-24
人工智能和软件工程被认为是解决各种问题的重要领域。然而,每个领域在解决某些问题方面都存在弱点。因此,本文是对使用人工智能(AI)改进软件工程(SE)的广泛回顾,反之亦然。同时,从人工智能在软件工程中的应用角度,对人工智能技术的发展进行了综述。本综述的目的是强调先前的研究如何从结合这两个领域的优势中获益。AI和SE的研究人员和实践者来自优化、工程、数据挖掘、聚类等领域的广泛受众,他们将从本研究和未来潜在的研究领域中受益。
1.介绍
人工智能(AI)是数字计算机以比人类更聪明的方式执行任务的能力根据性能强度有两种类型。(i)弱AI,处理可能场景的子组。所有这些子组都用于构建强大的AI。例如,在国际象棋中,所有规则都是手动输入的,机器根据情况开始使用这些规则。同时,(ii)强人工智能用于不需要人为干预的复杂系统,机器可以独立思考和执行任务。同时,软件工程(SE)由两个表达式组成。软件是指包含提供所需功能的指令的程序,工程是指设计和施工的操作,以确定有效解决方案的成本。因此,SE的定义是一种用于软件系统的设计、开发、实现和维护的系统方法)。本文旨在提供与人工智能系统一起工作的不同寻常的指导方针,可用于确定与SE方法结合的问题。另一个目标是获得适合于产生适当软件改进过程的特定AI方法。
2.人工智能
1956年的达特茅斯会议是人工智能的发源地。人工智能的定义多种多样,但都包含着相同的目的。温斯顿和普伦德加斯特(1984)提到,人工智能是“对使感知、推理和行动成为可能的计算的研究”。根据Kurzweil等人(1990)的说法,人工智能是“创造机器的艺术,这些机器可以执行人类需要智能才能完成的功能”。人工智能与大多数心理学不同,因为它强调计算,它不同Abualigah等人(2019)认为,这是因为它强调感知、推理和行动。
人工智能应用程序用于模拟人类智能,为解决问题和决策提供帮助。人工智能已经在经济、工程、法律、经济、医学和制造业等各个领域得到了应用,并且仍然在使用(Shehab, Khader, and Al-Betar 2017)。人工智能有很多优势,比如快速思考做出决策,在某些工作中取代人类(比如危险的任务),简化生活(比如使用智能手机和GPS)。然而,人工智能也有缺陷,比如价格昂贵,可能会造成不利后果(比如机器人军队的腐败或故障,以及大规模杀伤性的可能性),并在某些部门造成失业。
3.软件工程
SE是工程学在软件设计、开发和维护中的应用。SE最初被引入是为了解决低质量软件项目的问题。当软件超出时间、预算和降低质量水平时,问题就出现了。因此,SE确保应用程序的构建一致、正确、准时、符合预算并符合需求。SE的需求还出现了,以满足用户需求和环境的巨大变化,应用程序应该在这些变化上运行良好。
3.1. 软件开发过程
本节展示了软件工程开发过程,然后总结了软件开发生命周期中的常用模型。
软件开发进程(也称为软件方法)是导致软件生产的一组相关活动(Eisty, Thiruvathukal和Carver 2019)。这些活动可能包括从零开始开发软件或修改现有系统。任何软件进程都必须包括以下四个活动:
(1)软件规范(需求工程):定义软件的主要功能及其约束。
(2)软件设计与实现:软件设计与编程。
(3)软件验证和确认:软件必须符合规范,满足客户需求。
(4)软件演进(软件维护):对软件进行修改,以满足客户需求和市场需求的变化。
软件生命周期模型是对软件如何开发或应该如何开发的描述性或规定性描述。描述性模型描述了一个特定软件系统是如何开发的历史。描述性模型可以用作理解和改进软件开发过程的基础,也可以用于构建基于经验的规定性模型。
3.2. 软件工程的目标
以下几点说明了软件工程的主要目标。
(1)可靠性:软件质量的这一属性是程序可以被信任的程度,在任意时间段内执行所需功能。
(2)可重用性:如果产品的不同模块可以很容易地重用以开发新产品,则软件产品具有良好的可重用性。
(3)可维护性:软件应该能够发展以满足不断变化的需求。
(4)可测试性:软件建立测试标准,并根据这些标准评估软件。
(5)正确性:如果正确实现了SRS文档中规定的不同需求,则软件产品是正确的)。
(6)适应性:软件允许通过对软件进行更改来满足不同的系统约束和用户需求。
(7)可移植性:软件可以从一个计算机系统或环境转移到另一个计算机系统或环境。
3.3. 挑战
软件开发系统利用定义良好的系统方法进行软件开发。这种方法被认为是生产高质量软件最有效的方法。然而,尽管在软件开发中采用了这种系统的方法,但是SE仍然面临着一些严峻的挑战。下面列出了其中一些挑战。
(1)用于开发中小型项目的方法不适用于开发大型或复杂系统。
(2)软件开发中的变化是不可避免的。目前,变化发生得很快,适应这些变化以完成软件项目是软件工程师面临的主要挑战。
(3)计算机和软件技术的进步使得软件系统的性质发生了变化。不能适应变化的软件系统是没有多大用处的。因此,SE的一个挑战是在可接受的时间表内生产适应不断变化的需求的高质量软件。为了应对这一挑战,面向对象的方法是首选;然而,在可接受的成本范围内适应软件的变化及其维护仍然是一个挑战。非正式的沟通在软件项目中占据了相当大的一部分时间。这样的时间浪费会延迟项目在规定时间内的完成。
(5)用户通常对软件系统的范围和需求只有一个模糊的概念。这通常会导致软件的开发不符合用户的要求。
(6)文件变更通常不遵循任何标准程序。因此,验证这些变化往往变得困难。
(7)开发高质量、可靠的软件需要对软件进行彻底的测试。虽然软件的彻底测试消耗了大部分资源,但低估它会降低软件质量。
除了前面提到的关键挑战之外,系统分析人员、设计人员和程序员的职责通常没有很好地定义。同样,如果用户需求没有精确定义,那么软件开发人员可能会误解其含义。所有这些挑战都需要解决,以确保软件在指定的时间和估计的成本内开发出来,并满足用户指定的需求。
4. 人工智能和软件工程
本节说明了AI和SE之间的集成发展、这种集成的优点以及相关的工作。
4.1 AI与SE的融合成长
一些关于AI和SE的研究已经被广泛发表。使用关键词AI和SE收集资料。首先,发表的文章收集自知名出版商,如Springer, Elsevier, and IEEE,,以及通过谷歌学术搜索到的其他期刊。其次,根据发布日期对搜索结果进行分类,以显示AI与SE之间集成的增长。
4.2. 优点
根据人工智能之父马文·明斯基的说法,“使用SE对于构建强大的人工智能系统非常重要”。创建一个庞大的AI系统是非常昂贵的。因此,应该仔细地进行问题分析、建模、实现、测试和评估。利用人工智能对SE领域的性能有积极的影响,例如快速创建最小可行产品、项目管理、自动调试、智能助手以及自动代码生成和测试。SE目前是全球的热点,自动化是下一个趋势。软件和工程师需要将技术中的一切自动化。AI域在SE域中的作用在中得到了验证。与人工手动生成所有软件代码以获得服务、用户需求和测试自动化不同,工具可以帮助生成代码并为代码执行测试和分析,并且可以在获取个人信息时不断开发。本文回顾并总结了自动化SE的不同优点和缺点。同时也说明了各因素在方案中的作用。这两门科学,即AI和SE,是计算机科学领域的两个主要领域。AI指的是创造智能机器,而SE是一项信息密集型的工作,需要对应用领域和软件的用途有广泛的了解。Shankari和Thirumalaiselvi(从程序在SE中的重要性的态度出发,对人工智能中产生的程序进行了调查。
4.3. 相关的工作
人工智能软件是计算机科学领域的一个事实,但仅适用于特定类型的计算机科学问题。通常,AI的困难与传统SE不同。Partridge 1992中提出的变化包括针对人工智能中的困难和问题的各种程序改进方法,即以功能性软件(如可靠性、可维护性、鲁棒性和可用性)为目的的程序不能快速生成。此外,在实现人工智能的全部前景之前,必须解决机器学习技术的困难和问题(在某种程度上),而不是期望由此产生的自适应软件增加人工智能的困难。在工作软件中实现人工智能的全面前景,需要在基本的困难和问题中有一些重要的发现,以及合适的软件改进方法。
游戏SE是一类重要的应用程序,主要用于娱乐、娱乐和严肃目的,用于教育、科学、商业、游戏和医疗保健等各个地区和领域。游戏改进过程不同于流行的软件改进方法,因为它包括跨学科的领域行动。因此,SE方法在游戏改进过程中仍然是必要的,因为它们可以鼓励开发者获得可维护性、灵活性、可用性、低工作量和成本、可读性和可靠的设计。这一比较的目的是评估已发表的关于游戏改进SE方法的知名研究,并确定仍需要研究人员进一步研究的部分。在调查中,使用知名数字出版商在(Aleem, Capretz, and Ahmed)中进行了系统的文献分析方法。大量研究报告称,游戏改进SE方法生命周期的创造阶段受到预制作阶段的支持。相比之下,后期制作方面的研究却少于前期制作和创作方面。本研究结果表明,游戏改进SE方法,特别是后期制作方面,仍需进一步研究。
SE中的许多困难和问题包括从候选解的集合中确定最优解。这样的技术通常需要涉众,例如开发人员、程序员和测试人员,来定义要优化的各种特性或目的之间的决策(也就是说,从可用的解决方案中搜索并找到最优解决方案)。然而,在许多情况下,利益相关者应该以简单和定性的方式显示这些决策。在进行的调查报告称,定性优化方法有助于处理SE内部的困境。此外,开发了一种新的优化技术,依靠利益相关者的定性决策,从而利用决策理论人工智能技术中的现代方法。本研究证明了定性判断假说与定性判断假说的有益用途,并提出了定性判断假说与定性判断假说之间的联系。在过去的几年中,深度学习(DL)方法获得了巨大的成功和收益。他们在许多不同的应用领域,如智能机器、数据挖掘、图像处理、文本挖掘、语音处理技术和治疗诊断等方面也取得了良好的声誉。
深度神经网络是现代深度学习方法成功背后的重要驱动力。然而,黑盒测试仍然需要可解释性和进一步的知识。这一问题导致了多个开路安全和保护问题,对精确的技术和SE系统提出了巨大而必要的质量改进要求。大量研究表明,最先进的深度学习方案存在缺陷和漏洞,可能导致严重的故障和困难,特别是在用于现实世界的安全关键关注时。大规模研究已经在(Ma et al . 2018)中引入了223个相关作品的文章库,涉及DL的质量保证、安全、保障和理解。这些研究,从软件质量保证的角度,确定了安全深度学习在SE领域的困难和未来的可能性。这项工作和已完成的论文库为SE研究人员提供了解决安全人工智能应用的重要技术要求的途径。
AI和SE的发展有几个共同的特性。它们处理真实世界对象的建模,例如业务规则、专家指导或流程标准。一项简短的调查报告(Rech and Althoff 2004)提供了这些方法的概述,并解释了关于交流自然特征框架的任何现代研究课题。
(Partridge 1990)对人工智能和人工智能相结合的领域进行了全面的回顾。解释了这个扩展域的分类,并将其与解决两个域之间通信的其他主要工作进行了比较。对基于AI的激励环境、功能SE中的AI工具和流程、AI技术中的SE机制和流程三个主要子领域进行了解释和举例论证。最终,扩展的领域仍有待开发。因此,任何现代的改变环境的斗争都应该被考察。
(Ford 1987)中介绍了面向SE开发人员的AI技术教程,以及面向AI技术的SE开发的类似介绍。根据这些领域所解决的困难、所采用的技术以及所利用的机制和程序,对这些领域进行了分析和区分。几个不同的软件需求需要合并这两个域。简要审查了这一指示,并介绍了两个领域的组织所需的任何行动。作为一种利用AI和SE领域协同作用的模型,深度SE与AI领域是在前几年经过多次改进后发展起来的。该领域广泛地讨论了智能软件的智能化和智能化软件工程问题。(Xie 2018)介绍了智能SE最近和未来的研究。第一个问题是SE的智能化,如何将深度策略和智能化策略融合在一起,以提高许多不同SE工作的绩效和生产率。第二个问题是智能软件的工程,它为智能和深度软件(如人工智能软件)融合了许多不同的SE工作。
SE和AI是计算机科学的两个主要领域。近年来,这些领域的方法都是单独改进的,研究成果没有很大的交流。然而,这两个领域都有不同的特性、属性、优点和局限性。这一声明为新的研究提供了一些机会和计划。一个重要的思想是,研究人员将人工智能可能的方法、工具和方法运用到SE中,反之亦然。通过这种方式,可以收集两个领域的知识、经验、特点和资源,减少控制。在适用性方面,在AI和SE之间建立了一个连接域,从而建立了AI和SE之间的关系。AI与SE交互过程中的因素包括信息、目标、难度和使用动机。(Jain 2011)探讨了这两个领域相互作用的合作框架。该框架包含四种主要的交互类型,即软件维护设置、传统软件中的人工智能工具和技术、传统软件技术的性能以及方法论问题。本文介绍了人工智能和人工智能之间的联系,以及在整合这两个领域的过程中开发的几个系统。
5. 讨论
本节重点介绍基于上述调查结果的两个要点。AI的技术、方法或工具的SE达到57%,而AI对SE(即SDLC)的使用达到29%。与此同时,AI与SE的融合度达到14%。这些百分比是合乎逻辑的,因为人工智能包含许多子领域,如优化算法和机器学习。因此,软件工程师有很多选择来提高他们的工作性能。第二,通过AI和SE的结合,生成软件的新版本,这带来了许多可能性。人工智能包括知识获取、领域建模和数据分析技术。SE包含项目管理方法、需求工程和代码工程。AI和SE的交叉领域包括KBS、AOSE、CI、环境智能等。