文档库 最新最全的文档下载
当前位置:文档库 › 人工智能在软件工程中的应用

人工智能在软件工程中的应用

人工智能在软件工程中的应用
人工智能在软件工程中的应用

人工智能在软件工程中的应用

()

摘要:软件工程是一个知识密集型活动,需要关于应用领域和目标软件本身的广泛知识.软件工程中不少费用都归因于当前技术不能有效地管理这些知识,人工智能技术能帮助缓和这种不利局面。人工智能在软件领域应用广泛,其核心思想是使产品在使用过程中对环境产生自适应性。将自适用性的理念引入软件工程领域,以期缓解业务变更频繁带来的设计矛盾。本文结合软件工程的发展现状,深入的探究了人工智能在软件工程当中的应用,旨在促进软件工程的智能化及发展。

关键词:软件工程;人工智能;应用

目录

1.人工智能描述 (3)

2.软件工程活动 (4)

3.软件设计领域的人工智能思想 (6)

4.未来展望 (8)

参考文献 (9)

一般软件工程领域都需要智能,因此利用人工智能技术建造一些系统去执行或辅助软件工程过程似乎是很自然的。实际上,二十多年来,为达到这个目的,人们已做了大量实质性的研究,并取得了一些重要成果,然而能说明其实用性的却不多。本文将比较详细地讨论关于在软件工程活动中应用人工智能技术的发展动态,说明人工智能技术在软件工程中也是必不可少的,还将指出一些旨在获得最大成功的研究方向。

1.人工智能描述

人工智能主要研究在某些难以量化或者研究未明的领域中,用经验值对系统加以控制,或者利用某种技术来使得系统对环境具有某些自适用能力,从而使系统能够得到最广泛的应用并获得最好的运用效果。自适用性是人工智能的核心思想,它期望产品可以在使用过程中,对其所处的特殊环境进行适用,从而获得产品的最大使用性能和最低的使用成本。

在计算机科学里,人工智能是研究机器智能和智能机器的高新技术学科,

是模拟、延伸和扩展人的智能,实现某些脑力劳动自动化的技术基础,是开拓计

算机应用技术的前沿阵地,是探索人脑思维奥秘和应用计算机的广阔领域。人

工智能与原子能技术和空间技术, 被并称为20世纪的三大尖端技术。对人工智

能的研究已有20多年历史,目前已形成了一个庞大的学科群,其主要的子学科有:专家系统、知识工程、知识库、模式识别、机器人等。与企业管理智能化

关系密切的主要有专家系统、决策支持系统和知识库系统等。

(1) 专家系统。

专家系统是人工智能学科中发展比较成熟的一个领域。经过30多年的发展, 目前世界上已有许多专家系统在成功地运行。在企业管理领域里, 国内也有一些先进企业成功地开发并应用了企业管理专家系统。例如, 云南玉溪卷烟厂就运行着由清华大学计算机科学系研究开发的营销分析专家系统。该系统集中了多位营销专家的市场营销经验, 对于该企业在全国的营销情况进行及时分析,并做出了一系列正确的判断, 由系统操作人员把专家系统的分析结论提交给决策部门, 作为其决策时的参考。

(2) 决策支持系统(DSS ) 。

在激烈的市场竞争中, 企业做出正确的决策至关重要,一旦决策失误, 就可

能导致整个企业陷入困境。问题是怎样才能保证决策正确, 而免于失误。

(3) 知识库系统。

知识库是人工智能的一个重要分支,它建立在企业数据库基础上,存储企业在市场竞争中积累起的各种知识。同时, 知识库系统也为人工智能深入应用提供支持条件。例如, 知识库系统可以为专家系统和决策支持系统的开发和应用提供有力的支持。

2.软件工程活动

软件工程活动通常分为两大类:小型程序设计和大型程序设计。前者指的是个别程序员在短时间(几个月)内开发中等长度(几千行)的程序,后者指的是程序员组在预期的较长时间内开发大型软件系统。这两类都需要大量的各种知识,如下二例所示:

小型程序设计第一个例子是关于油井测井工具,这些工具用来测量油井及其周围岩石构成的各种物理特性,以便判别岩石及其中流体的类型。测井工具由地上的计算机控制,并通过一根长电缆与此工具通讯。除了控制工具的行为,软件还必须记录来自工具上传感器的数据,供以后分析用。用于给定工具的软件一般有几千行代码,开发时间可能是几个月到一年。这一例子的问题是,为一个新开发的测井工具制作软件。为此,软件开发人员一般要经过以下几个步骤:

a.规格说明:描述软件需要做什么。这本质上是研究测量所依据的工具和物理过程,通常需要与工具设计者广泛地交流。

b.分解:把规格说明分解成许多比完整的规格说明更易管理的、相对独立的部分。这显然需要了解规格说明,还需要知道程序构造技术和软件运行所在计算机的某些特性。为了澄清有二义性、不一致的地方,或发现规格说明中丢失的信息,还要与工具设计者进行实质性的交互。

