軟件需求工程1

需求工程系列:

軟件需求工程1(1~4章)
軟件需求工程習題2(5~7章)
需求工程中的面談和原型(8、9章)
需求獲取方法之觀察與文檔審查(10章)
需求工程規格說明、需求驗證、需求管理(11~13章)


第一章 需求工程導論

需求因素:
•用戶參與(用戶輸入)
• 高層管理支持
• 清晰的需求說明
• 切合實際的期望
• 清晰的目標和前景
• 需求變化
• 額外的無用功能

需求問題的具體原因分析:
軟件生產中產生需求問題的最大原因在於對應用軟件的模擬特性理解不透徹或應用不堅決,它會導致軟件開發者產生輕視需求的態度問題。另外,還有一些技術原因也會導致需求問題的產生。
1.非技術性和社會性因素重視不足
2.傳統需求分析方法的缺陷
3.軟件規模的日益擴大
4.需求問題的高代價性

什麼是需求工程?
定義1:簡單來說,需求工程是所有需求處理活動的總和,它收集信息、分析問題、整合觀點、記
錄需求並驗證其正確性,最終反應軟件被應用後與其環境互動形成的期望效應。
定義2:從細節來說,需求工程是軟件工程的一個分支,它關注於軟件系統所應予實現的現實世界目標、軟件系統的功能和軟件系統應當遵守的約束,同時它也關注以上因素和準確的軟件行爲規格說明之間的聯繫,關注以上因素與其隨時間或跨產品族而演化之後的相關因素之間的聯繫。
在這裏插入圖片描述
需求工程的複雜性:
1.處理範圍廣泛
2.涉及諸多參與方
3.處理內容多樣
4.處理活動互相交織
5.處理結果要求苛刻

需求工程師是涉衆和開發者之間的橋樑,要重視“軟技能”,需要創新,需求開發是團隊行爲

1.軟件生產中產生需求問題的最大原因在於對應用軟件的(模擬性)理解不透徹或應用不堅決。
2.需求分析的目的是保證需求的(完整性和一致性)
3.系統需求開發的結果最終會寫入(系統需求規格說明)
4.傳統的需求分析方法都是從設計領域轉入分析領域的。
5.應用型軟件分析階段的主要目的是發現人們利用軟件的原因(目的),找出需要軟件解決的問題,理解應用環境中的領域知識,保證功能的 模擬性
6.需求工程是所有需求處理活動的總和,它包括需求開發和需求管理兩個部分。
7.軟件需求開發用來確定系統需求中應該由軟件滿足的部分,將其映射爲軟件行爲,產生軟件需求規格說明
8.【判斷題】需求驗證是需求工程中最後一個活動。×
9.【判斷題】軟件系統能夠與問題域進行交互和相互影響的原因在於,軟件系統中的某些部分對問題域中的某些部分具有模擬特性。
10.【簡答題】簡述需求工程的主要任務。
1.需求工程必須說明軟件系統將被應用的環境及其目標,同時說明軟件需求“做什麼”和“爲什麼”需要做;
2.需求工程必須將目標、功能和約束反應到軟件系統中,映射爲可行的軟件行爲,並對軟件行爲進行準確的規格說明,完成需求規格說明書;
3.還需要妥善處理目標、功能和約束隨着時間的演化情況,進行綜合考慮和處理。
11.【名詞解釋】什麼是需求工程?
需求工程是所有需求處理活動的總和,它收集信息、分析問題、整合觀點、記錄需求並驗證其正確性,最終反應軟件被應用後與其環境互動形成的期望效應。

第二章 需求基礎

優秀需求的特性

1.完備性
2.正確性
3.可行性
4.必要性
5.無歧義
6.可驗證

習題:

