計算機軟件需求說明編制指南(轉)

計算機軟件需求說明編制指南
1 引言
1.1 目的和作用
本指南爲軟件需求實踐提供了一個規範化的方法。本指南不提倡把軟件需求說明(Software Requirements Specifications,以下簡稱SRS)劃分成等級,避免把它定義成更小的需求子集。
本指南適用對象:
軟件客戶(Customers),以便精確地描述他們想獲得什麼樣的產品。
軟件開發者(Suppliers),以便準確地理解客戶需要什麼樣的產品。
對於任一要實現下列目標的單位和(或)個人:
a. 要提出開發規範化的SRS提綱;
b. 定義自己需要的具體的格式和內容;
c. 產生附加的局部使用條款,如SRS質量檢查清單或者SRS作者手冊等。
SRS將完成下列目標:
a. 在軟件產品完成目標方面爲客戶和開發者之間建立共同協議創立一個基礎。對要實現的軟件功能做全面描述,幫助客戶判斷所規定的軟件是否符合他們的要求,或者怎樣修改這種軟件才能適合他們的要求;
b. 提高開發效率。編制SRS的過程將使客戶在設計開始之前周密地思考全部需求,從而減少事後重新設計、重新編碼和重新測試的返工活動。在SRS中對各種需求仔細地進行復查,還可以在開發早期發現若干遺漏、錯誤的理解和不一致性,以便及時加以糾正;
c. 爲成本計價和編制計劃進度提供基礎。SRS提供的對被開發軟件產品的描述,是計算機軟件產品成本覈算的基礎,並且可以爲各方的要價和付費提供依據。SRS 對軟件的清晰描述,有助於估計所必須的資源,並用作編制進度的依據;
d. 爲確認和驗證提供一個基準。任何組織將更有效地編制他們的確認和驗證計劃。作爲開發合同的一部分,SRS還可以提供一個可以度量和遵循的基準(然而,反之則不成立,即任一有關軟件的合同都不能作爲SRS。因爲這種文件幾乎不包括詳盡的需求說明,並且通常不完全的);
e. 便於移植。有了SRS就便於移值軟件產品,以適應新的用戶或新的機種。客戶也易於移植其軟件到其他部門,而開發者同樣也易於把軟件移植到新的客戶;
f. 作爲不斷提高的基礎。由於SRS所討論的是軟件產品,而不是開發這個產品的設計。因此SRS是軟件產品繼續提高的基礎。雖然SRS也可能要改變,但是原來的SRS還是軟件產品改進的可靠基礎。
1.2 範圍
本指南適用於編寫軟件需求規格說明,它描述了一個SRS所必須的內容和質量,並且在第6章中提供了SRS大綱。
2 引用標準
GB 8566 計算機軟件開發規範
GB 8567 計算機軟件產品開發文件編制指南
GB/T 11457 軟件工程術語
3 定義
GB/T 11457所列術語和下列定義適用於本指南。
合同(contract)
是由客戶和開發者共同簽署的具有法律約束力的文件。其中包括產品的技術、組織、成本和進度計劃要求等內容。
客戶(customer)
指個人或單位,他們爲產品開發提供資金,通常(但有時也不必)還提出各種需求。文件中的客戶和開發者也可能是同一個組織的成員。
語言(language)
是具有語法和語義的通信工具,包括一組表達式、慣例和傳遞信息的有關規則。
分割(partitioning)
把一個整體分成若干部分。
開發者(supplier)
指爲客戶生產某種軟件產品的個人或集團。在本指南中,客戶和開發者可能是同一個組織的成員。
用戶(user)
指運行系統或者直接與系統發生交互作用的個人或集團。用戶和客戶通常不是同一些人。
4 編寫SRS的背景信息
4.1 SRS的基本要求
SRS是對要完成一定功能、性能的軟件產品、程序或一組程序的說明。
對SRS的描述有兩項基本要求:
a. 必須描述一定的功能、性能;
b. 必須用確定的方法敘述這些功能、性能。
4.2 SRS的環境
必須認識到SRS在整個軟件開發規範(見 GB 8566)所規定的有關階段都起作用。正因爲如此,SRS的起草者必須特別注意不要超出這種作用的範圍。這意味着要滿足下列要求:
a. SRS必須正確地定義所有的軟件需求;
b. 除了設計上的特殊限制之外,SRS中一般不描述任何設計、驗證或項目管理細節。
4.3 SRS的特點
4.3.1 無歧義性
當且僅當它對每一個需求只有一種解釋時,SRS者是無歧義的。
a. 要求最終產品的每一個特性用某一術語描述;
b. 若某一術語在某一特殊的行文中使用時具有多種歧義,那麼對該術語的每種含義作出解釋並指出其適用場合。
需求通常是用自然語言編寫的,使用自然語言的SRS起草者必須特別注意消除其需求的歧義性。提倡使用形式化需求說明語言。
4.3.2 完整性
如果一個SRS能滿足下列要求,則該SRS就是完整的:
a. 包括全部有意義的要求,無論是關係到功能的、性能的、設計約束的,還是關係到屬性或外部接口方面的需求;
b. 對所有可能出現的輸入數據的響應予以定義,要對合法和非合法的輸入值的響應做出規定;
c. 要符合SRS要求。如果個別章節不適用,則在SRS中要保留章節號;
d. 填寫SRS中的全部插圖、表、圖示標記和參照,並且定義全部術語和度量單位。
4.3.2.1 關於使用“待定”一詞的規定
任何一個使用“待定”的SRS都是不完全的。
a. 若萬一遇到使用“待定”一詞時,作如下處理:
(1) 對產生“待定”一詞的條件進行描述,使得問題能被解決;
(2) 描述必須幹什麼事,以刪除這個“待定”;
b. 包含有“待定”一詞的任何SRS的項目文件應該:
(1) 標識與此特定文件有關的版本號或敘述其專門的發佈號;
(2) 拒絕任何仍標識爲“待定”一詞的SRS章節的許諾。
4.3.3 可驗證性
當且僅當SRS中描述的每一個需求都是可以驗證的,該SRS纔是可以驗證的;當且僅當在某一性能價格比可取的有限處理過程,人或機器能通過該過程檢查軟件產品能否滿足需求時,才稱這個需求是可以驗證的。
4.3.4 一致性
當且僅當SRS中各個需求的描述是不矛盾時 SRS纔是一致的。
4.3.5 可修改性
如果一個SRS的結構和風格在需求有必要改變時是易於實現的、完整性的、一致的,那麼這個SRS就是可以修改的。可修改性要求SRS具備以下條件:
a. 具有一個有條不紊的易於使用的內容組織,具有目錄表,索引和明確的交叉引用表;
b. 沒有冗餘。即同一需求不能在SRS中出現多次。
(1)冗餘本身不是錯誤,但是容易發生錯誤。冗餘可增加SRS的可讀性,但是在一個冗餘文件被更新時容易出現問題。例如:假設一個明確的需求在兩個地方詳細列出,後來發現這個需求需要改變,若只修改一個地方,於是SRS就變得不一致了。
(2)不管冗餘是否必須,SRS一定要包含一個詳細的交叉引用表,以便SRS具備可修改性。
4.3.6 可追蹤性
如果每一個需求的源流是清晰的,在進一步產生和改變文件編制時,可以方便地引證每一個需求,則該SRS就是可追蹤的。建議採用如下兩種類型的追蹤:
a. 向後追蹤(即向已開發過的前一階段追蹤)。根據先前文件或本文件前面的每一個需求進行追蹤。
b. 向前追蹤(即是向由SRS派生的所有文件追蹤)。根據SRS中具有唯一的名字和參照號的每一個需求進行追蹤。
當SRS中的一個需求表達另一個需求的一種指派或者是派生的,向前、向後的追蹤都要提供。例如:
(1)從總的用戶響應時間需求中分配給數據庫操作響應時間;
(2)識別帶有一定功能和用戶接口的需求的報告格式;
(3)支持法律或行政上需要的某個軟件產品(例如,計算稅收)。在這種情況下,要指出軟件所支持的確切的法律或行政文件。
當軟件產品進入運行和維護階段時,SRS的向前可追蹤性顯得特別重要。當編碼和設計文件作修改時,重要的是要查清這些修改所影響的全部需求。
4.3.7 運行和維護階段的可使用性
SRS必須滿足運行和維護階段的需要,包括軟件最終替換。
a. 維護常常是由與原來開發無聯繫的人來進行的。局部的改變(修正)可以藉助於好的代碼註釋來實現。對於較大範圍的改變。設計和需求文件是必不可少的,這裏隱含了兩個作用:
(1)如4.3.5 條指出,SRS必須是可修改的;
(2)SRS中必須包括一個記錄,它記錄那些應用於各個成分的所有具體條文。例如:
它們的危急性(如故障可能危及完全或導致大量財政方面和社會方面的損失);
它們僅與暫時的需要相關(如支持一種可立即恢復原狀的顯示);
它們的來源(如某功能是由已存在的軟件產品的全部拷貝複製而成)。
b. 要求在SRS中清楚地寫明功能的來源和目的,因爲對功能的來源和引入該功能的目的不清楚的話,通常不可能很好地完成軟件的維護。
4.4 SRS的編制者
軟件開發的過程是由開發者和客戶雙方同意開發什麼樣的軟件協議開始的。這種協議要使用SRS的形式,應該由雙方聯合起草。這是因爲:
a. 客戶通常對軟件設計和開發過程瞭解較少,而不能寫出可用的SRS;
b. 開發者通常對於客戶的問題和意圖瞭解較少,從而不可能寫出一個令人滿意的系統需求。
4.5 SRS的改進
軟件產品的開發過程中,在項目的開始階段不可能詳細說明某些細節,在開發過程中可能發現SRS的缺陷、缺點和錯誤之類的問題,所以可能要對SRS進行改進。
在SRS的改進中,應注意如下事項:
4.5.1 儘管可以預見校正版本的開發以後不可避免,而對需求還必須儘可能完全、清楚地描述。
4.5.2 一旦最初識別出項目的變化,應引入一個正式的改變規程來標識、控制、追蹤和報告項目的改變。批准了的需求改變,用如下的方法編入SRS之中:
a. 提供各種改變後的正確的、完全的審查記錄;
b. 允許對SRS當前的和被替代部分的審查。
4.6 SRS的編制工具
編制SRS最顯而易見的方法是用自然語言來描述。儘管自然語言是豐富多彩的,但不易精確,用形式化的方法較好。
4.6.1 形式化說明方法
在 SRS中是否使用形式化方法要依據下列因素:
a. 程序規模和複雜性;
b. 客戶合同中是否要求使用;
c. SRS是否是一個合同工具或僅僅是一個內部文件;
d. SRS文件是否成爲設計文件的根據;
e. 具有支持這種方法的計算機設備。
4.6.2 生產工具
軟件產品生產中有多種生產工具。比如,計算機的字處理器就是非常有用的生產輔助工具。一個SRS通常有若干作者。可能經歷若干版本,並且要進行多次重新組織內容。故生產工具是必要的。
4.6.3 表達工具
在SRS中有許多詞彙,特別是許多名詞和動詞,專門涉及到系統的實體和許多活動,所以表達SRS需要若干工具。比如:
a. 可以驗證實體或活動,無論在SRS中什麼地方都是同一名字。;
b. 可以標識一個特殊的實體或動作在規格說明中的描述位置。
此外,可以使用若干種形式化方法,以便允許自動處理SRS內容,只要作某些限制就可以做到;
用一些表格或圖示法來顯示需求。
用詳細分層體系自動檢查SRS的需求,這裏每一個分層自身是完全的,但是也可以擴展爲下一層,或是上一層的一個組成成分。
自動檢查SRS具有在4.3條描述的部分或全部特點。
5 軟件需求
SRS中每一個軟件需求是要求開發軟件產品的某些基本功能和性能的一個陳述。
5.1 表達軟件需求的方法
軟件需求可以用若干種方法來表達:
a. 通過輸入、輸出說明;
b. 使用代表性的例子;
c. 用規範化的模型。
5.1.1 輸入、輸出說明
用輸入輸出序列來描述一個軟件產品所要求的特性是很有效的。
5.1.1.1 途徑
根據被描述的軟件的性質,至少有三種不同的途徑:
a. 有些軟件產品(如報表系統)要求着重說明輸出。一般情況下,致力於輸出的系統主要是在數據文捲上操作。用戶的輸入通常是致力於提供控制信息和啓動數據文卷的處理;
b. 有些軟件產品需要着重說明輸入、輸出特性。關注輸入、輸出的系統主要是在當前的輸入上操作,要求生成與輸入相匹配的輸出(類似於數據轉換例行程序或一個數學函數包);
c. 還有一些系統(如過程控制系統)要求記憶它們的狀態。可以根據本次輸入和上一次輸入進行應答。也就是說,它的行爲如同一個有限狀態機。在此種情況下,既要關注輸入/輸出對,又要關注這些輸入/輸出對的次序。
5.1.1.2 困難
多數軟件產品可能接收無限的序列作爲輸入,於是,爲了通過輸入輸出序列完整地說明產品的特性,就要求SRS包括一個無限長的輸入和所需的輸出充列。然而,用這樣的途徑不可能完整地描述軟件所要求的一切特性。
5.1.2 典型例子
一種選擇是用典型例子來說明要求的特性。例如,假設一個系統中當接收“0”時用“1”來回答。顯然,要列出全部輸入和輸出序列是不可能的。然而,用典型的序列可以十分清楚地理解系統的特性。下面是一組四種對話的典型的例子,用它描述系統特性。
0101
010101010101
01
010101
這些對話僅提供了要求的輸入和輸出之間的關係,但是不能完全描述系統的特性。
5.1.3 模型
另一種表達需求的方法是模型的方式,這是表達複雜需求的精確和有效方法。
至少可以提出三種可供使用的通用模型:數學型、功能型、計時型。
應注意區別各種模型的應用場合,參考5.1.3.5。
5.1.3.1 數學模型
數學模型是使用數學關係描述軟件特性的模型。數學模型對某些特殊應用領域是特別有用的。例如,導航、線性規劃、計量經濟、信號處理和氣象分析等。
用數學模型能夠對5.1.2中所討論的典型例子描述如下:
(01)*。
這裏,“*”號表示括號內的字符串可以重複一次或多次。
5.1.3.2 功能模型
功能模型是提供從略語以輸出映象的模型。象有限狀態機或Petri網,這些功能模型可以有助於標識和定義軟件的各種特點,或者可以表示系統所要進行的操作。
對前面用數學模型描述的例子。可用圖1所示的有限狀態機形式的功能模型來描述。圖中進入的箭頭表示啓動狀態。雙線的方框表示接收狀態。在各線記號x/y的含義是:x代表接受的輸入,而y是產生的輸出。
5.1.3.3 計時模型
計時模型是一種增加了時間限制的模型。這種模型對於表達軟件特性的形式和細節特別有用。尤其是實時系統或考慮人爲因素的系統。
計時模型可以把下列限制加到圖1的模型中去:
a. 激活因素0將在進入S1狀態30S之內出現;
b. 響應1將在進入S2狀態2S之內出現。
5.1.3.4 其他模型
隊了上面提及的模型外。對一些特殊的應用還有一些特別有用的模型。例如,編譯程序的說明可以使用屬性文法,工資單系統可以使用表格。要注意的是,對SRS使用形式需求語言,通常含有使用特殊模型的意思。
5.1.3.5 警告
無論使用哪一類型的模型,都要:
在 SRS中或在SRS涉及到的一個文件中對它嚴格定義。這個定義應該規定:
a. 模型中的參數所要求的範圍;
b. 使用時的限定值;
c. 結果的精確度;
d. 負載的能力;
e. 要求的執行時間;
f. 缺省或失敗時的響應。
必須注意,在需求的定義域內要保持一個模型定義。每當一個SRS使用一個模型時:
a. 它意味着此模型提供一個十分有效和精確的方法說明需求;
b. 並不意味着軟件產品的實現必須基於這個模型。
一個模型用於解釋文件所寫的需求是有效的,但是對於實際軟件的實現可能並不是最適宜的。
5.2 軟件需求的註釋
有關軟件產品的所有需求,並不是同等重要的。某些需求可能是基本的,例如是對於生命攸關的應用。而另一些可能並不那麼重要。
SRS中每一個需求必須進行註釋,以便區別其重要的程度。
有這種方法註釋需求,可以:
a. 幫助客戶對每一個需求給予更周密的考慮,通常可以在需求中澄清隱藏的假設;
b. 幫助開發者做出正確的設計決定,並對軟件產品不同部分作出相應的努力。
5.2.1 穩定性
註釋需求的一種方法是使用穩定性量綱。當一個需求在軟件預期的生存期間內描述不改變的話,可以認爲該需求是穩定的,否則可以認爲是易變的。
5.2.2 必要性等級
註釋的另一種方法是把需求分成必須保證級、期望級和任選級。
a. 必須保證是指軟件必須和這些需求相一致,否則該軟件不可能被接受;
b. 期望是指這些需求將提高軟件產品的功能,但是如果缺省的話也是可接受的;
c. 任選是給開發者一個機會,可以提供某些超出SRS規定的目標。
5.2.3 注意事項
在註釋需求之前,必須徹底理解這種註釋的實質性含義。
5.3 在表達需求時遇到的共同弊病
SRS的基本點是它必須說明由軟件獲得的結果,而不是獲得這些結果的手段。
編寫需求的人必須描述的基本問題是:
a. 功能——所設計的軟件要做什麼;
b. 性能——是指軟件功能在執行過程中的速度、可使用性、響應時間、各種軟件功能的恢復時間、吞吐能力、精度、頻率等等;
c. 強加於實現的設計限制——在效果、實現的語言、數據庫完整性、資源限制、操作環境等等方面所要求的標準;
d. 屬性——可移植性、正確性、可維護性及安全性等方面的考慮因素;
e. 外部接口——與人、硬件、其他軟件和其他硬件的相互關係。
編寫需求的人應當避免把設計或項目需求寫入SRS之中,應當對說明需求設計約束與規劃設計兩者有清晰的區別。
5.3.1 在SRS中嵌入了設計
在SRS中嵌入設計說明,會過多地約束軟件設計,並且人爲地把具有潛在危險的需求放入SRS中。
5.3.1.1 SRS必須描述在幹什麼數據上、爲誰完成什麼功能、在什麼地方、產生什麼結果。SRS應把注意力集中在要完成的服務目標上。通常不指定如下的設計項目:
a. 把軟件劃分成若干模塊;
b. 給每一個模塊分配功能;
c. 描述模塊間的信息流程或者控制流程;
d. 選擇數據結構。
5.3.1.2 把設計完全同SRS隔離開來始終是不現實的。安全和保密方面的周密考慮可能增加一些直接反映設計約束的需求。例如:
a. 在一些分散的模塊中保持某些功能;
b. 允許在程序的某些區域之間進行有限的通訊;
c. 計算臨界值的檢查和。
5.3.1.3 通常應考慮到,若要爲軟件選擇高層次的設計,就可能需要大量的資源(可能佔整個產品開發成本的10%-20%以上)。有兩種選擇:
a. 不顧本指南的警告,在SRS中描述了設計。這意味着,或者將一個潛在不適當的設計作爲一個需求進行描述(因爲,若要得到好的設計,所花費的時間是不夠的),或者在需求階段花費了過多的時間(因爲在SRS完成之前整個設計分析都要完成);
b. 採用本指南中5.1.3條中的建議,用模型設計描述需求,這種模型設計只用於輔助描述需求,而不使之成爲實際的設計。
5.3.2 在SRS中嵌入了一些項目要求
SRS應當是描寫一個軟件產品,而不是描述生產軟件產品的過程。
項目要求表達客戶和開發者之間對於軟件生產方面合同性事宜的理解(因此不應當包括在SRS中)例如:
a. 成本;
b. 交貨進度;
c. 報表處理;
d. 軟件開發方法;
e. 質量保證;
f. 確認和驗證的標準;
g. 驗收過程。
項目需求在另外的文件中描述。在SRS中提供的只是關於軟件產品本身的需求。
6 SRS大綱
本章着重討論SRS的每一個基本部分,可以作爲一個SRS的大綱。表1給出該大綱目錄,表2至表5給出大綱中第3章的具體需求內容。各開發者和客戶應當根據所描述的實際情況,按本指南有關規定編寫自己的SRS。
  目錄
