您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
运行分析 Execution Analysis(建模工具EA)
 
 
作者:刘利、俎涛(火龙果软件工程)
 
  1423  次浏览      16 次
2023-4-4

1. 运行分析是什么

EA 中的执行分析器中由一组和代码相关的工具组成,可以进行构建、调试、记录执行、分析、模拟以及构建和验证软件程序,同时保持代码与模型紧密集成。 EA 对各种流行的编译器和平台都提供了支持,尤其是 Java , .Net 和 C++ 等环境。在这里软件开发成为一种高度简化的视觉体验,与在传统环境中工作完全不同。


2. 运行分析 有什么用

执行分析器提供了一个集成的开发和测试环境,可以支持多种语言,例如: .NET , Java , C++ , Mono 和 Android 等。在执行分析器中可以进行以下操作:

•  执行程序实现可视化操作

•  优化现有系统资源并了解资源分配

•  验证系统是否遵循设计的规则

•  生成更准确反映系统行为的高质量文档

•  理解系统如何工作以及为什么工作

•  对新员工进行系统结构和功能的培训

•  方便理解现有代码如何工作

•  识别高成本或不必要的函数调用

•  了解系统内的交互、数据结构和重要关系

•  将问题追踪到特定的代码行或事件

•  确定系统故障前发生的事件顺序

•  对行为模型进行仿真,包括状态机、活动和交互

3.运行分析 有什么

EA 内置的可视化执行分析器中建模、构建、编译、调试、测试、管理、分析和构建的。

功能 描述
构建和调试
使用分析器脚本关联到代码对应的模型包,可以将编码 / 构建 / 调试周期紧密集成到 EA 中。对于 Java , .Net 和 Microsoft C++ 中,一旦关联到项目代码库,使用 EA 的模型驱动开发环境中的构建和调试是很简单的。
仿真
可以对模型进行即时、实时的仿真。主要功能和工具:管理触发器、事件、保护、效果、断点和仿真变量。在运行时可以进行可视化跟踪。

分析
揭开软件性能的面纱,看看到底发生了什么。快速清晰地了解为什么某些任务表现不佳或不如预期。无论是微软 .NET 、 C++ 或 Java ,可以有效地判断软件生命周期中的性能变化。

记录执行
记录代码的执行,而不需要安装任何程序。通过过滤器和堆栈深度控制细节的数量,生成漂亮的序列图。还可以使用记录来创建测试域图。

测试

为模型元素创建和管理测试脚本。探索测试接口、支持单元、集成、场景、系统、检查和验收测试。

4.详细介绍

4.1 构建和调试

4.1.1 分析器脚本( Analyzer Scripts )

运行分析器主要由分析器脚本配置。分析器脚本由一组已经整理好的树形结构图来管理,可以快速定位要更改的特性。 Analyzer 脚本可以由模型的用户共享,并且可以作为 XML 文件轻松导入和导出。

一个项目可以有多个配置,这些配置可以在分析器窗口。

每个分析器脚本都是为一个包定义的,所以项目共存。在许多组织中,管理系统的程序是分布式的,并且因人而异,因组而异。 EA 中的 Analyzer 脚本可以更加方便的配置。脚本的所有方面都是可选的,还可以仅用几行代码实现这些有用的功能:

•  构建

•  测试

•  排除故障

•  录音

•  执行

•  部署

•  模拟

4.1.2 构建应用程序( Build Application )

当选择“构建”选项时,它会在执行分析器窗口。构建操作的进度和结果显示在的“构建”选项卡中系统输出窗户。

通过双击出现的任何编译错误,可以快速访问代码行。

定位代码中的编译器错误

当您使用分析器脚本生成应用程序时,编译器输出会记录在系统输出窗户。可以双击此处出现的任何错误消息,并转到源代码。当您这样做时,光标定位在包含错误的行上。

4.1.3 排除故障( Debugging )

在 EA 中进行故障排除有以下优点:

速度

EA 中的调试器很快!可以花费很少的时间调试出结果。

无需手动步进即可执行录制程序。

支持(多种语言、多种功能)

  • C++ 、 C 和 VB
  • Microsoft .NET, ASP.NET , WCF
  • Java ,使用套接字传输 ( JDWP ) 或内存模型 (JVMIT)
  • 模拟器或设备上的 Android
  • JavaScript 、 VBScript 和 JScript
  • Apache web 服务器上的 PHP 脚本
  • 在 Windows 上使用 EA 的远程 Linux GDB 进程
  • 仿真 - 在 UML 和 BPMN 中调试仿真
  • 可执行状态机 - 调试正在执行的状态机

隔离

调试器在 EA 的进程外运行,将其与 EA 隔离开来。

效率

