【摘 要】人工智能(AI)在软件工程中的应用研究是近年来兴起的热门话题之一。欧洲信息技术研究计划就提出把AI技术与软件工程技术结合起来构成一个支持软件系统分析和设计的工具。有迹象表明,人工智能与软件工程的相互作用终将导致新一代软件开发方法与管理的规范形成,它能使软件易于开发、修改和维护。软件工程的智能化是一个必然趋势。
【关键词】人工智能;软件工程;应用研究
一、人工智能在软件工程中的应用现状
近年来,软件工程领域发展迅速,很多方面都需要智能,人工智能和软件工程的交叉多年来一直是个十分活跃的研究领域,利用人工智能技术创建一些系统来执行或辅助软件工程过程是很自然的应用。二十多年来,为达到这个目的,人们已做了大量实质性的研究,并取得了一些重要成果。
目前,已经展现的软件工程智能化的成果主要有:运用专家系统和人工神经网络系统设计软件工程项目;把智能化模块组装到大型软件系统,使得软件适应快速改变需求;应用推理技术提高用户界面的友好性;在图形用户接口、面向对象的程序设计、基于约束或基于规则的程序设计中应用智能技术;在大型分布式复杂软件中引入Agent技术实现软件的高抽象层次的构件和连接件,在不同层次上清晰描述和实现构件化的软件体系结构等等。
二、软件工程领域的人工智能思想
人工智能技术在软件工程领域有很多应用。作为人工智能的一个分支领域,机器学习技术在软件预测与评估方面得到成功应用。在很多工作中,机器学习方法用来预测和估计软件过程、产品和资源的内在及外部的特性,包括:软件质量、软件规模、开发成本、设计成本、维护成本、软件资源、修改费用、软件可靠性、软件缺陷、重用性、软件发布时间、生产率、执行时间以及软件模型的可测试性。
传统的搜索引擎资源获取部分使用的是盲目式的遍历算法,即对所获得的链接进行遍历,抽取相关信息保存数据库中供搜索引擎检索调用。这种方法存在不少问题。使用这种方法,会导致垃圾数据的大量积累,对于某些获取的数据,可能从来不被检索访问。除此之外,由于遍历了大量无关的链接,会导致系统负担的增加,效率的低下。
使用人工智能中的启发式搜索来获取特定的信息可以极大地减少遍历的链接数量,使被访问到的链接尽量地指向有用的信息。减少了无关链接的访问数量,就能极大地提高相对回报率,从而提高了系统的效率。另外,在页面类型的判断中,有资料显示已成功引入智能代理系统,完成网页类型的自动分类判断。该部分通过抽取网页的特征项,形成文本向量,然后与中心向量进行相似度计算后,根据相似度的结果来对网页进行自动分类。
三、软件系统的设计与开发
软件系统的设计与开发是软件工程的主要活动之一,如果软件工程工作者要设计一个软件系统,以期望实现纳税申报单处理。则需要完成以下一系列工作:a.需求分析:理解掌握税法——长达几百页的法律条文必然含有不一致之处。这项活动需要大量人力,其中包括许多税务专家和软件开发人员等等。b.设计:为系统提出总体结构。这项活动也需要大量人力,并需要了解软件工程方法学。同时还要与税务专家多交流,既是为了弄清此税法和需求文档,也是为了帮助保证在设计中能提前考虑到将来税法的修改。c.编码:书写系统各部分的源代码。编码人员的活动可以稍独立地进行,但无疑需要与设计人员交流,还可能要与税务专家联系。d.集成:把各部分放在一起成为完整的系统。这又是一个以小组为单位进行的活动,需要设计人员和编码人员大量地交流。e.测试和确认:测试该系统以保证其准确地反映了新税法。对于一个有一定复杂性的法律条文,这可说是一项极其费时的活动,需要设计人员、编码人员和税务专家共同协作。f.维护和进化:随着该税法变化,相应地修改此系统。在又一重要的新法生效之前,此税法很可能要修改多次,实际上在此纳税申报单处理系统首次交付之前,很可能发生了若干最重要的修改。与工具软件的情形一样,这项活动将是系统整个生命期中最费时间的活动。
四、人工智能在软件系统中的应用
由于开发大型软件固有的基本难点—复杂性、需求一致性、多变性和不可见性,在不断变化的背景环境中开发和维护大型软件系统对我们构成了巨大挑战。开发软件产品中的许多问题均源于软件固有的复杂性以及由此产生的伴随软件规模的非线性增长。而且軟件必须与其交互界面所涉及的多种各异的人类组织和系统要求的形式保持一致性。另外软件的实质是无法直观得到的,当我们试图将软件结构图示时,会发现得到的是数目庞大的而且错综复杂的有向图表。
将人工智能的自适用性概念运用在软件设计领域,因为无法精确地把握业务的变化方向和大小,所以采用自适用性的一些概念和方法来解决这些问题。主要思想为:
①针对变化可能性大的业务类型,系统设计时要尽可能多地涵盖它;
②对变化可能性大的业务逻辑,划分地要细,即扇入系数要小;
③采取措施使用户可以根据业务实际需要来选择业务种类,并可以人为确定业务的工作方式和顺序。
如此一来,这样的软件产品可以做到:
①由于大量的业务方式已经被考虑和设计在系统中,用户可以根据需要选择当前适用的业务;
②如业务模块已经不适用当前业务状况时,对小型化模块的修改来说,二次开发和修改的成本就要小的多。
五、结束语
目前我国经济正处于快速成长发展时期,各种业务不断涌现,这为软件工程的业发展既带来了机遇也带来了挑战。如何增大软件的适用程度,降低开发成本,这将是每个软件开发从业者必须面临的一个课题。而将人工智能相关的某些技术应用到软件开发的过程中,也将非常有助于实现软件行业的跨越性发展。
【参考文献】
[1]陈奕辉.“互联网+”时代软件工程开发新技术研究[J].科技经济导刊,2018,26(04):149.
[2]李萍.国内人工智能技术的发展趋势及应用领域探究[J].广东蚕业,2017,51(08):20.
[3] 杨小平.目前软件工程技术在网络时代背景下的发展探讨[J].读天下. 2017(02).