1 前言
1.1 目的
1.2 範圍
1.3 定義、縮寫詞、略語
1.4 參考資料
2 項目概述
2.1 產品描述
2.2 產品功能
2.3 用戶特點
2.4 一般約束
2.5 假設和依據
3 具體需求
(參閱本指南6.3.2 條中具體需求的組織形式)
附錄
索引
 
6.1 前言(SRS第1章)
本章提供整個SRS綜述。
6.1.1 目的(SRS的1.1條)
在這一條包括下列內容:
a. 描述實際SRS的目的;
b. 說明SRS所預期的讀者。
6.1.2 範圍(SRS的1.2條)
a. 用一個名字標識被生產的軟件產品。比如:×××數據庫系統,報表生成程序等等;
b. 說明軟件產品將幹什麼,如果需要的話,還要說明軟件產品不幹什麼;
c. 描述所說明的軟件的應用。應當:
(1)儘可能精確地描述所有相關的利閃、目的、以及最終目標。
(2)如果有一個較高層次的說明存在,則應該使其和高層次說明中的類似的陳述相一致(例如,系統的需求規格說明)。
6.1.3 定義、縮寫詞、略語(SRS的1.3條)
本條中必須提供全部需求的術語、縮寫詞及略語的定義,以便對SRS進行適當的解釋。這些信息可以由SRS的附錄提供。也可以參考其他的文件。
6.1.4 參考資料(SRS的1.4條)
本條應包括:
a. 在SRS中各處參照的文件的全部清單,如經覈准的計劃任務書,上級機關批文、合同等;
b. 列出其他參考資料,如屬本項目的其他已發表的文件和主要文獻等。每一個文件、文獻要有標題,索引號或文件號,發佈或發表日期以及出版單位;
c. 詳細說明可以得到該參考文件的來源。這個信息可以通過引用附錄或其他文件提供。
6.2 項目概述(SRS第2章)
本章應描述影響產品和其需求的一般因素,本章不說明具體的需求,而僅使需求更易於理解。
6.2.1 產品描述(SRS的2.1條)
這一條是把一個產品用其他有關的產品或項目來描述。
a. 如果這個產品是獨立的,而且全部內容自含,應在此說明;
b. 如果SRS定義的產品是一個較大的系統或項目中的一個組成部分,那麼本條應包括如下內容:
(1)要概述這個較大的系統或項目的每一個組成部分的功能,並說明其接口;
(2)指出該軟件產品主要的外部接口。在這裏,不要求對接口詳細地描述,詳細描述放在SRS其他章條中;
(3)描述所使用的計算機硬件、外圍設備。這裏僅僅是一個綜述性描述。
在本條的描述中,用一個方框圖來表達一個較大的系統或項目的主要組成部分、相互聯繫和外部接口是非常有幫助的。
本條既不用來強迫進行設計方案的描述,也不是描述在解決問題時的設計約束。本條應對在以後具體需求一章中說明的設計約束提供理由。
6.2.2 產品功能(SRS的2.2條)
本條是爲將要完成的軟件功能提供一個摘要。例如,對於一個記帳程序來說,SRS可以用這部分來描述:客戶帳目維護、客戶財務報表和發票製作,而不必把功能所要求的大量的細節描寫出來。
有時,如果存在較高層次的規格說明時,則功能摘要可直接從中取得,這個較高層次的規格說明爲軟件產品分配了特殊的功能,爲了清晰起見,請注意:
a. 編制功能的一種方法是製作功能表,以便客戶或者第一次讀這個文件的人都可以理解;
b. 用方框圖來表達不同的功能和它們的關係也是有幫助的。但要牢記,這樣的圖不是產品設計時所需求的,而只是一種有效的解釋性的工具。
這一條不用作陳述具體需求,只是對後來SRS中具體需求一章中爲什麼要描述的某些需求提供理由。
6.2.3 用戶特點(SRS的2.3條)
本條要描述影響具體需求的產品的最終用戶的一般特點。
許多人在軟件生存週期的操作和維護階段與系統相關。而這些人中有用戶、操作員、維護人員和系統工作人員。這些人的某些特點,象教育水平、經驗、技術、專長等,都是施加於系統操作環境的重要約束。
如果系統的大多數用戶是一些臨時用戶,那麼就要求系統包含如何完成基本功能的提示,而不是假設用戶已經從過去的會議或從閱讀用戶指南中瞭解到這些細節。
這一條的內容不能用來陳述具體需求或強加若干特殊的設計約束,本條應對在SRS的具體需求一章之中的某些具體需求或設計約束的描述提供理由。
6.2.4 一般約束(SRS的2.4條)
本條對設計系統陽限制開發者選擇的其他一些項作一般性描述。而這些項將限定開發者在設計系統時的任選項。這些包括:
a. 管理方針;
b. 硬件的限制;
c. 與其他應用間的接口;
d. 並行操作;
e. 審查功能;
f. 控制功能;
g. 所需的高級語言;
h. 通信協議;
i. 應用的臨界點;
j. 安全和保密方面的考慮。
本條不陳述具體需求或具體設計約束:而對SRS的具體需求一章中爲 什麼要確定某些具體需求和設計約束提供理由。
6.2.5 假設和依據(SRS的2.5條)
本條列出影響SRS中陳述的需求的每一個因素。這些因素不是軟件的設計約束,但是它們的改變可能影響到SRS中的需求。例如:假定一個特定的操作系統是在被軟件產品指定的硬件上使用的,然而,事實上這個操作系統是不可能使用的,於是,SRS就要進行相應的改變。
6.3 具體需求(SRS的第3章)
本章應包括軟件開發者在建立設計時需要的全部細節。這是SRS中篇幅最大和最重要的部分。
a. 根據本指南第4章所規定的準則(如可驗證性、無歧義性等),對每一個需求細節作具體描述;
b. 在SRS的前言、項目概述、附錄部分的有關討論中,要提供對任何一個具體需求交叉引用的背景;
c. 具體需求分類的方法如下:
(1)功能需求;
(2)性能需求;
(3)設計約束;
(4)屬性;
(5)外部接口需求。
本章中要注意的二點是:
a. 按符合邏輯的和可讀的方式組織;
b. 詳細描述每一個需求,使得該需求應達到目標能夠用指定的方法進行客觀的驗證。

