简介
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管理工具当作软件来卖。