CN105608258B - 一种基于模型的***设计及信息流可视化仿真***及方法 - Google Patents

一种基于模型的***设计及信息流可视化仿真***及方法 Download PDF

Info

Publication number
CN105608258B
CN105608258B CN201510940991.6A CN201510940991A CN105608258B CN 105608258 B CN105608258 B CN 105608258B CN 201510940991 A CN201510940991 A CN 201510940991A CN 105608258 B CN105608258 B CN 105608258B
Authority
CN
China
Prior art keywords
module
model
system model
code
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510940991.6A
Other languages
English (en)
Other versions
CN105608258A (zh
Inventor
李林林
张和华
赵祖乾
潘加俊
南野野
龚雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SUZHOU TOPRANK INFORMATION TECHNOLOGY Co Ltd
Original Assignee
SUZHOU TOPRANK INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SUZHOU TOPRANK INFORMATION TECHNOLOGY Co Ltd filed Critical SUZHOU TOPRANK INFORMATION TECHNOLOGY Co Ltd
Priority to CN201510940991.6A priority Critical patent/CN105608258B/zh
Publication of CN105608258A publication Critical patent/CN105608258A/zh
Application granted granted Critical
Publication of CN105608258B publication Critical patent/CN105608258B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于模型的***设计及信息流可视化仿真***及方法,该***包括构件模型库模块、***模型搭建模块、信息显示模块、仿真代码生成模块、代码编译模块和运行控制模块。本发明将模型的思想融入到软件的开发过程中,提出了一种新的软件开发及测试方法,改进了传统的软件开发模式,提高了开发效率;本发明基于可重用的构件模型,采用搭积木的方式搭建***模型,在很大程度上减小了手工编写的代码量,将设开发者的工作重心转移到逻辑和原理设计上,提升了***的可设计能力;本发明采用仿真信息可视化的方式将程序的运行流程和传递的变量信息显示出来,将传统的黑盒测试白盒化,提高了***设计的验证能力。

Description

一种基于模型的***设计及信息流可视化仿真***及方法
技术领域
本发明属于软件开发及仿真领域,具体涉及一种基于模型的***设计及信息流可视化仿真***及方法。
背景技术
随着计算机技术的飞速发展和人类需求的不断提高,软件的功能越来越复杂,对软件的安全性和稳定性要求也日益严格。而市场的竞争和不同客户的个性化需求又使软件的开发周期不断缩短,这给软件的开发和测试工作提出了严格要求。目前软件研制主要包括需求分析、软件开发和软件测试三个阶段。在软件开发阶段需要编写大量的源代码,但是,传统的手工编码方式不仅费时费力,而且代码的可靠性不能保证,开发人员需要将大量的精力投入到枯燥的代码编写中而不是软件的构架设计和逻辑设计上,这大大降低了软件的开发效率。
目前,提高开发阶段效率的途径是使用代码重复利用技术和代码自动生成技术,现有的代码重用和自动生成技术的使用门槛较高,非专业人士难以操作而且在使用时需要大量的人工配置和干预。在***测试阶段,目前的情况是几乎所有的***集成测试都是黑盒测试(即只知道输出结果是否正确,对代码的运行路却径一无所知),在测试过程中无法直接获取程序的运行路径,也无法直接获得程序运行过程中的一些信息。所以,一旦出现测试结果跟期望值不符合情况,就要花费大量的时间来确定错误的位置,这大大增加了修复软件缺陷所需的时间。同时,由于传统测试只能测出结果是否正确,对于运行路径错误而结果却碰巧正确的情况无法辨别,会给软件的正确性埋下隐患。此外,软件开发环境和测试环境的分离也增加了软件研制的时间成本。
然而,结合软件工程的设计思想,从模型的角度考虑,模型具有直观、可重用等优点。在软件开发领域,***模型是由不同的构件模型件组成,构件模型是指一些能完成某一单元功能的代码的集合,通过将不同的构件模型拼接、组合、设置相关参数,就可以像搭积木一样搭建出一个***模型。之后,在有序的规范操作下,***模型可以被翻译为可运行的仿真代码。
一个***模型需要包含不同的构件模型,同时一个构件模型也可以被包含在不同的***模型中,这为构件的复用(即代码的重复利用)提供了条件。以模型作为***的表现方式,不仅直观,而且还可以作为***运行时显示信息的载体,这有利于在***集成测试中定位错误,此外,基于模型的***设计可以使开发人员把主要尽力投入在***的设计上而不是枯燥的代码编写中,提高了设计出的软件的质量。
发明内容
针对现有软件研制过程中存在的不足以及模型表达方法的优势,本发明旨在提供一种基于模型的***设计及信息流可视化仿真***及方法,将有利于提高软件开发和软件测试工作的效率及质量。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种基于模型的***设计及信息流可视化仿真***,包括构件模型库模块、***模型搭建模块、信息显示模块、仿真代码生成模块、代码编译模块和运行控制模块。
所述构件模型库模块与所述***模型搭建模块连接,所述***模型搭建模块连接分别与所述信息显示模块和所述仿真代码生成模块连接,所述仿真代码生成模块与所述代码编译模块连接,所述代码编译模块与所述信息显示模块连接,所述运行控制模块分别与所述***模型搭建模块、所述信息显示模块、所述仿真代码生成模块和所述代码编译模块连接。
所述构件模型库模块,其作用为:
1)管理构件模型库中所有的构件模型及各个构件模型的信息;
2)管理构件模型的添加、修改和删除;
3)保证所有构件模型的正确性和安全性,为所述***模型搭建模块和所述仿真代码生成模块的工作提供支持。
所述***模型搭建模块,其作用为:
1)将所述构件模型库中的构件模型搭建成***模型,在此过程中,所述***模型搭建模块将记录所有与搭建***模型操作相关的信息,为所述仿真代码生成模块的工作提供支持;
2)根据所记录的信息,对***模型的正确性进行检查,保证代码生成工作的顺利进行;
3)所述***模型搭建模块生成的***模型是仿真信息显示的载体。
所述信息显示模块,其作用为:
与所述***模型搭建模块一起为用户提供一个可视化的建模界面,所述信息显示模块将建模和仿真过程中的所有信息按一定的规则显示在这个建模界面上,供用户观看以及进行相应的操作。
所述建模界面具备以下三个功能:
1)显示建模的动态过程和***模型的结构,其具体表现形式为:
所述构件模型库中的所有的构件模型将以树型的形式显示在所述建模界面中供用户选择;在用户利用所述***模型搭建模块搭建***模型时,所述建模界面上可以显示被拖移的构件模型、组装后的***模型、构件模型和***模型相关的设置参数;
2)显示仿真信息在***模型上的流动过程,其具体表现形式为:
所述建模界面上会显示出已经搭建好的***模型,根据所述信息显示模块所读取的仿真数据,所搭建的***模型上会进行实时的显示,达到让仿真代码的运行路径实时的显示在***模型上的效果;
3)帮助所述***模型搭建模块检查***模型的正确性,其具体表现形式为:用户可以直观的从所述建模界面上观察***模型的结构是否正确,是否存在孤立的构件模型,参数配置是否正确。
所述仿真代码生成模块,其作用为:
1)利用构件模型的实现代码,在所述***模型搭建模块所记录的与搭建***模型操作相关的信息的指引下,将该***模型翻译为可运行的***代码(即用构件模型的实际C代码代替***模型中对应构件模型的位置,形成互不相关的代码片,然后将构件模型之间的拓扑结构信息、构件模型和***模型的参数配置信息反映到所生成的代码片中,将这些互不相关的代码片连接成一个整体,即可运行的***代码);
2)通过扫描刚刚生成的***代码,获取***代码中相连的构件模型之间(即代码片之间)函数调用的位置和相关的变量信息,并在这些位置***探针(一些有特殊用途的辅助性代码)来生成仿真代码;
3)将用户输入的测试用例***到所生成的仿真代码中,生成最终的仿真代码。
所述代码编译模块,其作用为:将所述仿真代码生成模块生成的仿真代码编译、链接成可运行仿真程序。
所述运行控制模块,其作用为:
1)调度其他各个模块,协调各个模块之间的工作;
2)控制仿真程序的运行和停止;
3)获取并存储仿真程序中探针抛出的信息和控制仿真信息;
4)通过建模界面与用户进行交互,接收用户的指令。
进一步的,所述***模型搭建模块所记录的与系搭建统模型操作相关的信息包括***模型中所包含的构件模型的类型、构件模型之间的拓扑结构关系、构件模型和***模型的参数配置信息。
进一步的,所述探针的作用是获取仿真程序运行至此处时有关变量的信息以及控制程序在此处的运行状态,但不会对原代码的运行逻辑和结果产生影响。
进一步的,所述运行控制模块调度其他各个模块的具体内容包括控制所述仿真代码生成模块生成仿真代码,控制所述代码编译模块生成仿真程序,将探针抛出的信息和控制仿真信息传递给所述信息显示模块,并在建模界面的***模型上予以显示。
一种基于模型的***设计及信息流可视化仿真方法,包括以下步骤:
步骤0)根据用户需求,确定软件功能;
步骤1)所述信息显示模块将构件模型库中所有的构件模型以结构树的形式有序的显示在建模界面上,用户根据软件所需的功能,选择需要使用的构件模型;
步骤2)在所述***模型搭建模块与所述信息显示模块的支持下,用户将所需构件模型拖放到建模界面,并对其进行操作,将选中的构件模型搭建成***模型;
步骤3)用户根据需求,在建模界面上对构件模型和***模型的相关参数进行配置,并在建模界面上形成最终的***模型效果图;
步骤4)所述***模型搭建模块会记录下搭建***模型过程中的所有信息,包括构件模型类型、构件模型之间的拓扑结构、构件模型及***模型的参数配置信息;
步骤5)在所述运行控制模块的调度下,所述仿真代码生成模块根据步骤4中所述***模型搭建模块记录的信息和构件模型的实际C代码,将***模型翻译成可运行的***代码,然后在得到的***代码中***探针,生成仿真代码;
步骤6)所述运行控制模块接收用户输入的测试用例,并调用所述仿真代码生成模块将所述测试用例***到步骤5生成的仿真代码中,生成最终的仿真代码;
步骤7)在所述运行控制模块的调度下,调用所述代码编译模块对步骤6中生成的仿真代码进行编译,生成可运行的仿真程序;
步骤8)所述运行控制模块收到开始仿真命令;
步骤9)所述运行控制模块控制步骤7中生成的仿真程序开始运行;
步骤10)当仿真程序运行到步骤5中***的探针位置时,仿真程序会向所述运行控制模块发出继续运行的请求,并进入等待状态;
步骤11)所述运行控制模块收到请求后立即读取探针抛出的变量信息,并对这些变量信息做以下处理:
1)将变量信息发送给所述***模型搭建模块,并同时控制所述信息显示模块将这些变量信息显示在建模界面的相应位置;
2)根据变量信息获取与之相关的两个构件模型及其接口,并同时控制所述信息显示模块将这两个构件模型及其接口间的连线在建模界面上以高亮显示;
3)将这些变量信息记录到文件保存,以便后续使用;
步骤12)所述运行控制模块处理完步骤11中的工作后,立即回复步骤10中处于等待状态的仿真程序所发出的请求命令,使其继续运行;
步骤13)重复步骤10到步骤12,直至整个仿真程序运行结束;如果出现实际运行结果跟预期结果不一致的情况,可以通过观察建模界面上显示的仿真代码的运行路径和在各个构件模型处的变量信息确定问题位置并改正;
步骤14)重复步骤6到步骤13,对所有的测试用例进行测试;
步骤15)结束。
本发明的有益效果是:
本发明将模型的思想融入到软件的开发过程中,提出了一种新的软件开发及测试方法,改进了传统的软件开发模式,提高了开发效率;本发明基于可重用的构件模型,采用搭积木的方式搭建***模型,在很大程度上减小了手工编写的代码量,将设开发者的工作重心转移到逻辑和原理设计上,提升了***的可设计能力;本发明采用仿真信息可视化的方式将程序的运行流程和传递的变量信息显示出来,将传统的黑盒测试白盒化,提高了***设计的验证能力。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明。本发明的具体实施方式由以下实施例及其附图详细给出。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明的***框架图;
图2为本发明的运行流程图;
图3为本发明的运行控制模块控制仿真程序运行的逻辑图;
图4为显示在建模界面上的一个***模型的结构示意图;
图5为图4所示的***模型的仿真程序第一运行路径;
图6为图4所示的***模型的仿真程序第二运行路径;
图7为图4所示的***模型的仿真程序第三运行路径;
图8为图4所示的***模型的仿真程序第四运行路径;
图9为图4所示的***模型的仿真程序第五运行路径;
图10为图4所示的***模型的仿真程序第六运行路径。
图中标号说明:1、构件模型库模块;2、***模型搭建模块;3、信息显示模块;4、仿真代码生成模块;5、代码编译模块;6、运行控制模块。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
参见图1所示,一种基于模型的***设计及信息流可视化仿真***,包括构件模型库模块1、***模型搭建模块2、信息显示模块3、仿真代码生成模块4、代码编译模块5和运行控制模块6。
所述构件模型库模块1与所述***模型搭建模块2连接,所述***模型搭建模块2连接分别与所述信息显示模块3和所述仿真代码生成模块4连接,所述仿真代码生成模块4与所述代码编译模块5连接,所述代码编译模块5与所述信息显示模块3连接,所述运行控制模块6分别与所述***模型搭建模块2、所述信息显示模块3、所述仿真代码生成模块4和所述代码编译模块5连接。
所述构件模型库模块1的主要作用是管理构件模型库中所有的构件模型及各个构件模型的信息,将构件模型以功能单元的形式呈现给用户供使用。构件模型库通过读取构件模型的信息,获取代码对外部构件模型提供的接口、需要外部构件模型提供的接口以及接口的参数等信息,将获得的信息提供给用户进行配置。所述构件模型库模块1还管理构件模型的添加、修改和删除,如创建构件模型的名字、构件模型的图标与构件模型信息间的映射关系型。所述构件模型库模块1还管理所有的构件和映射关系,保证所有构件模型的正确性和安全性,为***模型搭建和仿真代码生成提供支持。
所述***模型搭建模块2的作用是与所述信息显示模块3一起为用户提供一个可视化的建模界面,并将所述构件模型库中的构件模型在这个建模界面上搭建成***模型。其具体实现方式为:所述***模型搭建模块2定义对构件模型的操作方式,实现对构件模型库中构件模型的选择操作和拖放复制操作,实现构件模型图元间的连线操作,实现对构建模型和***模型的参数配置操作。
在此过程中,所述***模型搭建模块2还将记录所有与搭建***模型操作相关的信息,如***模型中所包含的构件模型的类型、构件模型之间的拓扑结构关系、构件模型和***模型的参数配置信息等,为所述仿真代码生成模块4的工作提供支持;与此同时,所述***模型搭建模块2还会根据所记录的信息,对***模型的正确性进行检查,保证代码生成工作的顺利进行;所述***模型搭建模块2生成的***模型是仿真信息显示的载体,所述***模型搭建模块2的输出信息为***模型和记录***模型相关信息的文件。
所述信息显示模块3的作用是与所述***模型搭建模块2一起为用户提供一个可视化的建模界面,并将建模和仿真过程中的所有信息按一定的规则显示在这个建模界面上,供用户观看以及进行相应的操作。
所述建模界面具备以下三个功能:
1)显示建模的动态过程和***模型的结构,其具体表现形式为:所述构件模型库中的所有的构件模型将以树型的形式显示在所述建模界面中供用户选择;在所述***模型搭建模块2搭建***模型时,所述建模界面上可以显示被拖移的构件模型、组装后的***模型、构件模型和***模型相关的设置参数;
2)显示仿真信息在***模型上的流动过程,其具体表现形式为:所述建模界面上会显示出已经搭建好的***模型,根据所述信息显示模块3所读取的仿真数据,所搭建的***模型上会进行实时的显示,达到让仿真代码的运行路径实时的显示在***模型上的效果;
3)帮助所述***模型搭建模块2检查***模型的正确性,其具体表现形式为:用户可以直观的从所述建模界面上观察***模型的结构是否正确,是否存在孤立的构件模型,参数配置是否正确。
所述仿真代码生成模块4的作用是将***模型翻译为仿真代码。其具体实现方式是所述仿真代码生成模块4先通过解析所述***模型搭建模块2所记录的与搭建***模型操作相关的信息,获取其中所有构件模型的类型、名字、拓扑结构信息、接口调用信息和接口配置信息,再利用构件模型的实现代码,将***模型翻译为可运行的***代码(即用构件模型的实际C代码代替***模型中对应构件模型的位置,形成互不相关的代码片,然后将构件模型之间的拓扑结构信息、构件模型和***模型的参数配置信息反映到所生成的代码片中,将这些互不相关的代码片连接成一个整体,即可运行的***代码);然后通过扫描刚刚生成的***代码,获取***代码中相连的构件模型之间(即代码片之间)函数调用的位置和相关的变量信息,并在这些位置***探针(一些有特殊用途的辅助性代码)来生成仿真代码;最后,将用户输入的测试用例***到所生成的仿真代码中,生成最终的仿真代码。
所述探针的作用是获取程序运行至此处时有关变量的信息以及控制程序在此处的运行状态,但不会对原代码的运行逻辑和结果产生影响。
所述代码编译模块5的作用是将所述仿真代码生成模块4生成的仿真代码编译、链接成可运行仿真程序。
所述运行控制模块6的作用是调度其他各个模块,协调各个模块之间的工作,包括控制所述仿真代码生成模块4生成仿真代码,控制所述代码编译模块5生成仿真程序,控制仿真程序的运行与停止,获取、存储仿真程序中探针抛出的信息和控制仿真信息,并将这些信息传递给所述信息显示模块3,在建模界面的***模型上予以显示,通过建模界面与用户进行交互,接收用户的指令。
其中最重要的是控制仿真程序的运行和停止以及获取仿真信息并在***模型图上显示。参见图3所示,其实现原理如下:当仿真程序运行到所述仿真代码生成模块4***探针的位置时,仿真程序会暂停运行并向所述运行控制模块6发出继续运行的请求,所述运行控制模块6收到请求后首先确定请求发出的位置,然后读取探针抛出的信息,通过解析信息获得发生构件模型间接口调用的构件名、接口名和接口参数等信息,然后将这些信息发送给所述信息显示模块3进行显示,使对应的构件和连线高亮。完成这些工作后所述运行控制模块6回复仿真程序发出的请求并同意继续运行,仿真程序收到回复后继续向下运行,若再次遇到探针则重复上述过程。
参见图4-10所示,图4表示一个已经在建模界面上搭建好的***模型,该***模型由8个构件模型组成;图5表示该***模型的仿真程序开始运行,建模界面上的***模型输入端高亮;图6表示当仿真程序运行至构件1时,***模型输入端和构件1均高亮;图7表示当仿真程序运行至构件1和构件2之间的探针位置时,***模型输入端、构件1、构件2及其之间的连线均高亮;图8表示当仿真程序运行至构件2和构件7之间的探针位置时,***模型输入端、构件1、构件2、构件7及其之间的连线均高亮;图9表示当仿真程序运行至构件7和构件8之间的探针位置时,***模型输入端、构件1、构件2、构件7、构件8及其之间的连线均高亮;图10表示当仿真程序运行完毕时,***模型输入端、构件1、构件2、构件7、构件8、***模型输出端及其之间的连线均高亮。
使用不同的测试用例对仿真代码进行测试,如果仿真结果跟预期结果不一致,则可以通过观察建模界面上仿真程序的运行路径和各个节点处的变量信息确定问题位置并改正。以可视化的方式对***模型进行测试,可以大大提高***集成测试的效率和质量。
参见图2所示,一种基于模型的***设计及信息流可视化仿真方法,包括以下步骤:
步骤0)根据用户需求,确定软件功能;
步骤1)所述信息显示模块3将构件模型库中所有的构件模型以结构树的形式有序的显示在建模界面上,用户根据软件所需的功能,选择需要使用的构件模型;
步骤2)在所述***模型搭建模块2与所述信息显示模块3的支持下,用户将所需构件模型拖放到建模界面,并对其进行操作,将选中的构件模型搭建成***模型;
步骤3)用户根据需求,在建模界面上对构件模型和***模型的相关参数进行配置,并在建模界面上形成最终的***模型效果图;
步骤4)所述***模型搭建模块2会记录下搭建***模型过程中的所有信息,包括构件模型类型、构件模型之间的拓扑结构、构件模型及***模型的参数配置信息;
步骤5)在所述运行控制模块6的调度下,所述仿真代码生成模块4根据步骤4中所述***模型搭建模块2记录的信息和构件模型的实际C代码,将***模型翻译成可运行的***代码,然后在得到的***代码中***探针,生成仿真代码;
步骤6)所述运行控制模块6接收用户输入的测试用例,并调用所述仿真代码生成模块4将所述测试用例***到步骤5生成的仿真代码中,生成最终的仿真代码;
步骤7)在所述运行控制模块6的调度下,调用所述代码编译模块5对步骤6中生成的仿真代码进行编译,生成可运行的仿真程序;
步骤8)所述运行控制模块6收到开始仿真命令;
步骤9)所述运行控制模块6控制步骤7中生成的仿真程序开始运行;
步骤10)当仿真程序运行到步骤5中***的探针位置时,仿真程序会向所述运行控制模块6发出继续运行的请求,并进入等待状态;
步骤11)所述运行控制模块6收到请求后立即读取探针抛出的变量信息,并对这些变量信息做以下处理:
1)将变量信息发送给所述***模型搭建模块2,并同时控制所述信息显示模块3将这些变量信息显示在建模界面的相应位置;
2)根据变量信息获取与之相关的两个构件模型及其接口,并同时控制所述信息显示模块3将这两个构件模型及其接口间的连线在建模界面上以高亮显示;
3)将这些变量信息记录到文件保存,以便后续使用;
步骤12)所述运行控制模块6处理完步骤11中的工作后,立即回复步骤10中处于等待状态的仿真程序所发出的请求命令,使其继续运行;
步骤13)重复步骤10到步骤12,直至整个仿真程序运行结束;如果出现实际运行结果跟预期结果不一致的情况,可以通过观察建模界面上显示的仿真程序的运行路径和在各个构件模型处的变量信息确定问题位置并改正;
步骤14)重复步骤6到步骤13,对所有的测试用例进行测试;
步骤15)结束。
上述实施例只是为了说明本发明的技术构思及特点,其目的是在于让本领域内的普通技术人员能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡是根据本发明内容的实质所作出的等效的变化或修饰,都应涵盖在本发明的保护范围内。

