- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
提高软件质量的利器Valgrind视讯产品线/监控业务开发部2010-12-24PurifyPlus投资回报分析花费更少的时间修补BUG,每位开发人员每年节约 2.6 周时间研究表明假设一个中等工作团队为 5 人,则每个团队每月出现 3 次关键的内存访问错误。也就是每位开发人员每月 0.6 个错误。使用常规工具发现一个内存访问错误平均花费 16 小时。0.6 个错误/月/开发人员×16 小时/错误=9.6 小时/月用来修补内存错误百分之六十的被调查者认为,使用 PurifyPlus 发现运行时错误带来的生产率系数大约是 10 倍,这就意味着过去用十小时发现并纠正的错误可以在不到一小时内得以纠正。即:使用常规的工具 9.6 小时×1/10(Purify 生产率系数)=0.96 小时/月。这说明每位开发人员每月节省 8.64 小时(9.6-0.96=8.64)。按这样的方法计算一年,8.64 小时/月×12 月=103.7小时/年。每周 40 小时,这样就可以换算成每年节省 2.6 周(103.7 小时/40小时=2.6 周)PurifyPlus投资回报分析花费更少的时间解决性能每位开发人员每年节省 1.96 周研究表明每位程序员花费大约5% 的时间用于优化/改进程序性能。这样计算的话,不使用 PurifyPlus,程序员每年花费 2.4 周改进程序性能:0.05×48周/年=2.4 周/年。当使用了 PurifyPlus 解决性能问题后,生产率增益的系数估计为5倍,这就意味着以前花费 5 小时纠正的错误现在仅需要 1 小时。在赢得这个 5 倍的量化的生产率系数后,每位开发人员每年将仅仅使用 0.48 周来解决性能问题:使用常规工具需要2.4小时×1/5(量化的生产率因子)=0.48周/年。这表明每位开发人员每年节省将近两周的时间(2.4-0.48=1.92)PurifyPlus投资回报分析提早发现 BUG 每年节省 7000 美元PurifyPlus 通过突出显示没有完全通过测试并且可能仍旧包含BUG或性能问题的代码段,从而改进错误检测。通过提早发现BUG,PurifyPlus带来了显著的费用节省。公认的行业标准表明在软件交付前修补BUG的花费小于10倍。使用 PurifyPlus 的开发人员与不使用PurifyPlus的开发人员相比,每年平均多发现10个BUG在软件交付后修补一个 BUG 的开销估计是 700 美元,而在交付前修补一个 BUG 的开销仅为70美元。对于每位开发人员来说,使用 PurifyPlus 提前发现 BUG 节省的成本每年就是 7000 美元:10BUG×700 美元交付后成本=7000 美元好的工具可以帮助开发人员每年多活一个月BUG的危害增加产品的开发时间、可能会把产品挂掉增加研发人员的劳动、经常加班可能会把人挂掉不断的消耗公司的利润严重影响研发人员的自信心和学习机会导致与家人团聚的时间减少,降低幸福指数影响寿命影响同事间感情致命的BUG可能会把公司挂掉软件BUG分类如何降低软件的BUG使用成熟的代码和框架少直接使用裸API多使用自己积累的开发代码使用CBB,COTS使用成熟的开源框架ACE,ICE,BOOST,STL技术代码与业务代码解耦技术代码+业务代码=产品代码 抽象技术代码-好的设计模式-形成框架-通用中间件抽象业务代码-好的设计模式-形成框架-领域中间件如何降低软件的BUG对句柄资源在应用层进行资源使用统计文件,SOCKET,内存等系统资源不直接使用系统的内存管理,在应用层开发自己的内存池可以提高运行效率,减少频繁内存分配内存的分配释放可以自己控制,避免内存泄露如何降低软件的BUG编写代码尽量符合OCP原则面对变化优先考虑不增加代码面对变化优先考虑增加新的模块面对变化优先考虑增加新的文件面对变化优先考虑增加新的类面对变化优先考虑增加新的函数模块对外接口要保持宽进严出原则如何降低软件的BUG尽量少用锁,用锁的最高境界是不用锁禁止使用递归锁、交叉锁、嵌套锁建议多使用Scoped Locking避免忘记释放锁对外接口采用Thread-Safe Interface避免自死锁采用成熟的网络I/O模型、少用SELECT模型单线程能解决问题就少使用多线程、多线程下优先采用静态多线程能用数组就不用堆进程间通信优先使用文本协议如何降低软件的BUG养成好的编码习惯使用简单的语法少使用多重继承、多级继承、嵌套、友元编写简单的类功能单一、接口清晰、函数不要过多编写简单的函数输入参数[0,3]个、输出参数[0,1]、少用**、少用递归行数[0,20]=20%,(20,50]=70%,(50,100]=10%,(100,+~)=0%编写简单的指令如何降低软件的BUG开发做好单元测试,需要有单元测试代码长时间在Valgr
原创力文档


文档评论(0)