新闻中心

EEPW首页 > 设计应用 > ZDSD零缺陷软件开发

ZDSD零缺陷软件开发

——
作者:周国勇时间:2007-12-04来源:电子产品世界收藏

上海创景 技术支持经理 周国勇

1   零缺陷软件开发

  图1描述了被提议的针对确认解决方案的层次模型。在嵌入式系统开发项目中,模型包含了五个基本级别,虽然随着对过程和项目/团队的目标、中间产品和整体生产率的关注的不同,这些级别可以进行调整。

1.1级别1

  级别1应该是对一个将要开发的系统的确定性的描述和必须要满足的功能性的标准,这被称为高级需求。这个级别可以是详细描述的,也可以不进行详细的描述,它的精确的定义可以推迟到第二级由设计人员,或者甚至是第三级的系统概要设计阶段由实现人员去描述。级别1,高级需求也可以被叫做系统需求、用户需求、产品需求,或者其他相同含义的称谓。这些需求可以以数据库方式保存,比如Telelogic DOORS或者以文本方式存在,比如Microsoft Word文档。

1.2级别2

  级别2,设计,包含对级别1所描述的系统进行设计的一种表示方法。这一级,在大多情况下被称为低层需求,低层需求必须首先建立起和级别1的联接或者追踪关系。这个联接关系被称为需求追踪矩阵(RTM)。图1的层次模型中的所有级别都直接或者间接的参与到这个RTM中。
  级别2一般采用典型的三种设计过程中的一种来表示。通常,级别2可以用如下设计模型进行描述,诸如统一建模语言(UML)或者一些专用的建模工具如Mathworks的Simulink和NI的Lab View等。或者作为选择,级别2可以用设计规格说明进行描述,该设计规格说明既描述了被开发软件的自身特性,也包括了软件系统的详细接口信息。同样,在快速原型或者特定情况下,可以采用体系架构概念来达到项目中的关键要求,而不用采用一些更加详细的正式的描述方式。

图1:模型

 

1.3级别3

  级别3,实现,包含与级别2的描述保持一致的源代码或汇编代码的生成。在采用建模工具的自动代码生成的情况下,级别2和级别3之间的联接可以自动实现,确保两个级别之间的需求可追踪性。然而,通常情况,是在嵌入式操作系统供应商,例如Green Hills或者Wind River或者LynxOS,提供的集成开发环境(IDE)中进行“手工编码”。
  确认行为典型情况下是从级别3开始。防止运行时错误的最有效的方法就是提前排除他们。排除运行时错误的第一步,也包括其它的实现的缺陷,就是系统的运用代码规则检查。比如MISRA或者High Integrity C++这些由行业领导者开发出来的代码规则,它们对源代码实现的的很多方面,比如指针使用,内存管理和语法等进行分析。这些代码评审的结果,同时也包括苛刻性质量检查例如代码复杂度和可维护性、以及包括全面的数据流分析,都必须在进行级别4和级别5的验证进行之前完成。此外,为了对确认行为的第一级进行有效管理,必须要使用一个和整体的RTM集成的缺陷追踪系统来实现对非一致性(不符合代码规则和项目特定的质量模型)的记录,追踪和解决。
  在级别3,一个艰巨的挑战是实现代码和高层需求或者低层需求之间的映射。这个联接要求理解代码,至少是到函数级别,同时也需要文档来描述和证明相应的联接关系。同时,为了有效的进行第4级和第5级的确认任务,需求到源代码的联接必须要集成到RTM中。

{{分页}}

1.4级别4

  级别4是专注于确认的第一级别。在这一级别,将对嵌入式软件进行针对功能和针对结构的测试。可以采用,自顶而下,自底而上,或者两种策略相结合的测试策略。这一级别可以采用模拟器,软件仿真技术,测试驱动自动生成器以及测试用例自动生成器。如果要进行实际路径测试,那么结构测试中需要扩展使用在第三级中应用过分析和断言方式的形式方法。不采用这些分析技术,缺陷的因果关系是不能被有效的揭示出来。
  至于功能测试,确认任务是否被成功执行的一个关键依据就是在第4级进行的功能测试,能否在第5级(也就是目标环境)进行成功复现。不考虑主机和目标机的兼容问题,确认追踪工作也是更加难以进行的。
  在第4级,RTM得到全面的扩展,将包含比如测试用例标识,测试规格说明书和测试结果在内的相关确认产品项。如果不一致被更正,那么测试结果中必须包括相应的缺陷报告。第4级别的重点是在进行目标机测试和系统集成测试之前更正缺陷。基于主机的测试是非常典型的一种节约费用的选择,因为它很好的提供了早期测试手段,并且它是不依赖于目标平台实现最低层功能的最佳手段。