6.3.1 具體需求的內容
6.3.1.1 功能需求
本條描述軟件產品的輸入怎樣變換成輸出。即軟件必須完成的基本動作。
對於每一類功能或者有時對於每一個功能,需要具體描述其輸入、加工和輸出的需求。這通常由四個部頒組成:
a. 引言
這部分描述的是功能要達到的目標、所採用的方法和技術,還應清楚說明功能意圖的由來和背景。
b. 輸入
這部分應包括:
(1)詳細描述該功能的所有輸入數據,如:
輸入源、數量、度量單位、時間設定、有效輸入範圍(包括精度和公差);
(2)操作員控制細節的需求。其中有名字、操作員活動的描述、控制檯或操作員的位置。例如:當打印檢查時,要求操作員進行格式調整;
(3)指明引用接口說明或接口控制文件的參考資料。
c. 加工
定義輸入數據、中間參數,以獲得預期輸出結果的全部操作。它包括如下的說明:
(1)輸入數據的有效性檢查;
(2)操作的順序,包括事件的時間設定;
(3)異常情況的響應,例如,溢出、通信故障、錯誤處理等;
(4)受操作影響的參數;
(5)降級運行的要求;
(6)用於把系統輸入變換成相應輸出的任何方法(方程式、數學算法、邏輯操作等);
(7)輸出數據的有效性檢查。
d. 輸出
這部分應包括:
(1)詳細描述該功能所有輸出數據,例如:輸出目的地、數量、度量單位、時間關係、有效輸出的範圍(包括精度和公差)、非法值的處理、出錯信息;
(2)有關接口說明或接口控制文件的參考資料。
此外,對着重於輸入輸出行爲的系統來說,SRS應指定所有有意義的輸入、輸出對及其序列。當一個系統要求記憶它的狀態時,需要這個序列,使得它可以根據本次輸入和以前的狀態作出響應。也就是說,這種情況猶如有限狀態機。 6.3.1.3 設計約束
設計約束受其他標準、硬件限制等方面的影響。
6.3.1.3.1 其他標準的約束
本項將指定由現有的標準或規則派生的要求。例如:
a. 報表格式;
b. 數據命名;
c. 財務處理;
d. 審計追蹤,等等。
6.3.1.3.2 硬件的限制
本項包括在各種硬件約束下運行的軟件要求,例如,應該包括:
a. 硬件配置的特點(接口數,指令系統等);
b. 內存儲器和輔助存儲器的容量。
6.3.1.4 屬性
在軟件的需求之中有若干個屬性,下面指出其中的幾個(注意:對這些決不應理解爲是一個完整的清單)。
6.3.1.4.1 可用性
可以指定一些因素,如檢查點、恢復和再啓動等,以保證整個系統有一個確定的可用性級別。
6.3.1.4.2 安全性
這裏指的是保護軟件的要素,以防止各種非法的訪問、使用,修改、破壞或者泄密。這個領域的具體需求必須包括:
a. 利用可靠的密碼技術;
b. 掌握特定的記錄或歷史數據集;
c. 給不同的模塊分配不同的功能;
d. 限定一個程序中某些區域的通信;
e. 計算臨界值的檢查和。
6.3.1.4.3 可維護性
這裏規定若干需求以確保軟件是可維護的。例如:
a. 軟件模塊所需要的特殊的耦合矩陣;
b. 對微型裝置指定特殊的數據/程序分割要求。
6.3.1.4.4 可轉移/轉換性
這裏規定把軟件從一種環境移植到另一種環境所要求的用戶程序,用戶接口兼容方面的約束等等。
6.3.1.4.5 警告
指定所需屬性十分重要,它使得人們能用規定的方法去進行客觀的驗證。
6.3.1.5 外部接口要求
6.3.1.5.1 用戶接口
提供用戶使用軟件產品是地的接口需求。例如,如果系統的用戶通過顯示終端進行操作,就必須指定如下要求:
a. 對屏幕格式的要求;
b. 報表或菜單的頁面打印格式和內容;
c. 輸入輸出的相對時間;
d. 程序功能鍵的或用性。
6.3.1.5.2 硬件接口
要指出軟件產品和系統硬部件之間每一個接口的邏輯特點。還可能包括如下事宜:支撐什麼樣的設備,如何支撐這些設備,有何約定。
6.3.1.5.3 軟件接口
在這裏應指定需使用的其他軟件產品(例如,數據管理系統,操作系統,或者數學軟件包),以及同其他應用系統之間的接口。
對每一個所需的軟件產品,要提供如下內容:
a. 名字;
b. 助記符;
c. 規格說明號;
d. 版本號;
e. 來源。
對於每一個接口,這部分應說明與軟件產品相關的接口軟件的目的,並根據信息的內容和格式定義接口,這裏不必詳細描述任何已有完整文件的接口,只要引用定義該接口的文件即可。
6.3.1.5.4 通信接口
這裏指定各種通信接口,例如,局部網絡的協議等等。
6.3.1.6 其他需求
根據軟件和用戶組織的特性等,某些需求放在下面各項中描述。
6.3.1.6.1 數據庫
本項對作爲產品的一部分進行開發的數據庫規定一些需求,它們可能包括:
a. 在6.3.1.1條中標識的信息類別;
b. 使用的頻率;
c. 存取能力;
d. 數據元素和文卷描述符;
e. 數據元素、記錄和文卷的關係;
f. 靜態和動態的組織;
g. 數據保存要求。
注:如果使用一個現有的數據庫包,這個包應在 “軟件接口”中命名,並在那裏詳細說明其用法。

