My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 未整理篇
如何用正确的方法来写出质量好的软件的75条体会
作者:bohut 时间:2003-02-21 11:11 出处:互联网 责编:MyFAQ
              摘要:如何用正确的方法来写出质量好的软件的75条体会
1. 你们的项目组使用源代码管理工具了么?
应该用。VSSCVSPVCSClearCaseCCC/HarvestFireFly都可以。我的选择是VSS

2. 
你们的项目组使用缺陷管理系统了么?
应该用。ClearQuest太复杂,我的推荐是BugZilla

3. 
你们的测试组还在用Word写测试用例么?
不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是TrackBrowse

4. 
你们的项目组有没有建立一个门户网站?
要有一个门户网站,用来放Contact InfoBaselined ScheduleNews等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)

5. 
你们的项目组用了你能买到最好的工具么?
应该用尽量好的工具来工作。比如,应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费,所以说是你能买到最好的

6. 
你们的程序员工作在安静的环境里么?
需要安静环境。这点极端重要,而且要保证每个人的空间大于一定面积。

7. 
你们的员工每个人都有一部电话么?
需要每人一部电话。而且电话最好是带留言功能的。当然,上这么一套带留言电话系统开销不小。不过至少每人一部电话要有,千万别搞得经常有人站起来喊:某某某电话。《人件》里面就强烈谴责这种做法。

8. 
你们每个人都知道出了问题应该找谁么?
应该知道。任何一个Feature至少都应该有一个Owner,当然,Owner可以继续Dispatch给其他人。

9. 
你遇到过有人说我以为…”么?
要消灭我以为Never assume anything

10. 
你们的项目组中所有的人都坐在一起么?
需要。我反对Virtual Team,也反对Dev在美国、Test在中国这种开发方式。能坐在一起就最好坐在一起,好处多得不得了。

11. 
你们的进度表是否反映最新开发进展情况? 
应该反映。但是,应该用Baseline的方法来管理进度表:维护一份稳定的Schedule,再维护一份最新更改。Baseline的方法也应该用于其它的SpecBaseline是变更管理里面的一个重要手段。

12. 
你们的工作量是先由每个人自己估算的么?
应该让每个人自己估算。要从下而上估算工作量,而不是从上往下分派。除非有其他原因,比如政治任务工期固定等。

13. 
你们的开发人员从项目一开始就加班么?
不要这样。不要一开始就搞疲劳战。从项目一开始就加班,只能说明项目进度不合理。当然,一些对日软件外包必须天天加班,那属于剥削的范畴。

14. 
你们的项目计划中Buffer Time是加在每个小任务后面的么?
不要。Buffer Time加在每个小任务后面,很容易轻易的就被消耗掉。Buffer Time要整段的加在一个Milestone或者checkpoint前面。

15. 
值得再多花一些时间,从95%做到100%
值得,非常值得。尤其当项目后期人困马乏的时候,要坚持。这会给产品带来质的区别。

16. 
登记新缺陷时,是否写清了重现步骤?
要。这属于DevTest之间的沟通手段。面对面沟通需要,详细填写Repro Steps也需要。

17. 
写新代码前会把已知缺陷解决么?
要。每个人的缺陷不能超过10个或15个,否则必须先解决老的bug才能继续写新代码。

18. 
你们对缺陷的轻重缓急有事先的约定么?
必须有定义。Severity要分123,约定好:蓝屏和Data LostSev 1Function ErrorSev 2,界面上的算Sev 3。但这种约定可以根据产品质量现状适当进行调整。

19. 
你们对意见不一的缺陷有三国会议么?
必须要有。要有一个明确的决策过程。这类似于CCB (Change Control Board)的概念。

20. 
所有的缺陷都是由登记的人最后关闭的么?
Bug
应该由Opener关闭。Dev不能私自关闭Bug

21. 
你们的程序员厌恶修改老的代码么?
厌恶是正常的。解决方法是组织Code Review,单独留出时间来。XP也是一个方法。