Claims (5)

1.一种基于模型的***设计及信息流可视化仿真***,其特征在于:包括构件模型库模块(1)、***模型搭建模块(2)、信息显示模块(3)、仿真代码生成模块(4)、代码编译模块(5)和运行控制模块(6);
所述构件模型库模块(1)与所述***模型搭建模块(2)连接,所述***模型搭建模块(2)连接分别与所述信息显示模块(3)和所述仿真代码生成模块(4)连接,所述仿真代码生成模块(4)与所述代码编译模块(5)连接,所述代码编译模块(5)与所述信息显示模块(3)连接,所述运行控制模块(6)分别与所述***模型搭建模块(2)、所述信息显示模块(3)、所述仿真代码生成模块(4)和所述代码编译模块(5)连接;
所述构件模型库模块(1),其作用为:
1)管理构件模型库中所有的构件模型及各个构件模型的信息;
2)管理构件模型的添加、修改和删除;
3)保证所有构件模型的正确性和安全性,为所述***模型搭建模块(2)和所述仿真代码生成模块(4)的工作提供支持;
所述***模型搭建模块(2),其作用为:
1)将所述构件模型库中的构件模型搭建成***模型,在此过程中,所述***模型搭建模块(2)将记录所有与搭建***模型操作相关的信息,为所述仿真代码生成模块(4)的工作提供支持;
2)根据所记录的信息,对***模型的正确性进行检查,保证代码生成工作的顺利进行;
3)所述***模型搭建模块(2)生成的***模型是仿真信息显示的载体;
所述信息显示模块(3),其作用为:
与所述***模型搭建模块(2)一起为用户提供一个可视化的建模界面,所述信息显示模块(3)将建模和仿真过程中的所有信息按一定的规则显示在这个建模界面上,供用户观看以及进行相应的操作;
所述建模界面具备以下三个功能:
1)显示建模的动态过程和***模型的结构,其表现形式为:
所述构件模型库中的所有的构件模型将以树型的形式显示在所述建模界面中供用户选择;在用户利用所述***模型搭建模块(2)搭建***模型时,所述建模界面上可以显示被拖移的构件模型、组装后的***模型、构件模型和***模型相关的设置参数;
2)显示仿真信息在***模型上的流动过程,其表现形式为:
所述建模界面上会显示出已经搭建好的***模型,根据所述信息显示模块(3)所读取的仿真数据,所搭建的***模型上会进行实时的显示,达到让仿真代码的运行路径实时的显示在***模型上的效果;
3)帮助所述***模型搭建模块(2)检查***模型的正确性,其具体表现形式为:用户可以直观的从所述建模界面上观察***模型的结构是否正确,是否存在孤立的构件模型,参数配置是否正确;
所述仿真代码生成模块(4),其作用为:
1)利用构件模型的实现代码,在所述***模型搭建模块(2)所记录的与搭建***模型操作相关的信息的指引下,将该***模型翻译为可运行的***代码;
2)通过扫描刚刚生成的***代码,获取***代码中相连的构件模型之间函数调用的位置和相关的变量信息,并在这些位置***探针来生成仿真代码;
3)将用户输入的测试用例***到所生成的仿真代码中,生成最终的仿真代码;
所述代码编译模块(5),其作用为:将所述仿真代码生成模块(4)生成的仿真代码编译、链接成可运行仿真程序;
所述运行控制模块(6),其作用为:
1)调度其他各个模块,协调各个模块之间的工作;
2)控制仿真程序的运行和停止;
3)获取并存储仿真程序中探针抛出的信息和控制仿真信息;
4)通过建模界面与用户进行交互,接收用户的指令。
2.根据权利要求1所述的基于模型的***设计及信息流可视化仿真***,其特征在于:所述***模型搭建模块(2)所记录的与系搭建统模型操作相关的信息包括***模型中所包含的构件模型的类型、构件模型之间的拓扑结构关系、构件模型和***模型的参数配置信息。
3.根据权利要求1所述的基于模型的***设计及信息流可视化仿真***,其特征在于:所述探针的作用是获取仿真程序运行至此处时有关变量的信息以及控制程序在此处的运行状态,但不会对原代码的运行逻辑和结果产生影响。
4.根据权利要求1所述的基于模型的***设计及信息流可视化仿真***,其特征在于:所述运行控制模块(6)调度其他各个模块的具体内容包括控制所述仿真代码生成模块(4)生成仿真代码,控制所述代码编译模块(5)生成仿真程序,将探针抛出的信息和控制仿真信息传递给所述信息显示模块(3),并在建模界面的***模型上予以显示。
5.一种采用如权利要求1所述的***的***设计及信息流可视化仿真方法,其特征在于,包括以下步骤:
步骤0)根据用户需求,确定软件功能;
步骤1)所述信息显示模块(3)将构件模型库中所有的构件模型以结构树的形式有序的显示在建模界面上,用户根据软件所需的功能,选择需要使用的构件模型;
步骤2)在所述***模型搭建模块(2)与所述信息显示模块(3)的支持下,用户将所需构件模型拖放到建模界面,并对其进行操作,将选中的构件模型搭建成***模型;
步骤3)用户根据需求,在建模界面上对构件模型和***模型的相关参数进行配置,并在建模界面上形成最终的***模型效果图;
步骤4)所述***模型搭建模块(2)会记录下搭建***模型过程中的所有信息,包括构件模型类型、构件模型之间的拓扑结构、构件模型及***模型的参数配置信息;
步骤5)在所述运行控制模块(6)的调度下,所述仿真代码生成模块(4)根据步骤4)中所述***模型搭建模块(2)记录的信息和构件模型的实现代码,将***模型翻译成可运行的***代码,然后在得到的***代码中***探针,生成仿真代码;
步骤6)所述运行控制模块(6)接收用户输入的测试用例,并调用所述仿真代码生成模块(4)将所述测试用例***到步骤5)生成的仿真代码中,生成最终的仿真代码;
步骤7)在所述运行控制模块(6)的调度下,调用所述代码编译模块(5)对步骤6)中生成的仿真代码进行编译,生成可运行的仿真程序;
步骤8)所述运行控制模块(6)收到开始仿真命令;
步骤9)所述运行控制模块(6)控制步骤7)中生成的仿真程序开始运行;
步骤10)当仿真程序运行到步骤5)中***的探针位置时,仿真程序会向所述运行控制模块(6)发出继续运行的请求,并进入等待状态;
步骤11)所述运行控制模块(6)收到请求后立即读取探针抛出的变量信息,并对这些变量信息做以下处理:
1)将变量信息发送给所述***模型搭建模块(2),并同时控制所述信息显示模块(3)将这些变量信息显示在建模界面的相应位置;
2)根据变量信息获取与之相关的两个构件模型及其接口,并同时控制所述信息显示模块(3)将这两个构件模型及其接口间的连线在建模界面上以高亮显示;
3)将这些变量信息记录到文件保存,以便后续使用;
步骤12)所述运行控制模块(6)处理完步骤11)中的工作后,立即回复步骤10)中处于等待状态的仿真程序所发出的请求命令,使其继续运行;
步骤13)重复步骤10)到步骤12),直至整个仿真程序运行结束;如果出现实际运行结果跟预期结果不一致的情况,通过观察建模界面上显示的仿真代码的运行路径和在各个构件模型处的变量信息确定问题位置并改正;
步骤14)重复步骤6)到步骤13),对所有的测试用例进行测试;
步骤15)结束。
CN201510940991.6A 2015-12-16 2015-12-16 一种基于模型的***设计及信息流可视化仿真***及方法 Active CN105608258B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510940991.6A CN105608258B (zh) 2015-12-16 2015-12-16 一种基于模型的***设计及信息流可视化仿真***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510940991.6A CN105608258B (zh) 2015-12-16 2015-12-16 一种基于模型的***设计及信息流可视化仿真***及方法

