象這樣編寫需求也許更好一些:“用戶能夠在一個由特定觸發條件激活處于編輯的文檔中在顯示和隱藏所有HTML標記間切換”?,F在就很清楚,不可打印字符是HTML標記。由于沒有定義觸發條件,需求對設計沒有約束力。只有設計人員選定了觸發條件后,你才能編寫測試驗證觸發的正確操作。
例3.“HTML分析器可以產生HTML標記錯誤報告,幫助HTML入門者快速解決錯誤”。單詞“快速”使其模糊,沒有加進錯誤報告的定義也是其部完整。我不知道,你怎么驗證這個需求。找一個自稱為HTML的入門者,看看能不能根據錯誤報告快速解決錯誤?
試試這個:“HTML分析器可以產生一個錯誤報告,錯誤報告包含有在被分析文件中出錯的HTML文本和行號以及錯誤的描述。如果沒有錯誤,就不會產生錯誤報告”?,F在我們知道了,什么會被加到出錯報告中,但是出錯報告是個什么樣子,則留由設計人員決定。我們還指定了一個例外:如果沒有發現錯誤,不產生錯誤報告。
例4.“如果可能,主管號碼應通過聯機校驗,而不是通過主全體主管號碼列表校驗”。真感到絕望,什么是“如果可能”:如果技術上可行?如果主全體主管號碼列表可以聯機獲得?要避免象“應該”的這類不確切的詞??蛻羰切枰@個功能性還是不需要。我曾看過一些需求說明書,采用諸如:應,將,應該/將要等一些詞描述優先級的細微差別。但我更喜歡用“應”清楚的說明需求的意圖,指明優先級。這是修改后的:系統應校驗輸入的主管號碼而不通過聯機的主全體主官號碼列表。如果在列表中沒有發現主管號碼,將會顯示一條錯誤信息,也不接受指令。
在理解各個已完成的糟糕需求上,開發人員將會遇到的難題是:開發人員與客戶將會在審核需求,未達成共識前發生激烈的爭論。詳細檢查大的需求文檔不是一件輕松的事情。我清楚有人做過,而且他們花在檢查上的每一分鐘都是值得的。相對于開發階段和用戶的抱怨電話,在這個階段修補缺陷是便宜的。
編寫質量需求的方針
編寫優秀的需求是沒有公式化的方法的。這需要大量的經驗,要從你在過去的文檔中發現的問題學習。請在組織軟件需求文檔時,嚴格遵從這些方針。
句子和段落要短。采用主動語氣。使用正確的語法,拼寫,標點。使用術語,要保持一致性,并在術語表或數據字典中定義它們
要看需求是否被有效的定義,可以以開發人員的觀點看看。在內心將“當你們做完了找我”這句加到文檔尾部,看看能不能是你緊張起來。換句話說,你是否需要SRS的編寫者的額外解釋幫助開發人員很好的理解需求,以便于設計和實現?如果是的話,在繼續工作前,需求還需要細化。
需求編寫者還要努力正確地把握細化程度。要避免包含多個需求的長的敘述段落。有幫助的提示是編寫獨立的可測試的需求。如果你認為一小部分測試可以驗證一個需求的正確,那么它已經正確的細化了。如果你預想到多種不同類的測試,幾個需求可能已擠到了一起,需要拆分開。
密切關注多個需求合成了單個需求。一個需求中的連接詞“和”/“或”建議幾個需求合并。不要在一個需求中使用“和”/“或”。
原文轉自:http://www.anti-gravitydesign.com