CN105955755A - 一种基于状态图的代码化验证方法 - Google Patents
一种基于状态图的代码化验证方法 Download PDFInfo
- Publication number
- CN105955755A CN105955755A CN201610334262.0A CN201610334262A CN105955755A CN 105955755 A CN105955755 A CN 105955755A CN 201610334262 A CN201610334262 A CN 201610334262A CN 105955755 A CN105955755 A CN 105955755A
- Authority
- CN
- China
- Prior art keywords
- state diagram
- state
- argouml
- node
- file
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于状态图的代码化验证方法,包括步骤:1)用ArgoUML状态图描述目标软件需求,进行需求分析;2)将ArgoUML输出的文件作为提取目标,抽取其状态图描述文件;3)解析状态图描述文件,获取状态图的节点状态,迁移信息以及状态属性;4)根据获取的状态图的节点状态,迁移信息以及状态属性将ArgoUML状态图转化为目标NuSMV代码;5)自动抽取检验性质,以交互式方式供用户二次编辑;6)调用NuSMV检验器执行检验,返回校验性质是否被满足,如不满足,给出出错位置点并展示路径序列。与现有技术相比,本发明可实现边对软件需求建模边实现自动化验证,同时使得设计分析人员不用再关心如何编写复杂的NuSMV程序,这些转化将自动实现。
Description
技术领域
本发明涉及软件检测领域,尤其是涉及一种基于状态图的代码化验证方法。
背景技术
计算机软件已成为信息基础设施渗透到国民经济、国防建设和个人生活的各个领域,例如电信系统、工业控制、核电站、航空航天系统、网上银行、电子商务等。然而,由于目前软件开发技术的不足,软件的质量不能令人满意,软件失效和安全攻击时有发生,给人们的工作生活带来不利的影响,甚至会危及人身、财产和环境的安全,造成灾难性后果。
软件开发领域急需验证技术的支持。问题域的需求分析往往由需求分析人员借助于UML各个模型图来完成,但是却很少有分析设计人员懂得编写复杂的验证程序。相对而言,形式化验证人员则关心如何编写适合于计算机计算的程序语言,很少有专业的需求分析经验。因此,有必要实现基于UML状态实现向验证代码自动转化的方法,使得需求分析设计人员只关注于其业务逻辑的设计,从而减轻学习如何编写验证代码的复杂性。
然而UML是一种半形式化语言,而验证代码则是严格的形式化语言。因此,根据验证代码的语法规则从UML中抽取并构造验证代码是本发明方法核心问题。
1)如何从UML描述文件XMI中抽取节点,迁移关系,以及节点的属性等?
2)如何基于抽取信息根据用户选择的不同转化规则向目标NuSMV代码转化?
3)如何编写目标验证性质?
4)如何解析NuSMV执行结果,尤其是反馈错误信息?
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于状态图的代码化验证方法。
本发明的目的可以通过以下技术方案来实现:
一种基于状态图的代码化验证方法,包括步骤:
1)用ArgoUML状态图描述目标软件需求,进行需求分析;
2)将ArgoUML输出的文件作为提取目标,抽取其状态图描述文件;
3)解析状态图描述文件,获取状态图的节点状态,迁移信息以及状态属性;
4)根据获取的状态图的节点状态,迁移信息以及状态属性将ArgoUML状态图转化为目标NuSMV代码;
5)自动抽取检验性质,以交互式方式供用户二次编辑;
6)调用NuSMV检验器执行检验,返回校验性质是否被满足,如不满足,给出出错位置点并展示路径序列。
所述步骤1)具体包括步骤:
11)在ArgoUML上新建状态图;
12)根据目标软件需求新建节点,连接节点,并标识节点状态和迁移信息,以及节点的状态属性;
13)最后保存输出ArgoUML状态图文件。
所述步骤3)具体为:
根据XML语法描述:
从描述文件的UML:SimpleState和UML:Pseudostate标签获取节点状态,
从描述文件的UML:Transition标签获取迁移信息,
从描述文件的UML:TaggedValue标签获取状态属性。
所述步骤5)具体包括步骤:
51)基于状态信息,得到基于状态的可达性性质描述,供用户二次编辑;
52)基于迁移关系,得到基于迁移的活性性质描述,供用户二次编辑;
53)基于状态属性,得到基于属性的安全性性质描述,供用户二次编辑。
所述步骤6)具体包括步骤:
61)根据NuSMV执行结果分析性质满足性;
62)将不满性质公式的返回信息进解析,获得路径序列反馈给用户。
与现有技术相比,本发明具有以下优点:
1)提供了从ArgoUML状态图向NuSMV代码的转化,从而可以采用AgroUML状态图描述软件需求,可实现边对软件需求建模边实现自动化验证,同时使得设计分析人员不用再关心如何编写复杂的NuSMV程序,这些转化将自动实现。
2)获取状态图的节点状态,迁移信息以及状态属性通过解析状态图描述文件来实现,因为描述文件采用了XML语法,因此便于实现,可以自动化提取,提高了效率。
3)提供了二次编辑功能,可以对自动代码转化中发生的错误进行补救。
附图说明
图1为本发明的需求设计模型与验证代码之间关系说明图;
图2为本发明方法涉及的主要步骤流程示意图;
图3为本发明的用于ArgoUML状态图向NuSMV代码转化的流程图;
图4为本发明的信息存储的数据结构。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
图1为本发明的需求设计模型与验证代码之间关系说明图
问题域的需求分析往往由需求分析人员借助于UML各个模型图来完成,但是却很少有设计人员懂得编写复杂的验证程序。相对而言,形式化验证人员则关心如何编写适合于计算机计算的程序语言,很少有专业的需求分析经验。本发明为了简化模型转化到NuSMV的检验工作,给出了一种自动将AgroUML状态图转化为NuSMV程序的转换方法,使得设计人员随时检验模型是否满足规格说明。用户采用AgroUML状态图分析需求,不用再关心如何编写复杂的NuSMV程序,这些转化将自动实现。
图2为本发明方法涉及的主要步骤流程示意图
首先,采用ArgoUML状态图描述目标软件需求,并将其输出文件作为提取目标,抽取其状态图描述文件。其次,解析状态图信息,获取状态图的节点状态,迁移以及状态属性等信息,同时提供多种转化规则供用户选择,将ArgoUML状态图转化为目标NuSMV代码,并自动抽取检验性质,以交互式方式供用户二次编辑。最后,调用NuSMV检验器执行检验,返回校验性质是否被满足,如不满足,给出出错位置点并展示路径序列。具体如下:
一种基于状态图的代码化验证方法,包括步骤:
1)用ArgoUML状态图描述目标软件需求,进行需求分析,具体包括步骤:
11)在ArgoUML上新建状态图;
12)根据目标软件需求新建节点,连接节点,并标识节点状态和迁移信息,以及节点的状态属性;
13)最后保存输出ArgoUML状态图文件。
2)将ArgoUML输出的文件作为提取目标,抽取其状态图描述文件;
3)解析状态图描述文件,获取状态图的节点状态,迁移信息以及状态属性,具体为:
根据XML语法描述:
从描述文件的UML:SimpleState和UML:Pseudostate标签获取节点状态,
从描述文件的UML:Transition标签获取迁移信息,
从描述文件的UML:TaggedValue标签获取状态属性。
具体的,根据XML语法描述,重写SAX类包的startElement()和endElement()函数,分别抽取如下信息:
编号 | 标签 | 属性 | 说明 |
1 | UML:SimpleState | xmi.id | 状态编号 |
2 | UML:SimpleState | name | 状态名称 |
3 | UML:TaggedValue | UML:TaggedValue.dataValue | 状态属性值 |
4 | UML:Pseudostate | xmi.idref | 初始状态 |
5 | UML:Transition | xmi.idref | 迁移关系 |
在startElement()函数标识碰到某个节点状态标签,比如<UML:SimpleState>那么开始记录信息;又如endElement()函数标识结束某个节点状态标签,比如</UML:SimpleState>那么结束一个标签的记录,并做相关处理。此时,可得到节点状态集合。同理,在startElement()函数根据<UML:TaggedValue>解析状态的属性信息等。
4)根据获取的状态图的节点状态,迁移信息以及状态属性将ArgoUML状态图转化为目标NuSMV代码;
NuSMV语法是基于Kripke结构形式化描述的,一个Kripke结构是一个五元组M=(S,Init,AP,L,T),其中:
–S是一个有限状态集;
–是初始状态集;
–AP为原子命题集;
–L:S→2AP为状态标记函数,将每个状态标记为在该状态下为真值的原子命题集合;
–T:S×S是状态迁移关系,对每个状态s∈S存在某个s’∈S满足(s,s’)∈T
基于Kripke结构的NuSMV代码生产规则:
1、Kripke结构的所有状态用一个枚举类型的状态变量state表示,枚举类型的每个值表示Kripke结构状态集S中的一个具体状态。Init用于为状态变量state赋初值。当Init中只包含一个状态时,直接用该状态对state赋初值。如果Init包含多个状态,则state的初始值是不确定的,即state:=Init。
2、声明一个boolean型变量p。同时,如果p属于初始状态的标记,即则为p赋初值1,否则赋初值0。
3、Kripke结构中的迁移被转换为NuSMV程序的一系列next()赋值语句,前述转换后得到的每个变量对应一个next语句。变量state的下一个取值由其当前状态能发生的状态迁移确定。设s为当前状态,则next(state):={s’|(s,s’)∈T}。如果s可能发生的迁移只有一个,则next(state)为该迁移的目标状态。
5)自动抽取检验性质,以交互式方式供用户二次编辑,具体包括步骤:
51)基于状态信息,得到基于状态的可达性性质描述,供用户二次编辑;
52)基于迁移关系,得到基于迁移的活性性质描述,供用户二次编辑;
53)基于状态属性,得到基于属性的安全性性质描述,供用户二次编辑。
6)调用NuSMV检验器执行检验,返回校验性质是否被满足,如不满足,给出出错位置点以及展示路径序列,具体包括步骤:
61)根据NuSMV执行结果分析性质满足性;
62)将不满性质公式的返回信息进解析,获得路径序列反馈给用户。
图3为本发明的用于ArgoUML状态图向NuSMV代码转化的流程图
流程包括NuSMV集成模块,ArgoUML集成模块,自动化转化UML到NuSMV程序模型,性质辅助描述模块,以及反例解析模块等。ArgoUML状态图通过XMI被解析为NuSMV程序代码后,可验证开发人员指定验证性质公式。具体地说,第一,用户直接在ArgoUML设计状态图。第二,用户选择不同的状态规则,可将状态图转化为不同的NuSMV程序。第三,在性质辅助描述模块上,基于抽取的节点状态,迁移等属性给出性质公式模版,以支持用户组合时态逻辑公式编写目标验证性质公式。第四,通过NuSMV模型检验器进行验证,给出反例路径用于标识出错位置点。
图4为本发明的信息存储的数据结构
解析XML描述的状态图,得到的节点状态、迁移以及属性信息,采用HashMap存储这些数据,即HashMap<String,Object>State2ID=new HashMap<String,Object>(),其中key和value分别对应String类和Object类描述。在状态和属性存储结构中,key存储状态名称,value存储Arraylist类的对象用于描述状态属性的情况。而在状态迁移关系存储结构中,key存储状态名称,value存储Arraylist类的对象用于描述状态的后续状态,用以构造多迁移关系。
Claims (5)
1.一种基于状态图的代码化验证方法,其特征在于,包括步骤:
1)用ArgoUML状态图描述目标软件需求,进行需求分析;
2)将ArgoUML输出的文件作为提取目标,抽取其状态图描述文件;
3)解析状态图描述文件,获取状态图的节点状态,迁移信息以及状态属性;
4)根据获取的状态图的节点状态,迁移信息以及状态属性将ArgoUML状态图转化为目标NuSMV代码;
5)自动抽取检验性质,以交互式方式供用户二次编辑;
6)调用NuSMV检验器执行检验,返回校验性质是否被满足,如不满足,给出出错位置点并展示路径序列。
2.根据权利要求1所述的一种基于状态图的代码化验证方法,其特征在于,所述步骤1)具体包括步骤:
11)在ArgoUML上新建状态图;
12)根据目标软件需求新建节点,连接节点,并标识节点状态和迁移信息,以及节点的状态属性;
13)最后保存输出ArgoUML状态图文件。
3.根据权利要求1所述的一种基于状态图的代码化验证方法,其特征在于,所述步骤3)具体为:
根据XML语法描述:
从描述文件的UML:SimpleState和UML:Pseudostate标签获取节点状态,
从描述文件的UML:Transition标签获取迁移信息,
从描述文件的UML:TaggedValue标签获取状态属性。
4.根据权利要求1所述的一种基于状态图的代码化验证方法,其特征在于,所述步骤5)具体包括步骤:
51)基于状态信息,得到基于状态的可达性性质描述,供用户二次编辑;
52)基于迁移关系,得到基于迁移的活性性质描述,供用户二次编辑;
53)基于状态属性,得到基于属性的安全性性质描述,供用户二次编辑。
5.根据权利要求1所述的一种基于状态图的代码化验证方法,其特征在于,所述步骤6)具体包括步骤:
61)根据NuSMV执行结果分析性质满足性;
62)将不满性质公式的返回信息进解析,获得路径序列反馈给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610334262.0A CN105955755A (zh) | 2016-05-19 | 2016-05-19 | 一种基于状态图的代码化验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610334262.0A CN105955755A (zh) | 2016-05-19 | 2016-05-19 | 一种基于状态图的代码化验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105955755A true CN105955755A (zh) | 2016-09-21 |
Family
ID=56912626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610334262.0A Pending CN105955755A (zh) | 2016-05-19 | 2016-05-19 | 一种基于状态图的代码化验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105955755A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598578A (zh) * | 2016-12-05 | 2017-04-26 | 沈阳中科创达软件有限公司 | 一种可扩展标记语言解析方法及装置 |
CN108228455A (zh) * | 2017-12-29 | 2018-06-29 | 北京航空航天大学 | 一种软件控制危险分析方法 |
CN108269049A (zh) * | 2016-12-30 | 2018-07-10 | 广东精点数据科技股份有限公司 | 一种状态转移对象的数据检测方法及装置 |
CN111625233A (zh) * | 2020-05-25 | 2020-09-04 | 天津中新智冠信息技术有限公司 | 状态图的配置方法、装置、设备及存储介质 |
CN113673680A (zh) * | 2021-08-20 | 2021-11-19 | 上海大学 | 通过对抗网络自动生成验证性质的模型验证方法和系统 |
CN114564202A (zh) * | 2022-01-13 | 2022-05-31 | 华东师范大学 | 一种基于sat求解器的符号模型检测方法、检测系统及其应用 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673198A (zh) * | 2009-03-06 | 2010-03-17 | 华东师范大学 | 一种验证uml模型中动态行为与时序契约的一致性的方法 |
-
2016
- 2016-05-19 CN CN201610334262.0A patent/CN105955755A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673198A (zh) * | 2009-03-06 | 2010-03-17 | 华东师范大学 | 一种验证uml模型中动态行为与时序契约的一致性的方法 |
Non-Patent Citations (3)
Title |
---|
刘心钰: "基于UML的系统需求形式化分析方法", 《中国优秀硕士学位论文全文数据库科技信息辑》 * |
戴雨婷 等: "基于LSC模型检验的性质抽取", 《上海大学学报自然科学版》 * |
许明 等: "用Python实现从XMI到SMV的程序转换器", 《福州大学学报自然科学版》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598578A (zh) * | 2016-12-05 | 2017-04-26 | 沈阳中科创达软件有限公司 | 一种可扩展标记语言解析方法及装置 |
CN108269049A (zh) * | 2016-12-30 | 2018-07-10 | 广东精点数据科技股份有限公司 | 一种状态转移对象的数据检测方法及装置 |
CN108269049B (zh) * | 2016-12-30 | 2021-01-12 | 广东精点数据科技股份有限公司 | 一种状态转移对象的数据检测方法及装置 |
CN108228455A (zh) * | 2017-12-29 | 2018-06-29 | 北京航空航天大学 | 一种软件控制危险分析方法 |
CN108228455B (zh) * | 2017-12-29 | 2020-06-23 | 北京航空航天大学 | 一种软件控制危险分析方法 |
CN111625233A (zh) * | 2020-05-25 | 2020-09-04 | 天津中新智冠信息技术有限公司 | 状态图的配置方法、装置、设备及存储介质 |
CN113673680A (zh) * | 2021-08-20 | 2021-11-19 | 上海大学 | 通过对抗网络自动生成验证性质的模型验证方法和系统 |
CN113673680B (zh) * | 2021-08-20 | 2023-09-15 | 上海大学 | 通过对抗网络自动生成验证性质的模型验证方法和系统 |
CN114564202A (zh) * | 2022-01-13 | 2022-05-31 | 华东师范大学 | 一种基于sat求解器的符号模型检测方法、检测系统及其应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105955755A (zh) | 一种基于状态图的代码化验证方法 | |
CN104503816B (zh) | 一种硬件语言vhdl到msvl的自动转换系统 | |
CN103336760B (zh) | 一种基于逆向工程自动生成软件文档的方法及装置 | |
US10073827B2 (en) | Method and system to generate a process flow diagram | |
CN104035873A (zh) | 测试代码生成方法及生成装置 | |
CN113987199B (zh) | 一种规范自动解译的bim智能审图方法、系统和介质 | |
CN103593335A (zh) | 基于本体一致性验证推理的中文语义校对方法 | |
CN103914379B (zh) | 故障自动注入与故障检测的方法及其系统 | |
Tiwari et al. | An approach to identify use case scenarios from textual requirements specification | |
CN112231431A (zh) | 一种异常地址识别方法、设备和计算机可读存储介质 | |
CN110162297A (zh) | 一种源代码段自然语言描述自动生成方法及系统 | |
Yamasathien et al. | An approach to construct formal model of business process model from BPMN workflow patterns | |
CN105260300A (zh) | 基于会计准则通用分类标准应用平台的业务测试方法 | |
CN105678055A (zh) | 一种通用的概率安全评价模型转换系统 | |
Yuan et al. | Isea: An interactive pipeline for semantic error analysis of nlp models | |
Jin et al. | ShortcutLens: A visual analytics approach for exploring shortcuts in natural language understanding dataset | |
CN111985232B (zh) | 基于nlp的机载显控系统需求的领域模型提取方法 | |
Kothari | Processing natural language requirement to extract basic elements of a class | |
CN109471637B (zh) | 电路图的审查脚本调试方法 | |
Kumar et al. | Exploring the application of property graph model in visualizing COBie data | |
Pinheiro et al. | ChartText: Linking Text with Charts in Documents | |
Mengyuan et al. | Automatic generation method of airborne display and control system requirement domain model based on NLP | |
CN110928535A (zh) | 衍生变量部署方法、装置、设备及可读存储介质 | |
CN115033280A (zh) | 一种基于知识图谱的需求规格文档自动化生成方法及存储介质 | |
CN101246473B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160921 |