快速實(shí)現(xiàn)一個(gè)狗門系統(tǒng)
這是一個(gè)關(guān)于狗門新項(xiàng)目捻爷。用戶想要一個(gè)能用遙控器控制的狗門:按一下開門疑苔,再按一下關(guān)門镜豹。
程序員很快實(shí)現(xiàn)了代碼傲须,有兩個(gè)類:狗門類和遙控器類。
最后創(chuàng)建一個(gè)測試類模擬運(yùn)行一下趟脂,一切正常泰讽。
想當(dāng)然的需求分析
程序到目前為止表面上看起來不錯(cuò),但是在實(shí)際運(yùn)行中很快就出現(xiàn)了問題散怖。
用戶按下按鈕開門以后菇绵,往往會(huì)忘記再次按下按鈕關(guān)門,這時(shí)候镇眷,貓啊咬最、兔子啊都進(jìn)到屋里來了。程序員有點(diǎn)想當(dāng)然了欠动,他以為用戶每次都會(huì)記得關(guān)門永乌。
這就引出了一個(gè)問題:怎么才能知道系統(tǒng)到底應(yīng)該具有什么功能?
與用戶交談具伍,大概能知道系統(tǒng)應(yīng)該具有哪些功能
將了解到的相關(guān)功能寫成列表單翅雏,特別是用戶希望門被打開以后,經(jīng)過一段時(shí)間能自動(dòng)關(guān)閉人芽。
注意:需求列表也是工作成果的一部分
什么是需求分析:分析出為了滿足用戶的要求望几,系統(tǒng)需要做的哪些事情
什么是用例
之前得到的需求列表全面嗎?誰也不敢確定萤厅。更好的方式是設(shè)計(jì)一個(gè)場景橄抹,用系統(tǒng)的功能來描述這個(gè)場景,這樣才能發(fā)現(xiàn)功能是否滿足要求惕味。
下面就是一個(gè)用例
用例中的場景應(yīng)該考慮全面楼誓,有些意外情況或者可選情況都應(yīng)該考慮進(jìn)來。比如:狗門打開名挥,狗狗出去以后沒有及時(shí)回來疟羹,狗門自動(dòng)關(guān)閉了,狗狗回來需要再次開門。
什么是用例:一個(gè)用例描述了系統(tǒng)為了完成特定的目標(biāo),可以做什么(即具有什么功能)。因此残拐,用例可以捕獲需求。
用例的三個(gè)要素:
- 用例的價(jià)值
- 外部啟動(dòng)者
- 起點(diǎn)和終點(diǎn)
關(guān)于用例的其他要點(diǎn):
- 每個(gè)用例都對應(yīng)一個(gè)明確的目標(biāo)黄刚,且只有一個(gè)。
- 多個(gè)目標(biāo)有多個(gè)用例
- 也可以用用例圖來表示場景
用例檢查需求
用例可以檢查需求民效,甚至發(fā)現(xiàn)新的需求
檢查用例中的每一步,看看是否全部都可以用需求列表中的某個(gè)功能解決涛救。
注意:某些步驟和系統(tǒng)功能沒有關(guān)系畏邢,只是場景的需要,可以忽略
經(jīng)過對照檢查检吆,發(fā)現(xiàn)需求列表中的功能可以滿足用例場景舒萎,下面就可以修改代碼了。
相比原來的系統(tǒng)蹭沛,增加了自動(dòng)關(guān)門的功能
每次修改系統(tǒng)后臂寝,都應(yīng)該進(jìn)行測試。下面的測試表明摊灭,狗門打開后咆贬,狗狗出去辦完事、返回帚呼,一段時(shí)間后狗門自動(dòng)關(guān)閉
測試替換路徑
上面的測試僅僅測試了用例中的主要路徑掏缎。可選路徑也需要測試煤杀。
狗狗出門后沒有及時(shí)回來眷蜈,狗門關(guān)閉,狗狗被關(guān)在門外沈自。用戶手動(dòng)開門酌儒,狗狗返回,一段時(shí)間后枯途,狗門關(guān)閉忌怎。
實(shí)戰(zhàn):用例分析需求
又來了三個(gè)客戶,各自有不同的需求(也就是說各自的系統(tǒng)有不同的功能)
給這三種需求設(shè)計(jì)三個(gè)不同的用例(每個(gè)有不同的目標(biāo))
分析這三個(gè)用例的三要素
用這三個(gè)用例檢查各自的需求列表
下面這個(gè)需求列表明顯有錯(cuò)誤柔袁,他不能滿足用例中關(guān)閉窗戶的功能
下面這個(gè)功能列表也有明顯的問題呆躲,他沒有用例中要求的自動(dòng)關(guān)門的功能