启动和停止调试器既快速又轻松。主 UI 线程被设计成一个响应性的 UI ,与不属于它的职责相隔离。

生产力

从建模切换到需求,从提出变更请求到跟踪整个工作组的模型中的代码变更,到剖析最近的代码变更。所有这些都在一个工具中。

4.1.4 服务( Services )

EA 提供了两种服务来促进远程脚本执行和远程调试。这些服务主要支持在 Linux 上运行的 EA ,以允许用户运行本机 Linux shell 脚本和调试 Linux 程序。卫星服务支持分析器脚本,而代理服务支持调试。

1.卫星服务

卫星服务负责在运行它的机器上执行分析器脚本。该特性可以帮助 Linux 用户绕过 Wine ,直接执行原生 Linux 程序和 shell 命令。该服务可以从功能区管理,也可以从终端独立运行。

2.Linux Shell

EA 使用的默认 shell 是“ bash ”。要覆盖 EA 使用的 Linux Shell ,请打开一个 Linux 终端,运行“ wine regedit ” , 并向该注册表项添加一个字符串值 :

HKEY_CURRENT_USER\Software\Sparx Systems\EA400\EA\Options

其中 :

•  key name: "LINUX"

•  key value: path

例如:在 Linux 系统中的路径是“ /bin/bash ”。

4.2 分析

4.2.1 抽样分析

打开 Profiler 面板,在这里,可以对现有的进程进行分析,或者对分析器脚本的应用程序进行分析。 Profiler 窗口 分析时会显示目标进程的详细信息,这些详细信息让用户可以看到采集的样本数量。还可以选择暂停和恢复捕获、清除捕获的数据和生成报告。

4.2.2 加权调用图

该详细报告以加权调用图的形式显示了一组独特的调用堆栈。每个分支的权重由命中计数来描述,命中计数是该分支加上从该点开始的所有分支的总命中数。通过跟踪命中轨迹,可以快速识别在捕获期间占用程序最多的代码。

4.2.3 堆栈配置文件

堆栈分析器能够在源代码中设置一个标记,以便每当执行命中该标记时,捕获完整的堆栈跟踪。随着应用程序继续执行,并且从运行的可执行文件中的多个位置访问标记的位置,构建了一个非常详细和有用的图片,显示了代码中特定点的热点和使用场景。

堆栈配置文件报告与内存配置文件报告一样,以“反向堆栈”顺序显示。这意味着报告的根始终是单个节点,如果树展开可以显示标记位置被访问的所有不同位置。

使用探查器控制工具栏选择探查器模式。如果已经创建了一个轮廓点,则会显示出来。分析器点是捕获堆栈跟踪的点。一旦选择了模式,就可以使用控件本身上的 set 按钮来设置 Profiler 点。在决定了轮廓点,构建项目以确保所有内容都是最新的,然后启动 Profiler 。在运行期间,可以看到检测到的唯一堆栈持有量的数量。

4.2.4 内存配置文件

内存配置文件跟踪分配,忽略内存释放的时间。它使用这些信息来评估正在执行的代码对内存的需求,不是根据内存的数量,而是根据需求的频率。这 分配 figure 是请求的内存分配总数。这 堆栈持有量 是在这些时间获取的堆栈跟踪的数量,而 堆持有 figure 是这些调用获得的内存总量。请注意,可以根据需要打开和关闭分析。也没有必要重新构建你的程序来让它工作,因为不涉及任何链接。

4.2.5 功能总结报告

此摘要报告列出了函数,并且仅列出了在采样期间执行的函数。函数按调用总数列出,在单独的调用堆栈中出现两次的函数出现在只出现一次的函数之前。

4.3 记录执行

4.3.1 放置录制标记

可以创建一组方法自动记录标记来记录代码中各种函数的操作,并创建一组堆栈捕获标记来记录导致这些函数被调用的调用序列。

标记使用户能够安静地记录两点之间的代码执行。该记录可用于生成序列图。

由于这个过程记录了多个线程的执行,它在捕获事件驱动序列 ( 如鼠标和定时器事件 ) 时特别有用。

可以进行:

•  设置记录标记

•  标记类型

•  断点和标记窗口

•  使用标记集

4.3.2 控制录制窗口

该控件有一个工具栏和一个历史窗口,该窗口显示捕获的记录历史。此窗口中的每个条目代表一个由一个或多个函数调用组成的调用序列。

按钮 描述
显示选项菜单,用于定义记录会话的操作内容。

选择标记集的记录堆栈深度;即从录制开始点开始的帧数。

启动并记录脚本中描述的应用程序;您可以选择记录标记集和 / 或状态机,以便在记录过程中使用。
当活动的 Analyzer 脚本被配置为用于调试时,该图标处于启用状态。
在调试会话期间执行当前线程的临时手动记录。