1.5级别5

  对嵌入式软件的确认,特别是安全苛刻性软件,最有代表性的是在第5级进行。然而,在这一级,由于功能频繁的鉴于硬件/软件之间,使得缺陷的确定比第4级更加的困难。许多基于主机的测试手段,比如运行时库是不切实的,在多分区操作系统中是不可行的。另外一个层面的追踪,从源代码到目标码的追踪也必须被覆盖。
  功能测试是第5级中的核心工作。另外,结构覆盖被用来度量功能需求和实现的最终追踪关系。(也就是通过功能测试,是否还有未被覆盖的代码?如果有,为什么会存在没有被覆盖的代码?)。在第4级中使用的所有测试产品项都会在第5级中涉及到。

2  解决方案

  LDRA公司提供的ZDSD解决方案完全适合在前面章节描述的ZDSD模型的要求。在下面图2的中描述了ZDSD解决方案在V型软件开发中的应用。

图2—软件开发的V模型

 

3  LDRA产品介绍

  只有LDRA工具套件主要包括Testbed/TBrun,TBreq以及RTInsight能够能够辅助客户高效的实现ZDSD的软件开发流程

 

3.1 Testbed功能介绍

  LDRA开发的工具套件在达到团队软件开发和维护的目标的过程中,对六大活动提供帮助。
 • 代码评审(使用编码规则)
 • 质量评审(分析代码的复杂度,密度以及可测试性)
 • 设计评审(分析接口,变量使用,控制流等)
 • 单元测试(自动创建测试驱动和测试向量)
 • 测试验证(追踪测试执行并且分析代码覆盖率)
 • 测试管理(测试用例管理,文档管理)

{{分页}}

1.  代码评审

  通过使用工具提供的强大的包括编码规则检查在内的分析功能以及工具提供的全面的报告,可以实现对传统代码评审工作的扩展。用户可以选择编程规则的最大的集合(Set),也可以配置用户自己的规则集合,或使用行业认可的标准,例如:MISRA C/MISRA-C:2004。快速识别出违反规则的代码并帮助开发人员快速的进行修正。


 
  因此,工具提供的代码评审功能的一个主要特点是,提供了一个自动化的、有效的、可重复的过程,这个过程既节省了时间和资源又为开发者提供了详细全面的标准,这些是传统的手工技术不能与之相比的。

2.  质量评审

  该功能是使用质量度量可以使你快速确定您的软件的质量。
LDRA公司努力使质量评审过程自动化:
  其主要特征包括:
 • 代码度量提供对软件质量的度量,可以快速的以可视化的方式了解系统的复杂性。该特征是衡量软件的清晰性、可维护性和可测试            性的元素;
 • 提供详细的、彩色的函数调用关系图和程序控制流程图;
 • 自动生成报告,提供软件质量文档;

  

  工具的质量评审一个主要特点是全面的代码可视化、系统级的质量度量和代码的结构化化简指定,这些可以帮助提高对整个代码的信心。

3.  设计评审

  对源代码(可以被编译的)与最初的设计需求之间的一致性进行评估是很重要的。
LDRA实现了对这项采用传统手段需要花费大量时间和资源的工作的自动化。

  一些主要特征包括:
  • 接口分析、识别潜藏错误程序变量。工具对所有过程的参数以及函数的全局变量和返回值进行全面分析;
  • 工具全面深入理解代码,代码解析提供的代码分析结果没有“误报”;

  工具的设计评审帮助验证设计规格说明是否被正确实现。

