Logiscope是面向 源代码进行工作的,贯穿于 软件开发、 代码评审、 单元测试、 集成测试、 系统测试、以及 软件维护阶段。
一、Logiscope概述
LOGISCOPE是法国Telelogic公司推出的专用于 软件质量保证和软件测试的产品。其主要功能是对软件做质量分析和测试以保证软件的质量,并可做认证、反向工程和维护,特别是针对要求高可靠性和高安全性的软件项目和工程。
本产品应用于软件的整个生命周期,它贯穿于 软件需求分析阶段->设计阶段->代码开发阶段->软件测试阶段(代码审查、单元/ 集成测试和系统测试)->软件维护阶段的质量验证要求。
在设计和开发阶段,使用LOGISCOPE可以对软件的 体系结构和编码进行确认。可以在尽可能的早期阶段检测那些关键部分,寻找潜在的错误,并在禁止更改和维护工作之前做更多的工作。在构造软件的同时,就定义测试策略。可帮助编制符合企业标准的文档,改进不同开发组之间的交流;在测试阶段用LOGISCOPE,使测试更加有效。可针对 软件结构,度量 测试覆盖的完整性,评估测试效率,确保满足要求的测试等级。特别是,LOGISCOPE还可以自动生成相应的测试分析报告;在软件的维护阶段,用LOGISCOPE验证已有的软件是否是质量已得到保证的软件,对于状态不确定的软件,LOGISCOPE可以迅速提交 软件质量的评估报告,大幅度地减少理解性工作,避免非受控修改引发的错误。
本产品的最终目的是评估和提高软件的质量等级,采用基于国际间的标准度量方法(如Halstead、McCabe等)的质量模型对软件进行分析,从软件的编程规则, 静态特征和动态测试覆盖等多个方面,量化地定义质量模型,并检查、评估软件质量。
● LOGISCOPE 获取ISO/IEC9126 定义的"Quality Characteristics ";
● LOGISCOPE 为ISO-9001提供需求(test acceptance criteria and qulity records ),自动确定ISO9001认证过程的任务;
● LOGISCOPE 提供SEI/CMM在第2 级(Repeatable )所要求的 软件质量跟踪等关键实践的要求,推进开发组织尽快达到SEI/CMM 的3级。
● 在有合同关系时,合同方可以用LOGISCOPE 明确定义验收时质量等级和执行测试。承制方可以用LOGISCOPE 验证其软件的质量。
● 对所有的开发者提供确保代码质量和进行有效测试的方法
● 对项目管理者和质量工程师提供对整个项目进行制度化的测试和评估。
● 创立公司的技术文化:
1 完美的开发环境集成,很容易访问和运行LOGISCOPE;
2 开发者可以随时检查其工作;
3 当达到要求的测试等级时,软件才可以离开测试阶段;
4 维护工作是受控的;
5 项目领导能把全部结果自动编制到日常报告中;
6 质量工程师可以把项目作为一个整体,自动编写详细的报告。
Logiscope包括三个工具:
Logiscope RuleChecker:根据工程中定义的编程规则自动检查 软件代码错误,可直接定位错误。包含大量标准规则,用户也可定制创建规则。自动生成 测试报告。
Logiscope Audit:定位错误模块,可评估软件质量及复杂程度。提供代码的直观描述,自动生成软件文档。
Logiscope TestChecker: 测试覆盖分析,显示没有测试的代码路径,基于源码 结构分析。直接反馈测试效率和测试进度,协助进行衰退测试。既可在 主机上测试,也可在 目标板上测试。支持不同的 实时操作系统、支持 多线程。可累积合并多次测试结果,自动鉴别低效测试和衰退测试。自动生成 定制报告和文档。
Logiscope分为Audit、RuleChecker和TestChecker3部分,对代码分别进行静态度量、编程风格检测、和测试覆盖率分析。下面分别就这3部分功能进行描述:
Audit
以 ISO9126【3】模型作为质量评价模型的基础。质量评价模型描述了从Halstead、McCabe的度量方法学和Verilog引入的质量方法学中的质量因素(可维护性、可重用性、等)和质量准则( 可测试性、可读性、等)。
将被评价的软件与规定的质量模型进行比较,用图形形式显示 软件质量的。因此,质量人员可以把精力集中到需要修改的代码部分,对与质量要素和质量模型不一致的地方给予解释和纠正的办法。具体的图形表示法有以下几种:
整个应用的 体系结构:显示部件之间的关系,评审 系统设计。
具体部件的 逻辑结构:通过 控制流图显示具体部件的逻辑结构,评审部件的可维护性。
评价质量模型:通过度量元对整个应用 源代码进行度量,并作出Kiviat图显示分析结果,对可维护性作出评判。
RuleChecker
预定义数十条 编程风格检测规则,这里有关于 结构化编程的、面向对象编程的、等等。具体而言,这些规则有:
命名规则,如: 变量名首字母大写等
控制流规则,如:不允许使用GOTO语句等
这些规则可以根据实际需要进行选择,也可以按照自己的实际需求更改和添加规则。
RuleChecker,使用所选规则对 源代码一一进行验证,指出所有不符合编程规则的代码,并对应所违反的规则。
TestChecker
测试覆盖率分析工具,提供:指令覆盖、 判定覆盖、MC/DC( 条件组合覆盖)和基于应用级的PPP覆盖。分析这些覆盖率信息可以保证我们的测试,提高测试效率,协助进行进一步地测试。
同时,Logiscope支持对 嵌入式系统的覆盖率分析。首先是对应用 源代码的插装,然后是实时地将测试信息通过网线/串口传到宿主机(Host)上,并在线显示。Logiscope支持VxWorks 、pSOS 、VRTX等 实时操作系统。
支持语言 功能模块
Audit RuleChecker TestChecker
c K&R,ISO/ANSI Windows/UNIX Windows/UNIX Windows/UNIX
c++ ISO/ANSI Windows/UNIX Windows/UNIX Windows/UNIX
Ada 83 and 95 Windows/UNIX Windows/UNIX Windows/UNIX
Java All Java code Windows/UNIX Windows/UNIX Windows
Unix:
Solaris 2.6 and higher
HP UX 10.2 and 11
IBM AIX 4.2
Windows:
Windows 98
Windows NT 4.0
Windows 2000
二、产品应用
目前,LOGISCOPE产品在全世界的26个国家的众多国际知名企业得到了广泛的应用,其用户涉及通讯、电子、航空、国防、汽车、运输、能源及工业过程控制等众多领域。现简单介绍如下:
● 欧洲的卫星生产厂商Matla Marconi Space;
● 直升机生产厂商Eurocopter;
● 世界最大的粒子物理研究实验室CERN;
● 航空航天领域有Aérospatiale, Alcatel Space, Boeing, CNES, Northrop Grumman等国际著名公司;
● IBM;
● TI;
● GE;
● McDonnell Douglas;
● EDS;
● SAIC;
● EXXON;
● PHILIPS;
● 国内有华为、中兴、航天部等单位。
三、产品功能
下面分别介绍LOGISCOPE产品的3个功能:
● Audit 静态分析功能;
● RuleChecker 语法规则分析功能;
● TestChecker 动态测试功能。
3.1 静态分析功能
本产品采用的是包括 软件质量标准化组织制定的 ISO9126模型在内的质量模型。质量模型描述了从Halstend、McCabe的质量方法学引入的质量因素、质量准则和质量度量元。即本模型是一个三层的结构组织:
a. 质量因素[Factor]
b. 质量准则[Criteria]
c. 质量度量元[Metrics]
质量因素是从用户角度出发,对软件的质量特性进行总体评估;质量准则从 软件设计者角度出发,设计为保障质量因素所必须遵循的法则;质量度量元从软件测试者角度出发,验证是否遵循质量准则。一个质量因素由一组质量准则来评估;一个质量准则由一组质量度量元来验证。其关系如图所示。
质量结构关系图
LOGISCOPE从系统[Application]、类[Class]和函数[Function]三个层次详细规定了上述质量特性及其组成关系。以C++程序的类层为例:
Factor:
具有2个Factor:
● 可维护性[MAINTAINABILITY]
● 可重用性[REUSABILITY]
Criteria:
具有4个Criteria:
● 可分析性[ANALYZABILITY]
● 可修改性[CHANGEABILITY]
● 稳定性[STABILITY]
● 可测试性[TESTABILITY]
Metrics:
质量度量元较多,在此不详细描述。
静态分析Audit部件将软件与所选的质量模型进行比较,生成 软件质量分析报告。显示 软件质量等级的概要图形表示,因此可以把精力集中到需要修改的代码部分。对度量元素和质量模型不一致的地方作出解释并提出纠正的方法。通过对 软件质量进行评估及生成 控制流图和调用图,发现最大可能发生错误的部分。一旦发现这些部分,可以使用度量元及 控制流图、调用图等手段做进一步分析。
简单介绍其功能:
● 质量报告
LOGISCOPE根据质量模型,生成相应的 软件质量分析报告(HTML形式)。
● 质量度量元
可清楚分析和观察每个类或方法中的质量度量元的数值,判断其是否合法。
● 质量准则
可清楚分析和判断各质量因素所含有的质量准则的数值和合格性。
● 质量因素
针对系统层、类层和函数层,分别分析质量因素的合格性和所占百分比。
● 程序流程图
控制流图显示算法的逻辑路径。其图形表示适用于评价函数的复杂性。
● 程序调用图
调用图显示过程和函数之间的关系,非常适用于检查应用系统的设计。
● Kiviat图
Kiviat图使质量等级与所选择的参考之间的一致性对比更加可视化。
3.2 语法规则分析功能
LOGISCOPE提供编码规则与命名检验,这些规则是根据业界标准和经验所制订。因此可建立企业可共同遵循的规则与标准,而避免自我不良的编程习惯及彼此不相容的困扰。同时LOGISCOPE还提供规则的裁剪和编辑功能,可以用Tcl、脚本和编程语言定义新的规则。
以C语言为例,以下列出部分的规则:
请点击这里查看>>
RuleChecker的工作界面如下:
3.3 动态测试功能
为控制测试的有效性,必须定义准则和策略以判断何时结束测试阶段。准则必须是客观和可量化的元素。LOGISCOPE推荐对指令、逻辑路径和调用 路径覆盖测试。根据应用的准则和项目相关的约束,可以定义使用的度量方法和要达到的覆盖率,度量测试的有效性。
TestChecker产生每个测试的 测试覆盖信息和累计信息。用直方图显示覆盖比率,并根据测试运行情况实时更改。随时显示新的测试所反映的 测试覆盖情况。TestChecker允许所有的测试运行依据其有效性进行管理。用户可以减少那些用于非 回归测试的测试。被执行过的函数,一旦作了修改需要重新运行时,LOGISCOPE将会标出。优化 测试过程在测试阶段的第一步,执行的测试是功能性测试。其目的是检查所期望的功能是否已实现。在测试初期,覆盖比率迅速增加。象样的测试工作一般能达到70%的覆盖率。但是,要提高此比率是十分困难的。主要是由于 测试覆盖了相同的测试路径。在该阶段需要对测试策略做一些改变。应当执行结构化测试,即,要检测没有执行的逻辑路径,定义适当的 测试覆盖这些路径。在测试执行期间,当测试策略改变时,综合的运用TestChecker检测关键因素以提高效率。将TestChecker与静态分析相互依赖使用能够帮助用户分析未测试的代码。用户可以显示所关心的代码,并通过对执行未覆盖的路径的观察得到有关的信息。信息以图形( 控制流图)和文本( 伪代码和源文件)的形式提交,并在其间建立导航关联。TestChecker管理系统能声明新的测试、编制有关文档、定义启动命令、以及自动执行的方法。
同时LOGISCOPE 支持对 嵌入式领域软件的测试。众所周知, 嵌入式系统软件的测试是最为困难的。因为,它的开发是用 交叉编译方式进行的。在目标机(Target)上,不可能有多余的空间记录测试的信息。必须实时地将测试信息通过网线/串口传到宿主机(Host)上,并实时在线地显示。因此,对 源代码的插装和目标机上的信息收集与回传成为问题的关键。LOGISCOPE 很好地解决了这些技术,成为嵌入式领域测试工具的佼佼者。它支持各种 实时操作系统(RTOS)上的应用程序的测试,也支持逻辑系统的测试。Logiscope 提供VxWorks 、pSOS 、VRTX 实时操作系统的测试库。
TestChecker的运行界面:
四、产品构成
Audit for c/c++ ;
RuleChecker for c/c++;
TestChecker for c/c++ 。
运行平台:WIN2000/NT