6.3.1.6.2 操作
這裏說明用戶要求的常規的和特殊的操作。
a. 在用戶組織之中各種方式的操作。例如,用戶初始化操作;
b. 交互作用操作的同期和無人操作的週期;
c. 數據處理支持功能;
d. 後援和恢復操作。
注:這裏的內容有時是用戶接口的一部分。
6.3.1.6.3 場合適應性需求
這裏包括:
a. 對給定場合、任務或操作方式的任何數據或初始化順序的需求進行定義。例如,柵值,安全界限等等。
b. 指出場合或相關任務的特點,這裏可以被修改以使軟件適合特殊配製的要求。
6.3.2 具體要求的組織
本條通常是SRS所有部分中最大並且最複雜的部分。
a. 可以根據軟件實現功能的基本類型,將本條分成若干段。例如:考慮一個大的交互記帳系統,在裏層可以分爲操作軟件(它支持近乎實時的事務處理)、支撐軟件(聯機功能、磁盤備份、裝入磁帶等等)以及診斷軟件(診斷硬件、通信等),外一層是應收款帳以及應付款帳等等;
b.結構細分的目的是提高SRS 的可讀性,而不是進行概要設計。
對於SRS中的第3章的具體需求部分的最好的組織方案取決於所說明的軟件產品的應用範圍和性質。
表 2~表5提供了四種可能的組織方案。
a. 大綱1(表2)中首先說明全部功能需求,然後說明四種類型的接口要求,最後是其他需求;
b. 大綱2(表3)中,把對應每個特定功能的四種接口需求和該功能需求放在一起描述,然後說明其他需求;
c. 大綱3(表4)中,與功能需求有關的全部內容放在一起首先說明,然後是其他需求的描述。對每一種外部接口的需求重複上述過程;
d. 大綱4(表5)中,接口需求和其餘的需求作爲每一個功能需求的附屬部分來說明。
SRS的具體需求的組織形式必須選擇可讀性最好的方法來描述。
6.4 支持信息
支持信息是指目錄表,附錄和索引。以便使SRS易於使用。
6.4.1 目錄表和索引很重要,而且應按照可以接受的好的文件規則來編寫。
6.4.2 對一個實際的需求規格說明來說,若有必要應該編寫附錄。附錄中可能包括:
a. 輸入輸出格式樣本,成本分析研究的描述或用戶調查結果;
b. 有助於理解SRS的背景信息;
c. 軟件所解決問題的描述;
d. 用戶歷史、背景、經歷和操作特點;
e. 交叉訪問表。按先後次序進行編排,使一些不完全的軟件需求得以完善(參見4.3.2條和4.3.3條);
f. 特殊的裝配指令用於編碼和媒體,以滿足安全、輸出、初始裝入或其他要求。
6.4.3 當包括附錄時,SRS必須明確地說明附錄是不是需求要考慮的部分。
表2 SRS第3章大綱1
3 具體需求
3.1 功能需求
3.1.1 功能需求1
3.1.1.1 引言
3.1.1.2 輸入
3.1.1.3 加工
3.1.1.4 輸出
3.1.2 功能需求2
……
3.1.n 功能需求n
3.2 外部接口需求
3.2.1 用戶接口
3.2.2 硬件接口
3.2.3 軟件接口
3.2.4 通信接口
3.3 性能需求
3.4 設計約束
3.4.1 其他標準的約束
3.4.2 硬件的限制
…………
3.5 屬性
3.5.1 安全性
3.5.2 可維護性
…………
3.6 其他需求
3.6.1 數據庫
3.6.2 操作
3.6.3 場合適應性
…………
 