c.实现:书写每个部分的代码。这需要了解程序设计技术和目标机器,同样也要与工具设计者进行很多联系。

d.测试,对代码是否准确地实现了规格说明进行测试。这就需要规格说明和工具方面的知识,并且仍要与工具设计者互相联系。

e.优化:保证软件满足通讯系统和工具的物理过程对实时方面的要求。这是最费时间的活动之一,因为它包括大盘的测量和测试。需要大量关于工具及其物

理过程的知识,还需要与工具设计者多交流,

f.确认:保证软件是真正所需要的。尽管开发人员尽了最大努力,但第一次使用时,软件/工具联合系统一般都不能做出期望的结果,主要是因为不能确定工具究竟怎样与钻井环境相互作用。因而必须经过修改规格说明和代码,并需要另行测试。

g.进化:随着工具的改进和我们对物理过程进一步的理解,对软件做相应的修改。这显然要了解工具和物理过程,还需要熟悉有关代码初始版本中的实现决策。一般来说,要与编写软件最初版本的人多交流,尽管此人可能不是总能找得到。由于这些问题,进化需要的工作量可能超过最初开发需要的工作量。

值得注意的是,所有这些活动都牵涉到大量有关工具及其物理过程的知识,还牵涉到关于早期软件开发活动的知识。

大型程序设计第二个例子是关于纳税申报单处理软件。特别地,我们可以想象,当国内税收署想要为1986年通过的新税法开发有关软件时,它会做些什么。

a.需求分析:去理解掌握新税法——几乎长达200页的法律条文肯定含有大量二义和不一致之处。这项活动需要大量人力,其中包括许多税务专家和软件开发人员等等。

b.设计:为系统提出总体结构。这项活动也需要大量人力,并需要了解软件工程方法学。同时还要与税务专家多交流,既是为了弄清此税法和需求文档,也是为了帮助保证在设计中能提前考虑到将来税法的修改。

c.编码:书写系统各部分的源代码。编码人员的活动可以稍独立地进行,但无疑需要与设计人员交流,还可能要与税务专家联系。

d.集成:把各部分放在一起成为完整的系统。这又是一个以小组为单位进行的活动,需要设计人员和编码人员大量地交流。

e.测试和确认:测试该系统以保证其准确地反映了新税法。对于一个有一定复杂性的法律条文,这可说是一项极其费时的活动,需要设计人员、编码人员和税务专家共同协作。

f.维护和进化:随着该税法变化,相应地修改此系统。在又一重要的新法生效之前,此税法很可能要修改多次,实际上在此纳税申报单处理系统首次交付之前,很可能发生了若干最重要的修改。与工具软件的情形一样,这项活动将是系统整个生命期中最费时间的活动。

3.软件设计领域的人工智能思想

由于开发大型软件固有的基本难点—复杂性、需求一致性、多变性和不可见性,在不断变化的背景环境中开发和维护大型软件系统对我们构成了巨大挑战。开发软件产品中的许多问题均源于软件固有的复杂性以及由此产生的伴随软件规模的非线性增长。而且软件必须与其交互界面所涉及的多种各异的人类组织和系统要求的形式保持一致性。另外软件的实质是无法直观得到的,当我们试图将软件结构图示时,会发现得到的是数目庞大的而且错综复杂的有向图表。

另外,每个用户都希望自己的产品是完全按照自己的需要量身定做的,并且希望供应商能够根据自己需求的变化不断更改产品的功能。当然这只能是一种理想状态。考虑到设计和维护的成本,很少有产品是这样实现的。同时在有的领域中,很多用户的需求却不得不随着业务环境的变化而变化。这时开发商如不把这种情况考虑进去,用户在使用产品时就会诸多不便。而如果开发者能把这个需求会变化的产品特性充分地体现在设计中,那么这个产品就会有良好的使用性和推广应用价值了。

将人工智能的自适用性概念运用在软件设计领域,因为无法精确地把握业务的变化方向和大小,所以采用自适用性的一些概念和方法来解决这些问题。主要思想为:

①针对变化可能性大的业务类型,系统设计时要尽可能多地涵盖它;

②对变化可能性大的业务逻辑,划分地要细,即扇入系数要小;

③采取措施使用户可以根据业务实际需要来选择业务种类,并可以人为确定业务的工作方式和顺序。

如此一来,这样的软件产品可以做到:

①由于大量的业务方式已经被考虑和设计在系统中,用户可以根据需要选择当前适用的业务;

②如业务模块已经不适用当前业务状况时,对小型化模块的修改来说,二次开发和修改的成本就要小的多。

人工智能(AI)在软件工程中的应用研究是近年来兴起的热门话题之一。欧洲信息技术研究计划(ES-PRIT)就提出把AI技术与软件工程技术结合起来构成一个支持软件系统分析和设计的工具。有迹象表明,人工智能与软件工程的相互作