在调试会话期间执行临时自动记录。

单步执行一个函数,在 历史窗口 ,退了出去。
仅允许手动录制。
停止记录执行跟踪。

显示 “ 同步模型 ” 对话框,通过该对话框可以将模型与记录配置文件操作期间生成的代码文件同步。

4.2.3 生成序列图

操作 详述
生成图表

在中选择适当的包 浏览器窗口 ,在其中存储序列图。
要从所有记录的序列创建图表,有两种操作 :
  • 点击 “ 录像机菜单 ” 图标 ( ) 并选择 “ 记录和分析 ” 窗口工具栏中的 生成序列图 “ 从录制 ” 选项,
  • 右键单击窗口主体,选择 “ 生成序列图 ” 选项
    要从单个序列创建图表,有两种操作 :
  • 点击 “ 录像机菜单 ” 图标 ( ) 并选择 “ 从记录中生成序列图 ” 选项,或
  • 右键单击序列并选择 “ 从所选序列生成图表 ” 选项
  • 将录制的序列保存到 XML 文件 点击序列,点击 ‘ 记录器菜单 ' 图标 ( ) 并选择 “ 保存序列历史到文件 ” 选项。

    访问现有的序列 XML 文件 有两种操作 :
  • 点击 在记录和分析窗口工具栏中,选择 “ 从文件加载序列历史 ” 选项,或
  • 右键单击屏幕的空白区域,然后单击 “ 从文件加载序列 ” 选项
  • 显示 “ 打开窗口 ” 对话框,从中选择要打开的文件。

     

    从记录的执行分析会话中生成序列图,可以用于:

    •  所有录制的序列

    •  进程中的单个序列

    •  将记录的序列保存到文件

    •  检索保存的记录并将其加载到记录和分析窗口

    4.3.4 报告状态转换

    生成序列图,报告程序执行时用户定义的状态转换 ( 如示例生成的图所示 )

    在要报告的类元素下创建一个状态机。然后针对每个状态设置约束,以定义要报告的状态变化。

    例子

    车站状态机显示了墨尔本地下环路地铁系统中的不同状态。

    在地铁网络上行驶的列车可以停在状态机上表示的任何车站。

    Stations 状态机是 CTrain 类的子类。

    当您在“状态转换记录器”对话框中浏览图时,层次结构仅显示根包、父类和状态机以及图。没有列出其他模型组件。

    4.3.5 状态分析器

    状态分析器是一个可以分析、检测和记录类实例状态的特性。该特性通过组合状态定义和称为状态点的标记来工作。它可用于执行分析器支持的任何语言,包括 Microsoft.NET 、 Mono 、 Java 和 C++ 。

    我们首先选择一个类进行状态定义。

    然后将类拖放在图上并注释,我们可以得到我们定义的所有状态定义的图片,类注释本身链接到特定的状态定义约束。

    通过在相关源代码中放置一个或多个标记来设置状态点。

    要分析的程序使用状态分析器控件运行。当执行分析器遇到任何状态点时,就会分析该类的当前实例。当实例的值域与状态定义匹配时,记录一个状态。每次实例变化时,都会检测到新的状态。该控件列出发现的每个状态。在每个状态下,控件列出由该类的实例转换到其他状态的离散集合。

    以上信息可用于创建状态机。

    使用相同的信息,我们可以很容易地画出一张热点分布图。这个例子显示了一个 “Train” 类,它的 “Bulletin” 状态定义,以及它产生的热点分布图。图上的数字是百分比。从图上我们可以看到,火车在 46% 的时间里处于 “ 运输中 ” 状态。

    最后得出热点分布图的 “ Bulletin ” 状态的分析。

    4.3.6 同步

    记录产生许多资产,记录历史是主要的资产。记录还识别一组源代码文件。这个集合可以用来产生类图和测试域图,但是也可以用来同步模型。

    同步模型在图元素和类模型之间提供了快速准确的导航。

    4.4 测试

    4.4.1 测试点组成

    测试点合成是使用测试点窗户。 Testpoints 窗口是上下文相关的,它在浏览器窗口或者图表。选择单个类别将显示类别结构。对于具有现有约束的类和方法,会显示一个“铅笔”图标。

    当选择一个测试片断、测试集或测试套件时, Testpoints 窗口显示整个域结构,包括组成该域的所有类。注意:可以使用右侧的“导航”窗格导航域层次结构。使用类成员的变量名,测试点被组成为表达式。智能感知快捷方式 ctrl+ 空格键可以帮助您找到这些。计算结果为的表达式真实的就意味着通过了。返回错误的意味着失败。

    可以通过双击该类来添加或编辑现有的不变量。

    通过双击方法,可以类似地添加或编辑现有的前置或后置条件。

    双击一个测试点将会自动显示源代码,如果它可用的话。

    最好使用代码编辑器的快捷菜单从代码编辑器中添加行条件。

    该图像是测试域中的先决条件。

    4.4.2 测试点跟踪语句

    每个测试点可以有自己的 Trace 语句。 Trace 语句是一个动态消息,可以引用其对象或局部范围内的变量。它们是在测试评估期间输出的。可以将它们配置为在每次评估约束时输出,或者更常见的是在测试失败时输出。跟踪语句可以被定向到测试点选项卡系统输出窗口,或者保存到外部文件。您可以在任何 Analyzer 脚本中对此进行配置。

    4.4.3 测试域组成

    测试域图是一个动态的媒介,其中 测试点 被组装起来测试用例。测试领域图中的用例以三种不同的原型提供:测试切割、测试集和测试套件。域的管理就像在任何图上建模一样简单。工具箱和快捷菜单提供了对任何测试域工件的访问。简而言之,来自多个类的测试点被聚集成测试集。然后,测试集被链接以形成测试套件。测试用例集和测试用例集都是可重用的资产。将同一个测试集链接到一个或多个测试套件是一个绘制连接器的问题。

    4.4.4 测试域和类模型

    一个用例很少会包含一个类的所有方法,一般是使用协作类中的各种方法来实现。我们称这个方法子集为 “ 切割 ”, 测试切割工件是我们用来进行这些切割的工具。这 测试点 窗口将根据上下文进行调整,成为测试域或类元素的上下文。此图显示了选择测试切割时的测试点窗口。请注意复选框,它们仅对测试切割可见。它们表示对测试集有贡献的方法 ( 测试用例 ) 。在这个例子中,测试域是由执行分析器生成的,它为我们做了方法识别工作。

    4.4.5 测试点评估

    测试点 窗口用于评估测试域。该窗口有一个用于启动或连接目标应用程序的工具栏。要测试的域总是由具有上下文的元素来反映,所以如果您选择一个类,窗口将只显示该类的类结构和测试点。如果您选择了一个测试套件,这个窗口将会显示整个域层次结构以及其中包含的所有测试点。点击 快动按钮 将加载 测试点 域,它将在用例通过或未通过每个测试时评估、收集和更新报告窗口。每个约束类型的确切详细信息以及捕获该约束的时间和方式如下 :

    • 每当对该类类型的对象调用的任何方法完成时,分析器就评估一个类不变量;不变量用于测试符合的对象的状态是已知的和允许的
    • 在调用操作之前,会立即评估先决条件
    • 当方法完成时,后置条件被求值 ( 同时作为类不变量 )
    • 在程序执行期间,如果行条件的特定代码行进入作用域,则对行条件进行评估

    希望本文对您的建模工作有帮助。更多的有关 EA 建模资料如下:

    如果您希望了解更多信息:

     

     

       
    1423 次浏览       16
     
    相关文章

    用户手册:EA Helper
    自然语言自动化生成图
    使用iSpace进行多人协作建模
    基于模型的软件复用(MBSR)
     
    相关文档

    AUTOSAR_TR_BSW UML模型建模指南
    UML时间图建模(基于EA)
    UML 模型框架(基于EA)
    UML序列图编写规范
     
    相关课程

    UML+EA+面向对象分析设计
    UML + 嵌入式系统分析设计
    业务建模与业务分析
    基于UML和EA进行系统分析设计

    工具新闻
    2022年11月 EA v16.1的发布说明
    2022年11月 EA v16.1正式版介绍
    2022年7月 EA v16.05的发布说明
    2022年4月 EA16.0 正式版发布
    EA 16 新特性介绍:Start Page(起始页)的功能增强
     
    最新文章
    在EA中内嵌文档- Artifact
    EA中模型视图
    EA中的实体关系图
    使用EA进行风险建模
    EA中的项目词汇表
    EA的模型导出或导入csv文件
    自定义表格(Custom Table)在EA中的使用
    Gap Analysis Matrix(差距分析矩阵)
    更多...   
    MBSE工具
    MBSE平台
    建模工具 EA
    模型库-Model Center
    需求管理-ReqManager
    自动建模-Modeler
    多级仿真-Sys Simulator
    代码工程-Code Engineer
    文档生成器-DocGenerator
    更多...   
    成功案例
    广汽研究院 SysML+EA+软件分析设计
    高合汽车研发部门 建模工具EA、WebEA、学习视频
    国汽智联 建模工具EA、模型库、WebEA和iSpace
    亿咖通 MBSE工程体系与工具链咨询
    中航无人机 MBSE工具链
    吉利汽车 购买EA工具
    华科汽车零部件 购买EA工具
    东风岚图汽车 购买EA工具 以及EA定制开发
    更多...