見仁見智

          用程序員的眼光看世界

          一 子虛和烏有的對話 (如何獲取源碼缺陷跟蹤系統(tǒng)的需求)

          ??? A公司是一個軟件開發(fā)公司,正同時開發(fā)多個軟件項(xiàng)目,急切需要一個簡單易用的源碼缺陷跟蹤系統(tǒng)進(jìn)行bug的記錄管理,但他們沒有時間精力再開發(fā)這么一個系統(tǒng).于是子虛先生------A公司的商務(wù)人員聯(lián)系到B軟件開發(fā)公司的烏有先生(需求分析師),打算讓B公司為A開發(fā)一套源碼缺陷跟蹤系統(tǒng).
          ??? 以下為用戶子虛和烏有的對話.子虛(以下簡稱子)提出了缺陷跟蹤系統(tǒng)的初步需求,烏有(以下簡稱烏)力圖弄清子虛的需求.以編制需求說明分析書以供系統(tǒng)開發(fā).系統(tǒng)設(shè)計(jì)師Diego旁聽,不發(fā)言.
          ???
          ??? 子:我需要一個源碼缺陷跟蹤系統(tǒng),使我可以存檔和查看開發(fā)過程中出現(xiàn)的bug.
          ??? 烏:我明白.這個系統(tǒng)一般叫源碼缺陷跟蹤系統(tǒng)(Bug Tracking System),有個叫Bugzilla的老牌軟件可以滿足你的需要.
          ???
          ??? 子:我聽說過,也了解過Bugzilla的相關(guān)情況.我覺得它的配置管理使用都過于麻煩,我覺得它應(yīng)該盡量簡單,簡單到在10分鐘之內(nèi)可以配置,半天之內(nèi)就能讓小組的人學(xué)會使用.畢竟,在我的理解里,它只是個留言本性質(zhì)的東東.
          ??? 烏:好吧,假設(shè)它真的是個留言本性質(zhì)的東東.那么你覺得,它是一個怎樣的留言本?
          ???
          ??? 子:嗯,比方說我是一個開發(fā)人員,我要查看今天系統(tǒng)發(fā)現(xiàn)了多少個bug,其中有那些是屬于我的.
          ??? 烏:明白.我是不是可以這么總結(jié):系統(tǒng)要有bug的瀏覽界面,并且瀏覽界面能看到bug的名稱,代號,bug的所有人,bug的狀態(tài)(是否修復(fù))
          ??? 子:對,當(dāng)然,時間日期也要能看到.
          ??? 烏:OK,我補(bǔ)充這么一條,"在瀏覽界面盡可能詳盡的列出bug的狀態(tài)",對不?
          ??? 子:完全正確.
          ???
          ??? (烏有簡單總結(jié)客戶需求如下:1.系統(tǒng)應(yīng)存在bug列表界面,開發(fā)人員應(yīng)能在列表界面上看到bug的狀態(tài)(是否修復(fù)),bug的所有人,bug的名稱,bug的發(fā)現(xiàn)時間,bug的建議修復(fù)時間.)
          ???
          ??? 子:我發(fā)現(xiàn)系統(tǒng)上有我的bug,于是我就進(jìn)去改我的bug.
          ??? 烏:等等."你進(jìn)去改bug",這句話怎么理解?
          ??? 子:很難理解嗎?
          ??? 烏:沒有,我只是試著使你的需求清晰.例如,在bug列表上,每個bug有個連接,你點(diǎn)這個連接,就進(jìn)到bug的修改頁面,于是你查看bug的詳細(xì)信息.如果發(fā)現(xiàn)這個bug你已經(jīng)修復(fù),你就更改它的狀態(tài),然后退出這個bug的編輯界面,回到列表.對不?
          ??? 子:完全正確.
          ???
          ??? (烏有繼續(xù)總結(jié)需求如下:2.在bug列表上的每個bug都有一個html鏈接,開發(fā)人員點(diǎn)擊這個鏈接就進(jìn)到bug的詳盡頁面.這個頁面列出了bug的狀態(tài),bug的所有人,bug的名稱,發(fā)現(xiàn)時間,建議修復(fù)時間,bug的詳細(xì)描述,bug的配圖(以附件形式搭配,最多可搭配5張圖片).開發(fā)人員可以修改bug的狀態(tài).)
          ???
          ??? (烏有突然笑了起來.)
          ??? 烏:我不自覺就寫下html鏈接這些子句.忘了問你,這是個BS系統(tǒng)嗎?
          ??? (子虛很奇怪的看著烏有.)
          ??? 子:這還用說?據(jù)我的了解,Bugzilla就是BS系統(tǒng).
          ???
          ??? (烏有補(bǔ)充需求:3.這是個BS系統(tǒng).)
          ???
          ??? 子:當(dāng)然,如果這個bug不是我的,我就無權(quán)查看并修改它了.
          ??? 烏:明白.這是個權(quán)限控制的問題.不同的開發(fā)人員只能查看修改屬于自己的bug.
          ??? 子:你說到這個我才想起,不但開發(fā)人員只能查看修改自己的bug,bug本身應(yīng)該也有權(quán)限,有分組.
          ??? 烏:按照我的理解,我覺得應(yīng)該是這樣:不同的bug應(yīng)該屬于不同的模塊.因?yàn)楹芸赡芄就瑫r開發(fā)著多個產(chǎn)品/項(xiàng)目,而這個系統(tǒng)要管理多個產(chǎn)品/項(xiàng)目的bug.
          ??? 子:你總結(jié)得對.
          ???
          ??? (烏有記錄需求:
          ????? 4.不同的bug屬于不同的模塊,并且bug有"擁有者"屬性,不是該bug的擁有者不能查看修改該bug.
          ????? 5.不同的開發(fā)人員屬于不同的模塊.
          ??? )
          ???
          ??? 子:我對5有異議.一個能力強(qiáng)的程序員可能同時參與幾個項(xiàng)目的開發(fā).
          ??? 烏:那把bug和開發(fā)者聯(lián)系起來就可以了?
          ??? 子:我覺得是.
          ???
          ??? (烏有去掉了需求5)
          ???
          ??? 子:嗯.現(xiàn)在我把我們開發(fā)人員的要求表述完了.接下來我要說說項(xiàng)目經(jīng)理,測試人員的需求.
          ??? 烏:繼續(xù).
          ??? 子:系統(tǒng)應(yīng)該有能添加bug的地方.
          ??? 烏:用戶可以添加一個新的bug,設(shè)定bug的簡單描述,詳細(xì)描述,bug的發(fā)現(xiàn)時間,建議修復(fù)時間,所屬模塊,添加人,所有人,修改人,狀態(tài).對不?
          ??? 子:對.
          ???
          ??? (烏有記錄需求:5.用戶能夠添加bug,設(shè)定bug的簡單描述,詳細(xì)描述,bug的發(fā)現(xiàn)時間,建議修復(fù)時間,所屬模塊,添加人,所有人,修改人,狀態(tài).)
          ???
          ??? (子虛滿意的點(diǎn)點(diǎn)頭)
          ??? 子:嗯,我想我的要求已經(jīng)表達(dá)得很清楚了.希望你們能盡快做出滿足我要求的軟件.
          ??? 烏:(苦笑)按照我的過往經(jīng)驗(yàn),軟件需求很少能做到真正清晰明了.在開發(fā)和維護(hù)期間,需求總會變更.
          ??? 子:我和程序員已經(jīng)打過好幾次交道.我發(fā)現(xiàn)你們總是強(qiáng)調(diào)需求變更的重要性,以此作為軟件開發(fā)進(jìn)度緩慢,使用期間bug不斷的借口.
          ??? 烏:其實(shí)不是我們想以此作為借口.軟件開發(fā)的本質(zhì),就是使相對不確定的東西變得真正確定.如果事物是完全不確定的,那我們也很難將之完全確定下來.
          ??? 子:我確定我完全不明白你在說什么.這個調(diào)研會已經(jīng)有兩小時了吧?該結(jié)束了?
          ??? 烏:等等,我將總結(jié)的東西給你看看,然后我今晚會寫份需求分析書再給你確認(rèn)確認(rèn).如果沒什么大問題,我們的工程師就可以進(jìn)行設(shè)計(jì).
          ??? 子:好,盡快.
          ???
          ??? (烏有的需求列表如下:
          ??? 1.系統(tǒng)采用BS結(jié)構(gòu).(建議用java進(jìn)行開發(fā)).
          ??? 2.系統(tǒng)應(yīng)存在bug列表界面,用戶應(yīng)能在列表界面上看到bug的狀態(tài)(是否修復(fù)),bug的所有人,bug的名稱,bug的發(fā)現(xiàn)時間,bug的建議修復(fù)時間,bug所屬模塊.)
          ??? 3.在bug列表上的每個bug都有一個html鏈接,開發(fā)人員點(diǎn)擊這個鏈接就進(jìn)到bug的詳盡頁面.這個頁面列出了bug的狀態(tài),bug的所有人,bug的名稱,發(fā)現(xiàn)時間,建議修復(fù)時間,bug的詳細(xì)描述,bug的配圖(以附件形式搭配,最多可搭配5張圖片).開發(fā)人員可以修改bug的狀態(tài).
          ??? 4.不同的bug屬于不同的模塊,并且bug有"擁有者"屬性,不是該bug的擁有者不能查看修改該bug.
          ??? 5.用戶能夠添加bug,設(shè)定bug的簡單描述,詳細(xì)描述,bug的發(fā)現(xiàn)時間,建議修復(fù)時間,所屬模塊,添加人,所有人,修改人,狀態(tài).
          ??? )
          ???
          ??? 子:不錯.就這樣.
          ??? 烏:那明天見.
          ??? 子:烏有明天見.Diego明天見.
          ???
          ???
          ???

          posted on 2007-03-28 11:55 Diego 閱讀(1433) 評論(2)  編輯  收藏 所屬分類: 需求分析/系統(tǒng)設(shè)計(jì)

          評論

          # re: 一 子虛和烏有的對話 (如何獲取源碼缺陷跟蹤系統(tǒng)的需求) 2007-03-28 15:10 小陸

          這就是甲方和乙方最大的沖突。業(yè)務(wù)工作經(jīng)常是人工的,是目標(biāo)導(dǎo)向的,為了達(dá)到一個目標(biāo),手段是可以選擇的。而軟件開發(fā)卻是精確的,一定要把流程確定下來。
          “其實(shí)不是我們想以此作為借口.軟件開發(fā)的本質(zhì),就是使相對不確定的東西變得真正確定.如果事物是完全不確定的,那我們也很難將之完全確定下來.”
          軟件開發(fā)不能這樣干的,你沒有辦法等到“確定下來”,你必須要在只知道幾個重要需求的情況下開始工作,其他的需求和細(xì)節(jié)只能在開發(fā)過程中去弄清楚。
          需求分析的重點(diǎn)在于分析用戶的目標(biāo)是什么,操作流程其次,一下子就精確到界面更是不可行的。
            回復(fù)  更多評論   

          # re: 一 子虛和烏有的對話 (如何獲取源碼缺陷跟蹤系統(tǒng)的需求) 2007-03-28 15:26 Diego

          @小陸

          謹(jǐn)受教.:-)

          寫這幾篇小文的目的,是想把幾年痛苦的開發(fā)經(jīng)驗(yàn)總結(jié)總結(jié),以期從中得到一些啟示,指導(dǎo)自己新工作,和朋友交流討論....等等.

          我其實(shí)應(yīng)該先把序放上去,以說明我怎樣打算描述如何從一個不確定的需求以得到設(shè)計(jì),得到軟件,由于需求變更而引起系統(tǒng)變更,最后可以看出該架構(gòu)是否合理?代碼是否健壯?....所以在寫子虛和烏有先生對話的時候,我盡量采用"原生態(tài)"寫法,你可以發(fā)現(xiàn)很多時候我們其實(shí)就是這么開始,在一無所知中開始開發(fā)軟件的.呵呵.

          一起交流,一起進(jìn)步 :)  回復(fù)  更多評論   

          主站蜘蛛池模板: 宁都县| 白朗县| 石渠县| 昌乐县| 甘谷县| 蓝山县| 辰溪县| 赤峰市| 碌曲县| 金秀| 浙江省| 漯河市| 澄江县| 墨竹工卡县| 海林市| 仙游县| 商都县| 正定县| 巴彦淖尔市| 望奎县| 泰安市| 汝阳县| 巴林左旗| 东城区| 阿克陶县| 怀集县| 抚宁县| 马龙县| 东辽县| 尉犁县| 长汀县| 靖西县| 武邑县| 伊川县| 龙川县| 上林县| 连南| 巨鹿县| 宣城市| 泰安市| 光泽县|