智能需求获取与建模研究综述
2021-04-07陈骏武
汪 烨 陈骏武 夏 鑫 姜 波
1(浙江工商大学计算机与信息工程学院 杭州 310018)2(澳大利亚蒙纳士大学信息技术学院 澳大利亚墨尔本 3800)
智能软件工程(intelligent software engineering, ISE)是近年来软件工程科学研究中出现的新兴领域[1-3].谢涛[4-5]从2个角度对ISE进行了定义:1)人工智能(artificial intelligence, AI)技术在软件工程学科中的应用;2)为智能软件开发提供软件工程的解决方案.越来越多的软件工程顶级会议中单独设立了与ISE相关的研讨会.诸如IEEEACM Inter-national Conference on Automated Software Engin-eering(ASE)的the International Workshop on Intelligent Software Engineering(WISE),International Conference on Software Engineering(ICSE)的International Workshop on Realizing Artificial Intelligence Synergies in Software Engineering(RAISE),IEEE International Requirements Engin-eering Conference(RE)的International Workshop on Artificial Intelligence for Requirements Engin-eering(AIRE),International Conference on Predictive Models in Software Engineering(PROMISE),都显示出软件工程领域对ISE方向研究的重视.
需求工程(requirements engineering, RE)是软件工程中的重要研究领域,其目标是指通过现有的技术、方法进行用户需求分析,帮助技术人员理解问题并明确系统目标[6].需求获取与建模是需求工程中的重要步骤,旨在通过表格化、图形化、形式化等方法,对获取的结构化或非结构化的需求知识进行模型构建.通过模型构建,软件开发人员可以:1)根据用户需求对软件系统进行合理的可视化;2)更详细地说明软件系统的结构和行为;3)为软件系统的设计提供清晰化指导;4)有利于涉众之间的相互交流;5)为后期系统维护和升级提供了便利.
自20世纪90年代,研究者们已提出很多传统需求获取和建模方法,包括问卷、访谈、文档分析[7]、团队启发[8]、原型设计[9]、模型驱动[10]等获取方法,以及数据建模[7]、企业建模[11]、行为建模[12]、非功能需求建模[13]、领域建模[14]、用例建模[15]、特征建模[16]、面向目标的建模[17]、问题框架[18]、面向方面的建模[19]等需求建模方法,分别对用户需求或系统需求的不同侧面、不同层次进行提取、抽象和刻画,但仍然存在一些问题与挑战.首先,由于用户通常使用自然语言描述软件系统的需求[20],而自然语言描述中存在着模糊、冗余等特性,传统方法所提取的知识或构建的模型中往往会出现重点不明确等问题.其次,传统的需求获取与建模过程需要大量依靠人工实施,这种方式在面对大规模的、复杂的需求文档和需求之间的关系时,将耗费巨大的时间成本,需求的准确性、一致性和完整性会大幅降低[21].
鉴于此,研究者们致力于研究并解决需求在获取与建模过程中的不完整[22]、不准确[23]和效率低下[24]问题,并提出了智能需求获取与建模方法,将人工智能技术如机器学习[25]、深度学习[26]、自然语言处理[27]等与传统的需求获取和建模方法相融合,模拟人工处理的方式,能极大地在需求知识提取[28]、需求知识分类[29]、需求模型构建[30]方面提出新思路,解决人工方式下模型生成效率低、准确率差等弊端[21],在需求管理、需求追踪、需求变更、需求预测等方面发挥了重要作用[31-32].
目前,国内外对于智能需求工程的研究正在日渐成熟.杨卓群等人[33]针对自适应系统中的需求工程,对其建模方法、需求质量属性和应用领域等方面进行了充分的调查研究,总结了其最新发展趋势;栗元邦等人[34]对不同的情景维度进行分析,总结出其对需求获取与建模的支持作用,统计并深入分析了情景感知下的需求获取与建模中常用方法.Perkusich等人[35]综合分析了不确定下的推理、基于搜索的解决方案和机器学习用于敏捷软件开发领域的技术现状,包括工作评估、需求优先级划分、资源分配、需求选择和需求管理.Gea等人[36]调查了当前RE工具的支持功能和支持程度,提出这些工具在需求建模、开放数据模型和数据集成性上仍有改进的空间.然而,目前对于系统性归纳人工智能背景下需求获取与建模的工作鲜有涉及.为了使研究者对智能需求获取与建模研究现状有更清晰的把握,了解其研究进展,本文采用文献综述的方法,对近15年来的研究进行了系统的分析整理,对这些新方法进行了统一的调研和分析.
在文献选取方式方面,我们选取文献方式遵循的标准有:1)该文献针对智能需求工程中的需求知识提取、需求知识分类和需求模型构建方面提出新的自动化技术和方法,或该文献对智能需求获取与建模的新技术和新方法进行了实际的案例研究和应用研究;2)该文献已公开发表在国内外的会议、期刊或者专著中.
根据这2个标准,本文通过4步索引和筛选文献:
1) 根据研究方向确定检索的关键字,确定的英文关键字为:requirements engineering或require-ments survey或requirements investigation或requirements challenge或requirements mining或requirements modeling或requirements extraction或requirements classification等,确定的中文关键字包括:需求建模、需求获取、需求分类、需求挑战、需求提取、需求工程等.主要用到的数据库包括:EI Database(简称EI)、Web of Science Database(简称Web of Science)、IEEE-CS Database(简称IEEE)、ACM Database(简称ACM)、ScienceDirect (SD) Data-base(简称ScienceDirect)、Springerlink Database(简称Springer)、中国知网(CNKI).检索时间区间定义在2005年1月~2020年6月.初步检索出18 137篇文献,具体分布如图1所示:
Fig. 1 Database search图1 数据库检索
2) 由第1作者和第2作者对上述文献按照标题、关键词、摘要、结论和来源进行筛选,我们筛选文献的标准为:对于英文文献,根据《中国计算机学会推荐国际学术会议和期刊目录》,选择B类(含)以上的权威软件工程期刊和会议;对于中文文献,根据《CCF推荐中文科技期刊目录》选择A类的科技期刊.由此得到95篇文献.
3) 由上述2个作者对95篇文献进行全文查看,若根据纳入标准2名研究人员无法达到一致意见时,向课题组另外2名研究人员陈述纳入和排除理由,并由另外2名研究人员做出最终决定.经过此步骤,保留相关文献45篇.
4) 由第1作者和第2作者从保留文献的参考文献中通过滚雪球的方式[37]进一步筛选出符合要求的相关文献,滚雪球共找出23篇可能文献,再经过2轮筛选,得到12篇相关文献.
通过上述4步文献的检索与筛选后,目前共有57篇相关文献纳入本文的调研中,这些文献与智能需求获取与建模技术直接相关,为需求知识提取、需求知识分类、需求模型构建、方法评估和应用提供了新思路和新技术.图2展示了本文所总结的文献分布情况,其中包含JSS(Journal of Systems and Software),ASE各9篇,RE论文7篇,REJ(Require-ments Engineering)论文6篇,《软件学报》5篇,CAiSE(International Conference on Advanced Information Systems Engineering)4篇,ICSE,ASEJ(Automated Software Engineering),EMSE(Empirical Software Engineering),IST(Information and Software Tech-nology),IETS(IET Software),ESECFSE(Euro-pean Software Engineering ConferenceACM SIGSOFT Conference on the Foundations of Software Engin-eering)各2篇,SoSyM(Software System Modeling),TOSEM(ACM Transactions on Software Engineering Methodology),MoDELS(Conference on Model Driven Engineering Languages and Systems)、《电子学报》和《计算机学报》各1篇.图3展示了本文所总结文献发表年份的分布情况.
本文的综述过程如图4所示,根据上面4步获得57篇论文集后,对选取的文献进行分类和归纳,分为智能需求获取与建模的新技术新理论、实证研究2个方面.对于提出新技术新理论的文献,从3个步骤进行分类:需求知识提取、需求知识分类和需求模型构建.对于实证研究方面,对各类文献进行系统分析、比较,总结了此类文献用来衡量其方法的评估指标,最后归纳出目前智能需求获取与建模在集成式和动态化模型构建、与其他软件工程活动关联、需求知识分类的粒度、数据集构建、评估指标的建立和缺乏工具支持等关键问题与挑战.
Fig. 2 Literature distribution图2 文献分布
Fig. 3 Statistics of publication years图3 文献发表年限统计
Fig. 4 Overview framework图4 综述框架
Fig. 5 General steps for intelligent requirements elicitation and modeling图5 智能需求获取与建模的一般步骤
1 智能需求获取与建模的过程框架
本节我们主要介绍智能需求获取与建模的一般过程框架.通过对相关文献的总结,我们将智能需求获取与建模过程归纳为3个步骤,如图5所示.
1) 需求知识提取[28].通过自然语言处理、机器学习、深度学习等技术从项目文档、记录、用户评论和用户请求中提取相应的需求知识,作为后续模型构建的基本元素.
2) 需求知识分类[38-39].采用支持向量机(support vector machine, SVM)方法、长短期记忆网络(long short-term memory, LSTM)等技术对不同种类的需求知识进行分类,帮助开发人员更好地改善系统,明确系统所需完成的目标,为模型构建提供帮助.
3) 需求模型构建[30].根据已提取或已分类的需求知识元素,分析需求关注点,结合Markov链、贝叶斯网络、基于规则的模型构建等算法自动化地构建模型.
根据我们的调研和总结,在需求知识的智能提取和分类方面,早期应用的技术以自然语言处理和信息检索技术为主,包括文本预处理、术语权重和相似度计算等方法,后期采用的较多方法是将机器学习与自然语言处理技术结合,近2年来深度学习技术也被尝试着应用到需求知识的提取和分类中.在需求模型的智能构建方面,早期以基于规则和依赖分析的模型构建方法为主,近年来基于数据挖掘和机器学习的方法逐渐兴起,并取得了不俗的成果.本文分别介绍了上述3个步骤所采用的技术和方法.
2 需求知识提取
软件需求明确定义了软件应该“做什么”的问题,通过访谈、问卷等方法从用户获得并记录的需求文本大多采用自然语言描述,采用人工方法从大量的自然语言描述文档中提取需求知识将耗费巨大的时间和人力成本.因此,越来越多的需求工程研究人员致力于将LDA(latent Dirichlet allocation)[40],BiLSTM(bi-directional long short-term memory)[26]和CNN(convolutional neural networks)[41]等人工智能技术应用于需求知识元素的提取,不但大幅降低提取时间成本和提高提取效率,而且提高了知识提取的准确性.下面将重点介绍这些技术在需求知识提取步骤的应用,根据提取方法的种类,我们将其大致分为2类:(半)自动化的自然语言处理方法和基于人工智能的需求知识提取方法.前者偏向对需求文本做语法、语义层面的分析和计算;后者虽然也会采用文本分析方法,但是更侧重于采用机器学习和深度学习技术从文本中挖掘有用的需求信息.
2.1 (半)自动化的自然语言处理方法
目前需求描述和记录方式大多为用例、用户故事、功能列表等由短文本构成的结构化形式[42-43],已有研究表明[44],采用自然语言处理(natural language processing, NLP)技术对需求文本进行分析、处理,挖掘需求文档中包含的知识元素具有广泛的研究前景.
与自动化技术相比,半自动化技术在提取中需要人工干涉,过程相对繁琐,例如通过添加人工确认需求或微调需求的步骤,以提高提取的准确率.此外,如果提取的需求是针对某个特有的领域场景,则需要人工对某些偏好属性进行设定.自动化技术则实现了需求文本处理全过程的自动化,提取效率得到极大的提升.然而,提取的效果会由于样本需求的大小不同而呈现不稳定性,并且存在准确率低于召回率的结果.因此,在需求的初步处理阶段,对于提取较为简单的实体、对象、动作等元素,自动化技术更为适合,因为可减少人工成本的投入,并获得较好的成果.而在获取不同需求之间的关系时,半自动化技术更为合适.
2.1.1 文本预处理
文本预处理是早期用来进行需求知识提取的方法,是指对采用自然语言描述的需求文本进行语法和语义分析,包括分词[44]、词干提取[45]、停用词删除[46]等方法.
利锦标等人[28]利用NLP技术从需求文本中自动提取类图元素,但该方法缺乏工具支持.Vu等人[45]采用自定义的词干提取算法,从原始用户评论中提取意见关键词,正确率达到97.9%.Elbendak等人[47]基于文本预处理开发了一个Class-Gen工具用来提取类和对象,以生成初始UML(unified modeling language)类模型.Rago等人[48]为了提取用例描述中的语义信息,开发了一款REAssistant的自动化文本分析工具,并为用例生成不同的注释.
文本预处理方法只能用来提取显式的基本需求知识,即与需求知识相关的单词、短语或语句,如对象或主体对应名词,动作或关联对应动词,功能或目标对应动宾短语,但是却难以分析不同需求之间的关系.此外,文本预处理方法很难识别出不必要或冗余的需求知识,无法处理由此产生的信息噪声问题.随着需求文本的规模扩大,复杂句式出现的频率大大增加,对于表述很差或粒度较大的需求文本,若仅采用文本预处理的需求提取方法,提取效果将受到严重影响.
2.1.2 术语权重
为了获取需求文本中的某一术语对该文本的重要性,信息检索技术里的术语权重方法逐渐在需求知识提取中得到应用.术语权重是指根据术语在文档中出现的频率为其分配不同的权重.Rago等人[49]自定义了一种新的加权术语频率的计算方法,实现了对非功能需求的提取,正确率达到86%~90%.术语权重方法在一定程度上弥补了文本预处理方法无法处理的信息缺陷,但在提取过程中严重依赖语料库,且难以提供词的位置信息,降低了需求知识的提取精度.
2.1.3 相似度度量
针对术语权重在处理需求文本上的不足,需求工程研究者们后期又提出了相似度度量方法.该类方法通过计算不同需求语句的相似度,以便提取出所需要的知识元素,如重复的需求、具有二义性的需求等.常见的相似度计算方法包括余弦相似度、Jaccard相似度,以及概念相似度、String相似度、Bi-gram相似度等[50-52].为了更好地提取需求知识,相似度度量通常与文本预处理、术语权重方法组合使用.Jaccard相似度一般用于计算集合之间的相似度,适用于需求文本中包含大量重复性的词语,而余弦相似度用于计算2个单词之间的相似度,适用于单词重复性较少的需求文本.
针对需求文本中存在的歧义性需求,Rauf等人[53]利用了ET(extraction tools)工具,从需求文本中提取出结构模型元素,包括实体、属性以及多重性.Vu等人[54]在基于关键词的方法后,又采用余弦相似度和Jaccard度量方法从应用程序评论中提取用户观点,准确率和召回率得到提升.Ferrari等人[55]基于特定领域的语言模型,提出了通过余弦相似度计算方法提取不同领域之间的歧义术语,并根据歧义度对其进行排序的方法.
Table 1 (Semi) Automated Natural Language Processing Approaches表1 (半)自动化的自然语言处理方法
表1列举了目前NLP技术在需求知识提取方面的应用,包括NLP技术分类、NLP技术、工具、需求来源、提取的需求知识元素、构建的需求模型、关注的需求类型和对应的参考文献.表1中FR(functional requirements)代表功能需求,NFR(non-functional requirements)代表非功能需求.
2.1.4 开源的NLP支撑工具
需求知识提取阶段,研究者们通常会借助开源的NLP支撑工具对需求文本进行语法分析和处理,提高需求知识元素的提取效率,极大地节约了人力成本.常用的开源工具包括Stanford NLP工具[56]、GATE[57]和Open NLP工具[58]等.
Stanford NLP工具[56]由斯坦福大学开发,是被应用最广泛的文本处理工具.基于Stanford NLP工具,Sagar等人[59]通过利用该工具和WordNet,从功能需求规格中自动提取类及其关系,以便自动构建出概念模型;其他研究人员也采用了Stanford NLP工具从需求文档、用户手册等提取功能需求[60-62].Han等人[63]提出一种从需求文本的约束描述中自动提取过程模型元素的方法,将提取出的活动及其语义关系转换为声明性约束.GATE[57]是谢非尔大学自然语言处理小组研究并开发的免费文本分析平台.采用该工具,Morales-Ramirez等人[64]对应用商店的评论、开源软件的邮件列表和用户论坛中的文本消息进行自动化分析和知识提取,提取出系统的功能特征;AlHroob等人[65]则从用例中提取参与者和动作.Open NLP是一个专门用于处理自然语言的机器学习工具集.基于Open NLP,Rago等人[66]开发出ReqAligner方法,帮助分析人员以自动化的方式提取出用例中重复的功能需求,提高需求的可读性,便于后期工作量估算、功能优先级划分和维护等工作的进行.HanLP是一种自然语言分析工具,王春晖等人[67]利用这个工具帮助提取用户故事场景.上述NLP支撑工具针对的需求文本格式和语言以及提取的需求知识各有不同,研究人员可根据实际需要选择适合自己项目的工具进行需求文本的自然语言处理.
表2列举了开源的NLP工具在需求知识提取方面的应用,其中FR代表功能性需求,NFR代表非功能需求.
Table 2 Open Sourced NLP Supporting Tools表2 开源的NLP支撑工具
2.2 基于人工智能的需求知识提取方法
自动化或半自动化自然语言处理方法通常仅能提取出显式的需求知识,对于语句中所包含的隐式需求则很难获取.鉴于机器学习和深度学习在挖掘隐藏信息上的优势,近年来越来越多的研究者们尝试着采用人工智能技术提取需求知识,包括较早尝试的贝叶斯网络[68]、LDA[40],以及最新被应用的BiLSTM[26]、CNN[41]等.
2.2.1 基于机器学习的需求知识提取方法
采用机器学习方法提取需求知识过程与普通机器学习任务类似,通常包含4个步骤:
1) 文本的自然语言处理.对包含需求知识的文本进行自然语言处理,包括分词、词性标注、关键词提取等,必要时进行进一步的缺失值处理、离散化等数据处理,使得算法的效果和性能得到显著提高.
2) 文本特征提取.利用熵、Word2Vec,TF-IDF等相关技术,筛选出数据中不同需求知识元素的显著特征,也可手动添加新数据特征.
3) 提取模型的构建和训练.选择合适的机器学习模型,采用训练集数据对模型进行训练,不断调优,使得模型达到最优.
4) 需求知识提取.将测试集数据输入到机器学习模型,完成相关需求知识的提取.
在功能性需求知识的提取方面,主题建模、SVM和主动学习是比较常用的智能技术.Bhowmik等人[69]、Chen等人[70]和Li等人[71]基于主题建模技术分别从需求文本和用户反馈意见中提取创新性需求.但如果需求文本或e-mail信息的描述多样化,例如包含一些程序方法或类名,则会阻碍主题的构建.LDA是广泛应用的主题建模技术,但其对过短的需求文本进行主题提取时效果不佳,通常需将多个短文本组合成一个长文本进行主题建模.Rodeghero等人[72]分别采用了逻辑回归和SVM,从用户与开发人员之间的对话记录中智能提取与用户故事相关的信息,并发现逻辑回归在所评价的各类指标(如准确率、召回率)下的综合效果最好.Arora等人[73]为了提取并过滤冗余的需求,采用主动学习方法对已提取领域模型元素的相关性和冗余性进行迭代学习得到反馈信息,最后过滤掉冗余的需求.主动学习是一个循环的过程,通过查询最有用的未标记样本,交由专家进行标记,再用查询到的样本训练模型提高模型的精确度.主动学习通常依赖于专家经验或领域经验,并且需要构建合适的标注候选集.Sardinha等人[74]基于贝叶斯学习方法分别提取出不同方面需求间的冲突,并开发了EA-Analyzer作为支持工具.在非功能需求知识的提取方面,贝叶斯学习方法[75]被证明是效果较好的技术.然而,上述机器学习方法需要依赖大量的特征工程和领域专业知识,且对于不同领域的适应性较差,在数据集异常的情况下提取精度会受较大影响,需要进行异常值处理,同时容易产生过拟合或者欠拟合现象.
2.2.2 基于深度学习的需求知识提取方法
为了降低特征工程对提取精确度上的影响,近2年来,深度学习技术被尝试应用于需求知识提取中.采用深度学习提取需求知识通常包含4步:文本的自然语言处理、文本特征提取、神经网络模型构建与训练、需求知识提取.该过程与机器学习过程类似,不同地方在于神经网络模型的构建与训练.目前对于基于深度学习的需求知识提取方法研究,学术界尚处于初探阶段.
BiLSTM和CNN是应用较为广泛的神经网络模型.CNN运行速度很快,可以在较简单的网络结构下快速、准确地实现任务,BiLSTM可以通过时间序列的方式更好地捕捉需求文本的双向语义依赖.在智能需求知识提取中,Pudlitz等人[76]使用自训练的基于BiLSTM和CNN的命名实体识别模型从需求规格说明书中提取对象的状态.Saraiva等人[26]基于BiLSTM从文本和多媒体数据中自动识别、提取涉众关于功能需求的意见和情感.Qian等人[41]提出了一种层次神经网络方法,将提取任务形式化为多粒度文本问题,对多粒度的过程模型信息进行提取.然而,由于其卷积核大小的限制,CNN目前只能提取局部特征,而BiLSTM由于时间序列性导致其结构较为复杂,效率低,网络性能因此大受影响,并且在长距离依赖问题上表现较差.
表3列举了目前基于人工智能的需求知识提取方法、分类和工具等.
2.3 其他方法
除了2.1节和2.2节的自然语言处理技术和机器学习等技术,还有研究学者们应用其他自动化技术进行需求知识提取,包括:基于树结构的提取方法和基于抽取规则的提取方法等.刘伟等人[77]为了从Web网页中提取出用户评论,提出一种基于深度加权的树相似性算法和DOM树方法,该方法在一定程度上解决了由不同用户撰写评论的风格不统一带来的知识提取问题.李天颍等人[78]基于自定义的抽取规则,从需求文本中提取出有用的关系信息,在实验的结果上充分体现了其优势,同时,该抽取关系的方法易扩展,应用广泛.胡甜媛等人[79]为了在用户评论中挖掘有价值的使用反馈,对评论种子进行定义,并通过抽取规则挖掘出与之类似的有用用户反馈,该方法适用于用户评论数据量大、更新快速的语料库.但目前的方法面对复杂的用户评论时,在完备性上略显不足.
3 需求知识分类
需求知识分类可以提高对构建某类模型所需元素的关注度,减少建模工作量,提高需求建模的效率.根据在分类过程中所使用的技术,按照时间顺序,我们将其分为基于信息检索的分类方法、基于机器学习的分类方法和基于深度学习的分类方法.
3.1 基于信息检索的需求知识分类方法
Cleland-Huang等人[80]提出了一种基于信息检索的方法,对非功能需求进行自动检测和分类.该方法首先从设计文档中识别出非功能需求的指标术语,然后通过计算术语与需求关键词之间的相似度对非功能需求进行分类.贾一荻等人[81]提出了一种基于语义距离和特征词相似度的计算方法,将非功能性需求语句自动划分为安全性、可用性、性能、可靠性、可维护性这5类,便于后期针对不同种类非功能需求的架构设计.基于信息检索的方法减少了需求分析人员的工作量,但此类方法适用于需求较为明确的文本,且在很多场景下仍需要人为定义与需求相关的关键词.
3.2 基于机器学习的需求知识分类方法
为了克服传统信息检索技术通过匹配关键词导致的分类精度不高的问题,研究者们对机器学习在需求知识分类上的应用进行了探索.基于机器学习的需求知识分类方法与大多采用有监督或半监督的文本分类方法类似[82],主要步骤包括:文本的自然语言处理、特征提取、分类模型设计与训练、需求知识分类.此外,也有研究人员采用SMOTE(synthetic minority oversampling technique)等算法、数据增强等方法对于分类样本数据不平衡、不充足进行处理.
针对安全性需求的分类问题,Riaz等人[83]根据安全目标,采用基于K近邻算法(K-nearest neighbor,KNN)、朴素贝叶斯等机器学习技术从项目文档中针对与安全需求相关的信息进行自动化识别和分类,但该方法仅应用于健康领域,在其他领域的应用效果未知.
针对移动应用程序APP中用户评论的分类问题,Vu等人[45]采用K-means和相似度算法从移动应用程序中将用户的用户关键词划分为内聚性更强的子集,该方法的准确率达到83.11%.陈琪等人[87]采用SVM构建了APP用户评论的多标签分类模型,将评论进一步分为功能问题、内容问题、响应时间等,并采用了代价敏感学习方法解决了不平衡数据问题.该方法虽然有部分涉及到需求知识分类,但其主要目的还是为了主题挖掘和评论分析.
针对NFR的分类问题,Casamayor等人[88]提出了一种基于朴素贝叶斯和EM(expectation maxi-mization)算法的半监督学习方法,虽然降低了有监督学习中的人工参与成本,但准确率仍有待提高.为了更好地研究不同机器学习算法在NFR分类上的效果,Jha等人[89]设计了不同的组合方法,分别基于贝叶斯、SVM和基于字典的分类算法,自动捕获并分类用户评论中的NFR类别,结果发现SVM方法的性能相比贝叶斯较优,而基于字典的分类算法的准确性很大程度上取决于与NFR类别匹配的术语选择是否准确.
相比信息检索方法,机器学习方法对需求进行分类时在保证较高精确度的同时能够减少人力成本[90-91],如果采用的是半监督或无监督学习方法,需要标记的训练数据会大大减少,学习效率更高.但是机器学习方法在模型的学习过程中,对于不同领域的相同任务其特征工程可能大不相同,导致其效果通常与适用场景紧密相关,尤其在目前需求分类尤其是功能需求分类缺少公开数据集的情况下,很难验证上述方法在不同领域的有效性.
3.3 基于深度学习的需求知识分类方法
随着人工智能技术的发展,能够捕捉特征的上下文、对向量化数据具有高可计算性的深度学习技术进入了研究人员的视线,并被迅速应用到需求知识分类上.基于深度学习的需求知识分类方法在特征提取阶段可以采用Word2Vec和BERT等技术将需求文本映射到向量空间,再采用LSTM,CNN等神经网络进行训练调优,最后获取所需的分类类别.
Guzman等人[92]针对手机应用程序下的评论,对比了多个机器学习和深度学习方法,将应用程序评论划分为与软件演化相关的类别,结果表明采用神经网络的需求分类方法表现最优,直接证明了深度学习技术在需求工程中的应用具有广阔前景.Rahman等人[93]通过Word2Vec将文档向量化,然后输入到神经网络模型LSTM,GRU(gated recurrent unit)和CNN中进行了分类,比较发现LSTM更好地满足了用户对软件开发高质量的期望.相比于传统的机器学习方法,基于深度学习的分类方法准确度较高,对具有噪声的数据也能保持较好的鲁棒性和容错性.但是深度学习方法存在可解释性不足的问题,且需要大量数据支持.
表4列举了在信息检索、机器学习和深度学习方面的智能需求分类方法.
Table 4 Intelligent Requirements Knowledge Classification Approaches表4 智能需求知识分类方法
4 需求模型构建
需求模型构建是将抽象化的需求知识进行重组和结构化的过程.目前需求模型构建主要采用的2种自动化技术:基于规则的模型构建方法和基于机器学习数据挖掘的模型构建方法.
4.1 基于规则的需求模型构建方法
基于规则的需求模型构建方法是较为早期使用的一种自动化模型构建方法,主要通过构建自定义的模型生成规则,帮助模型构建.
Arora等人[94]提出了一种整合已有文献中的提取规则方法,并对这些规则进行扩展后形成新的模型生成规则,自动化生成领域模型.利锦标等人[28]采用自定义的语义框架,自动构建类图模型,并添加智能问卷系统,实现对模型的丰富和完善.Sagar等人[59]设计了类、关系、属性和操作相关的规则,根据已经提取的知识元素生成构建概念模型.针对目标模型和用例模型,Nguyen等人[95]开发了一种新颖的基于规则的方法,可以从自然语言需求文档中自动生成目标和用例模型,解决了人工识别目标和用例的问题.
研究人员也开发了一些支持工具对规则进行定义或封装.Deeptimahanti等人[96]开发了UMGAR工具,定义了一组语法重构规则,将复杂需求转换为简单需求,同时生成UML用例模型和类模型等.Lucassen等人[97]开发了Visual Narrator工具,该工具对用户故事进行句法分析提取知识元素后,封装了11种启发式规则用于定义实体及其关系,可以自动化生成概念模型.Miranda等人[98]开发了LUCAMTOOL工具并定义了一种新的领域特定语言LUCAM,规范了用例文本的描述格式,自动化生成用例图、类图和序列图.此外,TRAM工具[99]、RADAR工具[100]可以分别将文本需求转换成分析类模型和目标模型.这些工具的应用极大提高了需求模型构建的效率,但是在准确度上仍有待提高.
基于规则的需求模型构建方法在生成不同的需求模型时,大多需要人为设计术语与模型元素之间的映射关系和算法,严重受制于规则设计的完整性和准确性,且在应用于复杂场景时,效率和准确性有待提高.
4.2 基于机器学习/数据挖掘技术的模型构建方法
目前需求模型构建采用的机器学习或数据挖掘技术主要包括SVM[101]、贝叶斯网络[102]、Markov模型[103]和聚类方法[104].
1) SVM
Kumar等人[32]使用与线性、多项式和径向基函数内核函数相关联的最小二乘支持向量机(least squares support vector machine, LSSVM)学习方法构建可靠性模型,从而实现缺陷预测,节省维护资源,提高了用户满意度.但该预测模型仅对故障类别小于阈值的项目表现较优.
2) Markov模型
Markov模型被广泛应用于非功能需求的预测模型中.基于Markov模型,Mathur等人[105]提出了一个基于分层队列的性能模型,准确预测了系统吞吐量的变化.Perez-Palacin等人[106]针对高可变和突发性的负载,对系统非功能需求进行自动化建模,构建出性能模型,准确模拟了工作负载的变化趋势.但该模型基于多维Markov链的求解,存在状态空间爆炸问题.
3) 贝叶斯网络
Si等人[30]针对网构软件的可靠性进行评估,提出了一种基于贝叶斯网络(Bayesian network, BN)的可信软件可靠性评估模型,分析了网构软件的结构,为其建立了可靠性评价系统.
4) 聚类方法
Chen等人[16]提出了一种基于互连性聚类算法的特征模型构建方法,分析了单独需求间的关系,并采用特征聚类的方法生成了特征模型,然而该方法仍需要人工干预.Masoud等人[107]提出了一种基于聚类的模型来解决类职责的分配问题,通过对收集到的数据进行特征提取,使用层次聚类方法对类的职责进行聚类,最后设置类之间的关联生成类图模型.该模型采用了基于图的交互式方法能够更好地显示需求的层次结构.
上述机器学习或数据挖掘技术帮助需求分析人员解决了需求模型构建过程中的冗余和低效问题,极大地提高了智能模型构建的效率.
表5对需求模型构建方法进行了汇总,主要包括使用的技术或方法、构建的需求模型和需求类型等方面.
5 评估方法
在智能需求获取与建模的工作中,研究者需要对提出的模型进行案例研究和实验验证,并通过一系列不同的评估指标对模型的性能和有效性进行评估.
5.1 案例研究
案例研究(case study)是指将研究成果应用到某一特定的个体、单位、案例或主题从而验证研究方法的过程.对于本文,案例研究是指针对智能需求获取与建模方法的偏差行为进行深入研究的过程,旨在了解这些方法的有效性.案例研究在目前的智能需求获取与建模评估方法中使用较多[16,41-42,59-60].
Kumar等人[32]为了验证其构建的可靠性模型,在30个Java开源项目上进行实验,发现其预测模型的效果较为优异.Rago等人[48]为了验证其开发的REAssistant工具的语义分析性能,对3个需求规范进行了案例研究.Cleland-Huang等人[80]为了评估非功能性需求的自动检测和分类方法,对西门子物流系统的需求文档进行了案例研究.Lucassen等人[97]为了验证其开发的工具,将其应用于现实项目中的4个数据集以评估方法的可行性和准确性.案例研究方法能够较好地证明智能需求获取与建模新方法在实际项目开发中的应用价值,但是却难以判断新方法相比其他方法的优越性.
5.2 实验验证方法
5.2.1 交叉验证方法
交叉验证是机器学习领域常用的模型验证方法[25].K折交叉验证[108]是交叉验证技术的基本形式,在此技术中,数据会首先被划分为K个子数据集.K折交叉验证使得每一个样本数据都既能被用作训练数据,也能被用作测试数据,可以有效地避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性,然而交叉验证方法的准确性和稳定性在很大程度上取决于K的取值大小,通常K取值5,10,20不等[41].
贾一荻等人[81]组合使用不同的文本特征和分类模型,并采用5折交叉验证的方法对组合进行测试,即将全部数据集平均划分为5份,每次取其中的4份用于训练,1份用于测试,提高预测精度,减少预测偏差.Kumar等人[32]使用20折交叉验证比较模型,将数据集分为20个子集,使用准确性和F-measure指标比较缺陷预测模型的性能.
5.2.2 对比验证方法
对比验证方法是基于相同数据集,将新提出的方法(技术、算法、模型等)与其他已有方法的实验结果进行对比,以验证新方法的有效性.对比验证是基于机器学习和深度学习的智能需求提取和分类方法中最常用的验证方法[26,41,75,92-93].例如Riaz等人[83]为了验证其所提出的组合算法对安全需求的提取效果,将由朴素贝叶斯、SMO和KNN组成的组合算法分别与这3种算法进行对比实验.通常,研究者们在做案例研究或者实验时会组合使用交叉验证和对比验证,以便更准确地评估新方法.
5.3 评估指标
为了量化评估智能需求获取与分类方法的有效性,研究者们提出了不同的评估指标.这一节将详细阐述在该领域研究中常用的评估指标,包括准确率(Precision)、召回率(Recall)、F-measure、正确率(Accuracy)等指标.这些指标主要被应用在智能需求知识提取和分类方法的评估中[59,65,80-81].下面以需求知识分类的应用场景为例,解释这些指标的定义及其计算方法.
准确率(Precision),是指被正确检索的样本数与被检索到样本总数之比.具体计算为
(1)
其中,TP(true positive)表示被分类模型正确划分到该类别下的需求个数,FP(false positive)表示错误地被划分到该类别下的需求个数.
召回率(Recall),是指被正确检索的样本数与应当被检索到的样本数之比:
(2)
其中,FN(false negative)表示本该被划分到该类别却没有被分类模型划分到该类别下的需求个数.
F-measure是结合了准确率和召回率的综合性性能指标,是准确率和召回率的调和平均,β是参数,其中F1-measure是最常用的形式(β=1):
(3)
正确率(Accuracy),是指分类正确的样本数与样本总数之比.具体计算为
(4)
其中,TN(true negative)表示被分类模型正确地没有归类到此类别的需求个数.
特异度(Specificity)是指所有负例(没有归类到此类别的需求)中被分对的比例:
(5)
超规格度(Over-specification)是指在实际得到的样本中自包含了不必要但是正确的样本数占应得到的样本数的比例.
(6)
其中,Nextra指划分到该类别下正确却额外的需求数.
表6总结了检索到的论文中涉及评估指标的文献.表7选取了一些代表性工作,展示它们在各个评估指标上的具体表现,表7中展示的各个指标数据为文献所提方法在数据集上的平均结果或最好结果.表7中CRS表示休斯顿大学的课程注册系统;HWS表示兰卡斯特大学的健康监护系统;MSLite表示轻量级管理系统;DLibraCRM表示一个用于在线分类和销售与书籍相关的商品网络系统;MobileNews表示一个用于将最新公告发布到移动设备的新闻提要系统;WebJSARA表示具有发布、搜索、上传和下载功能的信息管理系统.在智能需求获取与建模过程中,为了能综合体现方法的有效性,研究者们通常会综合考虑多个指标.
Table 6 Summary of Evaluation Metrics表6 评估指标总结
Table 7 Comparison of Various Indicators of Intelligent Requirements Elicitation and Modeling Methods表7 智能需求获取与建模方法的各项指标对比
6 智能需求获取与建模的科学问题与技术难点
结合人工智能技术的需求获取与建模近年来获得了大量研究者的关注,取得了很多突出的进展,但仍然存在一些亟待解决的关键问题.本节将从科学问题、技术难点和工程实践3个方面阐述目前该领域存在的问题.
6.1 科学问题
6.1.1 需求模型的统一性和多样性
现有半自动化或者自动化需求建模方法大多只面向单一的模型,例如概念模型[59]、过程模型[63]、非功能需求模型[75]等,对于构建统一的、多样化的功能需求模型、非功能需求模型以及它们之间的多元关系却鲜有研究.即使在构建某个单一模型时,其需求文档中的细化知识和隐性需求也很少被挖掘[109],例如构建领域类模型时,领域类之间的聚合、组合和继承关系、关联的多重性以及类方法则很少涉及.另一方面,需求模型之间的关系复杂,包括不同类型的功能需求模型之间的关系(如领域类模型中的方法可能与目标模型的目标以及用例图里的用例直接相关)、功能需求与非功能需求之间的关系(如领域类模型的某个类、目标模型中软目标可能与性能模型中某性能指标直接相关).上述需求模型之间的内在联系在智能需求建模时极易被忽略.此外,中文需求与英文需求在自然语言处理上有很大的不同,然而,目前大多数需求建模技术尤其需求知识提取仍然针对的是英文文档和葡萄牙语文档[73,82],对于采用中文描述的需求进行智能获取和建模的研究非常少[81].因此,需要展开更全面、更深入的研究,构建统一的、多样化的需求模型及其多元关系.
6.1.2 需求模型的准确性评估
目前通过信息检索、机器学习或者深度学习等方法构建的需求模型,尚未有统一的、全面的指标评估其准确性.现有的评估方法包括案例研究[48-49]、交叉验证[81]和对比验证[93],上述方法大多与人工构建的或已有的需求模型进行比对,最后采用准确率、召回率、F-measure等常规指标等进行评估.但这些评估方法仍然存在的问题有:1)过于依赖人工经验,导致模型的准确性判断具有主观性[68];2)无法采用统一的标准对不同的需求模型进行对比,如具有静态特征的目标模型需要比较目标的覆盖率[17,95],但对于具有动态特征的过程模型和序列图[19,41,63],除了比较模型元素的覆盖率之外,还需对模型元素之间的时序逻辑进行判断,这就导致不同类型的模型准确性评估方法大不相同.因此,需要展开关于不同类型需求模型的准确性评估方法研究.
6.1.3 智能需求获取与建模方法的实用性
通过信息检索、机器学习和深度学习等方法构建的需求模型中包含的需求知识在完整性上略显不足,通常需要人工对一些细节和隐性知识进行增加和修改,同时还要删除一些冗余的知识元素[16].另一方面,如何提高智能需求获取与建模方法的效率也是一大难题[28,85-86].提高智能需求获取与建模的效率应综合考虑需求知识提取、需求知识分类和需求模型构建的效率.RNN,CNN和LSTM等深度学习技术的应用虽然能够提高模型构建的自动化程度和准确性,但也带来了性能的损耗[84-85].上述原因都会导致研究工作中提出的方法或技术在应用到大规模的工程项目时出现实用性问题.因此,如何将现有大部分研究工作复制到工业背景下,是需要研究突破的方向.
6.2 技术难点
6.2.1 需求模型集成式和动态化构建
不同种类需求模型采用的建模语言所基于的语法和语义各不相同,单独构建某个需求模型时语法和语义并不会成为问题,但是在对不同需求模型之间的关系进行智能识别和建模时,不同的语法和语义则会阻碍建模过程.如何基于需求文档,采用机器学习或深度学习技术对不同需求模型之间的关系进行识别、分类和定义,是在进行智能需求建模时必须要解决的难题.此外,对于具有动态特征需求模型的智能构建,例如过程模型和状态模型[19,41,63],目前的研究工作有所缺失.其原因在于,相比静态模型通常只需提取对象、动作、对象之间的关系[28,95,99],动态需求模型还需要提取动作之间的时序逻辑.该问题在单个句子的知识提取时较易解决,但是在提取跨句子的时序逻辑时会变得非常困难,尤其是面对没有任何格式限制的需求描述文本[95].因此,构建集成式需求模型时既需要关注功能需求和非功能需求,也需要关注静态需求和动态需求.
当前很多软件都部署在开放的、异构的网络中,如信息物理融合系统、自适应系统等,其系统所处的上下文环境会经常发生变化.需求模型在构建后,由于用户需求和上下文环境的变化会导致初始构建的需求模型并不能满足后续设计和开发的要求.因此如何进行动态化的需求建模[105-106],根据上下文环境和需求文本的变更记录智能识别出需要修改的模型元素并完成需求模型的自动演化,也是当前迫切需要解决的问题.
6.2.2 其他软件工程活动关联
需求工程作为软件工程的起始阶段,其所包含的诸如需求获取、需求建模、需求分析等活动的主要目的是为后期软件工程活动(如设计、实现、追踪、测试)奠定基础.而目前智能需求获取与建模所涉及的方法大多只专注于需求工程[23-26,38-39,43-44,46,48-49,53,55,59-61,64,66-67],对于与其他软件工程活动的关联缺少深入的挖掘和分析,这就导致提取和分类好的需求知识以及构建的需求模型与后续软件工程活动有所脱节,影响了智能需求建模相关技术在实际项目中的应用.如何深入挖掘智能需求获取与建模相关技术、方法、产出与其他软件工程活动如架构设计、详细设计、系统实现、代码追踪、自动化测试的关系,从而反向优化需求知识提取、需求知识分类和需求模型构建的方法和过程,是当前需要解决的关键问题.
6.2.3 需求知识分类的粒度问题
需求知识分类也是实际应用面临的一个技术难点.现有需求知识分类的粒度较粗,虽然能为需求优先级划分、需求管理提供帮助,却难以满足后期构建精准模型的需要.例如,目前在进行非功能需求知识分类时,大多只关注非功能需求类别(如性能、安全性、可靠性等)的识别,对于每种非功能需求分解后的属性或指标(如并发量、响应时间等)却没有形成更进一步的分类和映射,这就导致在进行多层次的需求建模(如目标模型、特征模型)时无法实现精化的过程.
6.2.4 需求数据集的保密性、完整性和规模问题
目前已公开的数据集包括PROMISE的软件需求库和分类库[110]、SemEval-2014的需求库[111]、休斯顿大学的课程注册系统(CRS)需求文档集[112]、兰卡斯特大学的健康监护系统(HWS)需求文档集[113]等.如何全面地构建数据集是智能需求建模中的技术难点之一.原因在于:1)数据集不公开[76,93].一方面,数据的保密性导致其他研究者无法直接获得数据集,限制了对于更复杂应用场景的实验;另一方面,数据的保密性[72]也导致案例研究时所采用的数据集缺乏代表性,故在方法的准确性和实用性验证上略显不足.2)数据集不完整[64].通常表现在数据集只包含了需求描述,缺少与之对应的需求知识元素、需求分类类别和需求模型数据.例如在CRS,HWS和SemEval-2014需求库都存在类似的问题,导致研究人员在应用机器学习和深度学习技术时缺乏训练集.3)数据集规模有限[26,34,80].Rahman等人[93]认为在实验中缺乏大型的公开数据集,限制了对更复杂场景的实验.大多数数据集的规模只适用于学术研究,极少能真正应用到工业案例上.很多涉及机器学习和深度学习技术的文献提到了现有数据集存在的上述问题,并希望在未来的工作中将提出的新技术新方法应用于更大规模的工业实践项目中.
6.2.5 需求模型评估指标的建立
评估指标的全面化和标准化对需求模型的智能构建有着至关重要的影响.评估指标的建立难点在于标准数据集的缺失和需求模型的多样性[41,55,94,107].目前软件工程领域尚无专门针对需求建模的标准数据集,包括需求文本集和与之对应的需求模型集.标准训练集和测试集的缺失使得研究人员在评估自己的方法时,只能通过各自的渠道获取不同的数据集[82-85],最后根据领域专家自建标准或其主观评价计算出评估结果[62,97],从而导致评估结果的主观性加大,影响对于方法的客观判断.而需求模型的多样性[41,94,97]则决定了无法采用单一的方法对所有类型的模型进行评估.因此,根据不同需求模型设计不同的模型评估算法,同时建立领域内的训练集和测试集,成为智能需求建模评估中的一大难题.
6.2.6 缺乏智能需求获取与建模工具支持
现有研究表明,智能需求工程的研究工作中大多缺乏可视化的工具支持[26,41,76],已经开发出的工具包括REAssistant[48],EA-Analyzer[74],Visual Narrator[97]等,然而这些工具有些仅支持需求知识提取这一步骤,有些则支持的需求模型种类非常有限[48,74].由于用户在描述需求时可能采用不同格式的描述方法,如用例[49]、用户故事[72]等,在设计和使用工具时考虑需求文档的异构性或系统的应用领域[66]是必须要解决的问题.此外,如何设计出同时涵盖需求知识提取、需求知识分类和需求模型构建3阶段的工具集仍然需要进一步研究.
6.3 解决思路
针对6.1节和6.2节所总结的科学问题和技术难点,本节阐述这些问题的可能解决思路和未来发展趋势.
6.3.1 基于深度学习的需求模型构建研究
近年来,多项研究证明,深度学习技术在应用到自然语言处理和分类问题上可以取得更好的效果[26,93].在目前基于深度学习的自然语言处理技术中,与传统的神经网络CNN,LSTM不同的是,EMLO[114],BERT[27],XLNet[115]等都是根据具体的上下文关系来判断当前单词或文本的语义.这些新兴的深度学习技术不仅可以在跨句子场景下学习关于时间声明的复杂约束,克服目前动态模型构建的困难,还可以较好地解决需求频繁变更的问题,即使变更的范围很小,上述技术仍然可以捕捉到其变动的语义信息,准确获取变更后的需求文本信息.对于上述已预训练好的模型,其本身就能较好地做到泛化性,能够适合不同语料库和不同语义的需求模型.对于深度学习中经常出现的数据不足问题,在有监督的学习方法中可以考虑使用数据增强的方法来扩展不足的数据.同时半监督学习也是一个很好的方法,因此使用新的神经网络模型并与已有的信息检索、文本分析技术进行结合将是智能需求建模的方向之一.对于需求工程领域训练集的小数据特征问题,可采用基于transformer的预训练模型,transformer拥有更强的抽取特征能力,预训练模型可以利用大量的外部语料信息,使模型的效果更好.
6.3.2 智能需求工程对其他软件工程活动的影响研究
智能需求获取与建模方法和产出与其他软件工程活动紧密相关.需求知识提取和分类除了能为模型构建提供建模元素,还可为后续的代码追踪、代码补全、API推荐等一系列软件开发活动提供帮助.例如,代码注释或者代码本身的语义信息非常丰富,通常表示了与之提供的功能、服务或与之对应的实体、对象等,因此,将现有的基于人工智能技术的代码追踪[116]、代码补全[117]、API智能推荐技术[118]与基于文本分析、机器学习、深度学习的需求知识提取和分类方法相结合,利用新的应用场景帮助选择和优化需求文本的特征,能够将智能需求获取与建模推向一个新的阶段.
此外,需求知识提取和分类可以提高大规模需求优先级排序的效果和效率.例如,从用户评论中提取的需求通过TF-IDF,SVM,BiLSTM,CNN等组合方法进行不同等级的重要性分类,再聚类,然后结合已有的推荐算法对需求优先级进行自动化排序,为实际项目开发中遇到的任务分解和任务排序提供新的解决思路.
通过智能方法构建的需求模型能够指导软件设计,而软件系统架构设计和详细设计也能对需求模型构建产生一定的影响.通过归纳总结多个领域不同类型的系统的常用设计风格、设计模式、设计策略和设计模型,建立系统设计相关数据集,采用机器学习或深度学习方法提取其对应的功能需求和非功能需求特征,指导需求建模阶段的模型选择,从而弥补智能需求工程与软件设计之间的鸿沟.
6.3.3 智能分类和模型构建的精化方法研究
安全性需求是当前关注较多的非功能需求,专门针对安全性需求的智能提取、分类和模型构建已有一些研究.除安全性需求外,还有很多非功能需求需要得到进一步的挖掘,如性能、可靠性、易用性等.首先需要对已公开非功能需求的数据集进行改进.由研究人员通过调查问卷等方式调研实际项目中出现频率较高的非功能需求种类及其属性,参考安全性需求的已有研究成果,形成新的划分粒度更细的非功能需求数据集.然后采用目前效果较好的SVM,LSTM,CNN等对其进行分类,再结合能实现具有精化语义的建模语言如NFR框架、KAOS等方法,实现非功能需求模型的自动化分解,并将非功能需求属性与这些建模语言中的元素进行映射,形成非功能需求知识智能提取、分类和建模过程的统一.
6.3.4 需求数据集构建方法研究
智能需求获取与建模中所使用的数据集被分为训练集和测试集,其中训练集应包含大量的采用自然语言描述的需求文档以及由领域专家已经获取并经过多人验证的需求知识元素、需求分类类别和需求模型,并且每个需求文档对应的模型类型应包含如特征模型、目标模型等多种模型.为更有效地进行智能建模,解决上述在需求建模过程中存在的问题迫在眉睫,可以考虑的解决思路有:1)针对目前数据集的不公开问题,对已经经过多次实验验证的开放数据集按照应用场景和领域进行归类、整理、扩展,分别建立有标注和无标注的训练集,以便研究者采用不同的机器学习和深度学习方法进行研究,包括有监督、无监督或半监督的学习方法,并在互联网上共享数据集,这能在一定程度上解决由于数据不公开导致的问题;2)针对数据集不完整的问题,为已公开的需求文本数据集构建相应的需求模型、需求类别,形成标准的需求文本与需求模型、需求类别映射的数据集;3)针对数据集的规模问题,可通过学术界提供研究方法、工业提供数据集以供实践,两者展开合作,以扩大数据的实用性和方法的可信性.对数据集构建的一系列处理,将会减小由数据集缺陷对实验造成的影响,进一步增强智能需求建模方法的可行性和可验证性.
6.3.5 基于图论的自动化模型评估方法研究
近年来,在图论领域,已有研究者提出自动化测试图形化模型准确性的算法[119],首先将源模型和目标模型进行抽象,通过计算抽象后的源模型与目标模型的编辑距离,获得可被量化的准确性度量结果.这些图论算法可以为智能需求建模方法的有效性评估提供解决思路.同时,针对不同的需求模型,可为其构建不同的模型评估策略并设计相应的评估算法.在评估指标方面,综合已有的评估指标并进行细化,考虑需求建模的不同阶段,提出有针对性的分阶段的评估指标.
6.3.6 需求建模数据集的自动化标注方法研究
在实际项目中,面对大规模的工程数据,实现智能需求建模仍然面临许多技术难题,解决这些难题从4方面开展研究工作:1)研究大规模需求文本和需求类别、需求模型数据集的自动化标注技术,尽早实现大规模标准数据集的构建;2)引入更先进的机器学习和深度学习技术,设计并开发出适合在项目实践中所使用的智能需求获取与建模方法;3)建立智能需求获取与建模方法有效性以及需求模型准确性的评估方法,推进智能需求建模向更统一、更实用的方向发展;4)开发更先进、更快速的智能需求获取与建模工具,支持不同格式、不同语言的需求描述文本.
7 总 结
近年来,人工智能技术由于其广泛的应用性,在各个领域均取得了重大研究成果.本文围绕人工智能技术在需求获取与建模上的应用,采取综述的方式,从需求知识提取、需求知识分类、需求模型构建3个方面,梳理并总结了当前的研究进展.本文归纳了当前智能需求获取与建模的关键问题和技术难点及未来展望.根据系统的综述表明:1)智能需求获取与建模的相关研究数量正在增加;2)NLP是需求知识提取中常用到的技术;3)LDA、朴素贝叶斯、SVM、CNN、LSTM、GRU等智能技术已被广泛应用于需求知识分类上,并取得显著进展[120];4)在需求模型构建方面,目前大多数方法仍然集中在传统的基于规则的模型生成方法和基于机器学习的方法,研究者们尚未探索将更先进的深度学习技术应用到模型的自动化生成上;5)大多数需求知识提取和需求建模研究中关注的是功能需求.随着应用技术的增加,越来越多的文献开始研究非功能需求的挖掘和分类问题.