見(jiàn)仁見(jiàn)智

          用程序員的眼光看世界

          導(dǎo)航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計(jì)

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          相冊(cè)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

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

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

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

          評(píng)論

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

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

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

          @小陸

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

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

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

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

          主站蜘蛛池模板: 赤水市| 睢宁县| 浙江省| 镇平县| 太和县| 峡江县| 沂源县| 大悟县| 交城县| 亳州市| 苍南县| 武穴市| 金沙县| 泸西县| 新田县| 烟台市| 辽阳县| 高雄县| 祁连县| 岳普湖县| 蒲城县| 临澧县| 青州市| 辉南县| 金沙县| 宜州市| 江源县| 巴中市| 凤城市| 红安县| 长治市| 临朐县| 江安县| 厦门市| 贺州市| 日喀则市| 高淳县| 南安市| 西华县| 新田县| 资兴市|