如何讓客戶寫出高質(zhì)量的需求文檔
  • 更新時間:2024-12-25 15:04:51
  • 網(wǎng)站建設(shè)
  • 發(fā)布時間:1年前
  • 335

北京網(wǎng)站建設(shè)公司推來客:寫需求文檔在嵌入式開發(fā)領(lǐng)域很常見。需求文檔用于定義開發(fā)任務(wù)和協(xié)調(diào)大型研發(fā)計劃。對于最終的產(chǎn)品,需求文檔扮演著開發(fā)者行為與消費(fèi)者行為之間溝通紐帶的角色。當(dāng)需求文檔編寫正確時,它們可以發(fā)揮巨大的作用。但是,如果你在嵌入式開發(fā)領(lǐng)域工作的時間足夠長,你很快就會發(fā)現(xiàn)這個領(lǐng)域不合標(biāo)準(zhǔn)的需求文檔太多了。當(dāng)您嘗試修復(fù)這些不合標(biāo)準(zhǔn)的文檔時,您很快就會發(fā)現(xiàn)編寫正確的需求文檔絕非易事。在這里,我們提出一些建議,希望能夠讓編寫正確的需求文檔這件事變得更加清晰。

在高層次上,編寫需求文檔的目的是提供對所需行為的有效描述。所需的行為可以描述為黑盒系統(tǒng),注意以下細(xì)節(jié):

? 工程師可以實現(xiàn)系統(tǒng)所說的。

? 測試人員無需與開發(fā)人員溝通,就可以使用滿足硬件要求的設(shè)備來驗證要求。

? 結(jié)果輸出滿足最終用戶的要求。

最終產(chǎn)生的成果滿足終端用戶的要求

黑盒測試寫出高質(zhì)量的需求文檔:

黑盒測試書寫優(yōu)質(zhì)的需求文檔

最基本的原則是:需求文檔盡可能簡潔,用最容易理解的描述來約束系統(tǒng)的預(yù)期行為。如果您遵循這個原則,其余的重要因素(可測試性、避免過度設(shè)計等)就會水到渠成。

列舉更詳細(xì)的規(guī)則通常更有幫助。以下是編寫質(zhì)量要求文檔的步驟:

1.定義系統(tǒng)的邊界。這對于黑盒系統(tǒng)也是必要的。

2. 定義輸入和輸出。這也應(yīng)該是您查看內(nèi)部系統(tǒng)的唯一方式。

3. 盡可能以最容易理解的方式描述系統(tǒng)的預(yù)期行為。

4、除了輸入輸出,你的需求是否涉及到系統(tǒng)的其他部分?如果是,那么您的要求是過度設(shè)計的。重構(gòu)需求,使其更加精簡。

5、你的需求是否過于模糊?添加更多限定符。注意:一些模棱兩可的描述并不是壞事,假設(shè)描述涵蓋的所有情況都是可以接受的,并且不需要額外的信息來解釋測試,那么就可以了。您不需要(也不應(yīng)該)過多地限制系統(tǒng)的行為。

6. 你的需求是可測試的嗎? (這里指的是黑盒測試)如果不是,你最好回到步驟4。如果這種返工經(jīng)常發(fā)生,那么要么你的黑盒沒有正確描述系統(tǒng),要么你的測試工具不夠好.在這兩種情況下,不可測試的需求文檔幾乎毫無價值。

7. 你的需求文檔容易理解嗎?如果你的需求文檔非常難讀,說明你寫得不好,只會給負(fù)責(zé)實現(xiàn)你的需求的人帶來無盡的痛苦。如果是,返回步驟3。

8. 你真的做到了第4 步嗎?你確定嗎?再檢查一遍。

例子:在下面的例子中,讓我們描述一個自制的嵌入式設(shè)備的要求,該設(shè)備可以從彎曲傳感器讀取彎曲頻率并根據(jù)不同的頻率值使LED閃爍。

顯然,我們已經(jīng)完成了第2步和第3步!

? 輸入:從彎曲傳感器讀取數(shù)據(jù)。

? 輸出:LED。

但是我們跳過了第1 步:

? 在此示例中,我們將把黑框繪制到設(shè)備的微處理器上。

讓我們繼續(xù)前進(jìn),

第4 步:除了輸入和輸出之外,我們是否觸及了任何其他系統(tǒng)邊界?

? 微處理器不關(guān)心從彎曲傳感器讀取的數(shù)據(jù)是什么,從處理器的角度來看,所有需要做的就是測量ADC 引腳上的電壓。

? LED 僅由數(shù)字輸出引腳控制。

現(xiàn)在,讓我們解決這個問題:

版本0 的要求:

1. 設(shè)備應(yīng)根據(jù)ADC引腳不同頻率的電壓來切換數(shù)字輸出端的狀態(tài)。

第5 步:要求是否寫得模棱兩可?

好吧,我們的描述太模棱兩可了。輸出開關(guān)必須多快?它與電壓有什么關(guān)系?輸入電壓范圍是多少?讓我們添加一些更詳細(xì)的描述:

版本0.1

1.輸出應(yīng)由自由運(yùn)行的定時器控制

2、自由運(yùn)行定時器的最大頻率不得高于每秒10次,也不得低于每秒1次。

3、自由運(yùn)行定時器的觸發(fā)頻率應(yīng)在最高值和最低值之間線性變化,并與ADC端的輸入電壓成比例。

正比。

4. ADC端的輸入電壓應(yīng)當(dāng)每100毫秒讀取一次

5. 當(dāng)ADC端的輸入電壓端被讀入時,控制自由運(yùn)行定時器周期時間的注冊值也應(yīng)當(dāng)被更新。

6. ADC輸入端的電壓有效范圍應(yīng)當(dāng)被控制在0到1伏之間。

第六步:你的需求是否通俗易懂?

相比于我們原來的描述:“根據(jù)彎曲傳感器的輸出不同頻率來控制LED閃爍”,我們上面的那些需求描述顯得難以閱讀和理解。

我發(fā)現(xiàn),讓需求文檔變得通俗易懂,最簡單辦法莫過于,把過于細(xì)節(jié)的東西抽取出來,然后以條目的形式單獨(dú)定義。

第七步:你的需求是可測試的么?

? 首先,自由運(yùn)行的定時器在這里不需要提及。 因為對它基本上無法進(jìn)行黑盒測試,它既不是輸入也不是輸出,而且跟這兩者也沒有什么聯(lián)系。

讓我們用“數(shù)字輸出端變化的頻率應(yīng)控制在每秒10次和每秒1次之間”來代替自由運(yùn) 行定時器的測試標(biāo)準(zhǔn)。

? 對于上述的第四條需求,可能需要一些小修改才能作為測試標(biāo)準(zhǔn)。讓我們用“ADC端的輸入電壓應(yīng)當(dāng)保證在每100毫秒內(nèi)至少被讀取一次”來加以描述,這樣的描述能讓我們預(yù)期的測試行為顯得更加通俗易懂。

? 需求的第五條也需要一些小修改。我們?nèi)绾尾拍軝z測電壓的輸出范圍是在0到1伏之間呢? 總不能給個2伏的電壓,然后看看元器件有沒有被燒毀吧?

那么,說“檢驗系統(tǒng)在ADC端輸入電壓為1到2伏之間的時候,工作是否正?!?,這樣就檢驗就容易多了。需求描述應(yīng)當(dāng)是“正面”的,應(yīng)當(dāng)描述設(shè)備“應(yīng)該”的行為,而不是設(shè)備“不應(yīng)該”的行為。否則的話,測試將會無法進(jìn)行。

版本0.2

1. 數(shù)字輸出端的切換頻率應(yīng)當(dāng)控制在每秒10次到每秒1次之間

2. 數(shù)字輸出端的切換頻率應(yīng)當(dāng)在最大值和最小值之間呈線性變化,并與ADC端的輸入電壓成正比

3. ADC端的輸入電壓應(yīng)當(dāng)保證在每100毫秒內(nèi)至少被讀取一次

4. 檢驗當(dāng)ADC端的輸入電壓范圍在0到1伏之間的時候,系統(tǒng)工作是否正常

版本1

1. 彎曲傳感器應(yīng)當(dāng)保證至少在100毫秒內(nèi)讀取一次數(shù)據(jù)(放到注釋單獨(dú)列出)

2. 切換LED的狀態(tài),使其與彎曲傳感器的讀數(shù)保持一致

3. 當(dāng)彎曲傳感器的讀數(shù)為1伏特時,LED狀態(tài)切換的次數(shù)應(yīng)當(dāng)保持在平均一秒十次;當(dāng)傳感器的讀數(shù)為0伏特時,LED的切換次數(shù)應(yīng)保持在一秒1次。

定義:

? 彎曲傳感器:輸入電壓位于ADC的X端。安全電壓范圍為0到1伏特(放到注釋單獨(dú)列出)

? LED狀態(tài):數(shù)字狀態(tài)由Y端輸出

這樣就好多了(盡管還不完美)。這些需求通俗易懂,不涉及到系統(tǒng)內(nèi)部實現(xiàn),且易于測試。對于系統(tǒng)行為的限定也僅僅限于需要做什么,點(diǎn)到為止。(例如,對彎曲傳感器的采樣頻率,在實現(xiàn)上也可以更高,只要不產(chǎn)生非預(yù)期行為,一切都可以)。

編寫需求就仿佛是在大腦中構(gòu)建軟件的過程。因此要重于執(zhí)行操作。

本文發(fā)布于北京網(wǎng)站制作公司推來客http://www.tlkjt.com/

我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

本文章出于推來客官網(wǎng),轉(zhuǎn)載請表明原文地址:https://www.tlkjt.com/web/13354.html
推薦文章

在線客服

掃碼聯(lián)系客服

3985758

回到頂部