5. 你的需求是不是過于模棱兩可?參加更多的限定標(biāo)準(zhǔn)。留神:有些提綱挈領(lǐng)的描述并不是壞事,假設(shè)描述所包括的所有情況均可被接收,且測試的時候不需要附加的信息加以說明,那么就不要緊。你不需要(也不應(yīng)該)把系統(tǒng)的行為限度得過火。 • 對上述的第四條需求,可能需要一些小修改能力作為測試尺度。讓我們用“ADC端的輸入電壓應(yīng)當(dāng)保障在每100毫秒內(nèi)至少被讀取一次”來加以描述,這樣的描述能讓我們預(yù)期的測試行為顯得更加通俗易懂。 定義: 1. 定義系統(tǒng)的邊界。這也是黑盒系統(tǒng)所必要的。 2. 定義輸入和輸出。這也應(yīng)當(dāng)是你對待內(nèi)部系統(tǒng)的獨一方式。 4. 檢驗當(dāng)ADC端的輸入電壓范圍在0到1伏之間的時候,系統(tǒng)工作是否正常 1. 輸出端應(yīng)該由一個自在運動的定時器進行把持 第0版本的需求: 7. 你的需求文檔通俗易懂么?如果你的需求文檔十分難以讀懂,那就解釋你寫得不好,只能給那些照著你的需求負(fù)責(zé)實行的人帶來無盡的苦楚。如果是這樣,回到第3步。 第四步:除了輸入和輸出以外,我們是否還涉及了其余的系統(tǒng)邊界? • 工程師能夠依據(jù)系統(tǒng)所說進行實現(xiàn)。 • 微處理器并不關(guān)懷從彎曲傳感器讀取什么樣的數(shù)據(jù),從處理器的角度來看,僅需要做的是丈量ADC腳的電壓罷了。 1. 彎曲傳感器應(yīng)當(dāng)保證至少在100毫秒內(nèi)讀取一次數(shù)據(jù)(放到正文單獨列出) • 測試人員,在不與開發(fā)職員溝通的條件下,可以應(yīng)用滿意硬件請求的設(shè)備驗證需求。 4. ADC端的輸入電壓應(yīng)當(dāng)每100毫秒讀取一次 3. 用最易懂的方法描述系統(tǒng)的預(yù)期行為。 2. 自由運行定時器的頻率最高不得高于每秒10次,不得低于每秒1次。 這樣就好多了(只管還不完善)。這些需求通俗易懂,不波及到系統(tǒng)內(nèi)部實現(xiàn),且易于測試。對于系統(tǒng)行為的限定也僅僅限于需要做什么,點到為止。(例如,對彎曲傳感器的采樣頻率,在實現(xiàn)上也可以更高,只有不發(fā)生非預(yù)期行為,所有都可以)。 • LED狀態(tài):數(shù)字狀態(tài)由Y端輸出 • 需要的第五條也須要一些小修正。咱們?nèi)绾尾鸥蓹z測電壓的輸出范疇是在0到1伏之間呢? 總不能給個2伏的電壓,而后看看元器件有不被銷毀吧? 3. 當(dāng)曲折傳感器的讀數(shù)為1伏特時,LED狀況切換的次數(shù)應(yīng)當(dāng)保持在均勻一秒十次;當(dāng)傳感器的讀數(shù)為0伏特時,LED的切換次數(shù)應(yīng)堅持在一秒1次。 6. ADC輸入端的電壓有效規(guī)模應(yīng)當(dāng)被控制在0到1伏之間。 2. 切換LED的狀態(tài),使其與彎曲傳感器的讀數(shù)保持一致 -->從較高的檔次來看,書寫需求文檔的目的就是要供給對所需行為的有效描述。該所需行為可用一個黑盒系統(tǒng)描述,并需要注意以下細(xì)節(jié): • 在這個例子里,我們將把黑盒畫到設(shè)備的微處置器上。 • 最終產(chǎn)生的結(jié)果知足終端用戶的要求。 4. 除了輸入和輸出之外,你的需求是不是還涉及了系統(tǒng)的其他局部?如果是,那么你的需求就設(shè)計過度了。重構(gòu)需求,讓它變得精簡。 例子:下面的例子,讓我們描述一個自制的嵌入式設(shè)備的需求,這個設(shè)備能從彎曲傳感器上讀取彎曲的頻率,并根據(jù)不同的頻率值讓一個LED閃爍。 編寫需求就好像是在大腦中構(gòu)建軟件的進程。因而要重于履行操作。 下面,讓我們來修改這個問題: • 輸入:從彎曲傳感器讀取數(shù)據(jù)。 8. 你是不是真的做到了第4步?你確認(rèn)么?再檢討一下。 • LED僅由數(shù)字輸出腳控制。 然而我們跳過了步驟1: 比擬于我們本來的描述:“根據(jù)彎曲傳感器的輸出不同頻率來掌握LED閃耀”,我們上面的那些需求描述顯得難以瀏覽和懂得。 第五步:需求寫模棱兩可么? 2. 數(shù)字輸出端的切換頻率應(yīng)當(dāng)在最大值跟最小值之間呈線性變更,并與ADC端的輸入電壓成正比
編寫需求文檔,在嵌入式開發(fā)范疇是無比廣泛的。需求文檔被用來定義開發(fā)義務(wù),和諧大范圍的研發(fā)打算。對于終極的產(chǎn)品,需求文檔表演著開發(fā)者行為和花費者行為之間溝通紐帶的角色。當(dāng)需求文檔書寫正確的時候,便可以施展宏大的作用。然而,如果你在嵌入式開發(fā)領(lǐng)域工作的時間足夠長,你就會很快發(fā)現(xiàn),這個領(lǐng)域里分歧格的需求文檔切實是太多了。當(dāng)你嘗試對這些不及格的文檔進行修復(fù)時,你又會很快發(fā)現(xiàn),書寫正確的需求文檔絕非易事。在這里,我們提出一些倡議,盼望能將書寫正確需求文檔這件事件變得清楚一些。 最根本的準(zhǔn)則是:需求文檔應(yīng)當(dāng)盡量簡練,用最易懂的描述來束縛系統(tǒng)的預(yù)期行為。如果你遵循這個原則,剩下的那些主要因素(可測試性、防止適度設(shè)計等等)都將變得牽強附會。 1. 該設(shè)備應(yīng)當(dāng)根據(jù)ADC腳的不同頻率的電壓,來切換數(shù)字輸出端的狀態(tài)。 讓我們用“數(shù)字輸出端變化的頻率應(yīng)控制在每秒10次和每秒1次之間”來取代自由運 行定時器的測試標(biāo)準(zhǔn)。 版本1 • 彎曲傳感器:輸入電壓位于ADC的X端。保險電壓范圍為0到1伏特(放到解釋單獨列出) • 首先,自由運行的定時器在這里不需要提及。 由于對它基礎(chǔ)上無法進行黑盒測試,它既不是輸入也不是輸出,而且跟這兩者也沒有什么接洽。 列舉一下更具體的規(guī)矩,通常會更有輔助。下面是書寫優(yōu)質(zhì)需求文檔需要遵守的步驟: 版本0.1 讓我們持續(xù)往下進行, • 輸出:LED。 版本0.2 顯然,我們已經(jīng)實現(xiàn)了步驟2和步驟3了! 黑盒測試書寫優(yōu)質(zhì)的需求文檔: 6. 你的需求是否可測試?(這里指的是黑盒測試)假如不是,你最好返回到第4步。如果這種返工產(chǎn)生很屢次,那就闡明你的黑盒無法準(zhǔn)確描述系統(tǒng),或者你的測試工具不夠優(yōu)良。無論是哪種情形,不可測試的需求文檔簡直就是一文不值的。 恩,我們的描述太不置可否了。輸出端切換的速度要多快? 跟電壓的關(guān)聯(lián)如何? 輸入電壓的范圍是多少? 讓我們加一些更細(xì)節(jié)的描述吧: 1 2 下一頁第七步:你的需求是否通俗易懂? 5. 當(dāng)ADC真?zhèn)€輸入電壓端被讀入時,節(jié)制自由運行定時器周期時光的注冊值也應(yīng)當(dāng)被更新。 那么,說“測驗體系在ADC端輸入電壓為1到2伏之間的時候,工作是否畸形”,這樣就檢修就輕易多了。需求描述應(yīng)當(dāng)是“正面”的,應(yīng)當(dāng)描寫裝備“應(yīng)當(dāng)”的行為,而不是設(shè)備“不應(yīng)該”的行動。否則的話,測試將會無奈進行。 3. ADC端的輸入電壓應(yīng)當(dāng)保證在每100毫秒內(nèi)至少被讀取一次 第六步:你的需求是可測試的么? 1. 數(shù)字輸出端的切換頻率應(yīng)當(dāng)控制在每秒10次到每秒1次之間 我發(fā)明,讓需求文檔變得艱深易懂,最簡略措施莫過于,把過于細(xì)節(jié)的貨色抽掏出來,然后以條目標(biāo)情勢獨自定義。 3. 自由運行定時器的觸發(fā)頻率應(yīng)當(dāng)在最高和最低值之間呈線性變化,并與ADC端的輸入電壓成正比。 相關(guān)的主題文章:
|