彭釗



摘要:一個需求規(guī)約中的某一個需求發(fā)生變更有可能使得整個需求規(guī)約都發(fā)生變化,為了維護需求規(guī)約的正確性和一致性,我們需要分析一個需求的變更對另外的需求產(chǎn)生影響的可能性以及產(chǎn)生怎樣的影響,這便是需求變更影響分析。常見的需求文本通過自然語言描述。本文基于自然語言描述的方式。結(jié)合已有的NLP(Natural Language Processing,自然語言處理)技術(shù),給出一種定量的需求變更影響分析方法,通過這種方法,本文可以分析某個需求的變更對其他需求產(chǎn)生影響的可能性。
關(guān)鍵詞:需求變更影響分析;需求描述;自然語言處理;需求變更傳播;變更傳播條件
中圖分類號:TP311 文獻標識碼:A 文章編號:1007-9416(2020)03-0209-03
0 引言
據(jù)調(diào)查,Ebert等人在文獻[1][2]分析得出,一個時長兩年的項目通常情況下會有多于30%的需求發(fā)生變更。
對于不同的需求描述方法,應采用不同的需求變更影響分析方式,例如對于形式化語言描述的需求,首先要建立和推導需求之間的依賴關(guān)系,然后通過依賴關(guān)系來實現(xiàn)需求變更分析。
本文基于自然語言描述的需求文本,通過現(xiàn)有的NLP技術(shù),給出一個自動識別需求變更的方法,定義一個變更傳播條件的語法;分析并給出定量的需求變更影響分析方法的過程,然后通過一個案例來說明該方法的可行性。其他章節(jié)安排如下:第1節(jié)主要講述需求變更影響分析的研究現(xiàn)狀,并給出本文方法的流程圖。第2節(jié)主要給出本文中的對需求的自然語言處理過程,并給出一個算法用于自動識別。第3節(jié)給出相關(guān)案例來說明方法可行性;第4節(jié)是總結(jié)與展望。
1 相關(guān)工作
Goknil等人在文獻[3]中給出了一種基于形式化語言描述的需求變更影響分析方法,該方法通過建立需求之間的依賴關(guān)系,把需求變更分為6個類型,并根據(jù)謂詞邏輯給出了該方法中的需求和需求變更類型的形式化描述。文獻[4]介紹了工具TRIC的詳細描述和使用方法。David等人在文獻[5]中給出了一種基于SysML需求模型的需求變更影響分析方法。Kurtev等人在文獻[6]中給出了一種基于規(guī)則的需求變更影響分析方法,該方法主要是分析需求變更對系統(tǒng)體系結(jié)構(gòu)產(chǎn)生的影響。以上方法均為形式化語言描述的需求。
通過對自然語言加工處理達到消除二義性的目的,我們把這個過程稱為自然語言處理(Natural Language Processing),自然語言處理技術(shù)在需求工程中有著很廣泛應用,例如文本分塊,詞性標識以及相似度檢測等,在文獻[7][8]中,自然語言技術(shù)用于處理不一致性問題;在文獻[9]中,NLP用于需求可追蹤性的驗證。
對于需求描述中每個自然語句,本文通過已有的技術(shù)作自然語言處理,以自然語言的短語層次為基礎(chǔ),自動識別需求變更,并定義新需求變更的傳播,給出傳播條件的語法模板,最后通過引入二部圖匹配的方法來給出需求變更影響的定量計算過程。
2 基于自然語言的CIA方法描述
2.1 方法概述
圖1概述了本文的方法:
步驟一:對自然語言描述的需求文本做文本分塊處理(Text-chunking),本文把所研究的自然語言分為3個層次:語句,詞組,符號。本文選擇在詞組層次上來對需求變更進行分析,因為在語句層次上分析過于復雜,而在符號層次上分析對于預算、時間的消耗會增加很多。
步驟二:當某個需求發(fā)生變更時,把該變更從自然語言語句層次同步到詞組層次。經(jīng)過處理后的短語層次級別文本需求會出現(xiàn)之前并不存在的符號,在該步驟中我們需要通過一個自動檢測算法來自動識別并捕獲變更。
步驟三:分析的是需求變更會對需求規(guī)約中的其他需求產(chǎn)生影響的可能性以及產(chǎn)生怎樣的影響。
步驟四:基于給定的需求變更和文中定義的傳播條件語法規(guī)則,得到潛在的受變更影響的需求集。
2.2 需求文本的自然語言處理過程
文本分塊技術(shù)(text chunking)是最常用的自然語言處理技術(shù)之一,通常用來對自然語言作詞性劃分,詞組提取,層次劃分等,其核心思想是以詞性分類為基礎(chǔ)把自然語句分為互不重疊的部分,該過程可通過開源工具OpenNLP chunker來完成。名詞短語和動詞短語是一個自然語句必不可少的部分,因詞我們可以通過合并的方法,把其他詞性的短語合并到名詞短語或者動詞短語里面,這樣通過文本分塊的一個自然語句便只由名詞短語和動詞短語以及少量的介詞短語構(gòu)成。
圖2描述了自然語言處理的全過程,其具體步驟如下所示:
(1)對于給定的自然語言描述的需求規(guī)約,基于開源工具Open NLP chunker,通過文本分塊技術(shù),獲得只包換NP和VP的短語層次結(jié)構(gòu)的需求描述。
(2)給定需求變更,通過本文設計的自動檢測算法,在初始的需求集的基礎(chǔ)上,完成需求變更的自動識別過程,并輸出增加或者刪除的短語。
2.3 短語層面的需求變更捕獲
如圖3是本分所提出的自動檢測算法,通過該算法可以海鮮變更檢測的自動化。需求變更發(fā)生后,需求文本大致可分為3個區(qū)域:育雛室需求相同的區(qū)域;有刪除部分的區(qū)域;有增加部分的區(qū)域。該算法通過分析詞組和文本變更區(qū)域之間重疊的部分,自動獲得變更的詞組以及它們的注釋,算法的輸入是初始的需求集和變更的需求,輸出是一個詞組以及詞組對應的注釋類型。
2.4 變更的傳播條件
在此引入一個概念:需求變更的傳播。幾乎在所有需求變更影響分析方法中都會涉及到需求變更傳播,例如在文獻[4]中,Goknil等人給出了變更傳播的定義:基于初始的變更集,推導出可能出現(xiàn)的新的變更。
傳播條件的作用在于控制需求變更傳播的選擇,即某些需求我們不想讓它受到變更影,那么它就一定不會受到變更影響;
當需求工程師需要某些需求受到變更影響時,那么它一定會受到變更影響。
傳播條件的作用在于控制需求變更傳播的選擇,即某些需求我們不想讓它受到變更影,那么它就一定不會受到變更影響;
當需求工程師需要某些需求受到變更影響時,那么它一定會受到變更影響。
我們定義下述語法來表示變更傳播條件:(如圖4)
由上述語法可以看出,需求變更傳播條件由一個或者多個布爾表達式構(gòu)成,表達式既可以是原子表達式也可以是復雜表達式,復雜表達式是由布爾運算符遞歸構(gòu)成,原子表達式在自然語言總可以是詞組或者符號。
2.5 需求變更影響的定量分析
本文方法中最后一步需要用到相似度匹配技術(shù),給定一個傳播條件φ,函數(shù)M(j,R)的值用來衡量需求R受到與傳播條件φ相關(guān)的變更的影響,這個值越大,M值介于0和1之間,本文方法中有兩個地方需要用到相似度匹配,首先要把傳播條件和需求規(guī)約中的其他需求做相似度匹配,匹配值越高,則說明受到變更影響的可能性越大。其次要把潛在的受變更影響的需求集與初始的需求集做相似度匹配,匹配值越高,則說明受變更影響程度越小。
如果傳播條件是一個pos-token,對于pos-token t和需求R,如果R包含t,則M值默認為1,如果相反,v包含R,則M值默認為0。匹配算法的核心是計算pos-phrase的匹配值,對于一個給定的positive短語p,我們計算M(p,R)的步驟如下:
(1)[t1…tn]表示pos-phrase的詞組包。p1..pk表示需求R的短語集合,[t1'…tm']表示需求R短語中的詞組包。構(gòu)造一個二部圖G,其中節(jié)點的第一部分和第二部分別為上述兩個包。
(2)我們用一條加權(quán)邊把每一組(t,t')∈[t1…tn]×[t1'…tm']連接起來,權(quán)重由3.2中的三種相似度函數(shù)計算策略來決定。當把加權(quán)邊添加到二部圖G上時,我們就得到了一個全權(quán)重二部圖。
(3)我們可以得出p和R的匹配值的計算公式;
M(p,R)=2×
其中Q=二部圖中最佳匹配策略中的所有邊的權(quán)值之和;
其中N1表示p中所有符號之和,N2表示從需求R中匹配的符號之和,N3表示需求R包含在二部圖中最優(yōu)策略邊的符號數(shù)目之和。
3 案例WASP系統(tǒng)
本文基于一個WASP(3G mobile service platform)系統(tǒng)以及開源工具NARCIA通過文中方法的4個步驟,得出一系列實驗數(shù)據(jù),包括短語集,符號集,變更傳播條件,潛在的受變更影響的需求集,以及定量的需求變更影響分析的結(jié)果(根據(jù)匹配值對需求描述進行的排序)。
WASP系統(tǒng)一共包含了72個自然語句需求,經(jīng)過NLP處理過程后,有267個短語,263個符號:
由表1結(jié)果可以看出同一個需求集可以同時受到兩個不同的需求變更的影響,同樣也有可能與2個不同形式的傳播條件相關(guān)聯(lián)。
4 結(jié)語
本文提出了一種基于自然語言描述的需求變更分析方法,通過已有的自然語言處理技術(shù)——text chunking,將自然語言描述的文本需求轉(zhuǎn)化為以短語結(jié)構(gòu)為基礎(chǔ)的自然語句,給出特定的需求變更,通過文中所給出的算法,自動檢測需求變更在短語層次上的實現(xiàn),并根據(jù)設計了一系列需求變更傳播條件的語法模板,根據(jù)該模板給出相應的變更傳播條件,最后再利用NLP中的相似度計算得出此需求變更對于需求規(guī)約中其他需求產(chǎn)生影響的可能性大小。
但是本文提出的方法相比于傳統(tǒng)方法也有一定的缺陷,對于自然語言描述的需求,一旦需求規(guī)約條數(shù)達到一定程度,排序列表的生成會耗費極大的執(zhí)行時間,變更傳播條件需要根據(jù)變更以及語法手動推導而出,不支持自動獲取變更條件,這是與傳統(tǒng)的形式化方法研究需求變更影響分析所不足的地方,相比與傳統(tǒng)的形式化方法,本文方法的優(yōu)點在于不需要耗費大量的時間和財力來提前建立需求間的依賴關(guān)系。
參考文獻
[1] Ebert C.Understanding the product life cycle:Four key requirements engineering techniques[J].IEEE software,2006,23(3):19-25.
[2] Ebert C,De Man J.Requirements uncertainty:influencing factors and concrete improvements[C]//Proceedings of the 27th international conference on Software engineering,2005:553-560.
[3] Goknil A,Kurtev I,Van Den Berg K,et al.Change impact analysis for requirements: A metamodeling approach[J].Information and Software Technology,2014,56(8):950-972.
[4] Goknil A,Kurtev I,Klaas V D B,et al.Change impact analysis for requirements:A metamodeling approach[J].Information & Software Technology,2014,56(8):950-972.
[5] Hove D,Gknil A,Kurtev I,et al.Change impact analysis for SysML requirements models based on semantics of trace relations[C]//Proceedings of the 5th ECMFA Traceability Workshop.2009.