2007年4月4日
#
應(yīng)用開發(fā)的思考2
我發(fā)現(xiàn)多數(shù)需求分析說明書編寫得毫無價值,多數(shù)公司的做法是寫完該需求說明書之后,就把它扔一邊,埋頭苦干寫程序了.一方面這和公司對需求分析的認(rèn)識不夠有關(guān),另一方面,也和需求分析編寫方式不盡合理,以至它的價值難以體現(xiàn)有關(guān).
軟件程序,從最終的抽象意義而言,是計算機(jī)系統(tǒng)對自然語言的翻譯.而需求分析充當(dāng)了翻譯任務(wù)的急先鋒.很難想象,如果沒有一份好的需求說明書,針對客戶含糊不清的自然語言描述,開發(fā)者能做出一個符合要求的優(yōu)秀軟件.然而,什么是好的需求說明書?應(yīng)具備什么樣的特點?我認(rèn)為好的需求說明書應(yīng)有由如下三個階段,經(jīng)多次循環(huán)反饋而逐漸形成:
1 調(diào)研階段:
客戶和需求分析師討論系統(tǒng)該具有的功能.客戶希望系統(tǒng)能做什么,達(dá)到什么樣的效果.需求分析師的責(zé)任是認(rèn)真聽取客戶的原始言語,通過討論,語言的提煉和客戶達(dá)成共識,最終得到確切的需求--客戶希望系統(tǒng)能做什么.這一過程運用的是自然語言,需求分析師必須具備良好的溝通能力,文字表達(dá)能力,并且必須具備客戶領(lǐng)域內(nèi)的相關(guān)業(yè)務(wù)知識,不使用用戶不懂的計算機(jī)專業(yè)詞匯.
參與人員:需求分析師,客戶,系統(tǒng)設(shè)計師.
運用工具:自然語言.
階段成果:調(diào)研記錄書.
2 確定功能結(jié)構(gòu)和設(shè)計系統(tǒng)原型:
需求分析師和系統(tǒng)設(shè)計師討論客戶的需求.需求分析師針對調(diào)研階段的記錄,逐點提出客戶需求,并用uml的用例概念,和系統(tǒng)設(shè)計師進(jìn)行討論.系統(tǒng)設(shè)計師根據(jù)這些需求,運用他的技術(shù),知識和經(jīng)驗,將之分解總結(jié)為系統(tǒng)的功能結(jié)構(gòu).(此處僅針對應(yīng)用系統(tǒng)而言,對于其他系統(tǒng),可能還要總結(jié)進(jìn)程結(jié)構(gòu)或部署結(jié)構(gòu))得到功能結(jié)構(gòu)之后,系統(tǒng)設(shè)計師還要構(gòu)建系統(tǒng)原型,該原型用于和客戶進(jìn)行更好的交流.
在這一階段之后,由于得到了功能分解表和系統(tǒng)原型,需求分析師和系統(tǒng)設(shè)計師已明白系統(tǒng)的雛形,該成果將作為開發(fā)者和客戶繼續(xù)進(jìn)行討論的基礎(chǔ).
參與人員:需求分析師,系統(tǒng)設(shè)計師(或該設(shè)計師領(lǐng)導(dǎo)的相關(guān)團(tuán)隊).
運用工具:uml,構(gòu)建原型的相關(guān)工具技術(shù).
階段成果:功能分解表,系統(tǒng)原型.(大致的業(yè)務(wù)流程圖)
3 編寫需求分析說明書
在參照功能分解表和系統(tǒng)原型的基礎(chǔ)上,需求分析師和系統(tǒng)設(shè)計師編寫系統(tǒng)的需求分析說明書.該需求分析說明書作為客戶和系統(tǒng)開發(fā)者的橋梁,既表達(dá)了客戶想要系統(tǒng)做什么的愿望,又反映了系統(tǒng)開發(fā)者針對此需求得到的努力成果(功能分解表和系統(tǒng)原型).通過該說明書,對系統(tǒng)具有的功能和最終可能的形態(tài),客戶和開發(fā)者達(dá)成共識.
有可能經(jīng)過多次的1,2階段的反復(fù),最終才得到需求分析說明書.各階段的成果應(yīng)妥善保存.
參與人員:需求分析師,系統(tǒng)設(shè)計師,客戶.
運用工具:自然語言,功能分解表,系統(tǒng)原型.
階段成果:改進(jìn)的功能分解表,系統(tǒng)原型,(業(yè)務(wù)流程圖),需求分析說明書.
第1階段,是開發(fā)者得到自然語言需求的階段.該階段的重要性不言而喻.
第2階段,是需求分析編寫的核心階段.很多公司會有意無意忽略該階段.確實,該階段耗費的人力和時間挺多,但這個階段決不能馬虎的進(jìn)行,甚至忽略.只有詳盡的將自然語言翻譯成功能需求表,并為此構(gòu)建原型,開發(fā)者對系統(tǒng)究竟能做什么和未來該怎么做的認(rèn)識才會逐漸加深.并且,對應(yīng)的功能界面,能夠讓客戶大致認(rèn)識到最終的系統(tǒng)會是什么樣子.他能夠據(jù)此提出自己的滿意度,修改或者增加需求.
我主張在構(gòu)建功能分解表的時候,將界面的相關(guān)控件,字段,標(biāo)簽都一一列出,并且和原型的界面相對應(yīng).這樣在功能分解表/需求分析說明書確定之后,開發(fā)者就有可能根據(jù)這些控件/字段/標(biāo)簽確立業(yè)務(wù)層的接口和數(shù)據(jù)庫系統(tǒng)的表結(jié)構(gòu),減少了概要設(shè)計階段所作的工作量.
以下是一個分解功能的例子:
功能:修改我的資料
功能簡述:用戶可以更新個人資料
界面控件:姓名文本框(輸入姓名),郵箱文本框(輸入郵箱),密碼文本框(輸入文本),確認(rèn)密碼文本框(輸入確認(rèn)密碼),所屬組別選擇框 (輸入所屬組別),地址文本域(輸入地址),備注文本域(輸入備注).提交按鈕.
界面標(biāo)簽(Label):根據(jù)界面控件描述進(jìn)行配對.如姓名文本框的標(biāo)簽是"姓名".不再贅述.
界面:見圖(修改我的資料)