22. 
你们项目组有Team Morale Activity么?
每个月都要搞一次,吃饭、唱歌、Outing、打球、开卡丁车等等,一定要有。不要剩这些钱。

23. 
你们项目组有自己的Logo么?
要有自己的Logo。至少应该有自己的Codename

24. 
你们的员工有印有公司LogoT-Shirt么?
要有。能增强归属感。当然,T-Shirt要做的好看一些,最好用80支的棉来做。别没穿几次就破破烂烂的。

25. 
总经理至少每月参加次项目组会议
要的。要让team member觉得高层关注这个项目。

26. 
你们是给每个Dev开一个分支么?
反对。Branch的管理以及Merge的工作量太大,而且容易出错。

27. 
有人长期不Check-In代码么?
不可以。对大部分项目来说,最多两三天就应该Check-In

28. 
Check-In代码时都填写注释了么?
要写的,至少一两句话,比如解决了Bug No.225”。如果往高处拔,这也算做配置审计的一部分。

29. 
有没有设定每天Check-In的最后期限?
要的,要明确Check-In Deadline。否则会Build Break

30. 
你们能把所有源码一下子编译成安装文件吗? 
要的。这是每日编译(Daily Build)的基础。而且必须要能够做成自动的。

31. 
你们的项目组做每日编译么?
当然要做。有三样东西是软件项目/产品开发必备的:1. bug management; 2. source control; 3. daily build

32. 
你们公司有没有积累一个项目风险列表?
要。Risk Inventory。否则,下个项目开始的时候,又只能拍脑袋分析Risk了。

33. 
设计越简单越好
越简单越好。设计时候多一句话,将来可能就带来无穷无尽的烦恼。应该从一开始就勇敢的砍。这叫scope management

34. 
尽量利用现有的产品、技术、代码
千万别什么东西都自己CodingBizTalkSharepoint就是最好的例子,有这两个作为基础,可以把起点提高很多。或者可以尽量多用现成的Control之类的。或者尽量用XML,而不是自己去Parse一个文本文件;尽量用RegExp,而不是自己从头操作字符串,等等等等。这就是软件复用的体现。

35. 
你们会隔一段时间就停下来夯实代码么?
要。最好一个月左右一次。传言去年年初Windows组在Stevb的命令下停过一个月增强安全。Btw这个字念“hang”,第一声。

36. 
你们的项目组每个人都写Daily Report么?
要写。五分钟就够了,写10句话左右,告诉自己小组的人今天我干了什么。一则为了沟通,二则鞭策自己(要是游手好闲一天,自己都会不好意思写的)。

37. 
你们的项目经理会发出Weekly Report么?
要。也是为了沟通。内容包括目前进度,可能的风险,质量状况,各种工作的进展等。

38. 
你们项目组是否至少每周全体开会一次?
要。一定要开会。程序员讨厌开会,但每个礼拜开会时间加起来至少应该有4小时。包括team meeting, spec review meeting, bug triage meeting。千万别大家闷头写code

39. 
你们项目组的会议、讨论都有记录么?
会前发meeting requestagenda,会中有人负责主持和记录,会后有人负责发meeting minutes,这都是effective meeting的要点。而且,每个会议都要形成agreementsaction items

40. 
其他部门知道你们项目组在干什么么?
要发一些Newsflash给整个大组织。Show your team’s value。否则,当你坐在电梯里面,其他部门的人问:你们在干嘛,你回答“ABC项目的时候,别人全然不知,那种感觉不太好。

41. 
通过Email进行所有正式沟通
Email
的好处是免得抵赖。但也要避免矫枉过正,最好的方法是先用电话和当面说,然后Email来确认。

42. 
为项目组建立多个Mailing Group
如果在AD+Exchange里面,就建Distribution List。比如,我会建ABC Project Core TeamABC Project Dev TeamABC Project All Testers