-
虽然与会者可能自行准备了一些复审,但复审是以会议形式进行的。
-
在执行流程任务期间不断地监测质量,以防止直到复审才发现隐藏了大量的缺陷。在 Rational Unified Process 的每个任务中,参考下面列出的核对表以加强监测;在非正式的复审会议或日常工作中使用检查点。
在 1990 的标准词汇表中,IEEE 定义了三种复审:
-
复审
-
一种正式会议,在会议上向用户、客户或其他相关各方介绍一个或一组工作产品,以征求对方的意见和批准。
-
检查
-
一种正式的评估技术,将由非制作者本人的个人或小组详细检查工作产品,以检测是否有错误、是否违反开发标准以及是否存在其他问题。
-
走查
-
一个复审过程,由某个开发人员领导一个或多个开发团队成员对他(或她)所编写的一段工作产品进行检查;同时,由其他成员就技术、风格、可能的错误、是否违反开发标准和其他问题提问并给出意见。
跨团队进行实施后,复审还提供了发现其他小组的设计和代码的机会,并且增加检测公共源代码的机会、复用的机会以及泛化关系的机会。复审还提供协调各种组之间的体系结构风格的方法。
在 RUP 中,复审在确保质量方面发挥了重要的辅助作用。在 RUP 中,确保质量的主要因素在有关“同事检查”的部分 [ROY98]
中进行了详细说明。然而,此书的确指出了复审在专业开发方面其他有价值的影响:资历较低的工作人员有机会了解专家的工作,并让资深导师对自己的工作进行复审。
我们对复审制定计划,以确定复审的重点和范围,并确保所有参与者了解自己的角色和复审的目标。
在复审之前,通过确定将提出的问题来定义复审范围;确定评估的对象及原因。针对可能提出的各种问题,参阅要复审工作产品的核对表。确切的问题将取决于项目所处的阶段:早期复审将关心较广泛的体系结构问题,而后期复审将更为具体。
确定了复审范围之后,便可以确定复审参与者、议程和进行复审所需的信息。选择参与者时,应该在软件体系结构专业知识和领域专业知识之间建立平衡。清楚明确地指定将协调复审的评估负责人。如果有必要,调用其他团队或组织的其他部分来提供领域专业知识或技术专业知识。
复审员的数目应该大约为七个人或更少。如果选择得当,他们应该完全可以确定体系结构方面的问题。如果复审员的数量太多,实际上会因为会议时间过长、参与更困难,以及在复审过程中增加了枝节问题和讨论,而降低复审的质量。如果复审员少于四个,则会因为减少了问题的多样性而增加片面性的风险。
复审员应该在要复审的领域拥有丰富经验;对于用例,复审员应该了解问题领域;对于软件体系结构,复审员还需要具备软件设计技术的知识。缺乏经验的复审员可以通过参与复审来了解有关体系结构的内容,但他们对复审的帮助很小,同时他们的参与还可能会分散复审力量。保持小规模的复审小组;参与者不超过
7 个,但不少于 3 个。复审员数量太少会危及复审的质量,复审员数量太多,就无法进行对于获得质量结果非常重要的交互式讨论。
选择符合以下条件的复审员:
-
具有相当的背景来理解所介绍的材料
-
所复审产品或工作产品的质量与之有利害关系
复审之前,应该收集要复审的工作产品和所有背景材料,并分发给复审参与者。对于复审材料并收集问题的复审员来说,这些工作必须在复审会议之前很好地完成。预先分发足够的复审材料,让复审员有时间准备复审,可以显著提高复审结果的质量。准备复审还会大大提高复审的效率和有效性。
复审员应该在复审之前研究文档、构思问题并确定要讨论的问题。在复审员的工作量正常的情况下,准备复审所需的最少时间通常是几个工作日。
进行成功的复审有几个关键要素:
以下将详细讨论每一条。
一般来说,复审流程是一个重复进行的循环过程:
-
复审员提出问题
-
讨论问题,同时可能确定问题
-
确定缺陷(确定需要解决的问题)
-
直到不再有要确定的问题时再继续下一步
为了使这个过程有效进行,每个人都必须理解复审的目标是提高复审的工作产品的质量。应该以发现问题的挑剔眼光来复审工作产品。这种做法可能很困难,所以所有复审员都必须经常提醒自己将重点放在确定问题上(我们天生就会解决问题,但作为复审员我们必须将这个工作放在一边)。
我们都强烈地感觉到工作是属于自己的;通常,我们很难接受批评,甚至是建设性的批评。因为这样,我们必须更加努力地工作,以便将注意力集中在复审目标上:使工作产品的质量更好。
为了进行有效的复审,每个人都必须扮演一个角色。更具体地说,必须扮演某些角色,而且复审员不能轻易地转变角色。复审中的基本角色有:
协调人确保复审按议程进行,并以当前的主题为重点。协调人应该确保对枝节问题的讨论不会使复审脱离正轨,而且所有复审员都以平等的身份参加讨论。
记录员经常被忽略,但却是复审团队中必不可少的部分。其专职任务是记录所讨论的内容和要采取的行动。将此任务分配给某个复审员,实质上是使其置身于讨论之外。然而,更糟的是,如果没有记录下所决定的事情,就很可能会导致将来再次发生该问题。确保指定一位记录员,并保证这是此人所扮演的唯一角色。
介绍员是要复审的工作产品的作者。介绍员说明工作产品和理解工作产品所需的所有背景信息(但如果工作产品不是无需解释的,可能需要做一些工作)。重要的是,复审不能变成“审讯”,因为复审的重点应该是工作产品,而不是介绍员。协调人的作用是确保与会者(包括介绍员)记住这一点。讨论开始,介绍员首先发言,回答问题并提供解释说明。
复审员提出问题。一定要侧重于提出问题,而不要耗费大量精力讨论如何解决问题。注重结果,而不是方法。
正如上面所讨论的,协调人对于保持复审不偏离重点起到了关键的作用。有一点很重要,协调人的工作重点是使复审不脱离正轨;他不应该具有复审员的职责。协调人的作用是引发讨论,确保大家平等地参与会议,并缓和争论的气氛。这是一个专职的任务。如果不能有效地协调,复审就无法达成预期的结论,而且也无法实现他们的目标。
简短而侧重于明确目标的复审是最有效的。因为很难长期保持重点,而且复审员还有其他的工作要做,应该将复审时间限制在两小时之内。如果要进行时间较长的复审,可以将其拆分为几次规模较小、更有重点的复审。如果复审员能保持重点,就会获得更好的结果。
这种作法的关键是制定非常确定的议程和清楚明确的目标。分发复审材料后,应该向大家传达这些目标,而且复审会议开始时,协调人应该强调这些目标。之后,在会议进行期间,协调人还必须经常(有时是强迫性的)强调这些目标。
复审会议无法实现预期结果的一个主要原因是,会议很容易变成关于应该如何解决问题的讨论。解决问题通常需要调查和仔细思考;复审的形式对于这种讨论来说不是一个有效的方法。确定了问题之后,确定该缺陷是否必须得到解决,之后将调查和解决的任务分配给某个人。复审会议应该只注重确定问题。
如果问题需要一组人作进一步的讨论,就另外召开一次单独的会议重点讨论该主题。通常,这种会议需要一些调查和准备工作,而且需要一些具备适当工作技能的人员参加。复审应该将重点放在确定其他问题上。协调人经常需要施加相当大的影响,来确保复审会议侧重于这个方向。
如果不对复审结果采取行动,那么复审就没有什么价值。复审结束时:
-
确定问题列表的优先顺序。
-
创建缺陷,以跟踪问题及其解决办法。
-
如果需要进行其他调查,将调查问题(而不是解决问题)的任务分配给一个小团队。
-
对于可以在当前迭代中解决的问题,指派一个人或一个团队来解决。
-
将未解决问题的列表留待将来的迭代计划工作中解决。
另请参阅 [MCO97]。
|