見仁見智

          用程序員的眼光看世界

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

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

          posted on 2007-03-28 11:55 Diego 閱讀(1432) 評論(2)  編輯  收藏 所屬分類: 需求分析/系統設計

          評論

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

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

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

          @小陸

          謹受教.:-)

          寫這幾篇小文的目的,是想把幾年痛苦的開發經驗總結總結,以期從中得到一些啟示,指導自己新工作,和朋友交流討論....等等.

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

          一起交流,一起進步 :)  回復  更多評論   

          主站蜘蛛池模板: 克山县| 集贤县| 凤凰县| 玉溪市| 荥阳市| 石柱| 宜城市| 柯坪县| 呼玛县| 南阳市| 定边县| 汤原县| 巴中市| 宜宾县| 都江堰市| 晋宁县| 台南县| 高邑县| 花莲县| 和田县| 江孜县| 铜陵市| 虹口区| 姜堰市| 滦平县| 小金县| 永康市| 阿图什市| 泾川县| 县级市| 黑山县| 临颍县| 安塞县| 文安县| 湘阴县| 武威市| 辛集市| 额济纳旗| 衡阳县| 镇雄县| 峨眉山市|