編寫(xiě)優(yōu)秀的需求文檔沒(méi)有現(xiàn)成固定的方法,最好是根據(jù)經(jīng)驗(yàn)進(jìn)行。從過(guò)去所遇到的問(wèn)題中可使你受益匪淺。許多需求文檔可以通過(guò)使用有效的技術(shù)編寫(xiě)風(fēng)格和使用用戶術(shù)語(yǔ)而不是計(jì)算機(jī)專業(yè)術(shù)語(yǔ)的方式得以改進(jìn)( Kovitz 1999)。你在編寫(xiě)軟件需求文檔時(shí),應(yīng)牢記以下幾點(diǎn)建議:
? 保持語(yǔ)句和段落的簡(jiǎn)短。
? 采用主動(dòng)語(yǔ)態(tài)的表達(dá)方式。
? 編寫(xiě)具有正確的語(yǔ)法、拼寫(xiě)和標(biāo)點(diǎn)的完整句子。
? 使用的術(shù)語(yǔ)與詞匯表中所定義的應(yīng)該一致。
? 需求陳述應(yīng)該具有一致的樣式,例如“系統(tǒng)必須??”或者“用戶必須??”,并緊跟一個(gè)行為動(dòng)作和可觀察的結(jié)果。例如,“倉(cāng)庫(kù)管理子系統(tǒng)必須顯示一張所請(qǐng)求的倉(cāng)庫(kù)中有存貨的化學(xué)藥品容器清單?!?/P>
? 為了減少不確定性,必須避免模糊的、主觀的術(shù)語(yǔ),例如,用戶友好、容易、簡(jiǎn)單、迅速、有效、支持、許多、最新技術(shù)、優(yōu)越的、可接受的和健壯的。當(dāng)用客說(shuō)“用戶友好”或者“快”或者“健壯”時(shí),你應(yīng)該明確它們的真正含義并且在需求中闡明用戶的意圖。
? 避免使用比較性的詞匯,例如:提高、最大化、最小化和最佳化。定量地說(shuō)明所需要提高的程度或者說(shuō)清一些參數(shù)可接受的最大值和最小值。當(dāng)客戶說(shuō)明系統(tǒng)應(yīng)該“處理”、“支持”或“管理”某些事情時(shí),你應(yīng)該能理解客戶的意圖。含糊的語(yǔ)句表達(dá)將引起需求的不可驗(yàn)證。由于需求的編寫(xiě)是層次化的,因此,可以把頂層不明確的需求向低層詳細(xì)分解,直到消除不明確性為止。編寫(xiě)詳細(xì)的需求文檔,所帶來(lái)的益處是如果需求得到滿足,那么客戶的目的也就達(dá)到了,但是不要讓過(guò)于詳細(xì)的需求影響了設(shè)計(jì)。如果你能用不同的方法來(lái)滿足需求且這種方法都是可接受的,那么需求的詳細(xì)程度也就足夠了。然而,如果評(píng)審軟件需求規(guī)格說(shuō)明的設(shè)計(jì)人員對(duì)客戶的意圖還不甚了解,那么就需要增加額外的說(shuō)明,以減少由于誤解而產(chǎn)生返工的風(fēng)險(xiǎn)。
需求文檔的編寫(xiě)人員總是力求尋找到恰如其分的需求詳細(xì)程度。一個(gè)有益的原則就是編寫(xiě)單個(gè)的可測(cè)試需求文檔。如果你想出一些相關(guān)的測(cè)試用例可以驗(yàn)證這個(gè)需求能夠正確地實(shí)現(xiàn),那么就達(dá)到了合理的詳細(xì)程度。如果你預(yù)想的測(cè)試很多并且很分散,那么可能就要將一些集合在一起的需求分離開(kāi)。已經(jīng)建議將可測(cè)試的需求作為衡量軟件產(chǎn)品規(guī)模大小的尺度(Wilson 1995)。
文檔的編寫(xiě)人員必須以相同的詳細(xì)程度編寫(xiě)每個(gè)需求文檔。我曾見(jiàn)過(guò)在同一份軟件需求規(guī)格說(shuō)明中,對(duì)需求的說(shuō)明五花八門。例如,“組合鍵C o n t r o l - S代表保存文件”和“組合鍵C o n t r o l - P代表打印文件”被當(dāng)成兩個(gè)獨(dú)立的需求。然而,“產(chǎn)品必須響應(yīng)以語(yǔ)音方式輸入的編輯指令”則被作為一個(gè)子系統(tǒng),而并不作為一個(gè)簡(jiǎn)單的功能需求。文檔的編寫(xiě)人員不應(yīng)該把多個(gè)需求集中在一個(gè)冗長(zhǎng)的敘述段落中。在需求中諸如“和”,“或”之類的連詞就表明了該部分集中了多個(gè)需求。務(wù)必記住,不要在需求說(shuō)明中使用“和/或”,“等等”之類的連詞。文檔的編寫(xiě)人員在編寫(xiě)軟件需求規(guī)格說(shuō)明時(shí)不應(yīng)該出現(xiàn)需求冗余。雖然在不同的地方出現(xiàn)相同的需求可能會(huì)使文檔更易讀,但這也造成了維護(hù)上的困難。需求的多個(gè)實(shí)例都需要同時(shí)更新,以免造成需求各實(shí)例之間的不一致。在軟件需求規(guī)格說(shuō)明中交叉引用相關(guān)的各項(xiàng),在進(jìn)行更改時(shí)有助于保持它們之間的同步。讓獨(dú)立性強(qiáng)的需求在需求管理工具或數(shù)據(jù)庫(kù)中只出現(xiàn)一次,這樣可以緩和冗余問(wèn)題。
適合某種模式的需求編號(hào)列表的表格化示例
文檔的編寫(xiě)人員應(yīng)考慮用最有效的方法表達(dá)每個(gè)需求??紤]符合如下句型的一系列需求:“文本編輯器應(yīng)該能分析定義有<管區(qū)>法律的<格式>文檔?!睂?duì)于1 2種相似的需求中, <格式>所取的可能值有3種,<管區(qū)>所取的可能值有4種。當(dāng)
你評(píng)審與此類似的需求時(shí),很難發(fā)現(xiàn)遺漏了一個(gè)需求,例如“文本編輯器應(yīng)該能分析定義了國(guó)際法的無(wú)標(biāo)記文檔?!笨梢杂帽碇械倪@種格式表示需求,以確保你沒(méi)有遺漏掉任何一個(gè)需求。