软件内部质量的一些思考

发表于:2012-12-19 10:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:napoleon_liu    来源:51Testing软件测试网采编

  软件内部质量

  代码内部质量指的是代码的可读性, 可修改性, 复杂度(圈复杂度,函数深度),  可移植性等软性质量。 (像BUG率指的是外部质量)

  软件的内部质量只对开发者有直接影响, 对公司来说间接影响就是开发的维护成本。

  为什么程序会有这么多偶然复杂性呢?

  基本都会有这个问题, 在传统公司,每半年会有个大版本,质量改进可以放到一个大版本中来完成(因为大版本有完全的回归测试)。

  互联网公司采用的快速开发,但没有完备的单元测试自动化测试; 都是小版本发布, 很少大版本,也就很少有完全回归测试的机会;这些原因就导致互联网企业的代码质量往往是最差的。

  原因分析:

  1、快速开发周期,最初都是简单设计并实现功能。(设计欠账,但这很好,很经济)

  小版本发布(这也很好),  因为多是手工测试,导致的问题是没有完全回归测试的机会。

  2、后期修改逻辑时,大家也是快速修改。没有过多去考虑代码质量,很多可以改进的地方没有及时改进. (缺乏重构的意识)。

  3、很多人修改代码的原则是尽量少改代码,保持已有代码,通过添加新代码来实现目标。

  这样的做的原因是代码没有被测试覆盖, 好处是减少了出错率,并减少了BUG数(对应的绩效也更好)。但这样的缺点是,代码不断引入偶然复杂性,复杂度只增不减, 项目后期维护成本不断增加。(编码欠账, 本次经济,长期可能是亏本的)。

  4、代码所有者经常变换,最初A编写,后来B维护,再后来C维护。 这样代码对后续者(B,C)来说是缺少所有感的,也会缺少质量的责任感。

  后面的编写者在对老代码都是坚持谨慎原则,只改一定要改的部分,多次易手后,偶然复杂被累积。

  5、代码内部质量一般不会纳入公司绩效考核,所以关心的人也会相对较少。(投资回报率低,对个体而言).

  影响分析:

  1、对于新项目,代码质量可能不是最重要,快速反馈才是;

  2、对于已经存在较长,并且以后好长时间都会存在的项目,代码质量很重要,质量改进,可以带来更低的修改成本,新成员也更容易理解业务;

  3、对于老项目,后续很少修改的,或存活不会很久的项目,质量提高可能是没有必要的。

  改进方法:

  1、防止恶化,最有效的方法是引入单元测试和自动化测试,这样任何人的修改都可以被测试到, 代码也可以真正做到集体所有。 但在中国这个技术要求过高了。

  可以先只对公共代码和核心代码进行单元测试。

  2、写代码的时候,坚持“低耦合,高内聚”,做到一个函数一个功能。这样可以在修改BUG和添加特性的时候做重构,这样就可以保证你修改的部分会在这次发布中被测试到。

  3、提交代码前进行code-review, 这样可以相互检查并相互提高。

  4、在小版本中安插大版本(比如半年一个),大版本的目的就是为重构,提高内部质量,并提供完全的回归测试(成本较高)。

  5、使用代码内部质量度量工具(sourcemonitor, simon), 并集成的持续集成环境中。

  6、把代码内部质量度量纳入绩效考核 (最本质的保证)。

  软件内部质量,不能产生立杆见影的效果,质量提高也需要成本,故以上只是个人的简单看法,投资回报未必是划算。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号