乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Bug管理的經(jīng)驗(yàn)和實(shí)踐(中)

       心之所指 2005-12-31

      Bug管理的經(jīng)驗(yàn)和實(shí)踐(中)

      發(fā)表在《程序員》雜志2005年第238~42頁(yè)的訪談文章未刪節(jié)稿

       

      孟巖:劉振飛,你好。上一期文章里,我們談到了Bug管理的理念和經(jīng)驗(yàn)。按照我的體會(huì),Bug的控制是一個(gè)管理與技術(shù)相結(jié)合的課題。做好Bug的管理,一方面需要有完善的管理體系和制度,另一方面更需要有一個(gè)堅(jiān)實(shí)的基礎(chǔ)平臺(tái)來支撐。確切地說,就是要有一個(gè)比較完善適用的軟件,充當(dāng)Bug管理的中樞神經(jīng)。顯然你是很看重這個(gè)軟件系統(tǒng)的。我想問你一個(gè)問題,如果沒有這樣的軟件系統(tǒng),而是單方面強(qiáng)化管理,比如制定完善的流程和制度來管理Bug,你看這樣可行嗎?

       

      劉振飛:從我的經(jīng)驗(yàn)來講,只靠制度而沒有良好的Bug管理軟件,根本無法確保Bug管理的有效性,因?yàn)閮H靠這些規(guī)章制度很可能流于形式、走過場(chǎng)。正如源代碼管理一樣,如果沒有類似CVSVSS的工具,很難想象一個(gè)較大項(xiàng)目中的源代碼僅僅靠公司的源代碼管理制度和大家的自覺性,就可以讓多個(gè)程序員之間的不同版本源程序保持同步、不沖突。光有制度是不行的,必須有配套工具來保證這些制度落到實(shí)處!

             還有,做好 Bug 的管理,應(yīng)該是從高層領(lǐng)導(dǎo)到中間管理層再到基層人員,都從內(nèi)心認(rèn)同其重要性,然后根據(jù)自己公司的實(shí)際情況制定相關(guān)的管理體系和制度,切實(shí)執(zhí)行并逐步形成自己的風(fēng)格。要實(shí)用、不要隨波逐流。不能今天一個(gè)ISO、明天一個(gè)CMM、后天又來個(gè)6西格碼。工具是思想的載體,再好的管理思想還是要通過工具來實(shí)現(xiàn)。購(gòu)買也好、自己開發(fā)也好,必須有個(gè) Bug 管理工具作為基礎(chǔ)支撐平臺(tái)。

       

      孟巖:一個(gè)企業(yè)如果有意建立自己的Bug管理神經(jīng)系統(tǒng),大致可以有三種選擇,一是購(gòu)買成熟的商業(yè)產(chǎn)品,二是選擇類似BugFree那樣的開源軟件,三是自己開發(fā)符合本公司現(xiàn)有架構(gòu)的Bug管理軟件。對(duì)于某些公司來說,最后一種模式應(yīng)該是很有吸引力的。你主持了BugFree的開發(fā),能否告訴我們,開發(fā)一個(gè)Bug管理系統(tǒng)難不難?

       

      劉振飛:應(yīng)該說不難,想自己開發(fā)一個(gè)Bug管理系統(tǒng)的朋友,你首先要明確本公司真正的需求是什么,再就是根據(jù)你的需求做出來后一定要在實(shí)際產(chǎn)品研發(fā)中真正應(yīng)用起來,根據(jù)大家的反饋不斷去完善。

             像我們開發(fā)BugFree,從開始動(dòng)手寫代碼到真正能夠在公司里使用,前后也就兩個(gè)月時(shí)間。為什么能夠這么快做出來呢?最重要的原因是我把 BugFree的需求真正掌握了。我在微軟天天使用Raid、時(shí)時(shí)刻刻和Bug管理打交道。我是站在微軟這個(gè)巨人的肩上去深刻理解其20多年研發(fā)所總結(jié)出來的經(jīng)驗(yàn),所以四年下來,不讓我熟悉Bug管理都難J 當(dāng)我決定做 BugFree 的時(shí)候,腦子里很清楚為什么要做、做成什么模樣、應(yīng)該怎么做、做出來后大家怎么用,每個(gè)環(huán)節(jié)都考慮清楚了。這樣真正實(shí)現(xiàn)的時(shí)候就很快了。

             當(dāng)然僅僅做出來是不夠的,還要在實(shí)際工作真正使用起來,并根據(jù)大家的實(shí)踐去不斷完善這個(gè)系統(tǒng)。之所以敢于把 BugFree 開源出來展示給更多的朋友,是因?yàn)榻?jīng)過我們近20人的團(tuán)隊(duì)10個(gè)多月的實(shí)際應(yīng)用,大家一致覺得它是個(gè)難得的好工具、是日常工作的好幫手,大家工作都離不開了。

             不過,現(xiàn)在有不少成熟的Bug管理軟件可以買的到,也有很多開源軟件讓你自由挑選。BugFree 是免費(fèi)并且開發(fā)源代碼的,你可以體驗(yàn)到微軟的Bug管理精髓,按自己的需要自由地增加功能、修改代碼而不用擔(dān)心版權(quán)問題,為什么不試一試?實(shí)在不滿意再動(dòng)手自己造也不遲J

       

      孟巖:那么去買一個(gè)成熟的商業(yè)產(chǎn)品如何?有什么比較好的選擇嗎?我聽說科泰世紀(jì)公司在陳榕的領(lǐng)導(dǎo)下也開發(fā)了一個(gè)類似微軟內(nèi)部使用的Bug管理系統(tǒng),你了解嗎?還有開源社區(qū)里很流行的Bugzilla!,你怎么看?

       

      劉振飛:成熟的Bug管理商業(yè)產(chǎn)品應(yīng)該有不少,比如,IBM提供的Rational ClearQuest、微軟將在VS.NET 2005Whidbey)中集成的Bug管理系統(tǒng)、上海微創(chuàng)提供的BMS、科泰世紀(jì)《和欣軟件工程管理工具》套裝軟件中的Bug管理系統(tǒng)等等,都應(yīng)該不錯(cuò)。開源社區(qū)中,你可以選擇Bugzilla!、MantisBug管理系統(tǒng)。

             老實(shí)講,除了微軟相關(guān)的Bug管理系統(tǒng)之外,其它的我都不熟悉。不過我認(rèn)為不同的Bug管理系統(tǒng)之間功能上應(yīng)該不會(huì)差別太大,因?yàn)榇蠹叶际菑能浖?shí)踐中總結(jié)出來的經(jīng)驗(yàn)結(jié)晶,不會(huì)說某家有特別獨(dú)到、別家根本想不到的地方。差別之處主要在于價(jià)格、安裝配置、易用性、可定制、能修改源程序等方面。

             在我決定做 BugFree 之前,曾經(jīng)考察過上面提到的開源社區(qū)Bug管理系統(tǒng),但是簡(jiǎn)單研究之后,覺得和我在微軟用的Raid差別太大、不習(xí)慣;陳榕在微軟工作時(shí)間更長(zhǎng),他們做的系統(tǒng)也是借鑒微軟、最接近我的使用習(xí)慣,但是得花錢購(gòu)買(盡管比起其它商業(yè)化Bug管理系統(tǒng)而言,價(jià)格不算貴),而且不能根據(jù)我自己的要求隨便更改,所以干脆自己做一個(gè)算了。不管怎么樣,我覺得多樣性是一件好事,給了大家更多的選擇機(jī)會(huì)。每家公司、項(xiàng)目、人員的狀況都不一樣,都可以根據(jù)自己的具體情況挑選自己喜愛的Bug管理系統(tǒng)。

             順便說一句,通過我自己做BugFree開源的經(jīng)歷,覺得自由軟件的真正魅力不在于其零價(jià)格,而是其源代碼的完全開放,你可以根據(jù)自己的具體情況自由的去修改、去定制,完整的控制整個(gè)系統(tǒng)。

       

      孟巖:如果有這么一家公司,它接受不了整套的Bug管理制度,打算自己開發(fā)一個(gè)Bug管理系統(tǒng),以適應(yīng)自己企業(yè)的需求,讓你給參謀參謀,你覺得一個(gè)良好可用的Bug管理系統(tǒng),需要有哪些基本功能?

       

      劉振飛:我覺得一個(gè)Bug管理系統(tǒng)需要具備以下外部特征:

      1.可以完備的記錄、跟蹤Bug 的一生:從出生(創(chuàng)建新的Bug)、不斷成長(zhǎng)(記錄相關(guān)人員尋找產(chǎn)生Bug的原因的討論過程)、發(fā)育成熟(找到了一個(gè)處理辦法)到最后死亡(關(guān)閉),同時(shí)也要允許Bug的復(fù)活(問題重現(xiàn)),繼續(xù)其生長(zhǎng)過程。

      2.方便的查詢功能,快速找到你關(guān)心的 Bug。比如:

      a). 最近N個(gè)指派給我的 Bug

      b). 最近N個(gè)由我創(chuàng)建的 Bug

      c). 各種自定義條件的查詢

      3.提供各種Bug統(tǒng)計(jì)信息。比如每個(gè)人頭上有多少個(gè)Bug、到目前為止Bug總數(shù)的統(tǒng)計(jì)、最近一周Bug曲線圖等等,視具體需要可以有很多種統(tǒng)計(jì)。

      4.方便的項(xiàng)目和模塊管理,可以有很多項(xiàng)目、每個(gè)項(xiàng)目有多個(gè)模塊,要能夠很方便的增加、刪除、修改。

      5.簡(jiǎn)單的用戶管理。作為一個(gè)可獨(dú)立使用的系統(tǒng),需要能夠增加、刪除用戶。當(dāng)然最好的是直接使用公司已有的管理系統(tǒng)中的用戶認(rèn)證。比如在微軟,只要你登錄公司內(nèi)部網(wǎng)(域)后,你就可以直接使用Raid了,它直接集成了公司的用戶認(rèn)證,不需要單獨(dú)一套用戶認(rèn)證系統(tǒng),那樣對(duì)使用者就很不方便,管理起來也會(huì)比較混亂。

       

      孟巖:你結(jié)合BugFree具體談?wù)?,這些功能是如何協(xié)同的?開發(fā)者、測(cè)試工程師和PM在整個(gè)開發(fā)過程中,是如何圍繞這個(gè)系統(tǒng)運(yùn)轉(zhuǎn)的?

       

      劉振飛:先從基礎(chǔ)設(shè)施說起。首先BugFree有一個(gè)獨(dú)立且簡(jiǎn)單的用戶管理,可以方便的增刪用戶:

      然后是簡(jiǎn)單的項(xiàng)目/模塊管理,管理員可以方便的增加新的項(xiàng)目、新的模塊,或者更改已有項(xiàng)目/模塊的顯示名字:

      因?yàn)閮H僅有管理員才可以進(jìn)入后臺(tái)管理,所以這兩個(gè)后臺(tái)功能做的比較簡(jiǎn)單。

       

      這樣定義了項(xiàng)目/模塊和用戶后,BugFree的用戶就可以進(jìn)行Bug的跟蹤處理了。舉個(gè)虛擬的場(chǎng)景,林燕鋒、你、我三個(gè)人在一家公司做網(wǎng)站,他是測(cè)試工程師(Tester)、你是開發(fā)工程師(Developer)、我是需求定義者(PM),我們?nèi)齻€(gè)負(fù)責(zé)公司網(wǎng)站的新聞?lì)l道:

      [1]. 林燕鋒發(fā)現(xiàn)新聞?lì)l道的后臺(tái)管理中“編輯”功能打開速度非常的緩慢,無法忍受。于是他新建一個(gè)Bug說明這個(gè)問題,然后指派給我;

      [2]. 我看到這個(gè)Bug后,趕快到新聞?lì)l道的后臺(tái)試用一下,果然很慢。于是我把這個(gè)Bug指派給你,加上我的注釋:“孟巖,這項(xiàng)功能使用很頻繁,速度太慢直接影響了我們信息編輯的工作效率。請(qǐng)你研究一下這部分代碼,看如何調(diào)整程序,以加快打開速度。”

      [3]. 你看到這個(gè)Bug后,作為這部分功能的實(shí)現(xiàn)者,去認(rèn)真地研究了當(dāng)時(shí)的代碼,經(jīng)過調(diào)試,發(fā)現(xiàn)是數(shù)據(jù)庫(kù)查詢方式的問題,采用不同的方式之后,新聞編輯功能的速度大大提高了,于是你解掉(Fixed)這個(gè)Bug,并把你發(fā)現(xiàn)的問題原因和解決方法做了描述:“不好意思,以前的查詢方法有點(diǎn)笨,現(xiàn)在已經(jīng)修改了數(shù)據(jù)庫(kù)查詢方式,加快了瀏覽速度,具體改動(dòng)請(qǐng)參見附件EditNews.php。”因?yàn)閱栴}被解決,這個(gè)Bug會(huì)被自動(dòng)指派給創(chuàng)建者林燕鋒頭上。

      [4]. 林燕鋒看到這個(gè)BugFixed了,趕快去驗(yàn)證了一下,發(fā)現(xiàn)問題真的消失了,于是他關(guān)閉這個(gè)Bug,并加上注釋:“太好了,剛才用了一下,速度確實(shí)快了很多。我代表信息編輯感謝你老兄的工作??!:-)

             你看這樣做,BugFree就非常完整地記錄了Bug的一生:如何發(fā)現(xiàn)(創(chuàng)建Bug)、不斷討論(編輯Bug)、找到原因(解決Bug)到最后關(guān)閉它。這樣開發(fā)工程師、測(cè)試工程師和PM在整個(gè)開發(fā)過程中,都被一個(gè)個(gè)情況各異的Bug們牽著鼻子,密切配合,不斷發(fā)現(xiàn)問題、研究可能的原因、找到處理辦法、驗(yàn)證解決方法是否真的湊效。BugFree 讓所有項(xiàng)目/產(chǎn)品的研發(fā)參與者圍著它轉(zhuǎn),忠實(shí)的記錄了所有被發(fā)現(xiàn)問題的討論處理過程,即使時(shí)間過了很久、我們?nèi)齻€(gè)都離開了這家公司,但當(dāng)時(shí)我們處理的思路被保留下來了,后面接手的同事可以完整無誤的看到全部的討論過程,就像有臺(tái)錄像機(jī)把這個(gè)過程錄下來一樣。

       

      孟巖:從內(nèi)部來看,BugFree的架構(gòu)是怎么樣的?

       

      劉振飛:BugFree 是用 PHP+MySQL 寫成的。首先我們定義了七個(gè)相關(guān)數(shù)據(jù)表:

      -          BugProject: 項(xiàng)目表

      -          BugModule: 項(xiàng)目中的模塊表

      -          BugInfo:      Bug基本信息表

      -          BugHistory: Bug處理過程的歷史記錄表

      -          BugFile:        Bug相關(guān)附件表

      -          BugQuery:   Bug查詢條件表

      -          BugUser:      Bug的簡(jiǎn)單用戶表

      程序代碼也是按照前面介紹的Bug管理功能展開的,基本上一個(gè)功能對(duì)應(yīng)一個(gè)PHP文件,比如:

      Bug的處理過程

      -          AddBug.php:             加入一個(gè)新Bug

      -          EditBugForm.php:    編輯一個(gè)Bug的信息

      -          ResolveBug.php:       解決一個(gè)Bug

      -          ActivateBug.php:      激活一個(gè)Bug

      -          CloseBug.php:           關(guān)閉一個(gè)Bug

           Bug的查詢

      -          QueryBug.php:          查詢符合條件的Bug

      -          SaveQuery.php:        保存用戶定義的查詢條件

      -          DelQuery.php:           刪除一個(gè)用戶定義的查詢條件

           Bug的統(tǒng)計(jì)自動(dòng)通知

      -          NoticeBug.php:         發(fā)信通知每個(gè)用戶的Bug情況

      -          StatBug.php:             發(fā)信給所有人告知當(dāng)前Bug統(tǒng)計(jì)情況

      BugFree 中使用Smarty技術(shù)把PHP代碼和HTML隔離開,每個(gè)涉及到界面的.php文件,都有一個(gè)對(duì)應(yīng)的在Template目錄下的.tpl文件,這樣代碼結(jié)構(gòu)就非常清晰,很容易看懂、維護(hù)和添加新的功能。

      主要目錄結(jié)構(gòu)如下:

      \                   -     根目錄下主要存放上述Bug一生處理流程、查詢等功能文件

      Admin\        -     后臺(tái)管理對(duì)應(yīng)的文件

      BugFile\       -     存放Bug中的附件

      Compile\     -     存放Smarty編譯后的文件

      Document\ -     BugFree 的各種說明文檔

      Image\        -     BugFree 中用到的各種圖片

      Include\      -      公用文件

      JS\               -     用到的JavaScript文件

      Shell\           -      存放需要定時(shí)執(zhí)行的文件

      Template\   -     所有界面模板文件(.tpl

      除去ADO、Smarty等第三方文件,BugFree 自身也就是由30多個(gè)PHP文件組成。更詳細(xì)的說明請(qǐng)參看Document\FileList.txt (代碼文件結(jié)構(gòu))。

       

      所以你看,BugFree 的架構(gòu)其實(shí)非常簡(jiǎn)單,代碼量也不大。想探個(gè)究竟的朋友,只要明白了表的結(jié)構(gòu),然后按圖索驥,根據(jù)功能逐個(gè)查看對(duì)應(yīng)的代碼文件就可以了。PHP 程序的復(fù)雜度要遠(yuǎn)小于C/C++,很直觀。我覺得一個(gè)中等水平的 PHP程序員就可以在1~2周內(nèi)看懂所有的代碼,然后就可以根據(jù)需要做相應(yīng)的定制了。BugFree 僅僅是個(gè)小工具而已,沒有什么神秘的。

       

      孟巖:看來BugFree的設(shè)計(jì)考慮是相當(dāng)細(xì)致的。不過很多人都抱怨這個(gè)用PHP編寫的軟件不容易配置,尤其是在Windows環(huán)境下。你能否簡(jiǎn)單地給大家介紹一下BugFree的配置和部署方法?

       

      劉振飛:上一期文章發(fā)表后陸續(xù)收到一些網(wǎng)友的Email,反映的主要問題是 BugFree Windows平臺(tái)上的安裝問題,而Linux平臺(tái)上似乎很少人抱怨。這從一個(gè)側(cè)面說明在Linux上大家已經(jīng)習(xí)慣自己動(dòng)手配置、有問題自己能找到解決辦法J

      坦率的講,因?yàn)闀r(shí)間、精力、資源有限,目前我們對(duì) BugFree的安裝配置這一塊的測(cè)試做的很不夠,所以還要請(qǐng)網(wǎng)友諒解。我也是通過這個(gè)軟件,覺得做好開源項(xiàng)目真的很不容易,需要付出巨大的努力,因而很佩服那些為開源社區(qū)貢獻(xiàn)優(yōu)秀軟件的人們。

             從反饋的情況來看,我想主要的原因有三個(gè):

      [1]. 運(yùn)行環(huán)境的版本問題,比如PHP、MySQL的版本

      [2]. 程序路徑問題

      [3]. PHP 的配置參數(shù)

          目前經(jīng)過我們實(shí)際測(cè)試的工作環(huán)境有:

                PHP 4.3.8MySQL 4.0.17 (基于RedHat 9 + Apache 1.3.x)

                EasyPHP 1.7 (我自己在Windows上測(cè)試過)

      其他環(huán)境,如IISApache2、PHP5等,還沒有測(cè)試過。在Window上使用BugFree需要改動(dòng)PHP.ini中的下述參數(shù):

              allow_call_time_pass_reference = On

              error_reporting = E_ALL & ~E_NOTICE

              register_globals = On

      根據(jù)大家的意見,我特別寫了一份文檔“在 Windows 平臺(tái)上安裝 BugFree 的詳細(xì)步驟”,公布在 http://www.okooo.com/OpenSource,供大家參考。

      若有朋友成功嘗試過其他版本的運(yùn)行環(huán)境,歡迎你把詳細(xì)步驟整理出來發(fā)送給我,這樣我可以共享給所有網(wǎng)友。這就是開源的好處:和感興趣的熱心朋友們一起不斷完善 BugFree

       

      孟巖:我記得BugFree 1.0開發(fā)出來以后,你特別興奮,跟我說這個(gè)系統(tǒng)已經(jīng)達(dá)到了微軟內(nèi)部系統(tǒng)的水準(zhǔn)。不過馬上你就開始做2.0版。2.0有什么大的改進(jìn)嗎?是你的1.0版還不夠完善,還是說你對(duì)于Bug管理有了新的認(rèn)識(shí)?

      劉振飛:前面提過,BugFree 僅僅是個(gè)小小的Bug管理工具而已,所以第一版發(fā)布后我覺得從1.0計(jì)數(shù)有點(diǎn)不好意思,那么龐大的Apache才到2.0了嘛。所以我決定 BugFree 的版本從0.1計(jì)數(shù),慢慢往上加J

             BugFree 0.1版是在2004-10-11正式公開的。在我們內(nèi)部使用過程中,逐步累積了不少新的功能需求一直沒有來得及添加,而且 Ver 0.1主要有兩個(gè)不足:

      [1]. 最初的代碼是10個(gè)月前寫的,有很多不規(guī)范之處。而且PHP代碼和HTML代碼混在一起,很難閱讀和維護(hù);

      [2]. 原先的界面看起來不是很美觀,感覺有點(diǎn)局促。所以我和負(fù)責(zé)編程的朋友王春生認(rèn)真討論后,決定重新書寫 BugFree 的代碼,解決已知的若干小Bug,并增加了很多新功能。王春生寫了程序,同時(shí)在我們內(nèi)部不斷測(cè)試使用。終于我可以按計(jì)劃在2004-12-15公布出來了這個(gè)全新的版本 0.2 版。

      Ver 0.2的主要的改動(dòng)有:

      n         Smarty技術(shù)把HTMLPHP代碼分開,代碼很清晰,易于維護(hù)

      n         多語(yǔ)言支持,目前你可以選擇英文界面。增加一個(gè)新語(yǔ)言也很容易,就是增加一個(gè)對(duì)應(yīng)的文件包含所有的字符串而已(由此BugFree可以走出國(guó)門了J

      n         系統(tǒng)配置很靈活,可以根據(jù)使用情況自己定義

      n         全新的界面,顯示空間更大,更加大氣

      n         增加BugFree的簡(jiǎn)單用戶管理

      n         符合你自定義查詢條件的Bug改動(dòng)時(shí),會(huì)自動(dòng)給你發(fā)信

      n         Bug信息中增加了兩個(gè)字段:操作系統(tǒng)、抄送。“抄送”的功能表示這個(gè)Bug有變化時(shí),也會(huì)發(fā)送給這些人

      n         增強(qiáng)BugFree的查詢功能

      n         增加Bug的多任務(wù)分派功能,新建一個(gè)Bug時(shí)可以同時(shí)指派給多個(gè)人,這對(duì)事務(wù)跟蹤和數(shù)據(jù)校對(duì)類問題非常有用

      n         可以添加多個(gè)附件

      n         改變Severity的顯示方式

      n         有快捷鍵支持

      n         Pear中標(biāo)準(zhǔn)的樹狀列表TreeMenu

      n         使用ADO訪問數(shù)據(jù)庫(kù)

      目前這個(gè)0.2版的代碼質(zhì)量和用戶界面都有了很大改進(jìn),但其中的Bug管理思想和0.1版相比沒有任何變化,只不過代碼更清晰、界面更漂亮、使用起來更方便了。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多