从代码抽查到大型软件的可维护性

类别:软件工程 点击:0 评论:0 推荐:

        有人跟我说,既然有测试部门进行软件质量测试,有性能保证团队负责产品性能的测试和改进,那么我们的代码抽查还有什么意义呢?我告诉他:代码抽查的意义并不在让你帮助去找bug,而是从一个公正的立场,以一个抽样的观念,来评价目前实际产品的代码质量,从而给管理层提供决策建议,以防微杜渐,保持产品的持续可维护性。

        软件存在一个生命周期维护的问题,越是大型的产品,越要加强产品开发过程中的质量控制意识。应该清楚看到,软件测试只是从外在发现功能性的问题或者用户体验方面的问题。软件的内部质量,还需要从每个开发人员内在的素质提高做起。

        以我的经验,对一个千万行以上代码的软件,如果在这个产品的开发过程中没有很好的一套机制保证,没有很好的贯彻内部质量控制,这样的规模的软件其维护是灾难性的。原因很简单,代码经过多人易手,又没有按照规范处理,其面貌就全非了。这样的软件,其维护的代价就会随着规模的扩大节节攀升,直道无法忍受,便需要结束它的生命周期了。

        有什么机制可以保证软件的内部质量呢?我想我们需要从三个方面来考虑。

        第一个方面是要努力提高开发人员的素质。尽管目前的集成开发环境已经越来越强大,能够很好改善代码的规范性。但是,应该看到,代码的最终可维护性还是需要人工来保证。代码的结构和美学意义上的优雅还需要经验。如何提高开发人员的能力和增进他们的经验呢?这方面其实有很多可以做的,我想一个规范程度高、培训和学习机制健全,以及知识积累丰富的企业无疑会培养更多能写出“优雅代码”的coder.

        第二个方面是要具备机制来持续审核软件的内部质量。像现在逐渐被推崇的“代码审计”就是一个很好的技术。为什么一定强调持续呢?因为软件的内部质量控制本身就是一个伴随软件生命周期的事情。所以,越早建立好这种机制,并逐步完善它,效果就越好。我一般建议在日构建中建立这种审计机制。这样的好处很明显,持续,公正,公开,只要管理层重视,整个代码的内部质量一目了然,很容易产生实际的执行力。另外,建立好同行评审和代码抽查制度也很重要,有些问题可能自动化的审计无力完成,这就需要人的“火眼金睛”来帮助了。

        第三个方面是从体系架构设计出发,采用自己的框架,尽量减少需要人工编写的代码,努力开发工具的抽象层次。比如现在的MDA技术就是很好的发展方向。对于一个软件企业来讲,我的经验会认为:努力把最核心的代码让最核心的人来维护,这样才是长期维持软件“优雅”的根本。而如何让最核心的代码让最核心的人来维护呢?一方面是要注意资源的分配;另一方面是让核心代码尽量固化在工具或者框架中,通过工具发布代码就可以复用那些经过检验的、高质量的代码。

2004-12-23
cloudward 于深圳

本文地址:http://com.8s8s.com/it/it33204.htm