1.現實世界中的(實體和狀態)構成了問題解決的基本範圍,稱爲該問題的問題域。
2.功能需求通常分爲三個層次,即業務需求、用戶需求和(系統需求)
3.優秀的需求應該具備 7 個特性,即完備性、正確性、可行性、必要性、無歧義和 精確性、可驗證
4.【判斷題】規格說明是問題域爲滿足用戶需求而提供的解決方案,規定了解系統的行爲特徵。×
5.【判斷題】業務需求具有明顯的目的性和較高的抽象性,經過明確和細化的處理,可以 直接轉化爲系統需求。×
6.【簡答題】產生不必要需求的原因主要是:
沒有滿足需求的必要性,主要原因在於沒有真正理解了用戶的需求,需求分析工作做的不到位,沒有切實解決問題。
7.【名詞解釋】需求: IEEE 對需求的定義爲:
用戶爲解決問題或達到某種目標所需要的條件或能力;
系統或系統內部爲了滿足合同、標準、規範和其他正式文檔所規定的要求所需要的條件或能力;
對1或2中的一個條件或一種能力的一種文檔化表述。

第三章 需求工程過程

在這裏插入圖片描述
在這裏插入圖片描述
1.需求分析的目的是保證需求的(完整性和一致性)
2.系統需求開發的結果最終會寫入( 系統需求規格說明)。
3.比較容易發現的涉衆稱爲初始涉衆,又稱爲( 涉衆基線),通常包括客戶、管理者和相關的投資者。
4.( 統計報表)屬於定量硬數據。
5.需求分析活動的一個重要任務是進行( 需求細化),明確用戶需求的隱含信息,展開爲明確的對軟件系統的行爲期望,即系統需求。
6.項目的前景和範圍文檔、用戶需求文檔都被視爲屬於( 用戶文檔),重點都是用戶的現實世界。
7.系統需求規格說明文檔、軟件需求規格說明文檔、硬件需求規格說明文檔、接口需求規格說明文檔和人機交互文檔一起被用於系統開發的目的,都被認爲是(開發文檔)
8.( 銷售商)不是需求規格說明文檔的讀者。
9.需求工程過程實踐方法是需求工程(工作方式與行爲方法)。
10.需求開發過程包括需求獲取、需求分析、需求規格說明及(需求驗證)。
11.傳統的需求分析方法都是從設計領域轉入分析領域的。
12.需求工程是所有需求處理活動的總和,它收集信息、分析問題、整合觀點、記錄需 求並驗證其正確性,終反映軟件被應用後與其環境互動形成的期望效應
13.軟件需求開發用來確定系統需求中應該由軟件滿足的部分,將其映射爲軟件行爲,產生軟件需求規格說明
14.優秀的需求應該具備 7 個特性,即完整性、正確性、精確性、可行性、必要性、無歧義和可驗證
15.所有對軟件系統的開發和應用具有發言權和決定權的人統稱爲涉衆
16.在需求工程中,主要產生三類重要的文檔:項目前景和範圍文檔、用戶需求文檔以及需求規格說明。
17.需求獲取得到的信息和需求開發應該建立的軟件系統解決方案之間有着很大的差距。需求分析就是用來解決這個差距的需求工程活動。
18.需求分析的根本任務是:建立分析模型並創建解決方案。
19.需求協商活動既包括對目標衝突的處理,也包括對需求細節衝突的處理。
20.【判斷題】需求驗證是需求工程中最後一個活動。×
21.【判斷題】軟件系統能夠與問題域進行交互和相互影響的原因在於,軟件系統中的某些部分對問題域中的某些部分具有模擬特性。
22.【判斷題】規格說明是問題域爲滿足用戶需求而提供的解決方案,規定了解系統的行爲特徵。×
23.【判斷題】業務需求具有明顯的目的性和較高的抽象性,經過明確和細化的處理,可以直接轉化爲系統需求。×
24.【判斷題】需求開發的一些特性決定了需求開發過程只能是一個簡單的線性增量過程。×
25.【判斷題】對於需求不確定性比較小的項目,用戶參與可以取得比較好的效果,但對於需求不確定性比較大的項目,用戶參與反而可能帶來阻礙作用。×
26.【判斷題】如果選擇的開發方法是實驗式或者探索式開發方法,應該儘量花費最小的代價,爭取最快的速度,忽略或簡化不重要的功能處理。×
27.【判斷題】由於文檔是來自於當前計算機或手工系統的產物,因此它是正確的,也正是客戶所需要的。×
28.【判斷題】對系統的現狀和背景進行分析往往能夠發現重要的目標,得到一些明確的問題和缺陷,它們的反面就是系統需要實現的目標。
29.【判斷題】軟件需求規格說明文檔是對部分系統功能分配給軟件部分的詳細描述。×
30.【名詞解釋】基線
基線是軟件工程活動從一個環節轉入另外一個環節時對階段產品或組件的標識。因爲軟件規模的膨脹和分工的細化,軟件開發過程變得越來越複雜,每個階段可能由不同類型的角色和人員來完成,因此有必要清晰標識上一階段完成的成果和下階段開始工作的基礎。這種標識活動就是建立基線。
31.【名詞解釋】需求基線
需求基線是被明確和固定的需求集合,是項目團隊的需要在某一特定產品版本中實現的特徵和需求集合。