4.  单元测试

  在软件生命周期中随着软件开发的进行,发现错误以及修正错误的成本是越来越大的,这个是一个大家公认的事实。经验证明代码开发早期的集中测试可以减少相关的成本。

  单元测试在初始编码阶段提供了识别和改正错误的方法,帮助确认和维护软件单元/模块的一致性。

 

LDRA单元测试的主要优点有:
 • 自动生成测试驱动,不需添加脚本;
 • 随着源代码的改变,对需要修改的测试数据进行跟踪和报告;
 • 测试数据和结果很容易被保存,以便回归测试;
 • 通过直观的图形/命令行接口选项可以达到极高的测试效率;
 • 交互式的测试工具可以直接进行测试结果验证和覆盖率度量;
 • 自动化的功能使测试人员不必详细地了解被测试的代码;

LDRA单元测试工具使测试过程自动化,解决了传统的单元测试大量消耗时间和资源的问题。

{{分页}}

5.  测试验证

  开发安全,商业和任务苛刻性软件的过程必须坚持最严格的标准。在这些标准中一个重要的标准,如DO-178B要求直观的,管理和检验软件覆盖率,该标准在航空和防务工程中被广泛应用。

 

  代码的分析、测试和维护占了软件开发生命周期的70%。LDRA的策略和技术可以应用到这些相关工作中。

快速查明被测试软件中不适当的部分,并且按照一个高的标准来测试并减少回归测试的成本,这是及其重要的。主要的目的是节省资源,提高产品质量,缩短上市时间。

工具提供的测试验证的主要特点是对测试进行度量的可行性,详细的语句、分支、测试路径覆盖率达到测试标准要求。

6.  测试管理

  因为充分理解一个系统可能需要花费很长的时间和大量的人力、物力。LDRA工具套件帮助开发者和测试工程师理解、归档、维护大的复杂的系统。

 

  文档编制帮助达到质量标准的过程,如ISO 9001:2000。

  测试管理的一个主要特点是为评审提供整个系统的文档和版本控制,也帮助减少维护的成本。

3.2 TBreq功能介绍

1.需求测试和验证

  TBreq通过和包含了LDRA Testbed和TBrun(单元测试工具)的LDRA工具包的集成, 能够提供一套完整的解决方案来帮助测试团队实现测试规格说明,单元测试场景,测试数据以及代码覆盖率验证与您的高层次的设计规格说明之间的映射。TBreq直接和你的管理工具(DOORS,ReqPro,Word,Excel)接口来保证在整个软件生命周期中实现需求跟踪以及保证对于需求覆盖的完整性。

  在LDRA工具包里,TBreq根据需求直接生成测试规格说明和可执行的测试用例。测试结果直接自动的返回到需求管理工具,从而实现“round-trip的需求跟踪验证”。

  TBreq的一个主要的特点是它从任一需求管理工具和数据源中获取需求(高层的需求,派生出来的需求,低层的需求)的能力;同时它提供一个直观的接口进行跟踪,产生测试用例和需求验证。所有的这些特点使得TBreq成为当今市场上最有效的针对需求管理的解决方案。

2.主要优点

  TBreq提供了质量和验证标准对于实现多层次,双向需求追踪和冲突分析所必须的特性:
 • 和大多数主流的第三方需求管理工具实现集成来增加需求的可见性,并且实现从设计,编码到测试的追踪
 • 生成需求测试追踪矩阵
 • 从源代码和需求中生成测试规格说明,同时自动生成测试用例
 • 和LDRA Testbed(实现代码评审,质量评审,设计评审和覆盖率分析),TBrun(实现自动单元测试,包括测试驱动生成,测试用例生成,测试报告生成,主机/目标机测试和回归测试)无缝集成
 • 需求的测试覆盖分析和冲突分析
 • 自动侦测需求,源代码和测试数据的变更
 • Upstream和Downstream的冲突分析能够进行回归风险管理

{{分页}}

