张卫民 贾山刚
(北京航天飞行控制中心)
能力成熟度模型(Capability Maturity Model Integration for Development,以下简称为 CMMI)是一种用于产品和服务开发与维护的过程改进成熟度模型[1],已经被广泛应用于产品开发企业的能力成熟度评价和过程改进。在国内,特别是在软件开发行业,该模型的应用也越来越普遍。国军标《军用软件研制能力成熟度模型》(GJB5000A-2008)也等效采用了该模型。在很多大型工程项目中,通过能力成熟度评价,获得一定的能力成熟度等级资质,已经成为软件研制单位承担软件开发任务必须具备的资质条件。但是,由于CMMI模型中并没有包括安全性能力相关的目标和实践,一个研制单位即使通过了高等级的CMMI能力成熟度评估,也不一定具有开发安全关键产品的过程能力。而目前在很多领域,比如航空、航天等领域,存在大量的安全关键产品开发任务,如何改进和提高安全关键产品开发企业的安全性过程能力,以及如何选择安全关键产品供应商,是保证产品具有高安全性需要解决的一个非常重要的问题。
产品开发安全性能力成熟度模型(+SAFE)是由澳大利亚国防部和美国卡内基梅隆大学共同开发的[2],是对CMMI模型的一种扩展,其主要目的是识别安全关键产品供应商的安全性强项和弱项,并且在产品获取过程的早期关注识别出的弱项。该模型特别关注安全性,给出了改进组织开发安全关键产品能力的安全性特定实践,为评价和改进组织提供安全关键产品的能力提供了清晰的、需要特别关注的内容。
下面的第2节介绍了安全性能力成熟度模型的组成;第3节讨论了安全性能力成熟度模型与CMMI,以及与安全性标准之间的关系;第4节给出了使用安全性能力成熟度模型需要注意的事项。
安全性能力成熟度模型+SAFE共有两个过程域,一个是属于项目管理类的安全性管理过程域,另一个是属于工程类的安全性工程过程域。其中每个过程域除了具有各自的专用目标(SG)外,还具有与CMMI其它过程域类似的共用目标(GG)。该模型的结构如表1所示。
安全性管理是一个项目管理类过程域。安全性管理的目的是确保对安全性活动进行计划、根据计划对安全性活动的绩效和结果进行监控,并对偏离计划的偏差进行修正。
表1 安全性能力成熟度模型+SAFE的结构
安全性管理过程域包括如下内容:
(1)利用安全性原理、准则和目标为实现安全性需求的安全性活动建立计划;
(2)执行计划,监控安全性事件,并根据计划对这些事件进行管理;
(3)为获取安全性相关产品和服务,开发并执行与供应商间的协议。
安全性管理过程域关注于项目有效地考虑安全性的需要,以及如何通过管理活动和技术方法来满足安全需求。当项目外部的供应商被用来提供产品、部件和服务时,安全性管理可以确保相关的需求被合并到供应商协议中,并且使这些协议得到履行。
安全性管理是一个持续的过程,它跨越项目的整个生存周期,并且采用如下的管理原理:
(1)安全性事项应在项目生存周期的早期得到关注,并在整个生存周期过程中得到追踪;
(2)安全性保证要求对产品和过程的独立的可见性;
(3)安全性保证必须可以传递到项目外部的团体(包括供应商);
(4)必须采用一种迭代的、持续的和不断演化的过程。
安全性管理过程域共有3个专用目标和5个共用目标。实现5个共用目标的共用实践与CMMI其它过程域的共用实践类似,这里不再叙述。实现3个专用目标的专用实践如下。
2.1.1 开发安全性计划
安全性管理过程域的第一个目标是开发安全性计划。该计划是在整个项目生存周期内管理安全性的基础,是基于安全性需求、安全性准则和安全性管理原理来建立和维护的。实现该目标的专用实践为:
·确定规定需求、法定需求和标准;
·建立安全性准则;
·建立项目的安全性组织结构;
·建立一个安全性计划。
2.1.2 监控安全性事件
通过实现该目标,使得安全性事件得到监控、报告、分析和解决。实现该目标的专用实践为:
·监控和解决安全性事件。
2.1.3 管理安全相关供应商
该目标要求根据包含安全性需求的正式协议管理、从项目外部供应商获得安全相关产品和服务的获取过程。实现该目标的专用实践为:
·建立包括安全性需求的供应商协议;
·履行包括安全性需求的供应商协议。
安全性工程是一个工程类过程域。安全性工程的目的是确保在工程过程的所有阶段,安全性得到了充分的关注。
安全性工程过程域包括如下内容:
(1)识别危险、事故和危险源,分析识别的结果以评估安全性相关的风险;
(2)开发关注安全相关风险的安全性需求;
(3)在整个项目生存周期应用安全性原理,确保安全性需求得到满足;
(4)开发能够支持安全性验收,并提供确认安全性策略、安全性计划和计划实施所需信息的审核索引。
安全性工程过程域关注安全性需求的技术分析和技术工程,以及技术解决方案开发中安全性工程原理的应用。综合考虑安全性工程和其它工程过程(包括需求开发、技术解决方案、集成和验证等),可以确保需求和技术方案的安全性方面在项目生存周期的适当时间点得到策划和设计,确保安全性方面相对于其它需求或解决方案特性的优先权被明确地描述。
安全性工程过程域的专用实践使用如下技术上的安全性原理:
(1)安全性最好是利用已应用过并且可信的技术来实现;
(2)必须有一个迭代、持续和演化的开发过程;
(3)关键功能应该尽可能简单,并且与产品的其他部分隔离;
(4)对于最关键的情况,可以采用正式的数学证明方法证明其正确性。
安全性工程过程域共有5个专用目标和5个共用目标。实现5个共用目标的共用实践与CMMI其它过程域的共用实践类似,这里不再叙述。实现5个专用目标的专用实践如下。
2.2.1 识别危险、事故和危险源
危险识别、危险分析和风险评估是在项目生存周期中多次执行的迭代过程的几个步骤。实现该目标的专用实践为:
·识别可能的事故和危险源;
·识别可能的危险。
2.2.2 分析危险,执行风险评估
该目标要求对于每个危险,分析可能的原因、概率和结果,评估该危险所呈现风险的严重性。实现该目标的专用实践为:
·分析危险,评估风险。
2.2.3 定义和维护安全性需求
该目标要求开发描述危险、风险和安全性准则的安全性需求,为每个安全性需求确定安全性目标,并在整个项目生存周期中维护这些需求。实现该目标的专用实践为:
·定义安全性需求;
·定义为每项安全性需求的安全性目标;
·将安全性需求分配到部件。
2.2.4 安全性设计
该目标要求在项目生存周期全过程应用安全性原理,实现安全性需求。实现该目标的专用实践为:
·应用安全性原理;
·收集安全性保证证据;
·进行变更安全性影响分析。
2.2.5 支持安全性验收
该目标要求通过独立的安全性评估和独立的安全性活动假设确认,建立和维护危险日志及安全性案例,以支持安全性验收过程。实现该目标的专用实践为:
·建立危险日志;
·开发安全性案例论据;
·确认产品在计划运行任务中的安全性;
·进行独立的评价。
建立安全性能力成熟度模型的目的是对CMMI进行扩展,以提供一种清晰、明确的开发复杂安全关键产品的功能安全性的框架,它以一种独立使用的方式表示,可由具有CMMI经验的用户使用,而不需要太多来自安全性领域专家的支持。
由于安全性能力成熟度模型+SAFE是CMMI的一种扩展,所以它采用了与CMMI相同的假设、模型结构、习惯表示法和术语,并且受到普通的CMMI固有的过程域和能力水平相互作用的影响。
安全性能力成熟度模型+SAFE框架并不限定于任何一种特定的安全性标准。定义安全性原理、方法、技术、工作产品和产品评估的任何适用标准,都可以用来实现框架的目标。
安全性能力成熟度模型+SAFE的背景及其与CMMI部件、安全性标准和评估与评价方法之间的关系如图1所示。
图1 安全性能力成熟度模型+SAFE与CMMI、安全性标准间的关系
安全性能力成熟度模型+SAFE可以看作是CMMI的一个附加的过程域集合。如果去掉+SAFE的独立使用要求,除了下述几点之外,+SAFE的过程域可以无缝地集成到CMMI的项目管理过程域类和工程过程域类。
(1)+SAFE过程域的资料性材料要比CMMI过程域中典型描述的更多、更详细(例如,实践描述中的例子、典型工作产品、子实践、注释、学科扩充、共用实践详细描述和参考资料等)。这样做的目的是为了减少对学科专门知识的依赖。
(2)+SAFE过程域与其他过程域的交叉引用要比CMMI过程域中典型描述的要多。这是因为有些CMMI过程域将安全性描述为产品的非功能属性,因此+SAFE的过程域与这些过程域中的实践之间就会存在重叠或冗余。
(3)CMMI中通用的习惯表示方法,即“必须的”成分(专用和共用目标)、“期望的”成分(专用和共用实践)和“资料性”成分(其他的所有内容)等在+SAFE中被进一步加强,以确保资料性的内容不被当作规定性的要求使用。术语“例如”、“样本”、“指标可包括”,以及对外部标准的参考等明确地将“资料性”内容与“必须的”或“期望的”内容区分开来。
为了支持其独立使用,安全性能力成熟度模型+SAFE还包含一些与CMMI完全冗余的材料。其中包括为不熟悉CMMI并且要为+SAFE应用提供支持的安全性从业人员提供了一些CMMI概念方面的材料,以及一些可能与CMMI冗余的资料性内容(例如,典型工作产品、子实践、注释、学科扩充、共用实践详细描述和参考资料等)。
安全性能力成熟度模型+SAFE不要求采用任何特定的安全性标准。作为对CMMI的一种扩展,安全性能力成熟度模型主要是用于定义目标,以及提高绩效能力水平。该扩展的资料性部件只是如何能够实现目标的指示器,这些部件并不是强制的,一个组织可以选择它希望采用的方法来实现这些目标,这其中也包括对特定标准的选择。
安全性能力成熟度模型+SAFE试图与澳大利亚国防标准“国防系统获取中的安全性工程”保持一致,也试图与当代其他安全性标准(例如,IEC的“机器安全性—安全相关电器、电子与可编程电子控制系统的功能安全性”,美国军用标准“系统安全性项目需求”,英国国防标准“国防系统的安全性管理要求,第1部分第2和第3期”,以及任何可行的领域特定安全性标准)的原理保持一致。
安全性能力成熟度模型+SAFE不打算用于评估产品本身的安全性(即,基于这一扩展的评价并不类似于定义于IEC的“机器安全性—安全相关电器、电子与可编程电子控制系统的功能安全性”中的“功能安全性评估”)。
安全性能力成熟度模型+SAFE的用法与CMMI相同。作为一个用于评价安全关键产品供应商或潜在供应商能力的结构框架,该模型可以由经过培训具有资格的CMMI评估师使用,根据SCAMPI或其它适当的评价方法来进行安全性能力评价,而不需要特定的安全性专业知识。作为一个用于改进一个组织开发、支持、维护和管理安全关键产品能力的结构框架,该模型可以由具有CMMI和IDEAL专门知识的组织使用,来改进其安全性能力。
一个安全性能力成熟度评价或改进活动可以与一个CMMI评价或改进活动集成在一起,也可以作为独立的安全性评估或改进活动。当采用连续表示法时,在评价或改进活动中安全性能力成熟度模型的应用方法与CMMI的其他过程域完全一样。
任何一种适用于CMMI的评价方法都可以应用于安全性能力成熟度模型。该模型是基于以下假设编写的,即评估师已经过正常的CMMI培训,并经过附加的+SAFE模块培训。+SAFE并不假设评估师具有很高水平的安全性知识,但是与任一CMMI过程域的评价一样,评价组必须评估它所具有的专门知识水平,如果需要还要补充主题专门知识。
尽管+SAFE过程扩展是采用与CMMI-DEV过程模型相分离的方式给出的,这种方法仅仅是为了鼓励在评价中将关注焦点集中在安全性方面。+SAFE过程域可以作为更广泛的CMMI评价的一部分来进行评价,也可以与其它CMMI过程域一样,独立地进行评价。
与标准的CMMI部件一样,一个组织的过程描述以及这些描述的组织方式反映了组织运行中的过程,而不是+SAFE中描述的通用的过程。为了简化和缩短评价,在评价之前应当建立组织的安全性过程及术语与该扩展中的过程及术语间的映射关系。这一映射关系也有可能识别出对于特定评价可以剪裁的部分+SAFE过程域。
如果对一次评价进行了剪裁,则经过剪裁后的评价结果具有特定的用途,在其它环境下不能重用。例如,一次评价剪裁掉了与外部供应商管理相关的专用实践,则如果被评价组织要使用外部供应商,则该次评价结果就不太适用于组织的内部过程改进和获取风险管理。
在项目中常见的关于安全性的三种基本情况是:
(1)产品是安全关键的,并且尝试了安全性活动;
(2)产品是安全关键的或者其安全特性是未知的,并且没有尝试开展安全性活动;
(3)产品不是安全关键的,并且没有尝试开展安全性活动
一次理想的安全性能力成熟度评价应当包括各种情况的样本,这是因为,安全关键项目和非安全关键项目都影响一个组织实施安全性活动的方式。
因此,是否将某个项目当作+SAFE评价的一个样本的决策依赖于对该项目是否为安全关键项目所作的安全性评价。安全关键性的决定不是对产品性质仅有简要了解的+SAFE评价组的任务。然而,+SAFE评价组应当决定是否评价一个或多个没有尝试进行安全性活动的项目,这一决定应基于纳入这些项目将对组织实施安全性活动的全面评价所产生的影响做出。
在确定安全性能力成熟度模型的哪些部分应用于评价项目时,可以应用下面的指南。在评价过程中,应当实施一定的剪裁。
(1)如果一个项目有可能是安全相关的,则应该对照安全性管理过程域的专用实践和安全性工程过程域中的“SG1识别危险、事故和危险源”及“SG5支持安全性验收”对其进行评价。
(2)如果一个项目达到了安全性工程过程域的SG1和SG5,并且因此确定该项目是安全相关的,则应对照安全性工程过程域中的“SG2分析危险,进行风险评估”对其进行评价。
(3)如果一个项目达到了安全性工程过程域的SG2,并且因此确定该项目存在安全性需求,则应对照安全性工程过程域中的“SG3定义和维护安全性需求”和“SG4安全性设计”对其进行评价。
表2说明了可以选择的安全性能力成熟度模型过程域和目标。
表2 过程域选择示例
对项目决策正确性的评估,包括对安全关键或非安全关键分类正确性的评估,不是对照安全性能力成熟度模型进行评价的组成部分。
对于一个组织如何获得安全性活动的能力,安全性能力成熟度模型+SAFE提供了指南。与其它CMMI过程域一样,指南也包括如下三部分。第一,组织实施其安全性活动必须达到什么目标,即过程域的专用和共用目标,这些目标是“必需的”部分;第二,组织如何能够达到这些目标,即“期望的”和“资料性的”部分,包括专用实践、共用实践详细说明、学科扩充和子实践等部件;第三,使用能力水平表示的过程域结构,即改进优先级和依赖关系的指南。
另外,安全性能力成熟度模型还提供了下述使用安全性过程域的专用指南。
(1)安全性能力成熟度模型不要求使用特定的安全性标准。如果组织已经选择了特定的标准,或者是合同要求了特定的标准,安全性能力成熟度模型框架是为适应这些标准的方法和技术开发的,适用时,包括+SAFE专用和共用实践的可替代实践。
(2)安全性过程高度依赖于支持类过程域,特别是配置管理、过程和产品质量保证,以及决策分析和决定过程域。在较低程度上,安全性过程域还依赖于测量和分析,以及原因分析和决定过程域。这些过程域的有效实施对于安全能力的持续改进是至关重要的。
(3)安全性过程特别强调验证和确认资源的独立性,以及向安全性管理人员和参与人员通报的渠道,特别是问题上报渠道的独立性。
安全性能力成熟度模型作为CMMI在安全性方面的扩展,为改进产品开发企业的安全性过程能力,以及评估一个企业的安全性过程能力水平和等级提供了一个模型框架。通过该模型的应用,可以有效地提高安全关键产品开发企业的安全性过程能力,并且为选择安全关键产品开发企业提供了手段。因此,在国内安全相关领域应尽早开展安全性能力成熟度模型的应用和推广工作,将安全性能力成熟度模型和产品开发能力成熟度模型结合起来,全面提高和改进安全关键产品开发企业的开发过程能力和安全性过程能力,并将两个模型综合起来作为评价和选择安全关键产品开发企业的基础和标准。 ◇
[1]CMMI Product Development Team.CMMI for Development,Version 1.2.Pittsburgh, PA:Software Engineering Institute, Carnegie Mellon University,August 2006.
[2]Australian Department of Defence.+SAFE,V1.2-A Safety Extension to CMMI-DEV,V1.2.Pittsburgh,PA:Software Engineering Institute,Carnegie Mellon University,March 2007