软件工作中的各种检查

在软件工作中,我们常常会经历各种各样的“检查”。它们被附以各种各样的名称,让人眼花缭乱的同时,往往忽略了其作为“检查”活动的核心。

今天这篇文章,我们就来梳理一下软件工作中这些“检查”的作用。

评审

“评审”是工作中最常说的一个词。它的英文“review”给了我们一个很直观的解释——所谓re-view(“the act of considering something again……”《剑桥词典》),说白了就是多看几遍的检查。因此review的这种检查几乎没有太多明确的检查依据,也不规定由谁来执行检查,是很宽泛的。

同行评审

与review有一字之差的“同行评审(peer review)”就不同了。CMMI是这样定义同行评审的“The review of work products performed by peers during the development of work products to identify defects for removal”。ISO/IEC/IEEE中写道“review of work product performed by other qualified to do the same work”。因为有了“peer”这个词,它规定了执行检查的人员必须是生产同类工作产品的同行。值得一提的是,同行评审起源于对学术期刊的内容评审——在刊登之前,召集同行专家匿名评审,以避免刊登出去的论文有学术错误。沿用在软件行业中,同行评审也是为了在软件生产的过程中尽早发现defect(这里用的不是bug),以减少修复的返工成本。需要同行检查的工作产品一般都是比较专业的,因此在实际软件工作中,我们同行评审的对象通常都是技术领域的工作产品。

只要是同行做的检查都算是同行评审的范畴,因此Inspection(审查)和walkthrough(走查)也属同行评审,而且是有更具体要求的同行评审。

审查

ISO/IEC/IEEE是这样定义Inspection的“visual examination of a software product to detect and identify software anomalies, including errors and deviations from standards and specifications”——对软件产品进行目视检查以探测和识别软件异常,包括与标准和规格不符的错误和偏差。定义中明确指出Inspection检查的方法是“目视”,检查对象是“异常”,而异常的判断依据“errors and deviations from standards and specifications”。在Inspection的定义后面还有一段小字写道“ Inspections are peer examinations led by impartial facilitators who are trained in inspection techniques.”——审查是由受训过审查技术的中立人员领导的同行检查。说它是同行评审有理有据。典型的软件审查有代码审查和设计审查。

走查

Walkthrough这个词就有意思了,虽然我们在软件行业中将它翻译为“走查”,但它的本意是“彩排、排练”,也就是说walkthrough是不在观众面前的表演。软件中的walkthrough主要有cognitive walkthrough(认知演练)和pluralistic walkthrough(多元演练),它们都属于对软件可用性检查的方法之一,更多地被用在软件生产的前期如需求、设计阶段,来检查用户第一次使用软件产品时,是否能自行学会如何使用软件完成特定的任务操作。走查有特定的检查程序、方法和人员组成(如软件的设计者、编码人员、用户代表等),因此我们说走查也是一种具体的同行评审。

测试

既然提到了可用性检查,作为程序猿你一定会想到usability test。test是“activity in which a system or component is executed under specified conditions, the results are observed or recorded, and an evaluation is made of some aspect of the system or component(ISO/IEC 25051)”测试是在特定条件下运行系统或组件的活动并形成对系统或组件某些方面的评价。测试作为软件工程的分支学科实在是三言两语讲不清。所以就定义而言,测试的检查对象一定是系统或系统组件(即软件),它的检查结果自然是更全面的。

审计

最后要说的一个检查是“audit(审计)”。audit这个词的历史可以追溯到中世纪(在中国,审计的概念可以追溯到西周),用来检查经济活动是否存在与财务制度不符的舞弊行为。发展到软件行业,虽然CMMI、ISO/IEC和IEEE的定义之间彼此有些差异,但都保留了“客观检查是否符合要求”这个意思。审计的重点在于客观。CMMI中明确指出,审计的客观性来自于独立不相关以及对评价标准的使用这两点。在软件工作中,常见的审计包括配置审计和过程符合性审计。执行这两种审计工作的检查人都不是诸如工作产品和工作过程的执行人和使用者这类的角色,而是与之独立不相关的配置管理人员和质量保证人员。他们的检查依据是配置项是否符合配置管理规范,过程和过程产品是否符合标准工作过程与裁剪指南。

确认和验证

最后的最后,是Validation(确认)和Verification(验证)这两个检查。确认指的是“Confirmation that the product or service, as provided (or as it will be provided), will fulfill its intended use”。而验证指的是“Confirmation that work products properly reflect the requirements specified for them”。以上两个定义虽然都引用于CMMI,也符合ISO/IEC、IEEE与PMBOK中的定义。简而言之,确认检查的是客户肯不肯接受,包括在预期环境中是否能达到预期的目的与期望;而验证检查的是有没有按照需求做。如果需求确实是能在预期环境中达到预期目的与期望的,不区分影响不大;反之,区分验证和确认就派上大用场了。上面提到的种种检查,比如审查、走查、同行评审通常是验证的方法;而审计和测试既有属于验证的也有属于确认的。

 

下面这个表格是我们在工作中经常会遇到的各种检查事项,对照上文有没有觉得清晰了呢?

 

软件工作中的各种检查

 

凡奉首页    管理实践    CMMI管理实践    软件工作中的各种检查
创建时间:2022-03-18 00:00
收藏