本文来自于 Rational Edge:软件开发组织执行SEI的能力成熟度模型(CMM)可能会由于在 Rational 统一过程或RUP中缺乏一个软件质量保证(SQA)工作流而失败。本文描述了一个虚拟的 SQA 工作流,其源自于 Leslee Probasco 的RUP的十点要素。
  存在有九个RUP工作流程,包括了需求、项目管理、配置 & 变更管理,甚至还有业务建模——但是没有一个是用于软件质量保证(SQA)的。这种明显的疏忽对寻求SEI的软件成熟度模型(CMM)的项目和组织是非常棘手的1,因为SQA的关键过程域(KPA)承载了成熟度模型的重要工作。自从有了需求管理的KPA,其可以精细地映射到Rational 统一过程?或RUP?的需求工作流,还有项目管理(包括计划和监控)和配置管理的关键过程域同样分别精细地映射到RUP的项目管理以及配置和变更管理的工作流,难道只是对SQA没有吗?
  我开始回答这个问题,并且沿着这条路揭示了CMM以及RUP实质的SQA工作流中的质量的真正含义。
  SQA和CMM
  软件工程协会(SEI)将软件质量保证设置为CMM的基础级别2。他们也将所有其它关键过程域的验证和确认放在了质量保证中。此外,CMM反复强调高级管理人员必须“保护个人履行SQA责任”,因为这有可能会给发现不一致问题的职员带来管理上的问题。如此强调 SQA活动和需求,为什么没有一个SQA工作流,以及更重要的是在RUP中没有一个SQA角色呢?一个SQA工作流会提供活动,还有工件,以及在其它RUP流程里提供个人执行SQA的各自的检查点。
  虚拟的SQA工作流
  为了解决这个迷惑,我寻找什么是已经被证实了的RUP里有效解决问题的实践。RUP是通过软件工程过程权威(SEPA)进行质量保证--尽管理论上是SQA,这是一个组的职责,而不是一个个体的角色。我做了一个练习,创建了RUP的一个视图,以满足SQA角色的需要,如同在CMM中所确定的那样。我特别实行了Leslee Probasco在“RUP的十点要素--一个有效开发过程的精髓”中所描述的建议,3来创建一个真实的SQA工作流。在她的论文(在此以后用RUP10来指代),Probasco推荐形成一个有标签的笔记本4,每个标签代表每个要素(V-PRI-BAPE-CU),用来管理一个项目的基本元素。所以我创建了一个这样的笔记本,每个标签包括了RUP的必要工件描述,复制了相关活动以产生RUP已经定义的元素和所有的检查点,还有个人记录和元素以支持各自的要素。
  例如,对于必要元素 #1,远景(Vision),我插入了远景工件的副本,还有RUP中用于产生远景的三个活动:开发远景,管理依赖关系,以及评估概念构架的生存能力。我也包括了远景和涉众请求检查点的一个副本。接着我执行了这些活动,将结论文档化,并且正如Probasco建议的那样,我产生了很多记录。5在我对RUP和CMM有了更多认识时,我增加了更多的工件、活动、检查点以及指南到相应的标签中。
  远景
  远景的开发包括了很多的便笺,因为众多的远景都会成为想法。远景必须有效地针对涉众所面对的问题。SQA工程师既不是一个RUP角色,也没有一个所描述活动和定义工件的工作流视图。为了更好地理解我的涉众-SQA工程师的需要,我借用了Alan Cooper的The Inmates Are Running the Asylum及其开发“角色”的实践。6我的SQA工程师角色是一位名叫Ginger的女性。她在RUP和CMM的训练方面属于中级水平的工程师。在对分配给她的项目上涉及到的过程不一致发出错误警告上,她并不是资历较浅的,但是在期望她挑战那些拥有更多过程或领域专门知识上也并不是经验丰富的。
  Cooper 这样形容“消极角色”:某些人,对于他们,过程不是在被构建,而是需要更好地理解过程需求。这些消极的角色代表了30多个的RUP角色,这些角色是Ginger必须接口的,因为她提供了对产生的工件产品和执行的活动的客观评审。这些个人在软件开发实践方面接受了更细致的训练和练习。Ginger不在项目中,并且没有涉及到所有的项目活动,因此对她来说,很容易遗漏或误解一些事情。当 Ginger足够成熟来理解她的个人职责时,她被期望知道在什么时间和执行哪些验证和确认活动,她不被期望能够强制过程一致性(是SEPA)。进一步的,与CMM一致的是,当她尝试“逐步升高项目外部的偏差”到可执行级时,她被保护以免于可能的“敌对人员行为”。
  计划
  对于Ginger,计划是遵循RUP10,并产生一个虚拟的SQA工作流程。过程规模度量的搜集、分析和报告是Gingre必需进行的工作。她知道在RUP里有多少工件、活动、角色评审和评估的步骤,因此能够更好地计划和安排她的任务时间表。在冲突解决领域,她知道工件的所有人和活动的产生者不是相同的角色这种情况,她或许能通过确保这些工件的检查点或规格特征在每个团队成员间达成一致。这些在RUP10素材笔记本里的表述帮助Ginger知道了什么、在哪里以及如何开始她的质量审核。她的工作流程将会遵循RUP过程相关的素材和图表,作为RUP的工件和活动集合。我也会进一步使用RUP10来配置一个过程,集中在质量和使用的规模度量上(通过阶段和角色来统计工件和活动)。
  风险
  对Ginger而言,计算风险意味着将场景脚本化。成功和可选场景揭示了在项目中冲突可能出现的地方。CMM通过重复使得履行SQA角色的个人需要得到保护这点非常清晰。因此,虚拟的SQA工作流程需要揭示潜在的危险领域。如果Ginger的老板是项目经理,对她的职业生涯有什么影响?如果她识别了一个不一致问题,但是项目不能按照过程来解决它,那么她必须把这个问题进行上报到这个经理之上。此风险的缓解包括确保过程是明确的,并且在冲突可能出现的区域,在C级别(CIO,COO,等)上得到管理委员会的批准。
  问题
  对Ginger而言关键问题是术语。RUP和CMM都有大量的词汇。当在审计期间发现过程中有一个不一致问题时,在挑选出什么是必需的和什么仅仅是方针上可能会有一些困难。当不一致的问题在项目中出现时,开发过程变成了存储库,每个人都从中寻找为他们自己辩护或攻击其他人的东西。过程的机械模仿变成了会议和电子邮件中的标准操作流程。管理是强迫的、迫不得已的,间歇前进。因此,“捕获一个公共词汇表”的RUP活动--特别是评价结果的步骤--需要非常仔细地来解决这个问题。所有过程的涉众--经理,实施人员,以及Ginger--必需同意 1)什么是过程所必需的,2)在项目开始前什么只是一个方针。