汪 燁 陳駿武 夏 鑫 姜 波
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 智能需求獲取與建模的一般步驟
本節我們主要介紹智能需求獲取與建模的一般過程框架.通過對相關文獻的總結,我們將智能需求獲取與建模過程歸納為3個步驟,如圖5所示.
1) 需求知識提取[28].通過自然語言處理、機器學習、深度學習等技術從項目文檔、記錄、用戶評論和用戶請求中提取相應的需求知識,作為后續模型構建的基本元素.
2) 需求知識分類[38-39].采用支持向量機(support vector machine, SVM)方法、長短期記憶網絡(long short-term memory, LSTM)等技術對不同種類的需求知識進行分類,幫助開發人員更好地改善系統,明確系統所需完成的目標,為模型構建提供幫助.
3) 需求模型構建[30].根據已提取或已分類的需求知識元素,分析需求關注點,結合Markov鏈、貝葉斯網絡、基于規則的模型構建等算法自動化地構建模型.
根據我們的調研和總結,在需求知識的智能提取和分類方面,早期應用的技術以自然語言處理和信息檢索技術為主,包括文本預處理、術語權重和相似度計算等方法,后期采用的較多方法是將機器學習與自然語言處理技術結合,近2年來深度學習技術也被嘗試著應用到需求知識的提取和分類中.在需求模型的智能構建方面,早期以基于規則和依賴分析的模型構建方法為主,近年來基于數據挖掘和機器學習的方法逐漸興起,并取得了不俗的成果.本文分別介紹了上述3個步驟所采用的技術和方法.
軟件需求明確定義了軟件應該“做什么”的問題,通過訪談、問卷等方法從用戶獲得并記錄的需求文本大多采用自然語言描述,采用人工方法從大量的自然語言描述文檔中提取需求知識將耗費巨大的時間和人力成本.因此,越來越多的需求工程研究人員致力于將LDA(latent Dirichlet allocation)[40],BiLSTM(bi-directional long short-term memory)[26]和CNN(convolutional neural networks)[41]等人工智能技術應用于需求知識元素的提取,不但大幅降低提取時間成本和提高提取效率,而且提高了知識提取的準確性.下面將重點介紹這些技術在需求知識提取步驟的應用,根據提取方法的種類,我們將其大致分為2類:(半)自動化的自然語言處理方法和基于人工智能的需求知識提取方法.前者偏向對需求文本做語法、語義層面的分析和計算;后者雖然也會采用文本分析方法,但是更側重于采用機器學習和深度學習技術從文本中挖掘有用的需求信息.
目前需求描述和記錄方式大多為用例、用戶故事、功能列表等由短文本構成的結構化形式[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支撐工具
自動化或半自動化自然語言處理方法通常僅能提取出顯式的需求知識,對于語句中所包含的隱式需求則很難獲取.鑒于機器學習和深度學習在挖掘隱藏信息上的優勢,近年來越來越多的研究者們嘗試著采用人工智能技術提取需求知識,包括較早嘗試的貝葉斯網絡[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.1節和2.2節的自然語言處理技術和機器學習等技術,還有研究學者們應用其他自動化技術進行需求知識提取,包括:基于樹結構的提取方法和基于抽取規則的提取方法等.劉偉等人[77]為了從Web網頁中提取出用戶評論,提出一種基于深度加權的樹相似性算法和DOM樹方法,該方法在一定程度上解決了由不同用戶撰寫評論的風格不統一帶來的知識提取問題.李天潁等人[78]基于自定義的抽取規則,從需求文本中提取出有用的關系信息,在實驗的結果上充分體現了其優勢,同時,該抽取關系的方法易擴展,應用廣泛.胡甜媛等人[79]為了在用戶評論中挖掘有價值的使用反饋,對評論種子進行定義,并通過抽取規則挖掘出與之類似的有用用戶反饋,該方法適用于用戶評論數據量大、更新快速的語料庫.但目前的方法面對復雜的用戶評論時,在完備性上略顯不足.
需求知識分類可以提高對構建某類模型所需元素的關注度,減少建模工作量,提高需求建模的效率.根據在分類過程中所使用的技術,按照時間順序,我們將其分為基于信息檢索的分類方法、基于機器學習的分類方法和基于深度學習的分類方法.
Cleland-Huang等人[80]提出了一種基于信息檢索的方法,對非功能需求進行自動檢測和分類.該方法首先從設計文檔中識別出非功能需求的指標術語,然后通過計算術語與需求關鍵詞之間的相似度對非功能需求進行分類.賈一荻等人[81]提出了一種基于語義距離和特征詞相似度的計算方法,將非功能性需求語句自動劃分為安全性、可用性、性能、可靠性、可維護性這5類,便于后期針對不同種類非功能需求的架構設計.基于信息檢索的方法減少了需求分析人員的工作量,但此類方法適用于需求較為明確的文本,且在很多場景下仍需要人為定義與需求相關的關鍵詞.
為了克服傳統信息檢索技術通過匹配關鍵詞導致的分類精度不高的問題,研究者們對機器學習在需求知識分類上的應用進行了探索.基于機器學習的需求知識分類方法與大多采用有監督或半監督的文本分類方法類似[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],如果采用的是半監督或無監督學習方法,需要標記的訓練數據會大大減少,學習效率更高.但是機器學習方法在模型的學習過程中,對于不同領域的相同任務其特征工程可能大不相同,導致其效果通常與適用場景緊密相關,尤其在目前需求分類尤其是功能需求分類缺少公開數據集的情況下,很難驗證上述方法在不同領域的有效性.
隨著人工智能技術的發展,能夠捕捉特征的上下文、對向量化數據具有高可計算性的深度學習技術進入了研究人員的視線,并被迅速應用到需求知識分類上.基于深度學習的需求知識分類方法在特征提取階段可以采用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 智能需求知識分類方法
需求模型構建是將抽象化的需求知識進行重組和結構化的過程.目前需求模型構建主要采用的2種自動化技術:基于規則的模型構建方法和基于機器學習數據挖掘的模型構建方法.
基于規則的需求模型構建方法是較為早期使用的一種自動化模型構建方法,主要通過構建自定義的模型生成規則,幫助模型構建.
Arora等人[94]提出了一種整合已有文獻中的提取規則方法,并對這些規則進行擴展后形成新的模型生成規則,自動化生成領域模型.利錦標等人[28]采用自定義的語義框架,自動構建類圖模型,并添加智能問卷系統,實現對模型的豐富和完善.Sagar等人[59]設計了類、關系、屬性和操作相關的規則,根據已經提取的知識元素生成構建概念模型.針對目標模型和用例模型,Nguyen等人[95]開發了一種新穎的基于規則的方法,可以從自然語言需求文檔中自動生成目標和用例模型,解決了人工識別目標和用例的問題.
研究人員也開發了一些支持工具對規則進行定義或封裝.Deeptimahanti等人[96]開發了UMGAR工具,定義了一組語法重構規則,將復雜需求轉換為簡單需求,同時生成UML用例模型和類模型等.Lucassen等人[97]開發了Visual Narrator工具,該工具對用戶故事進行句法分析提取知識元素后,封裝了11種啟發式規則用于定義實體及其關系,可以自動化生成概念模型.Miranda等人[98]開發了LUCAMTOOL工具并定義了一種新的領域特定語言LUCAM,規范了用例文本的描述格式,自動化生成用例圖、類圖和序列圖.此外,TRAM工具[99]、RADAR工具[100]可以分別將文本需求轉換成分析類模型和目標模型.這些工具的應用極大提高了需求模型構建的效率,但是在準確度上仍有待提高.
基于規則的需求模型構建方法在生成不同的需求模型時,大多需要人為設計術語與模型元素之間的映射關系和算法,嚴重受制于規則設計的完整性和準確性,且在應用于復雜場景時,效率和準確性有待提高.
目前需求模型構建采用的機器學習或數據挖掘技術主要包括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對需求模型構建方法進行了匯總,主要包括使用的技術或方法、構建的需求模型和需求類型等方面.
在智能需求獲取與建模的工作中,研究者需要對提出的模型進行案例研究和實驗驗證,并通過一系列不同的評估指標對模型的性能和有效性進行評估.
案例研究(case study)是指將研究成果應用到某一特定的個體、單位、案例或主題從而驗證研究方法的過程.對于本文,案例研究是指針對智能需求獲取與建模方法的偏差行為進行深入研究的過程,旨在了解這些方法的有效性.案例研究在目前的智能需求獲取與建模評估方法中使用較多[16,41-42,59-60].
Kumar等人[32]為了驗證其構建的可靠性模型,在30個Java開源項目上進行實驗,發現其預測模型的效果較為優異.Rago等人[48]為了驗證其開發的REAssistant工具的語義分析性能,對3個需求規范進行了案例研究.Cleland-Huang等人[80]為了評估非功能性需求的自動檢測和分類方法,對西門子物流系統的需求文檔進行了案例研究.Lucassen等人[97]為了驗證其開發的工具,將其應用于現實項目中的4個數據集以評估方法的可行性和準確性.案例研究方法能夠較好地證明智能需求獲取與建模新方法在實際項目開發中的應用價值,但是卻難以判斷新方法相比其他方法的優越性.
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種算法進行對比實驗.通常,研究者們在做案例研究或者實驗時會組合使用交叉驗證和對比驗證,以便更準確地評估新方法.
為了量化評估智能需求獲取與分類方法的有效性,研究者們提出了不同的評估指標.這一節將詳細闡述在該領域研究中常用的評估指標,包括準確率(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 智能需求獲取與建模方法的各項指標對比
結合人工智能技術的需求獲取與建模近年來獲得了大量研究者的關注,取得了很多突出的進展,但仍然存在一些亟待解決的關鍵問題.本節將從科學問題、技術難點和工程實踐3個方面闡述目前該領域存在的問題.
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.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.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)開發更先進、更快速的智能需求獲取與建模工具,支持不同格式、不同語言的需求描述文本.
近年來,人工智能技術由于其廣泛的應用性,在各個領域均取得了重大研究成果.本文圍繞人工智能技術在需求獲取與建模上的應用,采取綜述的方式,從需求知識提取、需求知識分類、需求模型構建3個方面,梳理并總結了當前的研究進展.本文歸納了當前智能需求獲取與建模的關鍵問題和技術難點及未來展望.根據系統的綜述表明:1)智能需求獲取與建模的相關研究數量正在增加;2)NLP是需求知識提取中常用到的技術;3)LDA、樸素貝葉斯、SVM、CNN、LSTM、GRU等智能技術已被廣泛應用于需求知識分類上,并取得顯著進展[120];4)在需求模型構建方面,目前大多數方法仍然集中在傳統的基于規則的模型生成方法和基于機器學習的方法,研究者們尚未探索將更先進的深度學習技術應用到模型的自動化生成上;5)大多數需求知識提取和需求建模研究中關注的是功能需求.隨著應用技術的增加,越來越多的文獻開始研究非功能需求的挖掘和分類問題.