軟件工程之需求分析-需求規(guī)格說(shuō)明書(shū) (1)
作者:kingshare 發(fā)文時(shí)間:2006.03.14 來(lái)源:天網(wǎng)
【Java專區(qū)】 【安全專區(qū)】 【網(wǎng)管專區(qū)】 【linux專區(qū)】 【進(jìn)入論壇】 【IT博客】編寫(xiě)規(guī)格說(shuō)明書(shū)
項(xiàng)目視圖和范圍文檔包含了業(yè)務(wù)需求,而使用實(shí)例文檔則包含了用戶需求。你必須編寫(xiě)從使用實(shí)例派生出的功能需求文檔,還要編寫(xiě)產(chǎn)品的非功能需求文檔,包括質(zhì)量屬性和外部接口需求。軟件需求規(guī)格說(shuō)明闡述一個(gè)軟件系統(tǒng)必須提供的功能和性能以及它所要考慮的限制條件,它不僅是系統(tǒng)測(cè)試和用戶文檔的基礎(chǔ),也是所有子系列項(xiàng)目規(guī)劃、設(shè)計(jì)和編碼的基礎(chǔ)。它應(yīng)該盡可能完整地描述系統(tǒng)預(yù)期的外部行為和用戶可視化行為。除了設(shè)計(jì)和實(shí)現(xiàn)上的限制,軟件需求規(guī)格說(shuō)明不應(yīng)該包括設(shè)計(jì)、構(gòu)造、測(cè)試或工程管理的細(xì)節(jié)。
1)采用軟件需求規(guī)格說(shuō)明模版: 采用需求規(guī)格說(shuō)明書(shū)模板在你的組織中要為編寫(xiě)軟件需求文檔定義一種標(biāo)準(zhǔn)模板。該模板為記錄功能需求和各種其它與需求相關(guān)的重要信息提供了統(tǒng)一的結(jié)構(gòu)。注意,其目的并非是創(chuàng)建一種全新的模板,而是采用一種已有的且可滿足項(xiàng)目需要并適合項(xiàng)目特點(diǎn)的模板。許多組織一開(kāi)始都采用IEEE標(biāo)準(zhǔn)830-1998(IEEE 1998)描述的需求規(guī)格說(shuō)明書(shū)模板。要相信模板是很有用的,但有時(shí)要根據(jù)項(xiàng)目特點(diǎn)進(jìn)行適當(dāng)?shù)母膭?dòng)。
1 2 3 4 5 6
A引言 目的 文檔約定 預(yù)期的讀者和閱讀建議 產(chǎn)品的范圍 參考文獻(xiàn)
B綜合描述 產(chǎn)品的前景 產(chǎn)品的功能 用戶類(lèi)和特征 運(yùn)行環(huán)境 設(shè)計(jì)和實(shí)現(xiàn)上的限制 假設(shè)和依賴附錄
C外部接口需求附錄 用戶界面附錄 硬件接口 軟件接口 通信接口
D系統(tǒng)特性 說(shuō)明和優(yōu)先級(jí) 激勵(lì)/響應(yīng)序列 功能需求
E 其它非功能需求 性能需求 安全設(shè)施需求 安全性需求 軟件質(zhì)量屬性 業(yè)務(wù)規(guī)則 用戶文檔
F其它需求
G附件 詞匯表 分析模型 待確定問(wèn)題的列表
表2 需求規(guī)格說(shuō)明模板
a. 引言
引言提出了對(duì)軟件需求規(guī)格說(shuō)明的縱覽,這有助于讀者理解文檔如何編寫(xiě)并且如何閱讀和解釋。
a . 1 目的
對(duì)產(chǎn)品進(jìn)行定義,在該文檔中詳盡說(shuō)明了這個(gè)產(chǎn)品的軟件需求,包括修正或發(fā)行版本號(hào)。如果這個(gè)軟件需求規(guī)格說(shuō)明只與整個(gè)系統(tǒng)的一部分有關(guān)系,那么就只定義文檔中說(shuō)明的部分或子系統(tǒng)。
a.2 文檔約定
描述編寫(xiě)文檔時(shí)所采用的標(biāo)準(zhǔn)或排版約定,包括正文風(fēng)格、提示區(qū)或重要符號(hào)。
a.3 預(yù)期的讀者和閱讀建議
列舉了軟件需求規(guī)格說(shuō)明所針對(duì)的不同讀者,例如開(kāi)發(fā)人員、項(xiàng)目經(jīng)理、營(yíng)銷(xiāo)人員、用戶、測(cè)試人員或文檔的編寫(xiě)人員。描述了文檔中剩余部分的內(nèi)容及其組織結(jié)構(gòu)。提出了最適合于每一類(lèi)型讀者閱讀文檔的建議。
a.4 產(chǎn)品的范圍
提供了對(duì)指定的軟件及其目的的簡(jiǎn)短描述,包括利益和目標(biāo)。把軟件與企業(yè)目標(biāo)或業(yè)務(wù)策略相聯(lián)系。可以參考項(xiàng)目視圖和范圍文檔而不是將其內(nèi)容復(fù)制到這里。
a.5 參考文獻(xiàn)
列舉了編寫(xiě)軟件需求規(guī)格說(shuō)明時(shí)所參考的資料或其它資源。這可能包括用戶界面風(fēng)格指導(dǎo)、合同、標(biāo)準(zhǔn)、系統(tǒng)需求規(guī)格說(shuō)明、使用實(shí)例文檔,或相關(guān)產(chǎn)品的軟件需求規(guī)格說(shuō)明。
b. 綜合描述
這一部分概述了正在定義的產(chǎn)品以及它所運(yùn)行的環(huán)境、使用產(chǎn)品的用戶和已知的限制、假設(shè)和依賴。
b.1 產(chǎn)品的前景
描述了軟件需求規(guī)格說(shuō)明中所定義的產(chǎn)品的背景和起源。說(shuō)明了該產(chǎn)品是否是產(chǎn)品系列中的下一成員,是否是成熟產(chǎn)品所改進(jìn)的下一代產(chǎn)品、是否是現(xiàn)有應(yīng)用程序的替代品,或者是否是一個(gè)新型的、自含型產(chǎn)品。
b.2 產(chǎn)品的功能
概述了產(chǎn)品所具有的主要功能。其詳細(xì)內(nèi)容將在d 中描述,所以在此只需要概略地總結(jié)。很好地組織產(chǎn)品的功能,使每個(gè)讀者都易于理解。
b.3 用戶類(lèi)和特征
確定你覺(jué)得可能使用該產(chǎn)品的不同用戶類(lèi)并描述它們相關(guān)的特征。有一些需求可能只與特定的用戶類(lèi)相關(guān)。
b.4 運(yùn)行環(huán)境
描述了軟件的運(yùn)行環(huán)境,包括硬件平臺(tái)、操作系統(tǒng)和版本,還有其它的軟件組件或與其共存的應(yīng)用程序。
b.5 設(shè)計(jì)和實(shí)現(xiàn)上的限制
確定影響開(kāi)發(fā)人員自由選擇的問(wèn)題,并說(shuō)明這些問(wèn)題為什么成為一種限制。
b.6 假設(shè)和依賴
列舉出在對(duì)軟件需求規(guī)格說(shuō)明中影響需求陳述的假設(shè)因素(與已知因素相對(duì)立)。這可能包括你打算要用的商業(yè)組件或有關(guān)開(kāi)發(fā)或運(yùn)行環(huán)境的問(wèn)題。你可能認(rèn)為產(chǎn)品將符合一個(gè)特殊的用戶界面設(shè)計(jì)約定,但是另一個(gè)S R S 讀者卻可能不這樣認(rèn)為。如果這些假設(shè)不正確、不一致或被更改,就會(huì)使項(xiàng)目受到影響。
此外,確定項(xiàng)目對(duì)外部因素存在的依賴。例如,如果你打算把其它項(xiàng)目開(kāi)發(fā)的組件集成到系統(tǒng)中,那么你就要依賴那個(gè)項(xiàng)目按時(shí)提供正確的操作組件。如果這些依賴已經(jīng)記錄到其它文檔(例如項(xiàng)目計(jì)劃)中了,那么在此就可以參考其它文檔。
c. 外部接口需求
利用本節(jié)來(lái)確定可以保證新產(chǎn)品與外部組件正確連接的需求。關(guān)聯(lián)圖表示了高層抽象的外部接。需要把對(duì)接口數(shù)據(jù)和控制組件的詳細(xì)描述寫(xiě)入數(shù)據(jù)字典中。如果產(chǎn)品的不同部分有不同的外部接口,那么應(yīng)把這些外部接口的詳細(xì)需求并入到這一部分的實(shí)例中。
c.1 用戶界面
陳述所需要的用戶界面的軟件組件。描述每個(gè)用戶界面的邏輯特征。而對(duì)于用戶界面的細(xì)節(jié),例如特定對(duì)話框的布局,應(yīng)該寫(xiě)入一個(gè)獨(dú)立的用戶界面規(guī)格說(shuō)明中,而不能寫(xiě)入軟件需求規(guī)格說(shuō)明中。
c.2 硬件接口
描述系統(tǒng)中軟件和硬件每一接口的特征。這種描述可能包括支持的硬件類(lèi)型、軟硬件之間交流的數(shù)據(jù)和控制信息的性質(zhì)以及所使用的通信協(xié)議。
c.3 軟件接口
描述該產(chǎn)品與其它外部組件(由名字和版本識(shí)別)的連接,包括數(shù)據(jù)庫(kù)、操作系統(tǒng)、工具、庫(kù)和集成的商業(yè)組件。明確并描述在軟件組件之間交換數(shù)據(jù)或消息的目的。描述所需要的服務(wù)以及內(nèi)部組件通信的性質(zhì)。確定將在組件之間共享的數(shù)據(jù)。
c.4 通信接口
描述與產(chǎn)品所使用的通信功能相關(guān)的需求,包括電子郵件、We b 瀏覽器、網(wǎng)絡(luò)通信標(biāo)準(zhǔn)或協(xié)議及電子表格等等。定義了相關(guān)的消息格式。規(guī)定通信安全或加密問(wèn)題、數(shù)據(jù)傳輸速率和同步通信機(jī)制。
d. 系統(tǒng)特性
d.1 說(shuō)明和優(yōu)先級(jí)
提出了對(duì)該系統(tǒng)特性的簡(jiǎn)短說(shuō)明并指出該特性的優(yōu)先級(jí)是高、中,還是低?;蛘吣氵€可以包括對(duì)特定優(yōu)先級(jí)部分的評(píng)價(jià),例如利益、損失、費(fèi)用和風(fēng)險(xiǎn),其相對(duì)優(yōu)先等級(jí)可以從1(低)到9 (高)。
d.2 激勵(lì)/響應(yīng)序列
列出輸入激勵(lì)(用戶動(dòng)作、來(lái)自外部設(shè)備的信號(hào)或其它觸發(fā)器)和定義這一特性行為的系統(tǒng)響應(yīng)序列。這些序列將與使用實(shí)例相關(guān)的對(duì)話元素相對(duì)應(yīng)。
d.3 功能需求
詳列出與該特性相關(guān)的詳細(xì)功能需求。這些是必須提交給用戶的軟件功能,使用戶可以使用所提供的特性執(zhí)行服務(wù)或者使用所指定的使用實(shí)例執(zhí)行任務(wù)。描述產(chǎn)品如何響應(yīng)可預(yù)知的出錯(cuò)條件或者非法輸入或動(dòng)作。就像本章開(kāi)頭所描述的那樣,你必須唯一地標(biāo)識(shí)每個(gè)需求。
e. 其它非功能需求
這部分列舉出了所有非功能需求,如產(chǎn)品的易用程度如何,執(zhí)行速度如何,可靠性如何,當(dāng)發(fā)生異常情況時(shí),系統(tǒng)如何處理,而不是外部接口需求和限制。
e.1 性能需求
闡述了不同的應(yīng)用領(lǐng)域?qū)Ξa(chǎn)品性能的需求,并解釋它們的原理以幫助開(kāi)發(fā)人員作出合理的設(shè)計(jì)選擇。確定相互合作的用戶數(shù)或者所支持的操作、響應(yīng)時(shí)間以及與實(shí)時(shí)系統(tǒng)的時(shí)間關(guān)系。你還可以在這里定義容量需求,例如存儲(chǔ)器和磁盤(pán)空間的需求或者存儲(chǔ)在數(shù)據(jù)庫(kù)中表的最大行數(shù)。盡可能詳細(xì)地確定性能需求??赡苄枰槍?duì)每個(gè)功能需求或特性分別陳述其性能需求,而不是把它們都集中在一起陳述。
e.2 安全設(shè)施需求
詳盡陳述與產(chǎn)品使用過(guò)程中可能發(fā)生的損失、破壞或危害相關(guān)的需求。定義必須采取的安全保護(hù)或動(dòng)作,還有那些預(yù)防的潛在的危險(xiǎn)動(dòng)作。明確產(chǎn)品必須遵從的安全標(biāo)準(zhǔn)、策略或規(guī)則。
e.3 安全性需求
詳盡陳述與系統(tǒng)安全性、完整性或與私人問(wèn)題相關(guān)的需求,這些問(wèn)題將會(huì)影響到產(chǎn)品的使用和產(chǎn)品所創(chuàng)建或使用的數(shù)據(jù)的保護(hù)。定義用戶身份確認(rèn)或授權(quán)需求。明確產(chǎn)品必須滿足的安全性或保密性策略。
e.4 軟件質(zhì)量屬性
詳盡陳述與客戶或開(kāi)發(fā)人員至關(guān)重要的其它產(chǎn)品質(zhì)量特性。這些特性必須是確定、定量的并在可能時(shí)是可驗(yàn)證的。至少應(yīng)指明不同屬性的相對(duì)側(cè)重點(diǎn),例如易用程度優(yōu)于易學(xué)程度,或者可移植性優(yōu)于有效性。
e.5 業(yè)務(wù)規(guī)則
列舉出有關(guān)產(chǎn)品的所有操作規(guī)則,例如什么人在特定環(huán)境下可以進(jìn)行何種操作。這些本身不是功能需求,但它們可以暗示某些功能需求執(zhí)行這些規(guī)則。
e.6 用戶文檔
列舉出將與軟件一同發(fā)行的用戶文檔部分,例如,用戶手冊(cè)、在線幫助和教程。明確所有已知的用戶文檔的交付格式或標(biāo)準(zhǔn)。
f. 其它需求
定義在軟件需求規(guī)格說(shuō)明的其它部分未出現(xiàn)的需求,例如國(guó)際化需求或法律上的需求。你還可以增加有關(guān)操作、管理和維護(hù)部分來(lái)完善產(chǎn)品安裝、配置、啟動(dòng)和關(guān)閉、修復(fù)和容錯(cuò),以及登錄和監(jiān)控操作等方面的需求。
附錄A :詞匯表
定義所有必要的術(shù)語(yǔ),以便讀者可以正確地解釋軟件需求規(guī)格說(shuō)明,包括詞頭和縮寫(xiě)。你可能希望為整個(gè)公司創(chuàng)建一張跨越多項(xiàng)項(xiàng)目的詞匯表,并且只包括特定于單一項(xiàng)目的軟件需求規(guī)格說(shuō)明中的術(shù)語(yǔ)。
附錄B :分析模型
這個(gè)可選部分包括或涉及到相關(guān)的分析模型的位置,例如數(shù)據(jù)流程圖、類(lèi)圖、狀態(tài)轉(zhuǎn)換圖或?qū)嶓w-關(guān)系圖。
附錄C :待確定問(wèn)題的列表
編輯一張?jiān)谲浖枨笠?guī)格說(shuō)明中待確定問(wèn)題的列表,其中每一表項(xiàng)都是編上號(hào)的,以便于跟蹤調(diào)查。
2)指明需求來(lái)源:指明需求的來(lái)源為了讓所有項(xiàng)目風(fēng)險(xiǎn)承擔(dān)者明白需求規(guī)格說(shuō)明書(shū)中為何提供這些功能需求,要都能追溯每項(xiàng)需求的來(lái)源,這可能是一種使用實(shí)例或其它客戶要求,也可能是某項(xiàng)更高層系統(tǒng)需求、業(yè)務(wù)規(guī)范、政府法規(guī)、標(biāo)準(zhǔn)或別的外部來(lái)源。
3)為每項(xiàng)需求注上標(biāo)號(hào):為了滿足軟件需求規(guī)格說(shuō)明的可跟蹤性和可修改性的質(zhì)量標(biāo)準(zhǔn),必須唯一確定每個(gè)軟件需求。為每項(xiàng)需求注上標(biāo)號(hào)制定一種慣例來(lái)為需求規(guī)格說(shuō)明書(shū)中的每項(xiàng)需求提供一個(gè)獨(dú)立的可識(shí)別的標(biāo)號(hào)或記號(hào)。這種慣例應(yīng)當(dāng)很健全,允許增加、刪除和修改。作了標(biāo)號(hào)的需求使得需求能被跟蹤,記錄需求變更并為需求狀態(tài)和變更活動(dòng)建立度量。需求標(biāo)識(shí)方法有序列號(hào);層次化編碼;使用"待確定"(to be determined, TBD )符號(hào)等。
4)記錄業(yè)務(wù)規(guī)范:是指關(guān)于產(chǎn)品的操作原則,比如誰(shuí)能在什么情況下采取什么動(dòng)作。將這些編寫(xiě)成需求規(guī)格說(shuō)明書(shū)中的一個(gè)獨(dú)立部分,或一獨(dú)立的業(yè)務(wù)規(guī)范文檔。某些業(yè)務(wù)規(guī)范將引出相應(yīng)的功能需求;當(dāng)然這些需求也應(yīng)能追溯相應(yīng)業(yè)務(wù)規(guī)范。
5)創(chuàng)建需求跟蹤能力矩陣:建立一個(gè)矩陣把每項(xiàng)需求與實(shí)現(xiàn)、測(cè)試它的設(shè)計(jì)和代碼部分聯(lián)系起來(lái)。這樣的需求跟蹤能力矩陣同時(shí)也把功能需求和高層的需求及其它相關(guān)需求聯(lián)系起來(lái)了。在開(kāi)發(fā)過(guò)程中建立這個(gè)矩陣,而不要等到最后才去補(bǔ)建。
這里我們還要介紹需求規(guī)格說(shuō)明書(shū)中設(shè)計(jì)階段,用到的圖形模型--數(shù)據(jù)字典、數(shù)據(jù)流圖、數(shù)據(jù)流圖、狀態(tài)轉(zhuǎn)換圖、對(duì)話圖和類(lèi)圖。
數(shù)據(jù)字典:一個(gè)定義應(yīng)用程序中使用的所有數(shù)據(jù)元素和結(jié)構(gòu)的含義、類(lèi)型、數(shù)據(jù)大小、格式、度量單位、精度以及允許取值范圍的共享倉(cāng)庫(kù)。數(shù)據(jù)字典的維護(hù)獨(dú)立于軟件需求規(guī)格說(shuō)明,并且在產(chǎn)品的開(kāi)發(fā)和維護(hù)的任何階段,各個(gè)風(fēng)險(xiǎn)承擔(dān)者都可以訪問(wèn)數(shù)據(jù)字典。它定義了原數(shù)據(jù)元素、組成結(jié)構(gòu)體的復(fù)雜數(shù)據(jù)元素、重復(fù)的數(shù)據(jù)項(xiàng)、一個(gè)數(shù)據(jù)項(xiàng)的枚舉值以及可選的數(shù)據(jù)項(xiàng)。
數(shù)據(jù)流圖:是結(jié)構(gòu)化系統(tǒng)分析的基本工具。一個(gè)數(shù)據(jù)流圖確定了系統(tǒng)的轉(zhuǎn)化過(guò)程、系統(tǒng)所操縱的數(shù)據(jù)或物質(zhì)的收集(存儲(chǔ)),還有過(guò)程、存儲(chǔ)、外部世界之間的數(shù)據(jù)流或物質(zhì)流。數(shù)據(jù)流模型把層次分解方法運(yùn)用到系統(tǒng)分析上,這種方法很適用于事務(wù)處理系統(tǒng)和其它功能密集型應(yīng)用程序。
數(shù)據(jù)流圖:描繪了系統(tǒng)的數(shù)據(jù)關(guān)系。分析實(shí)體聯(lián)系圖有助于對(duì)業(yè)務(wù)或系統(tǒng)數(shù)據(jù)組成的理解和交互,并暗示產(chǎn)品將有必要包含一個(gè)數(shù)據(jù)庫(kù)。相反,當(dāng)你在系統(tǒng)設(shè)計(jì)階段建立實(shí)體聯(lián)系圖時(shí),通常要定義系統(tǒng)數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。
狀態(tài)轉(zhuǎn)換圖:實(shí)時(shí)系統(tǒng)和過(guò)程控制應(yīng)用程序可以在任何給定的時(shí)間內(nèi)以有限的狀態(tài)存在。當(dāng)滿足所定義的標(biāo)準(zhǔn)時(shí),狀態(tài)就會(huì)發(fā)生改變,例如在特定條件下,接收到一個(gè)特定的輸入激勵(lì)。這樣的系統(tǒng)是有限狀態(tài)機(jī)的例子。大多數(shù)軟件系統(tǒng)需要一些狀態(tài)建?;蚍治觯拖翊蠖鄶?shù)系統(tǒng)涉及到轉(zhuǎn)換過(guò)程、數(shù)據(jù)實(shí)體和業(yè)務(wù)對(duì)象。
對(duì)話圖:在許多應(yīng)用程序中,用戶界面可以看作是一個(gè)有限狀態(tài)機(jī)。在任何情況下僅有一個(gè)對(duì)話元素(例如一個(gè)菜單,工作區(qū),行提示符或?qū)υ捒颍?duì)用戶輸入是可用的。在激活的輸入?yún)^(qū)中,用戶根據(jù)他所采取的活動(dòng),可以導(dǎo)航到有限個(gè)其它對(duì)話元素。因此,許多用戶界面可以用狀態(tài)轉(zhuǎn)換圖中的一種稱為對(duì)話圖來(lái)建模。對(duì)話圖描繪了系統(tǒng)中的對(duì)話元素和它們之間的導(dǎo)航連接,但它沒(méi)有揭示具體的屏幕設(shè)計(jì)。
類(lèi)圖:面向?qū)ο蟮能浖_(kāi)發(fā)優(yōu)于結(jié)構(gòu)化分析和設(shè)計(jì),并且它運(yùn)用于許多項(xiàng)目的設(shè)計(jì)中,從而產(chǎn)生了面向?qū)ο蠓治?、設(shè)計(jì)和編程的域。類(lèi)圖是用圖形方式敘述面向?qū)ο蠓治鏊_定的類(lèi)以及它們之間的關(guān)系