Publications (2)

Publication Number Publication Date
CN105608258A CN105608258A (zh) 2016-05-25
CN105608258B true CN105608258B (zh) 2018-12-14

Family

ID=55988190

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510940991.6A Active CN105608258B (zh) 2015-12-16 2015-12-16 一种基于模型的***设计及信息流可视化仿真***及方法

Country Status (1)

Country Link
CN (1) CN105608258B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106777450B (zh) * 2016-11-04 2020-10-20 中软信息***工程有限公司 一种支持组合模型的模型描述及生成方法
CN107480327B (zh) * 2017-07-03 2020-11-13 北京东土军悦科技有限公司 一种仿真验证方法、装置和电子设备
CN107346249A (zh) * 2017-07-13 2017-11-14 重庆电子工程职业学院 一种基于模型的计算机软件开发方法
CN107566171A (zh) * 2017-08-28 2018-01-09 东南大学 一种发布/订阅分布式***分层错误定位方法
CN107832529A (zh) * 2017-11-13 2018-03-23 广州市健齿生物科技有限公司 一种多孔结构植入体设计***
CN109684224B (zh) * 2018-12-29 2020-12-22 深圳点猫科技有限公司 python代码与积木的转换过程的测试方法及装置
CN109857394B (zh) * 2019-02-14 2022-04-19 苏州同元软控信息技术有限公司 图形化飞行程序编排和检查验证***、方法和存储介质
CN110705078B (zh) * 2019-09-25 2023-04-21 哈尔滨工程大学 一种核动力装置的仿真模型开发***及分析方法
CN111221725B (zh) * 2019-11-27 2023-04-07 杭州涂鸦信息技术有限公司 一种自动化测试方法及***、可读存储介质和计算机设备
CN112199855B (zh) * 2020-10-23 2022-11-01 中国核动力研究设计院 热工水力仿真软件动态生成方法、装置、设备及介质
CN113626066A (zh) * 2021-08-27 2021-11-09 国家超级计算无锡中心 应用于工业仿真平台的方法及***
CN114266324B (zh) * 2021-12-30 2023-04-07 智慧眼科技股份有限公司 模型可视化建模方法、装置、计算机设备及存储介质
CN117149359B (zh) * 2023-10-27 2024-01-26 大尧信息科技(湖南)有限公司 一种面向数据链设备的软件定义仿真模拟开发平台及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533349A (zh) * 2009-04-15 2009-09-16 哈尔滨工业大学 一种大粒度构件的平台相关模型及其代码自动生成方法
CN101609614A (zh) * 2008-06-19 2009-12-23 广东电子工业研究院有限公司 一种半实物仿真***的仿真平台及对目标***进行在线调参的方法
CN102622455A (zh) * 2011-01-26 2012-08-01 北京科银京成技术有限公司 模型的故障仿真实时注入技术

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103413072A (zh) * 2013-07-27 2013-11-27 金硕澳门离岸商业服务有限公司 保护应用程序的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609614A (zh) * 2008-06-19 2009-12-23 广东电子工业研究院有限公司 一种半实物仿真***的仿真平台及对目标***进行在线调参的方法
CN101533349A (zh) * 2009-04-15 2009-09-16 哈尔滨工业大学 一种大粒度构件的平台相关模型及其代码自动生成方法
CN102622455A (zh) * 2011-01-26 2012-08-01 北京科银京成技术有限公司 模型的故障仿真实时注入技术

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于STK的航天发射可视化仿真***设计与实现";董加强;《计算机测量与控制》;20101231;第18卷(第2期);第446-449页 *