第四章 需求獲取概述

在這裏插入圖片描述

用戶潛在知識的解決:

1.應用民族誌方法,分析用戶的環境和行爲,挖掘用戶的潛在知識;
2.在有限理解的基礎上設計初始原型,然後結合用戶的反饋逐步修正解決方案,逐步接近用戶的真實意圖;
3.選擇主動“創造”需求,爲每個潛在的可能情況都創造可選需求,併爲其設計相應的解決方案,然後分析用戶對方案的反饋,確定合理的需求,其實質爲原型法。

需求獲取的來源:

1.涉衆
 用戶
 客戶
 領域專家
 市場人員、
 銷售人員等
 其他用戶替代源
2.相關產品
 原有系統
 競爭產品
 協作產品
 和解系統存在接口的
 其他軟件系統
3.硬數據
 登記表格、單據、報表等定量文檔
 備忘錄、日誌等定性文檔
4.重要文檔
 原有系統的規格說明
 競爭產品的規格說明
 協作產品的規格說明
 客戶的需求文檔(委託開發的規格說明、招標書)
5.相關技術標準和法規
 相關法律、法規及規章制度
 行業規範、行業標準

需求獲取的方法:

1.傳統方法
 傳統方法在需求獲取中起着基礎的作用。
 問卷調查、面談、硬數據分析、文檔檢查、需求剝離等
2.集體獲取方法
 將很多涉衆有機、有效組織在一起,通過討論發現需求
 頭腦風暴(Brainstorming)發揮各自的聰明才智及想象力
 專題討論會(Workshop)主題要明確,有目的、計劃組織領域專家及有關人員參加
 JAD聯合應用開發、JRP聯合需求計劃等
3.原型
 在需求模糊和不確定性的情況下,可利用原型方法使問題清晰、明確和有效。原型方法在此階段起着重要的作用。
 原型方法:如低保真、高保真等原型
4.模型驅動方法
 首先定義一個明確的模型,模型定義了所要收集的信息類型。
 模型建立和完善的過程就是進行需求獲取的過程。
 面向目標的方法(goal-oriented methods)
 基於場景的方法(scenario-based methods)
 基於用例的方法(use case-based methods)
5.認知方法
 知識獲取:獲取被開發系統領域的相關知識及背景知識
 潛在的知識:以認知的方式獲取用戶無法表達的知識
 任務分析(Task Analysis)
 協議分析(Protocol Analysis)等
6.基於上下文的方法
重視用戶在一定環境下表現出來的行爲,通過分析用戶行爲得到信息。常用的方法有:
 觀察:利用需求工程師們所具備的知識,發揮其洞察力的能力
 民族誌(Ethnography),開會集中、主題討論、舉手表決等形式。
 話語分析(Conversation Analysis),分析領域專家及專業涉衆等有關提出的問題和解決方案等

1.獲取活動當中,其實質步驟主要是以下幾點:確定待獲取的內容,確定待獲取信息的來源,確定應採取的獲取方法,執行獲取,記錄成果。
2.需求工程需要獲取的內容主要有:需求,問題域描述,環境與約束
3.需求獲取的來源:涉衆,相關產品,硬數據,重要文檔,相關技術標準和法規
4.需求獲取的方法有:面談,調查問卷,原型,觀察和文檔分析
5.【判斷題】需求獲取就是進行需求收集的一個活動,它從人員、資料和環境中得到系統開發所需求的相關信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章