只有經(jīng)過詳盡完備的1,2階段后,我們才可能進(jìn)行第3階段,將1,2階段的成果綜合起來,和客戶進(jìn)一步討論需求.客戶可能會對功能分解不滿意,對原型有異議.這樣我們必須返回到1,2階段,再次分解功能,修改原型.直到客戶滿意為止.
在這個基礎(chǔ)上,我們才可能編寫最終的需求說明分析書.我認(rèn)為,嚴(yán)格按照上述流程進(jìn)行編寫的需求說明書,就是好的.它的特點總結(jié)如下:
1)經(jīng)歷過反復(fù)功能分解和原型構(gòu)建.客戶因原型而清楚認(rèn)識到自己想要系統(tǒng)的形態(tài),開發(fā)者經(jīng)多次反饋明確了系統(tǒng)所具備的功能.
2)編寫良好的功能分解表,能夠幫助開發(fā)者進(jìn)一步設(shè)計業(yè)務(wù)接口.
3)構(gòu)建成型的原型,有助于開發(fā)者設(shè)計數(shù)據(jù)庫系統(tǒng).
4)*明確的業(yè)務(wù)流程圖,能夠協(xié)助開發(fā)者構(gòu)建系統(tǒng)的業(yè)務(wù)流.
用戶的需求永遠(yuǎn)在變化,沒錯.但如果我們按照上述步驟努力在分析階段弄清楚客戶的需求,以后的開發(fā)維護(hù)階段就能將需求變更的代價降到最低.只有對事物認(rèn)識越深刻,才越有可能認(rèn)識到事物可能存在的變化.這條哲學(xué)法則在需求分析階段同樣適用.
經(jīng)過以上討論,我們就可以看到為什么多數(shù)公司的需求分析書難以達(dá)到預(yù)期要求.它們沒有功能分解階段,沒有原型構(gòu)建階段,沒有反饋認(rèn)識再加深的階段....這樣的需求分析書,僅僅為構(gòu)建而構(gòu)建,對系統(tǒng)的開發(fā)毫無幫助.(我還看到過有人用三天寫完一個系統(tǒng)的需求分析書)接踵下去的軟件開發(fā)階段,如何進(jìn)行?這樣做出來的軟件,能好到哪里去?
一點淺見,貽笑方家. :-)
1 引言
1.1 編寫目的
本說明書是客戶與軟件系統(tǒng)開發(fā)者的溝通橋梁.客戶根據(jù)需求說明書提出需求,闡述系統(tǒng)能做什么.軟件系統(tǒng)開發(fā)者根據(jù)此需求,闡述需求實現(xiàn)的功能與界面,并將之清晰明白的反映到本說明書中,以供客戶審閱.
本說明書的預(yù)期讀者為客戶,業(yè)務(wù)需求分析人員,系統(tǒng)設(shè)計人員,項目管理人員,軟件開發(fā)人員等系統(tǒng)開發(fā)的相干參與者.
1.2 項目背景
軟件開發(fā)過程中無可避免的存在源碼缺陷(以下簡稱BUG).在軟件系統(tǒng)的開發(fā)維護(hù)階段階段,對BUG的修復(fù)管理工作必不可少.本系統(tǒng)提供了bug的管理功能.客戶可應(yīng)用本系統(tǒng)簡單有效的管理BUG,以協(xié)助軟件系統(tǒng)的開發(fā)維護(hù)工作.
1.3 定義,縮寫詞和符號
BUG:軟件系統(tǒng)在功能或界面方面所產(chǎn)生的缺陷.
2 系統(tǒng)運行環(huán)境
2.1 硬件環(huán)境
2.1.1 一臺586微機(jī),建議CPU主頻在500MHZ以上,內(nèi)存大于512MB.
2.2 軟件環(huán)境
2.2.1 WINDOWS 或類 LINUX 操作系統(tǒng).該操作系統(tǒng)應(yīng)能正常運行JAVA虛擬機(jī).
2.2.2 安裝IE6或FIREFOX1.5瀏覽器
2.2.3 安裝J2SDK,要求版本在1.4以上.
2.2.4 安裝TOMCAT或其他支持SERVLET 2.3 的WEB 服務(wù)器.
2.2.5 安裝MYSQL數(shù)據(jù)庫.要求版本在5.0以上.
3 系統(tǒng)用例說明
3.1 系統(tǒng)用例說明
3.1.1 用例名稱:用戶查看BUG列表
用例編號:1
用例說明:用戶點擊"查看我的BUG"標(biāo)簽,查看屬于自己的BUG列表.或者點擊"查看所有BUG"標(biāo)簽,查看所有BUG列表.并能根據(jù)自定 義的條件過濾器,查看符合特定條件的BUG.
前置條件:用戶已登錄系統(tǒng).
3.1.2 用例名稱:用戶查看BUG詳情
用例編號:2
用例說明:在BUG列表上存在HTML鏈接,用戶點擊該鏈接,可以看到BUG的詳細(xì)情況.并且用戶可以修改BUG的狀態(tài),修改時間.
前置條件:用戶已登錄系統(tǒng)
3.1.3 用例名稱:用戶增加新BUG
用例編號:3
用例說明:用戶點擊"增加新的BUG"界面,進(jìn)入增加新BUG界面.可以增加新的BUG到系統(tǒng).
前置條件:用戶已登錄系統(tǒng)
3.1.4 用例名稱:用戶管理BUG列表過濾器
用例編號:4
用例說明:用戶可以增刪改BUG條件過濾器.在BUG列表中,可以通過選取過濾器查看符合特定條件的BUG(請參照用例1).
前置條件:用戶已登錄系統(tǒng).
3.1.5 用例名稱:用戶修改個人資料
用例編號:5
用例說明:用戶可以修改個人資料,例如修改EMAIL,住址等.
前置條件:用戶已登錄系統(tǒng).
3.1.6 用例名稱:用戶管理帳號
用例編號:6
用例說明:系統(tǒng)管理員可以增刪改新的用戶.
前置條件:用戶已登錄系統(tǒng),且該用戶必須是系統(tǒng)管理員.
3.1.7 用例名稱:用戶管理開發(fā)組
用例編號:7
用例說明:系統(tǒng)管理員可以增刪改開發(fā)組.在增加新BUG界面,該組名用于劃分BUG的歸屬.
前置條件:用戶已登錄系統(tǒng),且該用戶必須是系統(tǒng)管理員.
3.2 簡單的用例圖
見圖:

4 系統(tǒng)功能分解
4.1 BUG管理
4.1.1 列出我的BUG
功能簡述:以分頁的列表方式列出指派給我的bug,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看bug詳情.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改)
界面標(biāo)簽(指Label):可選項,序號,概述,緊急程度,狀態(tài),所有人,發(fā)現(xiàn)時間.
HTML鏈接:序號
4.1.2 查看所有bug
功能簡述:以分頁的列表方式列出所有bug,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看bug詳情.可以按過濾器查看符合該 過濾器條件的bug.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),過濾器選擇框(選擇某個過濾器).
界面標(biāo)簽(指Label):可選項,序號,概述,緊急程度,狀態(tài),所有人,發(fā)現(xiàn)時間.
HTML鏈接:序號
4.1.3 增加新的bug
功能簡述:用戶可以增加新的bug
界面控件:所屬模塊選擇框(設(shè)定bug的所屬模塊),發(fā)現(xiàn)時間日期控件(確定bug的發(fā)現(xiàn)時間),發(fā)現(xiàn)者選擇框(確定bug的發(fā)現(xiàn)者),狀 態(tài)選擇框(確定bug的狀態(tài)),截止期限日期控件(確定bug的建議修改時間),指派給選擇框(選擇bug的所有人),描述文本域(輸入 bug的描述),附件一(文件選擇框),附件二(文件選擇框),附件三(文件選擇框).提交按鈕.
界面標(biāo)簽(指Label):根據(jù)界面控件描述進(jìn)行配對.如所屬模塊選擇框的標(biāo)簽是"所屬模塊".不再贅述.
4.2 個人資料
4.2.1 修改我的資料
功能簡述:用戶可以更新個人資料
界面控件:姓名文本框(輸入姓名),郵箱文本框(輸入郵箱),密碼文本框(輸入文本),確認(rèn)密碼文本框(輸入確認(rèn)密碼),所屬組別選 擇框(輸入所屬組別),地址文本域(輸入地址),備注文本域(輸入備注).提交按鈕.
界面標(biāo)簽(Label):根據(jù)界面控件描述進(jìn)行配對.如姓名文本框的標(biāo)簽是"姓名".不再贅述.
4.3 過濾器配置
4.3.1 列出過濾器
功能簡述:列表方式列出該用戶所增加的過濾器,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看過濾器詳情,可以刪除某條記 錄.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),刪除按鈕(對某條記錄進(jìn)行刪除)
界面標(biāo)簽(Label):可選項,序號,過濾器名稱.
4.3.2 增加新過濾器
功能簡述:用戶可以增加新的過濾器.每個用戶只能有最多10個過濾器.
界面控件:過濾器名稱文本框(輸入過濾器名稱),狀態(tài)選擇框(選擇狀態(tài)),所屬模塊選擇框(選擇模塊),發(fā)現(xiàn)者選擇框(選擇發(fā)現(xiàn)者 ),指派給選擇框(選擇bug的所有人),發(fā)現(xiàn)時間段時間選擇框(選擇發(fā)現(xiàn)起始時間),發(fā)現(xiàn)時間段時間選擇框(選擇發(fā)現(xiàn)終止時間 ),截止時間段時間選擇框(選擇截止起始時間),截止時間段時間選擇框(選擇截止終止時間).提交按鈕.
界面標(biāo)簽(Label):根據(jù)界面控件描述進(jìn)行配對.如過濾器名稱文本框的標(biāo)簽是"過濾器名稱".不再贅述.
4.4 系統(tǒng)管理
4.4.1 用戶列表
功能簡述:列表方式列出所有用戶,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看某用戶詳情,可以刪除某條記錄.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),刪除按鈕(對某條記錄進(jìn)行刪除)
界面標(biāo)簽(Label):可選項,登錄ID,Email,電話,職位
4.4.2 增加新用戶
功能簡述:增加新用戶
界面控件:登錄ID文本框(輸入用戶帳號),姓名文本框(輸入姓名),郵箱文本框(輸入郵箱),密碼文本框(輸入文本),確認(rèn)密碼文本 框(輸入確認(rèn)密碼),是否管理員選擇框(設(shè)定是否管理員),地址文本域(輸入地址),備注文本域(輸入備注).提交按鈕.
界面標(biāo)簽(Label):根據(jù)界面控件描述進(jìn)行配對.如姓名文本框的標(biāo)簽是"姓名".不再贅述.
4.4.3 開發(fā)組列表
功能簡述:列表方式列出所有開發(fā)組,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看某記錄詳情,可以刪除某條記錄.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),刪除按鈕(對某條記錄進(jìn)行刪除)
界面標(biāo)簽(Label):可選項,開發(fā)組名稱,描述.
4.4.4 增加新開發(fā)組
功能簡述:增加新開發(fā)組.
界面控件:組名稱文本框(輸入開發(fā)組名稱),備注文本域(輸入備注).提交按鈕.
界面標(biāo)簽(Label):組名稱,備注.
4.4.5 日志列表
功能簡述:分頁列出系統(tǒng)日志.用戶刪除某條記錄,可以彈出框形式查看某條記錄詳情.
界面控件:刪除按鈕.
界面標(biāo)簽(Label):可選項,日志時間,用戶ID,操作概述.
Diego打算用html開發(fā)系統(tǒng)的原型,在開發(fā)期間,他發(fā)現(xiàn)經(jīng)探討了解的需求信息還存在不足,而且,一些潛在的需求如果不經(jīng)討論確定,下一步的開發(fā)工作就沒辦法進(jìn)行.
他向自己提出了這些要求:
1.盡快開發(fā)系統(tǒng)原型并獲得客戶的通過.
BS程序通常通過開發(fā)html模型以確定用戶需求,演示系統(tǒng)功能.演示讓客戶能夠最快的看到"實際的系統(tǒng)".盡管系統(tǒng)的最終開發(fā)結(jié)果不可能和原型一模一樣,然而原型確實能最大限度的幫助系統(tǒng)開發(fā)工作.
2.盡快確定顯示界面所需的字段.
這些顯示字段能夠幫助數(shù)據(jù)庫系統(tǒng)設(shè)計師確定系統(tǒng)的表結(jié)構(gòu).
3.在開發(fā)原型時對系統(tǒng)進(jìn)行初步的功能分解.
這步工作是系統(tǒng)架構(gòu)設(shè)計的基礎(chǔ),并且可以明確需求,協(xié)助需求分析設(shè)計書的編寫.經(jīng)驗表明,精心劃分的功能需求能使開發(fā)人員和客戶更好的進(jìn)行交流.
另外,Diego還問自己如下問題:
1.系統(tǒng)是否存在權(quán)限控制?如果存在,通過什么形式實現(xiàn)?
2.系統(tǒng)有哪些隱含而必不可少的功能(例如用戶管理等管理模塊)?這部分功能應(yīng)該明確制定,并且和用戶進(jìn)行討論.
Diego的原型和功能列表如下:
功能列表:
1 Bug管理
1.1 列出我的bug
功能簡述:以分頁的列表方式列出指派給我的bug,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看bug詳情.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改)
界面標(biāo)簽(指Label):可選項,序號,概述,緊急程度,狀態(tài),所有人,發(fā)現(xiàn)時間.
HTML鏈接:序號
界面:見圖(列出我的bug)
1.2 查看所有bug
功能簡述:以分頁的列表方式列出所有bug,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看bug詳情.可以按過濾器查看符合該過濾器條件的bug.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),過濾器選擇框(選擇某個過濾器).
界面標(biāo)簽(指Label):可選項,序號,概述,緊急程度,狀態(tài),所有人,發(fā)現(xiàn)時間.
HTML鏈接:序號
界面:見圖(查看所有bug)
1.3 增加新的bug
功能簡述:用戶可以增加新的bug
界面控件:所屬模塊選擇框(設(shè)定bug的所屬模塊),發(fā)現(xiàn)時間日期控件(確定bug的發(fā)現(xiàn)時間),發(fā)現(xiàn)者選擇框(確定bug的發(fā)現(xiàn)者),狀態(tài)選擇框(確定bug的狀態(tài)),截止期限日期控件(確定bug的建議修改時間),指派給選擇框(選擇bug的所有人),描述文本域(輸入bug的描述),附件一(文件選擇框),附件二(文件選擇框),附件三(文件選擇框).提交按鈕.
界面標(biāo)簽(指Label):根據(jù)界面控件描述進(jìn)行配對.如所屬模塊選擇框的標(biāo)簽是"所屬模塊".不再贅述.
界面:見圖(增加新的bug)
2 個人資料
2.1 修改我的資料
功能簡述:用戶可以更新個人資料
界面控件:姓名文本框(輸入姓名),郵箱文本框(輸入郵箱),密碼文本框(輸入文本),確認(rèn)密碼文本框(輸入確認(rèn)密碼),所屬組別選擇框(輸入所屬組別),地址文本域(輸入地址),備注文本域(輸入備注).提交按鈕.
界面標(biāo)簽(Label):根據(jù)界面控件描述進(jìn)行配對.如姓名文本框的標(biāo)簽是"姓名".不再贅述.
界面:見圖(修改我的資料)
3 過濾器配置
3.1 列出過濾器
功能簡述:列表方式列出該用戶所增加的過濾器,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看過濾器詳情,可以刪除某條記錄.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),刪除按鈕(對某條記錄進(jìn)行刪除)
界面標(biāo)簽(Label):可選項,序號,過濾器名稱.
界面:見圖(列出過濾器)
3.2 增加新過濾器
功能簡述:用戶可以增加新的過濾器.每個用戶只能有最多10個過濾器.
界面控件:過濾器名稱文本框(輸入過濾器名稱),狀態(tài)選擇框(選擇狀態(tài)),所屬模塊選擇框(選擇模塊),發(fā)現(xiàn)者選擇框(選擇發(fā)現(xiàn)者),指派給選擇框(選擇bug的所有人),發(fā)現(xiàn)時間段時間選擇框(選擇發(fā)現(xiàn)起始時間),發(fā)現(xiàn)時間段時間選擇框(選擇發(fā)現(xiàn)終止時間),截止時間段時間選擇框(選擇截止起始時間),截止時間段時間選擇框(選擇截止終止時間).提交按鈕.
界面標(biāo)簽(Label):根據(jù)界面控件描述進(jìn)行配對.如過濾器名稱文本框的標(biāo)簽是"過濾器名稱".不再贅述.
界面:見圖(增加新的過濾器)
權(quán)限體現(xiàn)的實現(xiàn):
系統(tǒng)權(quán)限:
1)用戶需要登錄到系統(tǒng),才能進(jìn)行相關(guān)操作.
2)用戶存在"非活動時限",如果超過一個時間定值用戶不進(jìn)行系統(tǒng)相應(yīng)操作,則提示用戶重新登錄.
管理權(quán)限:
1)用戶必須是管理員用戶,才能進(jìn)行系統(tǒng)的管理工作.
應(yīng)用權(quán)限:
1)只有系統(tǒng)管理員能夠刪除bug.
在列出用戶要求的功能列表和參考權(quán)限實現(xiàn)方式之后,Diego將系統(tǒng)隱含必不可少的功能整理如下
4 系統(tǒng)管理 (只有管理員才能操作該模塊的所有功能)
4.1 用戶列表
功能簡述:列表方式列出所有用戶,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看某用戶詳情,可以刪除某條記錄.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),刪除按鈕(對某條記錄進(jìn)行刪除)
界面標(biāo)簽(Label):可選項,登錄ID,Email,電話,職位
界面:見圖(用戶列表)
4.2 增加新用戶
功能簡述:增加新用戶
界面控件:登錄ID文本框(輸入用戶帳號),姓名文本框(輸入姓名),郵箱文本框(輸入郵箱),密碼文本框(輸入文本),確認(rèn)密碼文本框(輸入確認(rèn)密碼),是否管理員選擇框(設(shè)定是否管理員),地址文本域(輸入地址),備注文本域(輸入備注).提交按鈕.
界面標(biāo)簽(Label):根據(jù)界面控件描述進(jìn)行配對.如姓名文本框的標(biāo)簽是"姓名".不再贅述.
界面:見圖(增加新用戶)
4.3 開發(fā)組列表
功能簡述:列表方式列出所有開發(fā)組,可以選擇某條記錄進(jìn)行修改,可以彈出框形式查看某記錄詳情,可以刪除某條記錄.
界面控件:序號Radio(可以選擇某條記錄),修改按鈕(對記錄進(jìn)行修改),刪除按鈕(對某條記錄進(jìn)行刪除)
界面標(biāo)簽(Label):可選項,開發(fā)組名稱,描述.
界面:見圖(開發(fā)組列表)
4.4 增加新開發(fā)組
功能簡述:增加新開發(fā)組.
界面控件:組名稱文本框(輸入開發(fā)組名稱),備注文本域(輸入備注).提交按鈕.
界面標(biāo)簽(Label):組名稱,備注.
界面:見圖(增加新開發(fā)組)
4.5 日志列表
功能簡述:分頁列出系統(tǒng)日志.用戶刪除某條記錄,可以彈出框形式查看某條記錄詳情.
界面控件:刪除按鈕.
界面標(biāo)簽(Label):可選項,日志時間,用戶ID,操作概述.
界面:見圖(日志列表)
Diego將該原型交給烏有,烏有將據(jù)此編寫需求分析說明書,和子虛先生作進(jìn)一步的交流.
烏有和Diego在討論需求
烏:Diego,對這個系統(tǒng)的看法怎樣?
D:嗯,我覺得我們遺漏了某些東西.查看bug列表時,是允許所有用戶查看呢?還是經(jīng)過系統(tǒng)驗證的用戶?
烏:.... 我覺得應(yīng)該是經(jīng)過系統(tǒng)驗證的用戶吧.
D:不一定.如果用戶要登錄之后才能看到bug列表,不方便.理想狀況應(yīng)該打開系統(tǒng)就能看到.
烏:但是你要考慮這么一個問題,假設(shè)bug按發(fā)現(xiàn)時間的順序分頁列出且bug的數(shù)量很多,很可能在第一頁該用戶看不到屬于自己的bug,他就以為沒有bug.假如我們要求他必須先登錄,那我們就可以根據(jù)他的登錄信息,列出他的bug的總數(shù),bug的列表...等等.
D:我上當(dāng)當(dāng)網(wǎng)購書的時候,發(fā)現(xiàn)他們可以在不登錄的情況下記下用戶的瀏覽歷史.我猜想這可以通過寫用戶的cookie實現(xiàn).
烏:但我們公司的技術(shù)人員對這項技術(shù)不熟.我可不能憑猜測確定這個需求.
(雖然Diego躍躍欲試,但看到烏有先生堅決的神色,也只有妥協(xié))
D:好吧,那我們就必須先登錄,再看列表.
(于是烏有先生編寫系統(tǒng)的用例如下:)
用例1:用戶查看bug列表
1.用戶點擊"bug列表"標(biāo)簽,查看屬于自己的bug列表.
前置條件:用戶已登錄系統(tǒng).
(該用例獲得一致通過)
(烏有先生編寫系統(tǒng)用例2)
用例2:用戶查看bug詳細(xì)信息
1.用戶點擊bug列表中的某個bug,進(jìn)入bug詳細(xì)信息頁面.
2.用戶可以修改bug的狀態(tài),修改時間.
前置條件:用戶已登錄系統(tǒng).
D:我發(fā)現(xiàn),如果系統(tǒng)要求用戶必須先登錄才能查看bug,那么此時系統(tǒng)列出的bug都是他的,列出其他人的bug好像沒什么必要.
烏:但是你要考慮,假設(shè)我是項目經(jīng)理或者測試組組長,我想看到所有bug的列表.系統(tǒng)列出所有bug還是必要的.
D:解決辦法有兩種.1)訪問系統(tǒng)的時候,根據(jù)某種邏輯(如時間,模塊,bug性質(zhì))列出bug的列表.大家不用登錄就可以看到.我稱這個為"公共bug列表界面".用戶一訪問系統(tǒng)就能看到這個界面. 2)或者用戶登錄之后,點"列出所有bug"列表.當(dāng)然,用戶還可以構(gòu)造自己的過濾器,以決定列出bug的條件.
烏:那么其實"列出所有bug"和"列出自己的bug"功能可以合并到一起.只不過默認(rèn)狀態(tài)列出屬于自己的bug,簡單的選取條件后又可以列出所有bug.
D:對,這種想法不錯.而且,各自選擇應(yīng)該能匯總成一個名稱,姑且稱之為過濾器.用戶可以建幾個常用的過濾器以供快捷使用.
烏:好辦法!
(于是烏有先生修改用例1如下:)
用例1:用戶查看bug列表
1.用戶點擊"bug列表"標(biāo)簽,查看bug列表. (此時列出的所有bug屬于該用戶).
2.用戶可以選擇某些條件,系統(tǒng)根據(jù)這些條件列出相應(yīng)的bug.如果什么條件都不選,系統(tǒng)列出所有bug.
前置條件:用戶已登錄系統(tǒng).
(烏有先生繼續(xù)編寫用例如下)
用例3:用戶添加bug
1.用戶點選"添加bug"標(biāo)簽,進(jìn)入添加bug界面.
2.用戶可以添加bug,設(shè)定bug的簡單描述,詳細(xì)描述,bug的發(fā)現(xiàn)時間,建議修復(fù)時間,所屬模塊,添加人,所有人,修改人,狀態(tài).
用例4:用戶增刪改過濾器
1.用戶點擊"過濾器列表"標(biāo)簽,查看當(dāng)前過濾器列表和當(dāng)前所采用的過濾器.
2.用戶可以增刪改新的過濾器.
(烏有滿意的伸伸懶腰)
烏:我想差不多了.這個系統(tǒng)確實不算太復(fù)雜.
D:我設(shè)計個原型,然后一起找子虛先生繼續(xù)討論.
烏:好的,加油!