彭釗 杜天保
摘要:需求的變更影響分析過程無論是對于降低系統(tǒng)維護的代價或者是保證系統(tǒng)對變更需求正確的實現(xiàn)都有著至關(guān)重要的意義。已有的變更影響分析的研究主要存在兩個方面的問題:一方面,當(dāng)前的有關(guān)需求變更影響分析的研究主要側(cè)重于需求到代碼之間的變更影響分析,缺乏需求與需求之間的變更影響分析的研究。另一方面,傳統(tǒng)的方法大多數(shù)是基于需求文檔描述做研究,缺乏需求間關(guān)系的語義,在作變更影響分析時,會導(dǎo)致大量的變更影響誤報,從而忽略了實際的變更影響。為了解決以上這些問題,本文提出了一種基于一階邏輯的變更影響分析方法。設(shè)計一個只包含需求追蹤關(guān)系信息實體的需求元模型,基于該模型設(shè)計一種變更分類方法,并基于一階邏輯給出需求間關(guān)系以及每種變更類型的形式化語義,自動實現(xiàn)需求模型中變更的傳播。并通過一個實驗來說明本文方法的可行性。
關(guān)鍵詞:需求間變更影響分析;一階邏輯;形式化語義;可追蹤性
中圖分類號:TP311? ? ?文獻標(biāo)識碼:A? ? ? ? ? 文章編號:1007-9416(2020)04-0000-00
0? 引言
據(jù)調(diào)查,軟件系統(tǒng)開發(fā)的預(yù)算中有85%到90%被用于軟件系統(tǒng)的管理和維護,而這其中有50%被用于軟件系統(tǒng)的變更管理[1]。Ebert等人在文獻[2]和文獻[3]中通過調(diào)查得到一個結(jié)論:一個周期為一年的軟件開發(fā)項目,就會有多于40%的需求發(fā)生了變更。為了盡可能的減少軟件開發(fā)成本,需要盡早在軟件開發(fā)周期中對變更進行管理。如圖1為軟件系統(tǒng)的變更管理和維護過程。
變更影響分析是指:基于引入的需求變更,確定變更潛在的后果,并對系統(tǒng)中需要更改的其他元素做出預(yù)測[4]。變更影響分析無論是對引起變更需求的實現(xiàn)還是對評估系統(tǒng)變更后的風(fēng)險都十分重要[4]。
Bohner等人在文獻[5]-[7]中列出了軟件系統(tǒng)開發(fā)過程中所有可能受變更影響的元素,他提出一個概念叫作“變更影響爆炸(the explosion of impacts)”。
需求間的變更影響爆炸:由于缺乏需求間關(guān)系的語義,需求工程師必須對需求文檔中的每個需求都進行分析,因此會造成變更影響爆炸從而忽略實際的變更影響。
在安全關(guān)鍵的嵌入式軟件中,需求變更影響分析有著重要的意義。ISO-26262和安全標(biāo)準(zhǔn)IEC-61508中對需求變更影響分析都有相應(yīng)的要求[9][10]。需求變更影響分析的不完整有可能致使系統(tǒng)功能出現(xiàn)故障或者失效。
本文提出一種基于一階邏輯的需求間變更影響分析方法,該方法基于一階邏輯符號系統(tǒng)對需求間關(guān)系給出一個形式化語義,保證了需求間變更影響分析的有效性和準(zhǔn)確性。
本文的具體章節(jié)安排如下:第1節(jié)介紹了需求間變更影響分析的國內(nèi)外相關(guān)研究現(xiàn)狀;第2節(jié)介紹需求間變更影響分析及一階邏輯相關(guān)理論基礎(chǔ);第3節(jié)詳細(xì)介紹了基于一階邏輯的需求間變更影響分析方法過程;第4節(jié)用一個案例說明本文方法的可行性;第5節(jié)是結(jié)束語。
1 相關(guān)工作
目前,學(xué)術(shù)界對需求變更影響分析做了大量的研究。從變更影響分析過程中的影響集的角度出發(fā),變更影響方法可分為基于可追蹤性的變更影響分析、基于依賴關(guān)系的變更影響分析和基于工程實驗的變更影響分析[11]。Boher等人在文獻[4]中提供了一種基于可追蹤性的變更影響分析方法。文獻[12]使用程序切片技術(shù)提供了一種基于依賴關(guān)系的變更影響分析方法。文獻[13][14]提供了一種基于UML模型的變更影響分析方法。Kilpinen等人在文獻[11][12]出了一種基于工程實驗的方法。
根據(jù)需求變更影響分析是否由人工來完成,又可以將需求變更影響分析方法分為靜態(tài)分析方法和動態(tài)分析方法。靜態(tài)分析方法:文獻[15][16][17]提供了一種面向方面文檔驅(qū)動需求的變更影響分析方法。文獻[18]提供一種基于可達矩陣的變更影響分析方法;動態(tài)分析方法:文獻[19]基于事件的通知機制,通過使用發(fā)布/訂閱模式來實現(xiàn)軟件演化過程中的需求變更影響分析方法。
陳光穎等人在文獻[20]中基于謂詞邏輯和模型驅(qū)動方法,提供一種常見的需求間關(guān)系的形式化語義,并給出需求間隱含關(guān)系的推導(dǎo)規(guī)則。文獻[21]基于SysML的元模型,給定一個需求模型,并在需求模型中定義需求之間的關(guān)系,最后利用文獻[20]中提供的語義和推導(dǎo)規(guī)則,證明了需求變更影響不一致性分析推導(dǎo)規(guī)則。
2 相關(guān)理論
2.1 需求間變更影響分析相關(guān)綜述
在需求變更中,存在以下3個基本概念:
(1)變更源:變更源通常是指軟件系統(tǒng)中最初引入變更的一個或者多個元素。
(2)變更傳播:對于系統(tǒng)中已經(jīng)引入的變更,與這些引入變更的元素相關(guān)的其他元素會出現(xiàn)新的變更,需求工程把這種活動稱為變更的傳播。
(3)受影響集:給定一個或者多個變更源,把這些受到變更影響的元素成為受影響集[22]。
需求的層次內(nèi)(Within-level)可追蹤性是需求間變更影響分析的前置條件。圖2是一個簡單的需求可追蹤性關(guān)系圖:
文獻[23]給出了如下5種常見的需求關(guān)系:
定義2.1五種常見的需求間關(guān)系。
需求關(guān)系(Requires);精化關(guān)系(Refines);包含關(guān)系(Contains); 部分精化關(guān)系(Partially Refines);沖突關(guān)系(Conflicts)。
Goknil在文獻錯誤!未找到引用源。中給出了一個比較精化的需求描述模型,他指出需求是指對系統(tǒng)中一個或多個需要被滿足的屬性的描述,關(guān)系符號和閾值構(gòu)成了需求所要實現(xiàn)的屬性的約束條件,如圖3為Goknil提供的需求描述模型:
2.2 一階邏輯相關(guān)理論
定義2.2模型M在一階邏輯中的定義:
令F為函數(shù)符號,P為謂詞符號集,函數(shù)與謂詞都是n元變量的,n是有限的,則模型M由二元組(F,P)表示,并且由以下的符號項組成:
(1)非空集合A,表示個體詞的取值范圍。
(2)對于任意一個n元函數(shù)f,f∈F,n>0,并且存在映射關(guān)系f^M:A^n→A。
(3)對于任意一個n元謂詞符號集P,P∈P,n>0,并且存在集合P^M?A^n。
下面是公式?在一階邏輯中的形式化定義,該定義通過巴斯克范式表示:
?∷=K(t_1…t_n )|??|(?∧?)|?∨?|(?→?)|?x?|(?x?),n≥1
在上述巴斯克范式中,K是n元的謂詞符號集,x是變量,t_i,i∈(1,n)是函數(shù)集F上的項,?是由右側(cè)的巴斯克范式規(guī)則構(gòu)造出來的任意一個公式。整個公式是一個合取范式(Conjunctive normal form,CNF)的形式,公式的右側(cè)是由原子公式組成的,這些原子公式不包含邏輯連接詞和子公式。對于二元組(F,P)上的任意一個一階邏輯公式?,滿足以下關(guān)系:M?_l ?
即模型M在環(huán)境l下,公式?為真,環(huán)境是指變量集到A的一個映射關(guān)系,其作用是查詢變量取值。
定義2.3需求R在一階邏輯中的定義:
對于一個需求R,在一階邏輯中將其定義為一個二元組
,其中P為需求中的屬性集合,S為滿足屬性的系統(tǒng)的集合,S可看作一個基于一階邏輯的形式化模型M。l是模型M中的環(huán)境,在對需求R的定義中可視為約束條件:
(1)P=?x(p_1∧…?p_n ),n≥1,其中x為變元,p_1到p_n為屬性。
(2)S?_l P(即屬性P在需求R中約束條件為l的時候成立)。
以上便是一階邏輯對需求的形式化定義。
定義2.4基于一階邏輯的需求間關(guān)系的形式化語義:
令R_1 〖,R〗_2,R_3為一個需求模型中的3個需求,二元組P_1,S_1>,
(1)需求關(guān)系的形式化語義:
(2)精化關(guān)系的形式化語義:
(3)包含關(guān)系的形式化語義:
(4)沖突關(guān)系的形式化語義:
(5)部分精化關(guān)系的形式化語義:
3 本文方法概述
3.1? 基于需求間追蹤關(guān)系的需求元模型
本文在通用的Sysml需求元模型的基礎(chǔ)上去掉與需求間關(guān)系無關(guān)的實體,得到了如圖4中的擴展的需求元模型:
3.2? 基于需求描述模型的需求變更類型
基于圖3中給出的需求描述模型以及圖4中給出的需求元模型,本文提供了如表1中需求變更類型:
前五種變更在需求模型中是非常簡單而且明顯的。對于最后一種類型,根據(jù)上述給出的需求描述模型,可以將其分為6個小的部分,給定需求R和R1,屬性property用pt表示,約束條件constraint用ct表示,如表2:
假定對于一個需求R,一個屬性pt,為需求R添加一個屬性pt,且pt總是與需求R總已存在的屬性不相同,從一階邏輯符號系統(tǒng)來說明:即對于新添加的屬性pt,總是存在一個系統(tǒng)集S,S滿足屬性pt且不滿足需求R中的現(xiàn)有屬性。
定義4.1 添加一個屬性:
3.4? 需求變更傳播
需求變更傳播是基于并引入的初始的需求變更,根據(jù)本文所給出變更類型和需求關(guān)系可以推導(dǎo)出可能出現(xiàn)的新的變更。我們設(shè)定一個變更影響分析函數(shù):
如下為變更影響分析函數(shù)的定義:
函數(shù):SPCR×SCT×SR×SSRR→SSDT
其中SCT表示需求變更類型的集合;SR表示需求集合;SSRR表示需求模型中需求關(guān)系的集合;SPCR表示初始的引入變更的需求集合,存在關(guān)系SPCP∈SR,SSDT為函數(shù)的輸出,表示一組對于受變更影響的其他需求可能出現(xiàn)的變更的決策樹集合。
3.5? 變更傳播規(guī)則
本文對11種變更類型和5種需求關(guān)系進行任意組合得到變更場景,最后可得到所有場景的需求變更影響傳播的規(guī)則,如表3:
上述表3中的16條規(guī)則是本文中需求間變更影響分析中的所有的影響規(guī)則。本文以此規(guī)則為基礎(chǔ)討論需求間的變更影響分析。
3.6? 變更傳播算法
變更影響分析算法的核心思想是根據(jù)需求模型中需求與需求之間的關(guān)系,從變更源開始遍歷整個需求模型,得到一組決策樹,決策樹包含了需求變更可能的轉(zhuǎn)播路徑。如算法3.1:
4 案例分析
4.1 系統(tǒng)概述
如下是一個遠(yuǎn)程的病患監(jiān)護系統(tǒng),該系統(tǒng)擁有3個利益相關(guān)者:醫(yī)生、病人、系統(tǒng)管理員,這個系統(tǒng)的主要功能是監(jiān)控病人的體征狀態(tài)如:血壓、心率、體溫等。
本文通過一種需求管理工具:TRIC,TRIC可根據(jù)需求的語義來找到需求間具體的關(guān)系,通過TRIC可以得到RPM系統(tǒng)的需求模型,如圖5:
4.2 需求間變更影響分析
應(yīng)系統(tǒng)的利益相關(guān)者的需要,現(xiàn)在要對RPM系統(tǒng)中的需求R14引入一個變更。
變更描述:The warning to the doctor should also contain all information about the patients condition(傳遞給醫(yī)生的警告應(yīng)該包含相關(guān)患者的所有體征信息)
對于需求R14: The system shall store patient temperature measured by the sensor in the central storage and it shall warn the doctor when the temperature threshold is violated.
它的屬性有2個:
(1)存儲測量到的病人的體溫數(shù)據(jù);
(2)對醫(yī)生發(fā)出警告信息。
這兩個屬性對應(yīng)的約束條件是:
(1)通過中央存儲器來存儲數(shù)據(jù);
(2)警告信息為病人的體溫超過閾值。
此時,需求R14為變更源需求,由圖6中可以得到與需求R14相關(guān)的需求:
首先根據(jù)第3節(jié)給出的需求描述模型和需求變更類型的形式化語義,可以判定該變更類型為“為需求的屬性增加約束條件”。
其次,基于表3中的需求變更傳播規(guī)則,調(diào)用算法3.1-3.3,可以生成一組決策樹,這組決策樹的葉節(jié)點即為與R14相關(guān)的需求可能會受到的影響。
根據(jù)算法3.1-3.3,可以得到如下6條變更傳播路徑:
(1)R14-R4-R6;(2)R14-R6-R1;(3)R14-R4-R1;(4)R14-R7-R1;(5)R14-R7-R9;(6)R14-R7-R8。
對于每一條傳播路徑,我們都可以基于表3中的規(guī)則,調(diào)用算法3.1-3.3,生成一組決策樹,如圖7:
從圖7中可以看出,對于需求R14引入的變更,通過本文的方法分析后,在RPM系統(tǒng)中,R7、R8、R9這三個需求受到影響,且影響為“為這三個需求增加與變更源相同的約束條件”。
5? 結(jié)語
本文面向需求間的變更影響分析,基于一階邏給出需求追蹤關(guān)系的形式化語義,給出一種面向變更場景的變更影響分析方法,基于需求間的變更影響的傳播規(guī)則預(yù)測需求模型中其他需求可能受到的影響,但本文方法依然存在一些不足,需要在未來的工作中不斷的完善和改進。
(1)本文的方法僅支持需求間變更影響分析,不支持需求變更與體系結(jié)構(gòu)等后期制品之間的影響分析;
(2)在某些特定的情況下,本文的方法存在局限性,例如當(dāng)變更類型為“增加一個需求”時,系統(tǒng)原有的需求中必須要有與新增需求有關(guān)系的需求,否則變更影響分析算法無法執(zhí)行,即無法對該變更場景進行變更影響分析。
參考文獻
Erlikh L.Leveraging legacy system dollars for e-business[J].IT professional,2000,2(3): 17-23.
Ebert C.Understanding the product life cycle:Four key requirements engineering techniques[J]. IEEE software,2006,23(3):19-25.
Ebert C,De Man J.Requirements uncertainty:influencing factors and concrete improvements[C]//Proceedings of the 27th international conference on Software engineering. ACM,2005:553-560.
Bohner S A,Arnold R S.Software change impact analysis[M]. Los Alamitos: IEEE Computer Society Press,1996.
Bohner S A.Software change impacts-an evolving perspective[C]//International Conference on Software Maintenance,2002. Proceedings.IEEE,2002:263-272.
Bohner S A.Extending software change impact analysis into COTS components[C]//27th Annual NASA Goddard/IEEE Software Engineering Workshop,2002.Proceedings.IEEE,2002:175-182.
Bohner S A, Gracanin D. Software impact analysis in a virtual environment[C]//28th Annual NASA Goddard Software Engineering Workshop,2003.Proceedings.IEEE,2003:143-151.
Pfleeger S L,Atlee J M. Software engineering: theory and practice[M]. Pearson Education India, 1998.
IE Commission.Iec 61508: Functional safety of electrical/electronic/programmable electronic safety-related systems[M].parts 1-7,International Electrotechnical Commission, Switzerland,2005.
ISO.DIS 26262-1-Road vehicles functional safety Part 1 Glossary[R]. Technical report, International Organization for Standardization/Technical Committee 22 (ISO/TC 22),2009.
Kilpinen M S.The emergence of change at the systems engineering and software design interface[D].University of Cambridge,2008.
Gamma E. Design patterns: elements of reusable object-oriented software[M].Pearson Education India,1995.
Briand L C, Labiche Y, O'Sullivan L. Impact analysis and change management of UML models[C]//International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings. IEEE,2003:256-265.
Briand L C, Labiche Y, OSullivan L, et al. Automated impact analysis of UML models[J]. Journal of Systems and Software,2006,79(3):339-352.
Jin Y, Zhang J, Hao W, et al.A concern-based approach to generating formal requirements specifications[J].Frontiers of Computer Science in China,2010,4(2):162-172.
Parnas D L, Madey J. Functional documentation for computer systems engineering[M].Queen's University at Kingston,Department of Computing & Information Science,1990.
Hamza H S. Separation of concerns for evolving systems: a stability-driven approach[C]//ACM SIGSOFT Software Engineering Notes.ACM,2005,30(4):1-5.
劉華虓,金英,馬鵬飛.一種需求變更影響分析方法[J].計算機研究與發(fā)展計算機研究與發(fā)展,2013, 50(8):1769-1777.
Cleland-Huang J,Chang C K,Christensen M. Event-based traceability for managing evolutionary change[J].IEEE Transactions on Software Engineering,2003,29(9):796-810.
陳光穎.基于謂詞邏輯的需求追蹤方法研究[D].南京:南京航空天大學(xué),2016.
Hove D, G?knil 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.
Kassab M,Ormandjieva O,Daneva M.A traceability metamodel for change management of non-functional requirements[C]//2008 Sixth International Conference on Software Engineering Research,Management and Applications.IEEE,2008:245-254.
Spanoudakis G,Zisman A.Software traceability:a roadmap[M].Handbook of Software Engineering and Knowledge Engineering:Vol 3:Recent Advances.2005:395-428.
收稿日期:2020-02-05
作者簡介:彭釗(1993—),男,湖北巴東人,碩士研究生,研究方向:需求工程、安全工程。
Research on Method of within Requirements Change Impact Analysis Based on First Order Logic
PENG Zhao,DU Tian-bao
(College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing Jiangsu 211100)
Abstract: Change impact analysis is an important activity in software maintenance and evolution. Current research on change impact analysis has two main problems. On one hand, current approaches mainly focuses on change impact analysis between requirements and codes, there is a lack of research about change impact analysis within requirements. On the other hand,the traditional method is based on requirement documents .Due to the lack of semantics of requirements relations and change types, change impact analysis may produce high number of false impacted requirements. This may result in neglecting and actual impact of a change. To solve these problems, this paper proposes a approach based on first order logic(FOL).Firstly,the paper designs a requirement metamodel which only contains? within requirements traceability informations,then the paper provide a classification of change types based on the metamodel. A formal semantics for the changes types and requirements relations would be provided based on FOL .The semantics is used for propagating proposed changes. Lastly,the paper use a system as the case study to demonstrate the feasibility and effectiveness of the method.
Key words:within requirements change impact analysis;FOL;formal semantics;traceability