3.接口

  TBreq是将需求,设计,开发,测试和验证工作与您的需求管理工具和设计开发工具链连接起来的最简单的解决方案:
 • 文本处理工具:Word, Excel, Access, PowerPoint, PDF, . . .
 • 需求管理工具:DOORS, RequisitePro, or any published XML interface
 • 项目管理工具:Microsoft Project
 • UML 工具:Rhapsody, Artisan, Rose, . . .
 • 建模和设计工具:Simulink, Statemate, Scade, Stood, . . .
 • 源代码文件:C, C++, C#, Ada, . . .
 • 配置管理工具:Clearcase, CVS, PVCS, Dimensions, SYNERGY/CM, . . .

3.3 RTInsightPro嵌入式测试系统

  随着嵌入式实时系统的广泛应用,嵌入式软件可靠性越来越成为系统能否正常运行的关键,由于传统主机平台软件测试工具的局限性,给嵌入式平台软件测试带来很大的困难。
  RTInsightPro充分考虑到嵌入式软件实时性特点,结合使用LDRA公司静态分析与代码自动插装技术,可成功用于实时嵌入式系统集成与系统测试,提供代码覆盖率分析、涵数性能分析、内存泄露分析,任务性能分析,变量监控、堆栈监控及系统跟踪功能。

 

RTInsightPro技术特点

  通过采用LDRA公司Testbed软件测试工具静态分析与代码插装技术,及RTInsightPro硬件可实时地嵌入式系统进行代码覆盖率分析与性能分析。由于采用代码插装可准确的判断代码执行情况,同时由于采用RTInsightPro高速虚拟端口技术使得代码插装量可控制在每个特征点(即函数入口、出口,程序分支点)一到两条指令或语句(代码增加量可控制在10%之内),大大减少插装代码增加对被测系统的影响。

RTInsightPro功能
  RTInsighPro提供代码覆盖率分析、函数性能分析、变量监控、堆栈使用监控、内存泄露分析、任务性能分析及系统跟踪等功能。

  • 覆盖率分析
       RTInsightPro结合Testbed针对硬件辅助方式专用的插装,可以在对系统影响最小的情况下提供下列覆盖率指标:
          • 语句覆盖率;
          • 分支覆盖率;
          • 调用覆盖率;
          • 外部中断使用记数;

 

  • 函数性能分析
       采用和覆盖率分析不同的专门的性能插装方式,RTInsightPro可以在对系统实时性能几乎没有影响的情况下,提供以下时间性能指标:
          • 系统总体执行时间;
          • 每个程序最大执行时间;
          • 每个程序最小执行时间;
          • 每个程序累计执行时间;
          • 每个程序执行次数;
          • 中断服务程序响应时间;

 

  •任务性能分析
       对于采用实时多任务操作系统的被测试系统,可以提供下列和任务相关的性能指标:
          • 任务执行的最大时间;
          • 任务执行的最小时间;
          • 任务执行的累计时间;

 

  • 变量监控分析
       可以实时对系统中的变量使用情况进行监控和记录,可同时实时监控8个系统变量和2个数组,提供下列功能:
          • 记录变量的最大值;
          • 记录变量的最小值;
          • 记录变量的被写操作次数;

{{分页}}

 

  • 堆栈监控分析
       对于堆栈设置在内存中的系统,可以对堆栈的使用情况进行实时监控,提供下列功能:
          • 设置堆栈使用溢出报警上限;
          • 设置堆栈使用溢出报警下限;
          • 给出堆栈当前实时使用情况


 
  • 内存泄露分析
       对于采用了动态内存分配的系统,RTInsightPro可以实时监控动态内存的使用情况,可以辅助用户发现以下问题:
          • 内存分配了未释放;
          • 内存重复释放;
          • 释放未分配的内存;

    等内存使用方面的异常,同时帮助用户定位问题;

  • 跟踪分析
      RTInsightPro可以对系统的总线状态进行实时追踪,结合对源代码的分析信息,可以提供源代码级的追踪分析,具体功能包括:
          • 提供128K的总线跟踪分析功能;
          • 提供大概100万行源代码级追踪;
          • 可实时跟踪记录系统执行状态;
          • 可设置灵活的触发条件与记录条件;
          • 可以和外部硬件触发进行配合;

 

参考文献:
LDRA 公司 Zero Defect Software Development (ZDSD)_Manifesto Version 2.12

 



关键词: ZDSD

评论


技术专区

关闭