一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

如何編寫優質的需求文檔

  英文原文:How to write good requirements

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

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

  • 工程師可以根據系統所說進行實現
  • 測試人員,在不與開發人員溝通的前提下,可以利用滿足硬件要求的設備驗證需求。
  • 最終產生的成果滿足終端用戶的要求。
  • 黑盒測試

  書寫優質的需求文檔:

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

  列舉一下更詳細的規則,通常會更有幫助。下面是書寫優質需求文檔需要遵循的步驟:

  1. 定義系統的邊界。這也是黑盒系統所必要的。

  2. 定義輸入和輸出。這也應當是你看待內部系統的唯一方式。

  3. 用最易懂的方式描述系統的預期行為

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

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

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

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

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

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

  顯然,我們已經完成了步驟 2 和步驟 3 了!

  · 輸入:從彎曲傳感器讀取數據。

  · 輸出:LED。

  但是我們跳過了步驟1:

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

  讓我們繼續往下進行,

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

  · 微處理器并不關心從彎曲傳感器讀取什么樣的數據,從處理器的角度來看,僅需要做的是測量 ADC 腳的電壓而已。

  · LED 僅由數字輸出腳控制。

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

  第 0 版本的需求:

  1. 該設備應當根據 ADC 腳的不同頻率的電壓,來切換數字輸出端的狀態。

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

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

  版本0.1

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

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

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

  4. ADC 端的輸入電壓應當每 100 毫秒讀取一次

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

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

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

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

  讓我們用“數字輸出端變化的頻率應控制在每秒 10 次和每秒 1 次之間”來代替自由運行定時器的測試標準。

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

  · 需求的第五條也需要一些小修改。我們如何才能檢測電壓的輸出范圍是在 0 到 1 伏之間呢? 總不能給個 2 伏的電壓,然后看看元器件有沒有被燒毀吧?

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

  版本0.2

  1. 數字輸出端的切換頻率應當控制在每秒 10 次到每秒 1 次之間

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

  3. ADC 端的輸入電壓應當保證在每 100 毫秒內至少被讀取一次

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

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

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

  我發現,讓需求文檔變得通俗易懂,最簡單辦法莫過于,把過于細節的東西抽取出來,然后以條目的形式單獨定義。

  版本1

  1. 彎曲傳感器應當保證至少在 100 毫秒內讀取一次數據(放到注釋單獨列出)

  2. 切換 LED 的狀態,使其與彎曲傳感器的讀數保持一致

  3. 當彎曲傳感器的讀數為 1 伏特時,LED 狀態切換的次數應當保持在平均一秒十次;當傳感器的讀數為 0 伏特時,LED 的切換次數應保持在一秒 1 次。

  定義:

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

  · LED 狀態:數字狀態由Y端輸出

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

  編寫需求就仿佛是在大腦中構建軟件的過程。因此要重于實作。

  編譯:伯樂在線 – 黃小非

it知識庫如何編寫優質的需求文檔,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品综合色区在线观看 | 欧美色黄视频 | 亚洲综合在线最大成人 | 天天做天天爱夜夜大爽完整 | 色小妹综合 | 亚洲日本网站 | 99久久精品免费看国产四区 | 国产美女精品三级在线观看 | 国产成人激情 | 在线观看精品视频一区二区三区 | 一区二区三区四区精品 | 国产一区二区三区久久精品 | 久久精品a国产一级 | 91精品福利老司机在线观看 | 国产精品视频一区二区三区小说 | 伊人久久综在合线亚洲91 | 中文字幕国产在线 | 99国产精品免费视频 | 一区二区三区在线观看免费 | 欧美ab片 | 99久久精品国产免看国产一区 | 污免费观看 | 亚洲伊人成人网 | 亚洲香蕉网综合久久 | 日本无吗免费一二区 | 亚洲国产精品久久婷婷 | 黄色在线网站 | 成人十八影院在线观看 | 色久优优 | 麻豆精品国产自产在线 | 国产成人亚洲日本精品 | 亚洲国内精品 | 亚洲天砖砖区免费 | 337p人体 欧洲人体 亚 | 国产成人99精品免费观看 | 日本一区免费在线 | 中文字幕有码热在线视频 | 日本一区二区三区免费观看 | 国产亚洲第一 | 久久精品国产999久久久 | 亚洲图片天堂 |