簡介
BugFree的來源
BugFree是借鑒微軟的研發流程和Bug管理理念,使用PHP+MySQL獨立寫出的一個Bug管理系統。簡單實用、免費并且開放源代碼(遵循GNU GPL)。
如何有效地管理軟件産品中的Bug,是每一家軟件企業必須面臨的問題。遺憾的是很多軟件企業還是停留在作坊式的研發模式中,其研發流程、研發工具、人員管理不盡人意,無法有效的保證質量、控制進度,并使産品可持續發展。
針對這個問題,我們獨立做出了BugFree,并且半年多來每天都在使用。我們公司就是用它來管理Bug,不斷提高産品質量的:-)
BugFree名稱的含義
命名BugFree有兩層意思:一是希望軟件中的缺陷越來越少直到沒有,Free嘛;二是表示它是免費且開放源代碼的,大家可以自由使用傳播。
為什麼開放BugFree的源代碼呢?
根據半年多的實踐,覺得BugFree非常有用,我們公司的日常工作已經離不開它了。雖然沒有微軟的Bug管理系統(以前叫Raid,現在是ProductStudio)的功能那麼強大,但是處理方法和思想是完全一緻的,起碼我自己用起來的感覺和在微軟時基本一樣,值得向大家推薦。
我們是用開放源代碼的PHP+MySQL開發的,目的就是希望跟大家分享BugFree。而且開放源代碼之後,期待高手不斷改進它,大家都能用到更加強大的功能。也算為中國的軟件業做點小小的貢獻:-)
BugFree代碼在我們的“數字神經系統”中非常獨立,很容易拿出來給大家共享。
BugFree僅僅是個工具
不過坦率的講,BugFree僅僅是個工具而已,重要的是掌握其中蘊含的軟件研發的流程思想,才能用好這個工具。如果你以前沒有用過Bug管理系統,那麼一開始的時候也許你會覺得這個工具是在浪費時間,因為一個測試人員需要費神把發現Bug的詳細步驟記錄下來,有時還要貼一張示意圖,這一切都不如當面說來得直接。
但是使用一段時間,你會發現BugFree很有用,它忠實的記錄着每個問題的處理過程,不斷提醒你存在的問題,永遠不會丢失和忘記。如果你參與過較大軟件項目或産品的研發,就會理解它對軟件可持續發展是至關重要的。而且研發的規模越大,BugFree的作用就會越大。
如何安裝使用
BugFree的安裝和使用都非常簡單,就像PHP+MySQL一樣:
INSTALL.htm介紹了BugFree的安裝
HOWTO.htm介紹了如何使用BugFree
FILES.htm介紹了BugFree的代碼文件結構
希望你能喜歡BugFree,就像我一樣。
為什麼開發
一言以蔽之,「工欲善其事,必先利其器」。
我在方正的困惑
我曾在北京大學計算機研究所(方正技術研究院)學習、工作了七年,那裡有我很多師長和好友,我參與研發的方正RIP(PSPNT)至今仍是方正的核心軟件産品。當自認為成了一名合格的C++開發人員後,我發現面臨一個無法解決的難題:如何有效地控制軟件研發流程以保證産品質量和進度。我意識到做好一個軟件,隻靠技術好是很不夠的,必須要有一套好的研發流程和配套的研發工具。恰好那時我在吳士宏的《逆風飛飏》中讀到了微軟的“數字神經系統”及相關叙述,很吃驚,想去那裡看看。
微軟數字神經系統的妙處
2000年我加入微軟(中國)研發中心,真的很快在這裡找到了答案。四年來,我所理解的微軟數字神經系統在軟件研發中的妙處是:
研發人員分工明确
主要的三個角色:PM(ProgramManager)、Dev(Developer)、Tester三者分工明确、接口清晰,PM來定義需求、書寫出來每個功能特性(Feature)的設計文檔(Spec),Dev寫代碼來實現這個Spec,Tester來測試Dev做出來的東西是否符合PM定義的Spec,三個角色之間并無必然的上下級關系,隻是分工合作完成某個功能(Feature)。我将之形容為“三權分立”,三者之間有效合作并制衡。國内企業好像還沒有PM這個角色,而測試人員又往往成為開發人員的附庸,一個Bug是否要被解決全由開發人員說了算,這很糟糕,就像政治上一個權力沒有被有效的制衡一樣,一定會産生各種問題。
研發工具很配套
PM将寫好的需求設計文檔(Spec)保存到SharePoint【見附錄一】文檔庫中,所有相關的人都可以随時查看;Dev用SourceDepot(功能類似CVS的微軟内部源代碼管理工具)來保存源程序;Tester把發現的Bug記錄到Raid中以有效跟蹤這個問題的處理流程。
分階段的研發流程
和任何軟件公司一樣,微軟的研發無非也分為規劃、開發、測試、發布等幾個階段。但是微軟的研發流程不走形式,可以統一産品組所有員工的思想,并且能夠有效地控制住進度。做完一個版本後,還會讓所有員工匿名投票,找出這次研發過程中出現的各種問題以便在下個版本中解決(此過程稱為postmortem,挺吓人的一個詞)。
可以這麼比喻,微軟這套研發模式是讓其中的每個人都成了一架高速運轉的機器上的各種零件,少數零件壞了不要緊,可以随時更換。當然微軟有許許多多技術高手,但我認為更重要是其研發模式保證了軟件産品的高品質、可持續發展。
員工管理系統
每個員工都有唯一的UserID,驗證密碼後方可登錄數字神經系統,訪問公司内部信息,查看上下級關系、每個員工的個人公開信息等,此處學習SharePoint、Outlook和Exchange中的員工管理和展示;
信息管理系統
内部的信息發布展示平台,有點象BBS一樣,可發布公司正式通告、員工也可自由匿名發帖;
Email系統
現在Email的重要性對一個企業不言而喻,我們采用免費Qmail來搭建;
文檔管理系統
一個集中管理公司所有文檔(包括研發過程書寫的各種文檔)的地方,學習SharePoint中的文檔庫;
源代碼管理系統
集成優秀且免費的CVS;
BugFree
雖然網上有免費的Bug管理系統,但是我看後覺得都不好使,和我在微軟用的差别太大,科泰世紀公司的Bug管理系統倒也很像微軟的,但是要花錢買。于是決定用PHP+MySQL借鑒微軟的研發流程和Bug管理工具自己開發一個,以便對我們開發新網站、聲訊軟件、客戶端軟件和公司事務管理中出現的問題進行有效的跟蹤處理。
當然這個小小的“數字神經系統”還不全面,而且當時設計的時候更多的是站在為方便研發人員的日常工作而考慮的,以後還需要挂靠更多的公司業務相關模塊。即使這樣,它已經發揮了很大威力,現在公司每個員工都養成這樣的工作習慣并樂在其中:每天使用郵件,到文檔庫中查找文檔,發現問題上Bug等等。
BugFree代碼的完成
“數字神經系統”中的BugFree是用開放源代碼的PHP+MySQL寫成、基于浏覽器方式運行的。我以前沒有任何Linux+Apache+MySQL+PHP的開發經驗,但我很幸運的招聘到兩名優秀的Web程序員,可以在短短的兩個月時間内搭建起這樣的系統。其中BugFree是由我的同事王春生
之後我們測試一個多月,就可以在實際工作中使用。現在BugFree已經成了我們日常工作最重要的工具,每個員工也都習慣用Bug來記錄跟蹤事情,不僅僅是代碼中的缺陷可以上Bug,新的需求、設計變化等都可以用這個Bug管理系統有效的管理起來。其實Bug不僅僅可以用來記錄軟件中的缺陷,也可以用來跟蹤公司的日常事務。比如在公司的網上報銷系統還沒有建立之前,我們就用BugFree來處理報銷的事情。甚至,一個同事給我上了這樣的Bug:你的桌面太亂了,請整理一下:-)
和Raid比較起來,BugFree有如下特點:
Raid是Windows客戶端軟件,BugFree是基于浏覽器的。基于此,Raid有很強大的編輯展示功能,而BugFree簡單、方便、易用;
Raid可以進行極其複雜的組合查詢,BugFree的查詢功能相對弱一些,但我覺得已經夠用了;
一個Bug從創建到關閉這個“生命周期”的處理過程,BugFree全面借鑒Raid的處理流程,處理方法甚至一些詞彙都和Raid一樣(所以我現在用BugFree處理Bug的感覺和在微軟時候基本一樣);
BugFree還有一個獨創的功能:當一個Bug被指派給你的時候,系統會自動給你發一封郵件,告訴你有個Bug需要你處理,這樣結合Email,BugFree被完美使用起來,成為我們現在網站開發、運行、維護必備的工具。我們還增加了兩個Bug統計功能:一是每天早上8點鐘每個同事都會收到一封Email,告訴他/她頭上還有多少Bug等待處理;二是每周一中午給所有人發一封郵件,告知上周Bug的處理情況和到目前為止所有Bug的統計數據;
BugFree程序規模很小,一個中等水平的PHP程序員就可以在1~2周内看懂所有的代碼,然後就可以根據自己的需要做相應的定制了;
最最重要是,BugFree是免費并且開發源代碼的。你可以體驗到微軟的Bug管理精髓,按自己需要自由地增加功能、修改代碼而不用擔心版權問題:-)
目前的開發情況
和任何軟件系統一樣,BugFree中還存在着一些Bug、還有很多地方可以改進、還可以增加很多新的功能。但是基于人力和時間的關系,沒有太多精力去進一步完善它。開放源代碼之後,希望有熱心人不斷完善BugFree。以下是目前我想到的可以改進的地方:
宣傳推廣BugFree的使用。
一般中小企業沒有很好的Bug管理系統,剛好可用BugFree來填補這個空白。其實BugFree是一個非常簡單的工具,可以讓非技術人員快速上手使用。開源的目的是讓它被廣泛使用,隻有被大家天天用,我們才能找到下一步不斷改進這個軟件的真正需求。有人天天用是軟件生命力的保證。
和源代碼管理系統CVS有效的統一起來。
當代碼的改動是因為解決一個Bug引起的時候,系統可以自動把代碼的Check-in結合起來,微軟的源代碼管理SourceDepot好像早就有了此能力。可以考慮通過Eclipse把CVS和BugFree連通起來。
搭建研發工具套件。
更進一步,把BugFree和需求設計文檔、開發文檔、測試文檔、測試用例等聯系起來,做成一個軟件研發工具套件,即可通過一個Bug方便找到對應的文檔、代碼、測試用例等等,那将是一個比較完美的境界。微軟現在的ProductStudio正在向這個方面努力。不過,達到這一步,必須先做一個好的文檔管理工具,就像微軟的SharePoint中的文檔庫一樣,不僅僅存放文檔,還要方便檢索(比如Word文檔内容)等,那可不是一件容易的工作。我目前初步的想法是,先借鑒“基于Java的全文索引引擎Lucene”去做一個易理解、易擴展的基于C++的全文索引引擎,我在微軟做過SPS的PM,對搜索引擎這一塊還是比較熟悉、可以做出來的。有了這樣的引擎為基礎後,再借鑒SharePoint做出文檔庫及門戶功能。
這些工作都需要花很多精力和時間,而且也很難做。
附錄
微軟的SharePoint
微軟的Windows、Office廣為人知,但是Office家族中的一個企業級産品SharePoint大家可能還不很熟悉,它分為兩個版本SharePointTeamService(現改為WindowsSharePointService,簡稱WSS),是為一個小組建立網站所用;另一個叫SharePointPortalServer(簡稱SPS),是為了建立企業門戶所用,SPS基于WSS,增加了強大的門戶管理功能、文檔搜索功能。可以這麼說,互聯網上的Web頁搜索你有很多選擇,如Google、Yahoo、百度等等;企業内部網上你好像隻有選擇SPS,盡管這個軟件不便宜。
其實判斷微軟産品的優劣,隻要看看微軟自己在内部使用哪些産品好了。從OfficeXP發布以來,SharePoint已經廣泛地在微軟内部部署使用起來,現在各個部門、小組的網站幾乎都建立在SharePiont上了。微軟也在不斷投入力量加強這個産品的研發,考慮到Office家族的客戶端産品(如Word、Excel、infopath等)可以無縫連接到SharePoint上,非常完美的集成在一起,不誇張的說,SharePoint又将是微軟一棵金燦燦的搖錢樹了。現在Office家族的産品都在向SharePoint挂靠,這樣每個獨立的看似沒有發展空間的客戶端産品如Word、Excel等,一下子都有新的發展餘地,開始邁向真正的企業級應用解決方案。不佩服微軟那麼多聰明的腦瓜不行啊!
科泰世紀公司的Bug管理系統
還有一家公司也在學習微軟的研發模式:科泰世紀(www.koretide.com.cn),他們的軟件工程管理工具像我們一樣在借鑒微軟的經驗。科泰的首席科學家陳榕在美國微軟工作多年,現在回來做操作系統,動手之前先把研發工具和研發模式學習微軟的樣子搭建起來。我想凡是在微軟做過研發、理解了這套研發模式的開發人員,如果離開微軟繼續做開發的話,一定會做一個類似的Bug管理工具,“英雄所見略同”:-)有意思的是,我們和科泰世紀都用PHP+MySQL來開發Bug管理系統、用CVS來管理源代碼,但不同的是他們把Bug管理工具當作軟件來賣。