表3 SRS第3章大綱2
3 具體需求
3.1 功能需求
3.1.1 功能需求1
3.1.1.1 規格說明
3.1.1.1.1 引言
3.1.1.1.2 輸入
3.1.1.1.3 加工
3.1.1.1.4 輸出
3.1.1.2 外部接口
3.1.1.2.1 用戶接口
3.1.1.2.2 硬件接口
3.1.1.2.3 軟件接口
3.1.1.2.4 通信接口
3.1.2 功能需求2
…………
3.1.n 功能需求n
3.2 性能需求
3.3 設計約束
3.4 屬性
3.4.1 安全性
3.4.2 可維護性
…………
3.5 其他需求
3.5.1 數據庫
3.5.2 操作
3.5.3 場合適應性
…………
 

表4 SRS第3章大綱3

3 具體需求
3.1 功能需求
3.1.1 功能需求1
3.1.1.1 引言
3.1.1.2 輸入
3.1.1.3 加工
3.1.1.4 輸出
3.1.1.5 性能需求
3.1.1.6 設計約束
3.1.1.6.1 其他標準的約束
3.1.1.6.2 硬件的限制
…………
3.1.1.7 屬性
3.1.1.7.1 安全性
3.1.1.7.2 可維護性
…………
3.1.1.8 其他需求
3.1.1.8.1 數據庫
3.1.1.8.2 操作
3.1.1.8.3 場合適應性
…………
3.1.2 功能需求2
…………
3.1.n 功能需求n
3.2 外部接口需求
3.2.1 用戶接口
3.2.1.1 性能需求
3.2.1.2 設計約束
3.2.1.2.1 其他標準的約束
3.2.1.2.2 硬件的限制
…………
3.2.1.3 屬性
3.2.1.3.1 安全性
3.2.1.3.2 可維護性
…………
3.2.1.4 其他需求
3.2.1.4.1 數據庫
3.2.1.4.2 操作
3.2.1.4.3 場合適應性
…………
3.2.2 硬件接口
3.2.3 軟件接口
3.2.4 通信接口
 

表5 SRS第3章大綱4

3 具體需求
3.1 功能需求1
3.1.1 引言
3.1.2 輸入
3.1.3 加工
3.1.4 輸出
3.1.5 外部接口
3.1.5.1 用戶接口
3.1.5.2 硬件接口
3.1.5.3 軟件接口
3.1.5.4 通信接口
3.1.6 性能需求
3.1.7 設計約束
3.1.8 屬性
3.1.8.1 安全性
3.1.8.2 可維護性
…………
3.1.9 其他需求
3.1.9.1 數據庫
3.1.9.2 操作
3.1.9.3 場合適應性
…………
3.2 功能需求2
…………
3.n 功能需求n
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章