Also Published As

Publication number Publication date
CN105608258A (zh) 2016-05-25

Similar Documents

Publication Publication Date Title
CN105608258B (zh) 一种基于模型的***设计及信息流可视化仿真***及方法
CN104615541B (zh) 基于流程图的仿真测试建模***及方法
US9754059B2 (en) Graphical design verification environment generator
CN108594746B (zh) 可视化编程控制***及方法、装置
CN111737153B (zh) 车机的自动化测试方法及***
CN104991763B (zh) 一种通用的游戏界面行为控制***
CN109857668A (zh) Ui自动化功能测试方法、测试装置、测试设备及存储介质
US9594543B2 (en) Activity diagram model-based system behavior simulation method
CN106021816B (zh) 一种基于行为树的分布式***行为仿真分析工具的实现方法
CN107562969B (zh) 航空发动机控制***软件的集成方法和装置
CN102915242A (zh) 一种利用图形化操作实现代码编程的方法
CN107203473A (zh) 自动扩展接口测试用例的自动化测试***与方法
CN103064781A (zh) 一种手机软件的自动化测试方法
CN109710357B (zh) 一种基于Unity3D引擎实现服务器操作的方法及***
CN104750606B (zh) 一种基于反射的自动化测试方法
JP2007012003A (ja) フィーチャ指向ソフトウェア製品ラインの開発環境を提供するシステム
KR20160070410A (ko) 스마트기기용 어플리케이션의 테스트 시스템 및 그 방법
CN109783340A (zh) SoC的测试代码烧写方法、IP测试方法及装置
CN105760300B (zh) 一种stk/utk业务的自动化测试方法及测试***
CN105591779A (zh) 网元巡检方法及装置
CN106528429A (zh) 一种ui界面测试方法及装置
KR20130053714A (ko) Vpl을 이용한 프로그램 개발 방법과 그 방법을 구현한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
CN102043628A (zh) Osd应用软件的开发方法、***及多媒体终端
CN106227667A (zh) 一种基于扩展的ifml的移动应用的测试用例生成方法
CN113434387A (zh) 一种基于脚本驱动的自动化测试工具及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Liu Qi

Inventor after: Zhou Fanli

Inventor after: Li Linlin

Inventor after: Zhang Hehua

Inventor after: Zhao Zuqian

Inventor after: Pan Jiajun

Inventor after: Nan Yeye

Inventor after: Gong Xiong

Inventor before: Li Linlin

Inventor before: Zhang Hehua

Inventor before: Zhao Zuqian

Inventor before: Pan Jiajun

Inventor before: Nan Yeye

Inventor before: Gong Xiong

CB03 Change of inventor or designer information