用终将导致新一代软件开发方法与管理的规范形成,它能使软件易于开发、修改和维护。软件工程的智能化是一个必然趋势。

目前,已经展现的软件工程智能化的成果主要有:运用专家系统和人工神经网络系统设计软件工程项目;把智能化模块组装到大型软件系统,使得软件适应快速改变需求;应用推理技术提高用户界面的友好性;在图形用户接口、面向对象的程序设计、基于约束或基于规则的程序设计中应用智能技术;在大型分布式复杂软件中引入Agent技术实现软件的高抽象层次的构件和连接件,在不同层次上清晰描述和实现构件化的软件体系结构等等。

人工智能技术在软件工程领域有很多应用。作为人工智能的一个分支领域,机器学习技术在软件预测与评估方面得到成功应用。在很多工作中,机器学习方法用来预测和估计软件过程、产品和资源的内在及外部的特性,包括:软件质量、软件规模、开发成本、设计成本、维护成本、软件资源、修改费用、软件可靠性、软件缺陷、重用性、软件发布时间、生产率、执行时间以及软件模型的可测试性。

随着网络技术的不断发展,网上的信息资源成几何规律增加。越来越多的信息给人们带来方便的同时也增加了信息查找的难度。搜索引擎也随之应运而生。依靠搜索引擎,用户能够方便地查找需要的信息。搜索引擎一个重要部分是网络爬虫程序,依靠网络爬虫,搜索引擎可以获取用来检索的原材料信息。

传统的搜索引擎资源获取部分使用的是盲目式的遍历算法,即对所获得的链接进行遍历,抽取相关信息保存数据库中供搜索引擎检索调用。这种方法存在不少问题。使用这种方法,会导致垃圾数据的大量积累,对于某些获取的数据,可能从来不被检索访问。除此之外,由于遍历了大量无关的链接,会导致系统负担的增加,效率的低下。

使用人工智能中的启发式搜索来获取特定的信息可以极大地减少遍历的链接数量,使被访问到的链接尽量地指向有用的信息。减少了无关链接的访问数量,就能极大地提高相对回报率,从而提高了系统的效率。另外,在页面类型的判断中,本文引入了一个智能代理系统,完成网页类型的自动分类判断。该部分通过抽取网页的特征项,形成文本向量,然后与中心向量进行相似度计算后,根据相似度的结果来对网页进行自动分类。

软件工程智能化在未来几年间需要化解的难题还有很多,诸如:基于AI的支持环境和软件开发中的AI机制的建立;AI技术实用化,如用启发式搜索范例作

为模型来刻画设计和实现活动、用AI的知识表示技术描述软件工程的全过程;基于分布式计算的软件项目如何应用分布式人工智能技术(DAI)等等。

DAI的研究重点是协调那些在物理上或逻辑上分散的智能体的智能行为,使它们能够协同工作。DAI的研究方向将从目前的分布式问题求解(DPS)、多Agent 系统(MAS)、并行人工智能(PAI)等发展出更多的方向,以适应分布式计算和软件工程技术飞速发展的需要。有专家预测,对面向Agent语言及其程序设计的标准和风范的研究可能成为软件工程智能化取得突破性进展的重要因素。

4.未来展望

目前我国经济正处于快速成长发展时期,各种业务不断涌现,这为软件业发展既带来了机遇也带来了挑战。如何增大软件的适用程度,降低开发成本,这将是每个软件开发从业者必须面临的一个课题。而将人工智能相关的某些技术应用到软件开发的过程中,也将非常有助于实现软件行业的跨越性发展。

参考文献

[1]任瑞娟,李洪建.中文搜索引擎比较研究[J].大学图书馆学报,1999,5:55-61

[2]林尧瑞,马少平.人工智能导论[S].北京:清华大学出版社,89年版

[3]王永庆.人工智能原理与方法[S].西安:西安交通大学出版社,01年版

[4]景波.基于智能代理的入侵检测模型[D].山西:太原理工大学,2003

[5]王继成等.基于工Internet的信息资源发现技术与实现[J].计算机研究与发展,1999

[6]郑家恒,宋文中.中文信息自动分类方法研究[M].情报学报,2002,21(5)

[7] 汪敬贤. 浅谈人工智能的应用与发展[J].科技信息,2006,(2).

[8] 王洪璋. 浅谈信息时代人工智能的应用与发展[J].人工智能及识别技术,2007,(3).

[9] 陈文伟. 决策支持系统及其开发[M],北京:清华大学出版社,2004.

[10] Vaughan-Nichols S J.Web Services: Beyond the Hype. Computer, Fed. 2002.35(2):18-21.

[11] Swartz A.Musicbranz. A Semantic Web Services. IEEE Intelligent Systems,2002.17(1):15-17.

相关文档