自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何編寫優(yōu)質(zhì)的需求文檔

開發(fā) 開發(fā)工具
許多人用shell腳本完成一些簡單任務(wù),而且變成了他們生命的一部分。不幸的是,shell腳本在運行異常時會受到非常大的影響。在寫腳本時將這類問題最小化是十分必要的。本文中我將介紹一些讓Bash腳本變得健壯的技巧。

編寫需求文檔,在嵌入式開發(fā)領(lǐng)域是非常普遍的。需求文檔被用來定義開發(fā)任務(wù),協(xié)調(diào)大規(guī)模的研發(fā)計劃。對于最終的產(chǎn)品,需求文檔扮演著開發(fā)者行為和消費者行為之間溝通紐帶的角色。當需求文檔書寫正確的時候,便可以發(fā)揮巨大的作用。然而,如果你在嵌入式開發(fā)領(lǐng)域工作的時間足夠長,你就會很快發(fā)現(xiàn),這個領(lǐng)域里不合格的需求文檔實在是太多了。當你嘗試對這些不合格的文檔進行修復(fù)時,你又會很快發(fā)現(xiàn),書寫正確的需求文檔絕非易事。在這里,我們提出一些建議,希望能將書寫正確需求文檔這件事情變得清晰一些。

從較高的層次來看,書寫需求文檔的目的就是要提供對所需行為的有效描述。該所需行為可用一個黑盒系統(tǒng)描述,并需要注意以下細節(jié):

  • 工程師可以根據(jù)系統(tǒng)所說進行實現(xiàn)
  • 測試人員,在不與開發(fā)人員溝通的前提下,可以利用滿足硬件要求的設(shè)備驗證需求。
  • 最終產(chǎn)生的成果滿足終端用戶的要求。

 

 

 

 


黑盒測試

書寫優(yōu)質(zhì)的需求文檔:

[[62793]]

最基本的原則是:需求文檔應(yīng)當盡量簡潔,用最易懂的描述來約束系統(tǒng)的預(yù)期行為。如果你遵循這個原則,剩下的那些重要因素(可測試性、避免過度設(shè)計等等)都將變得順理成章。

列舉一下更詳細的規(guī)則,通常會更有幫助。下面是書寫優(yōu)質(zhì)需求文檔需要遵循的步驟:

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

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

3. 用最易懂的方式描述系統(tǒng)的預(yù)期行為

4. 除了輸入和輸出之外,你的需求是不是還涉及了系統(tǒng)的其他部分?如果是,那么你的需求就設(shè)計過度了。重構(gòu)需求,讓它變得精簡。

5. 你的需求是不是過于模棱兩可?加入更多的限定規(guī)范。注意:有些模棱兩可的描述并不是壞事,假設(shè)描述所包含的所有情況均可被接受,且測試的時候不需要附加的信息加以說明,那么就沒關(guān)系。你不需要(也不應(yīng)該)把系統(tǒng)的行為限制得過頭。

6. 你的需求是否可測試?(這里指的是黑盒測試)如果不是,你最好返回到第4步。如果這種返工發(fā)生很多次,那就說明你的黑盒無法正確描述系統(tǒng),或者你的測試工具不夠優(yōu)秀。無論是哪種情況,不可測試的需求文檔幾乎就是一文不值的。

7. 你的需求文檔通俗易懂么?如果你的需求文檔非常難以讀懂,那就說明你寫得不好,只能給那些照著你的需求負責(zé)實施的人帶來無盡的痛苦。如果是這樣,回到第3步。

8. 你是不是真的做到了第4步?你確認么?再檢查一下。

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

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

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

但是我們跳過了步驟1:

  • 在這個例子里,我們將把黑盒畫到設(shè)備的微處理器上。

讓我們繼續(xù)往下進行,

第四步:除了輸入和輸出以外,我們是否還涉及了其他的系統(tǒng)邊界?

  • 微處理器并不關(guān)心從彎曲傳感器讀取什么樣的數(shù)據(jù),從處理器的角度來看,僅需要做的是測量ADC腳的電壓而已。
  • LED僅由數(shù)字輸出腳控制。

下面,讓我們來修正這個問題:

第0版本的需求:

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

第五步: 需求寫模棱兩可么?

恩,我們的描述太模棱兩可了.輸出端切換的速度要多快? 跟電壓的關(guān)系如何? 輸入電壓的范圍是多少? 讓我們加一些更細節(jié)的描述吧:

版本0.1

1. 輸出端應(yīng)當由一個自由活動的定時器進行控制

2. 自由運行定時器的頻率最高不得高于每秒10次,不得低于每秒1次.

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

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

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

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

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

  • 首先,自由運行的定時器在這里不需要提及. 因為對它基本上無法進行黑盒測試,它既不是輸入也不是輸出,而且跟這兩者也沒有什么聯(lián)系。
  • 讓我們用“數(shù)字輸出端變化的頻率應(yīng)控制在每秒10次和每秒1次之間”來代替自由運 行定時器的測試標準。
  • 對于上述的第四條需求,可能需要一些小修改才能作為測試標準。讓我們用“ADC端的輸入電壓應(yīng)當保證在每100毫秒內(nèi)至少被讀取一次”來加以描述,這樣的描述能讓我們預(yù)期的測試行為顯得更加通俗易懂。
  • 需求的第五條也需要一些小修改。我們?nèi)绾尾拍軝z測電壓的輸出范圍是在0到1伏之間呢? 總不能給個2伏的電壓,然后看看元器件有沒有被燒毀吧?

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

版本0.2

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

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

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

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

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

相比于我們原來的描述:“根據(jù)彎曲傳感器的輸出不同頻率來控制LED閃爍”,我們上面的那些需求描述顯得難以閱讀和理解。
我發(fā)現(xiàn),讓需求文檔變得通俗易懂,最簡單辦法莫過于,把過于細節(jié)的東西抽取出來,然后以條目的形式單獨定義。

版本1

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

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

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

定義:

  • 彎曲傳感器:輸入電壓位于ADC的X端。安全電壓范圍為0到1伏特(放到注釋單獨列出)
  • LED狀態(tài):數(shù)字狀態(tài)由Y端輸出

這樣就好多了(盡管還不完美)。這些需求通俗易懂,不涉及到系統(tǒng)內(nèi)部實現(xiàn),且易于測試。對于系統(tǒng)行為的限定也僅僅限于需要做什么,點到為止。(例如,對彎曲傳感器的采樣頻率,在實現(xiàn)上也可以更高,只要不產(chǎn)生非預(yù)期行為,一切都可以)。
編寫需求就仿佛是在大腦中構(gòu)建軟件的過程。因此要重于實作。

英文原文:Job Vranish

原文鏈接:http://blog.jobbole.com/wp-admin/post.php?post=15561

【編輯推薦】

  1. XQuery 開發(fā):一種更好的數(shù)據(jù)庫編程語言
  2. 編程語言新生兒到底因何成功 又為何失???
  3. Android應(yīng)用開發(fā)者抱怨谷歌拖延支付分成
  4. 跨平臺開發(fā):初探AppCan移動開發(fā)框架
  5. 給用戶和開發(fā)者最佳的.Net框架部署方案
責(zé)任編輯:林師授 來源: 伯樂在線
相關(guān)推薦

2012-03-08 09:44:41

編程

2023-08-16 14:43:31

技術(shù)文檔軟件開發(fā)

2017-09-14 12:45:35

2011-04-21 11:35:13

黑白激光打印機

2023-11-30 09:36:39

2013-03-12 09:52:04

技術(shù)文檔技術(shù)反饋程序員

2020-03-30 17:43:13

開源開源項目編寫文檔

2015-11-19 16:22:58

產(chǎn)品經(jīng)理需求文檔

2024-01-22 10:31:09

Kate文檔

2017-03-14 15:58:55

睿江云IDC機房安全

2011-11-08 17:11:47

程序員

2024-09-09 00:00:00

編寫技術(shù)文檔

2023-04-23 11:33:20

社區(qū)文檔

2012-08-28 13:34:28

架構(gòu)師軟件架構(gòu)架構(gòu)文檔

2009-04-21 18:30:51

呼叫中心教育

2024-01-15 08:00:00

開發(fā)API文檔集成

2009-08-18 17:08:50

C#編寫XML文檔

2015-08-28 09:48:46

激勵用戶優(yōu)質(zhì)內(nèi)容社區(qū)

2020-10-27 15:52:29

AWS世外教育

2018-04-20 09:00:47

UI設(shè)計應(yīng)用程序易用性
點贊
收藏

51CTO技術(shù)棧公眾號