一、需求工程過程概念介紹
(一)概述
1.規格說明
需求工程過程是系統開發中需求開發活動的整合,它以使用者所面臨的業務問題為出發點進行分析和各種轉換,最終產生乙個能在使用者環境下解決使用者業務問題的系統方案,並將其文件化為明確的規格說明。
2.生命週期
需求工程也有屬於它自己的生命週期模型,即存在針對需求開發的需求工程過程,這個過程又作為系統工程和軟體工程的乙個子過程部署在系統開發的初期階段。
3.活動分類
需求獲取、需求分析、需求規格說明、需求驗證為需求開發活動,需求管理為專案管理活動。
(二)需求開發活動成果文件型別簡述
1.專案前景和範圍文件
定義系統業務需求,明確系統開發的努力方向和工作範圍。
2.使用者需求文件
定義系統使用者需求,以使用者立場表達行為期望。例如,用例文件就屬於使用者需求文件中的一種。
3.需求規格說明文件
定義系統的系統級需求,指出開發者應該完成的任務。需求規格說明文件按照需求範圍大致可以分為以下兩類:
(1)系統規格說明文件
定義軟、硬體需求、其他需求。
(2)軟體規格說明文件
僅僅用於描述軟體需求。
(三)系統開發後續階段
在所有的系統開發活動結束之後,定義良好的需求被轉入系統開發的後續階段——設計、實現和測試等,這時往往會面對乙個重要問題——需求變化。因此,在需求開發結束之後,在後續階段中採取有效的方法統一管理開發的需求和需求變化,進行需求管理和變化控制。
二、需求工程過程分步介紹
(一)需求獲取
需求獲取主要包含五個步驟:
收集背景材料->獲取問題與目標,定義專案前景與範圍->識別涉眾,選擇資訊的**->選擇獲取方法,執行獲取,獲取功能與非功能要求->記錄獲取結果。
下面對每個過程的注意事項進行簡要介紹:
1.收集背景材料
此階段主要是通過與使用者交流,發現使用者的問題,經過需求分析步驟轉化為使用者的需求。
2.獲取問題與目標,定義專案前景與範圍
需求獲取中面對的資訊比較廣泛,因此,為保證獲取資訊的有效性需要保證:
(1)不在無關內容上花費太多時間。
(2)不遺漏應該獲取的重要內容。
3.識別涉眾,選擇資訊的**
此過程將涉及眾多使用者的需求採集,但是為了便於實現和收集資訊的準確性,需要將使用者按角色不同進行大致分類,分類後選擇使用者代表盡可能採集到全面的資訊。這個過程叫做「涉眾分析」。
4.選擇獲取方法,執行獲取,獲取功能與非功能要求
需求獲取有許多技巧與方法,利用表單、報表、備忘錄等硬資料進行需求獲取,常用的獲取方法還有面談、調查表、觀察和原型等。應該根據實際場景和業務型別選擇合適的採集方法。
5.記錄獲取結果
對以上獲取到的資訊,需要對每個階段進行記錄,以便後期進行分析和處理,因此,獲取筆錄記錄的內容往往具有凌亂、模糊、冗餘和遺漏等諸多問題。
(二)需求分析
其主要工作為通過建模來整合各種資訊、檢查需求中存在的錯誤、遺漏和不一致等各種缺陷,並加以修正。這其中主要包含了六個方面的內容:
背景分析->問題分析、目標分析、業務分析,確定系統邊界->軟體需求建模->細化需求->確定優化級->需求協商。
1.背景分析
主要適用於大規模的系統中,因為系統環境難以梳理,此時就需要進行背景分析。例如,領域分析、企業建模等。
這個步驟在一般的專案中被省略,以免花費太多不必要的精力。
2.問題分析、目標分析、業務分析,確定系統邊界
系統邊界需要保證系統能夠和周圍環境形成有效互,並且在互動中解決使用者問題,滿足業務需求,這些都將依賴於分析技術與方法的使用。例如,系統用例圖和上下文圖。
3.軟體需求建模
為了展現和解釋資訊而進行的抽象描述活動,常用技術包括資料流圖、實體關係圖、狀態轉換圖、類圖等半形式化建模技術。需要注意的是,對於一些要求嚴格的專案(醫療器械控制),還需要利用嚴格形式化的技術進行建模。例如,z模型。
4.細化需求
對於有模糊、有歧義的使用者需求,通過系統建模,轉化為一些有良好粒度和特性的需求細節,即「系統型需求」。
5.確定優化級
對於使用者眾多的需求,需求工程師需要對需求進行排序。
6.需求協商
當使用者需求出現衝突時,需要與使用者進行協商,對衝突的需求進行選擇。
(三)需求規格說明
1.定製文件模板
2.編寫文件
一般會同時使用模型語言(圖形、表示式等)和自然語言(文字)兩種表達方式,以確保文件內容準確、易讀。
(四)需求驗證
驗證需求說明文件是否滿足以下標準:
l 真實反映使用者意圖
l 記錄的需求整體上具有完整性和一致性
l 組織方式和書寫方式具有可讀性和可修改性
需求驗證主要包含以下任務:
1.執行驗證
最好採取同級評審,如果必要的話,可採取原型或模擬但代價較高。
2.問題修正
對發現的問題,在驗證之後需要及時修正。並對修正進行跟蹤,以保證修正的落實。
(五)需求管理
在需求開發建立需求基線,在設計、實現等後續活動中處理來自客戶、管理層、營銷部門及其他涉眾群體的變更需求。需求管理在專案的各項管理活動中具有非常重要的作用,cmmi(capability maturity model integration,軟體能力成熟度模型整合)將其作為所有二級成熟度企業都應該具備的乙個關鍵過程域。
主要包含以下任務:
1.建立和維護需求基線集
建立良好的配置管理,對需求基線進行版本控制。首先要標識每項需求,記錄相關屬性。基線的版本控制工作可以使用版本管理工具來進行。
2.建立需求跟蹤資訊
系統的可跟蹤性要求以系統級需求為出發點進行雙向跟蹤。
(1)後向跟蹤
跟蹤系統級需求被設計、實現為什麼製品,並回溯到每個設計、實現製品是為何而存在。
(2)前向跟蹤
回溯每個系統級需求是為支援哪些使用者需求及業務需求存在。
3.進行變更控制
需求基線建立之後,仍應該積極接受來自外界的需求變化請求,並作出及時調整與反饋。
《需求工程 軟體建模與分析》閱讀筆記三
需求管理是來完成需求開發結束後,保障系統質量的乙個管理活動。需求管理在實踐中的作用有 增強專案涉眾對複雜產品特徵在細節和相互依賴關係上的理解 增進了專案涉眾之間的交流 減少了工作量的浪費,提高了生產力 準確反映社會的狀態,有助於專案決策 改變專案文化,使得需求的作用得到重視和有效發揮。維護需求基線 ...
《需求工程 軟體建模與分析》閱讀筆記一
軟體經歷了以 機器 為中心,以 應用 為中心,以 企業 為中心的發展過程,隨著 應用 為中心的軟體發展,原來的個體化 軟體作坊式 的軟體開發模式顯示出了很多的問題,針對這些問題,人們在不斷地討論與制定對策,在軟體開發技術和軟體開發過程與管理方面都取得了很多進步。根據很多方面的調查顯示,在所有的軟體開...
《需求工程 軟體建模與分析》閱讀筆記02
相信做軟體的都知道,需求獲取是一件非常困難的事,建民老師說他們做專案的時候,拎著電腦包去做需求調研,裡面工作的人一看就嫌棄的表情,他們那些人又來了,同樣,在跟對方經理聊天的過程中,對方也經常會打斷談話去處理一些別的事,但對於做乙個專案,偏偏需求分析是至關重要的一環,在需求分析的過程中,我們經常會遇到...