宮會杰
【摘 要】軟件工程就是用工程化的方法和理念來管理軟件的開發、運行和維護,軟件工程分為需求、設計、編碼、測試四個環節。通過建立和維護軟件需求跟蹤矩陣,可以在四個環節之間找到對應關系,驗證從需求一直到測試之間的一致性與完整性,并且在發生變更時,可以通過正反向跟蹤矩陣確定變更影響域。結合軟件工程的特點,在傳統的需求跟蹤矩陣基礎上,增加用戶需求和軟件需求、概要設計和詳細設計之間的追蹤關系,使得建立的追蹤關系更加精確。
【關鍵詞】軟件生存周期;軟件工程;需求跟蹤矩陣
0 引言
軟件工程是指運用工程化的理念、方法和技術來管理軟件開發過程,通過規范的過程控制,實現提高軟件開發過程質量、軟件產品質量,縮短軟件開發周期的目的。軟件工程從實現的角度上可以分為四個環節:需求、設計、編碼、測試,這四個環節之間是有聯系的,需求跟蹤矩陣就是聯系這四個環節的關鍵點。
需求跟蹤矩陣的目的是為了建立與維護“需求-設計-編碼-測試”之間的一致性,確保最終的產品滿足需求。軟件工程中的軟件生存周期是指從軟件的產生直到報廢的生命周期,而需求追蹤矩陣存在于整個軟件生存周期內,從正向和反向兩個方面進行需求追蹤。需求追蹤矩陣中的數據元素有:需求項、設計元素、代碼、測試用例,從需求開始到測試結束,形成完整的閉環,無論是哪一個環節發生了變更,都可以迅速準確的判斷變更的影響域。[1]本文結合軟件工程的特點,改進了傳統的需求跟蹤矩陣建立過程,增加了用戶需求和軟件需求的追蹤,概要設計和詳細設計的追蹤,這樣建立的追蹤關系更加精確。
1 實現過程
軟件工程是指導軟件開發和維護的工程學科,需求是源頭,設計和編碼是實現,測試是保障,需求跟蹤矩陣則是一條無形的線將這些點連接起來。正向需求跟蹤矩陣以用戶需求為出發點,檢查在后續的軟件需求、設計、編碼、測試中找到對應點,反向需求追蹤矩陣能檢查設計、代碼、測試用例等工作成果是否都能在需求找到出處,其中反向需求追蹤矩陣可以理解為正向需求追蹤矩陣的逆序,所以本文將主要介紹正向跟蹤矩陣的建立過程。
1.1 需求中建立需求跟蹤矩陣
需求是軟件工程中的一個必須環節,是整個軟件工程中的源頭,分為用戶需求和軟件需求。
用戶需求是指未經分析和分解的原始需求,它可以來源于技術協議,也可以來源于任務書。接收到用戶需求后,將用戶需求進行分類和標識,按照分類建立需求跟蹤矩陣的根節點,將其寫入表1中的左列。[2]標識是指需求、設計、編碼、測試相關元素的唯一標識。
軟件需求是指需求分析人員分析和分解用戶需求,深入的描述軟件的功能和性能,指明軟件和其他系統元素的接口。軟件需求過程的輸入是技術協議或任務書,輸出是軟件需求規格說明。需求分析人員將分析和分解后的軟件需求,寫入軟件需求規格說明文檔中。將軟件需求寫入表1中的右列,即建立了用戶需求和軟件需求之間的需求追蹤矩陣。在建立用戶需求和軟件需求間的需求跟蹤矩陣過程中,可以發現是否所有的用戶需求都被分析和分解。這個過程中應注意,軟件需求的變更一定不能影響到用戶需求,只能是用戶需求的變更影響到軟件需求。
1.2 設計中建立需求跟蹤矩陣
軟件設計是軟件工程過程中的技術核心,是軟件需求的實現,也是后續編碼和測試過程的基礎。軟件設計過程就是把軟件需求分解或者實現成軟件功能模型、數據模型以及行為模型的過程。軟件設計過程分為概要設計過程和詳細設計過程。[3]
概要設計過程就是將軟件需求轉化為功能部件、接口部件等,整個過程輸入為軟件需求規格說明,過程輸出為軟件概要設計說明。將軟件概要設計說明中得到的功能部件、接口部件等寫入到類似于表1的表格中,其中部件要與軟件需求對應,即建立了軟件需求和概要設計之間的需求追蹤矩陣。在這個過程中可以發現是否所有的軟件需求都在設計中實現了。
詳細設計過程就是將概要設計進行細化,得到功能單元、接口單元等,整個過程輸入為軟件概要設計說明,過程輸出為軟件詳細設計說明。將軟件詳細設計說明中得到的功能單元、接口單元等寫入到類似于表1的表格中,其中單元要與部件對應,即建立了概要設計和詳細設計之間的需求追蹤矩陣。在這個過程中可以發現是否所有的概要設計都在詳細設計中細化了。
1.3 編碼中建立需求跟蹤矩陣
編碼過程就是選擇某種語言,按照詳細設計的結果進行編碼實現,整個過程輸入為軟件詳細設計說明,過程輸出為程序代碼。將程序代碼函數名稱同詳細設計中的單元建立對應關系,寫入到類似于表1的表格中,即建立了程序代碼和軟件詳細設計之間的對應關系。在這個過程中可以發現是否所有的詳細設計都在編碼過程中實現了,也能發現是否存在某些無法實現的設計。
1.4 測試中建立需求跟蹤矩陣
軟件測試過程就是為了發現錯誤而執行程序的過程,需要測試人員編寫并測試用例,整個過程輸入為程序代碼,過程輸出為測試用例。將測試用例同程序代碼函數名稱建立對應關系,寫入到類似于表1的表格中,即建立了測試用例和程序代碼之間的對應關系。在這個過程中可以發現是否測試覆蓋了所有的程序代碼功能。
2 需求跟蹤矩陣展示
在軟件生存周期中,根據各階段的進展,建立和維護需求跟蹤矩陣,可以將各個階段的產品關系串聯起來,最終形成的需求跟蹤矩陣如圖1。
由圖1可以看出,整個矩陣成扇形發散結構,中間的需求追蹤是不能間斷的。需求跟蹤矩陣建立后,可以迅速的判斷需求是否得到了實現,并且在需求變更、設計變更、代碼變更、測試用例變更時,通過該矩陣可以很清楚的判斷出變更影響域。[4]
3 綜述
在軟件工程中,建立六個軟件產品之間的需求跟蹤矩陣,可以更快的檢測并驗證用戶需求開始到測試用例之間的一致性與完整性,確保所有的實現是以用戶需求為基礎;當發生變更時,通過檢索需求跟蹤矩陣發現需要修改的需求、設計、代碼及測試用例等。需求、設計、編碼、測試用例,每一項都含有很多元素,建立和維護需求追蹤矩陣比較繁瑣,工作量也比較大,目前建立和維護需求追蹤矩陣的專業工具比較少,后續的研究應注重此類工具的開發。
【參考文獻】
[1]陳曉星.電信CRM軟件項目需求管理研究[D].南京:南京郵電大學,2011.
[2]劉宇柯.基于CMMI的軟件開發項目管理研究[D].廣州:廣東工業大學,2015.
[3]肖丁,吳建林.軟件工程模型與方法[M].北京:北京有點大學出版社,2008.
[4]吳燕.需求管理中的雙向跟蹤矩陣方法研究[J].北京:軟件信息和服務,2011,3:60-61.
[責任編輯:田吉捷]