之前的部落格較長的描述了軟體工程中的系統文獻映射研究方法。這裡接着給出一個我曾經做過的工作作為例子,以更直覺地展示這種研究類型。該研究的背景資訊這裡不再贅述。
這篇部落客要介紹第二個研究問題的結果,即軟體開發中的假設條件有哪些類型。
軟體開發由數個基本的活動構成[1]。此系統文獻映射研究中,采用SWEBOK[1]中建議的軟體開發活動,并對照軟體開發活動對假設條件進行分類。
需求工程。軟體需求工程指不同涉衆對軟體産品的關注點。需求工程包括數個子活動,如需求抽取、需求分析、需求歸檔。
軟體設計。軟體設計可細分為體系結構設計(即聚焦于軟體的高層次結構)和詳細設計(即聚焦于構件的細節及其實作)。
軟體構造。軟體構造指基于需求工程和軟體設計的輸出以實作軟體。
軟體測試。軟體測試旨在通過測試驗證軟體。例如軟體是否達到期望的需求或具備期望的行為。
軟體維護和演化。軟體可随時間變化(如由于新的需求),且需要在傳遞後進行維護(如修正軟體的錯誤)。
盡管現存對軟體開發活動的不同分類,選擇SWEBOK的原因為:在軟體開發領域中,SWEBOK被廣泛認可和接受。分類結果如下表所示。假設條件映射到各個軟體開發活動的依據為:假設條件在某活動中被制定或者假設條件關注某活動的制品(如需求、體系結構設計決策、代碼)。因一篇文獻可能将假設條件關聯到多個軟體開發活動,是以一篇文獻可能被分類至多個類型中。
軟體開發活動 | 數量(%) | 備注 |
需求工程 | 76 (56.7%) | 即有76篇文獻提到了在需求工程中制定假設條件或将假設條件關聯到需求工程中的某種制品。 |
軟體設計 | 104 (77.6%) | 即有104篇文獻提到了在軟體設計中制定假設條件或将假設條件關聯到軟體設計中的某種制品。 |
軟體構造 | 36 (26.9%) | 即有36篇文獻提到了在軟體構造中制定假設條件或将假設條件關聯到軟體構造中的某種制品。 |
軟體測試 | 16 (11.9%) | 即有16篇文獻提到了在軟體測試中制定假設條件或将假設條件關聯到軟體測試中的某種制品。 |
軟體維護和演化 | 22 (16.4%) | 即有22篇文獻提到了在軟體維護和演化中制定假設條件或将假設條件關聯到軟體維護和演化中的某種制品。 |
部分文獻對需求工程和軟體設計中的假設條件進一步分類。此處提供兩個例子。
領域的假設條件的分類[2](需求工程):(a)強制的領域假設條件指産品線開發中對必要的需求制定的假設條件(如假設應包含某需求);(b)可選的領域假設條件指在備選需求中選擇某需求時制定的假設條件(如假設在多個需求中應選擇某特定需求);(c)多個領域假設條件指在備選需求中選擇多個需求時制定的假設條件。
體系結構假設條件的分類[3][4](軟體設計):(a)技術的假設條件指關于系統的技術環境的假設條件(如資料庫);(b)組織的假設條件指可能影響軟體開發的關于公司的假設條件(如公司的文化);(c)管理的假設條件指商業目标決策的假設條件(如管理政策)。
參考文獻
[1] P. Bourque and R.E. Fairley. Guide to the Software Engineering Body of Knowledge (SWEBOK (R)): Version 3.0. IEEE Computer Society Press, 2014.
[2] J. Savolainen and J. Kuusela. Consistency management of product line requirements. In: Proceedings of the 5th IEEE International Symposium on Requirements Engineering (RE), Toronto, Ont, Canada, 2001.
[3] P. Lago and H. van Vliet. Observations from the recovery of a software product family. In: Proceedings of the 3rd International Conference on Software Product Lines (SPLC), Boston, MA, USA, pp. 214-227, 2004.
[4] P. Lago and H. van Vliet. Explicit assumptions enrich architectural models. In: Proceedings of the 27th International Conference on Software Engineering (ICSE), St Louis, Missouri, USA, pp. 206-214, 2005.