3.8 技术回顾
技术回顾包括在需求、设计、编码、测试或其他人为事件中用于查错的所有类型的回顾。回顾在形式上和效果上是多样的,它在质量保障上比在测试上扮演更重要的角色,技术回顾是对测试很有用和重要的补充。由于回顾既能发现表面的漏洞又同时发现潜在的漏洞,因此在成本花费方面也是比较经济的。测试只能发现表面的漏洞,程序员还要通过调试来找到原因,而回顾往往找到更多的漏洞,并能给程序员提供一个互相共享最佳实践知识的论坛,随着时间推移可以增强他们快速开发的能力。
3.8.1同行评审
定义为“由软件工作产品生产者的同行遵循已定义的规程对产品进行的技术评审”。其目的是为了及早和高效地从软件工作产品中识别并消除缺陷,让软件变得更易读和维护,同时减少最终泄漏到产品发布时的缺陷。主要工作第一是发现工作产品中的具体错误,第二是通过对这些错误的分类和统计,发现共同的错误类型和将来避免这类错误的方法,提供今后对所发现的同类错误进行控制的数据。通过对开发过程中的反馈和从错误中汲取教训,避免今后类似的缺陷和错误发生。成功的同行评审是提高质量和生产率的重要因素,不管人们喜欢与否,审查过程会迫使每个人在一种开放式的环境中工作。一旦人们懂得了他们的工作都要接受同行评审,他们就会越早地将他们的工作公之于众,以待监督。在同级评审上的投入把组织的一些质量成本从昂贵的测试以及后期的大规模返工转变为早期的缺陷发现。更重要的是,工作产品的作者学到了如何将工作做得更好,从而避免了缺陷。
但是要注意,同行评审不可能代替测试,正如测试不可能替代同行评审一样。
3.8.1.1同行评审的种类
将同行评审分为3 类。
(1)正式评审(Inspection),通常是由经过同行评审培训的项目经理或PPQA主持,规模在 3~7人之间为宜,一般在完成了一个工作产品后对其进行的评审。正式评审的目的在于定位并除去工作产品中的缺陷。
(2)技术审查(TechnicalReviews),或称内部评审,通常由技术负责人或项目经理召集,三人以上参加。技术审查一般是在工作产品的中期进行或完成了某部分独立的工作产品时进行,也可在书写草案遇到问题时就其中专门的一两项问题讨论和审查。也可以是检查工作产品与规程、模板、计划、标准的符合性或者变更是否被正确地执行。技术审查的目的在于通过对开发人员的工作产品的技术审查,提出改进意见。
(3)走查(Walkthrough),又叫代码走查或代码走读,是指任何两个以上的开发人员以增进软件质量为目的所召开的回顾技术工作会议。审查的范围根据需求的优先级通常由管理人员来确定,主要是静态质量分析和编程规则检查。通常是小型讨论会,一般是在工作产品形成的早期进行,作者有一定的想法时,希望从中获得一些帮助或补充一些想法。当然也可以在编制工作产品的任何阶段进行,两三个人参加,由作者主持,主要是评估和提高工作产品的质量或教育参加者。走查对于软件质量保障很有用,因为这样可以在测试前就发现漏洞。走查可以发现30%到70%的程序漏洞。
3.8.1.2 同行评审的对象
同行评审的对象包括所有软件开发的中间和最终工作产品,例如包括:
(1)产品需求规格说明书;
(2)用户界面规范及设计;
(3)架构设计、概要设计、详细设计及模型;
(4)源代码;
(5)测试计划、设计、用例及步骤;
(6)项目计划,包括开发计划、配置管理计划和质量保证计划等。
所有这些会涉及的评审内容,应该在编制的项目计划或者小的开发计划中体现,不应该也不能是临时性的安排。
3.8.1.3 同行评审过程
1)、进行全面质量管理思想的教育
对全体员工进行全面质量管理思想的教育,以达到以下目的:
a)将满足顾客的需求放在首位
b)明白提高质量与降低成本的关系
质量提高,不仅不会提高成本,反而会降低成本。这是因为:质量高了,会减少反复修改的时间,缩短开发周期,降低人力资本。还会提高士气,提高工作效率。
c)树立百分之百合格产品的责任感
2)、明确顾客需求
搞清楚什么样的产品是让用户满意的产品。
3)、了解市场
经常将别的厂商的产品向大家展示,并进行研究,让大家明白别人是怎么做得,我们有何差距。
4)、让员工明白什么是好的产品
给出样板,进行足够的培训,让大家都真正明白什么是好的合格的产品。
5)、建立明确的质量基准和质量测评制度
4开发流程的规范化
4.1 源程序代码的规范化
源程序代码的“规范化”是一个相对抽象的概念—在嵌入式软件开发中C 语言用得很多,而C 语言本身就是以语法灵活、格式自由著称的—因此,很多时候会使用源码“风格”这样的说法。总体上编程需要注意的有:¥ 文件头的信息( 此程序的功能、版本等);¥ 函数前的说明信息(原型、功能、说明等);¥ 简洁而又清晰的程序注释;¥ 易于阅读的缩进规则;¥ 规范且含义清晰的变量、函数名称;¥ 有助于程序阅读的宏定义(如True和False)。
5 结束语
软件质量保证的理论往往是在实践中积累、总结的,经验十分重要。虽然我们在长期的项目开发过程中积累了丰富的经验。但要想增强在软件行业中的竞争力,应多与欧美、日本等国进行软件项目合作,从中学习他们的理念和实践经验。