一种基于uppaal模型的汽车软件源代码仿真测试方法

文档序号:6378581阅读:506来源:国知局
专利名称:一种基于uppaal模型的汽车软件源代码仿真测试方法
技术领域
本发明涉及一种软件工程领域,尤其涉及一种基于UPPAAL模型的汽车软件源代码仿真测试方法。
背景技术
随着汽车智能化程度的不断提高,更多的控制功能趋于使用软件来实现,导 致汽车软件的规模和复杂度不断增长。Manfred Broy在文献[M. Broy, I. H. Kruger, A.PretschnerjC. Salzmann. Engineering Automotive Software. Proceedings of theIEEE, 95(2) :356-373, 2007.]中预测,“未来五年内上市的下一代高档轿车上,软件的总量将达到1GB,软件将成为汽车价值的主要贡献者,同时软件开发的比重和成本也将不断提高”。随着汽车上软件比重的不断提高,汽车软件开发面临着越来越多的挑战,这些挑战主要来自如下几个方面(I)汽车系统是一种嵌入式实时性系统,具有严格的时间约束性,这种时间约束性与软件系统的可控的物理工作过程密切相关,汽车系统的安全性主要依靠软件系统的可控的物理工作过程的正确性;(2)汽车系统是一种复杂而庞大的嵌入式计算机系统,包括数以万计的、与需求相关的功能条目;(3)汽车系统是一种分布式计算机系统,包括大量的用于诸如ECU、激励器等组件间交互信息的信号;(4)电子产品和汽车电子系统功能的复杂性日益增加。面对这些挑战,需要新的方法、模型和工具来确保汽车系统的安全性和可靠性。对于汽车系统这样一种安全关键系统而言,设计者必须深刻理解系统的可控的物理工作过程,当系统的可控的物理工作过程是正确的,就能确保系统处于安全状态。AndersP. Ravn>Hans Rischel 和Kirsten Mark Hansen在文献[A. P. Ravn, H. RischeI,K. M. Hansen.Specifying and Verifying Requirements of Real-Time Systems. IEEE Transactionson Software Engineering,19 (I) : 41-55,1993.]中指出“设计嵌入式计算机系统的工程师必须深刻理解系统可控的物理工作过程这一特性,当这个系统是安全关键性系统时,这种洞察力被明确并形成设计基础就显得尤为重要”,这一问题已经引起了学术界的广泛认识。近些年来出现了一些基于模型的实时系统分析工具,如SaveCCM(SaveComp ComponentModel ) [M. Akerholm, J. Carlson, J. Hakansson, H. Hanssonj M. Nolinj T. Noltej andP.Pettersson. The SaveCCM Language Reference Manual. MRTC report ISSN 1404-3041ISRN MDHMRTC-207/2007-l-SE,Malardalen Real-Time Research Centre, MalardalenUniversity, January, 2007. ]、KR0N0S[C. Daws, A. Oliveroj S. Tripakis and S. Yovine.The tool Kronos. R. Alurj T. A. Henzinger and E. D. Sontag (Eds. ) Hybrid Systems III,LNCSj Springer, vol. 1066,1996,pp. 208-219,doi:10. 1007/BFb0020947. ]、TIMES[T.AmnelI, E. Fersman, L. Mokrushin, P. Pettersson, W. Yi. Times-a tool for modelling andimplementation of embedded systems. K. G. Larsen and P. NiebertCEds. )F0RMATS 2003,LNCS, Springer, vol. 2791,Sep.2003,pp. 60-72,doi :10. 1007/978-3-540-40903-8—6·]和 UPPAAL [G. Behrmann,A. David,K. G. Larsen. A Tutorial on UPPAAL M. Bernardo andF. Corradini (Eds. ) SFM-RT 2004,LNCS, Springer, vol. 3185,Sep. 2004,pp. 200 -236,doi:10. 1007/978-3-540-30080-9_7. ][R. Alur, D. L. Dill.A Theory of TimedAutomata. Theoretical Computer Science,126(2) : 183-235,1994.][G. Behrmann, J.Bengtsson,A.David,K.G.Larsen,P.Pettersson,and ff.Yi.Uppaal implementationsecrets, ff. Damm and E. - R. Olderog (Eds. ) FTRTFT 2002, LNCS, Springer, vol. 2469, Sep.2002,pp. 3-22,doi :10. 1007/3-540-45739-91.],这些工具可以用于分析和验证系统。目前它们已经足够成熟可以应用在实时系统的工业开发中,软件设计人员可以利用这些工具的分析结果撰写软件源代码,但是却无法确保与系统的可控的物理工作过程相关的源代码的正确性。目前,汽车软件中与系统的可控的物理工作过程相关的源代码测试大多与软件测试一起进行,采用手工测试的方法。软件设计人员根据技术文档分析系统的功能,进行代码撰写,完成软件设计。然后测试人员进行常规的软件测试,经常需要利用各种测试工具根据技术文档撰写大量的测试代码来测试软件的工作过程。最后测试人员将软件下载到已经设 的成本、降低软件开发的速度同时也无法保证软件开发的质量。如果能够利用需求分析阶段的行为模型来仿真测试与系统的可控的物理工作过程相关的源代码,势必将取得良好的效果。

发明内容
本发明的目的就是为了解决上述问题,提供一种基于UPPAAL模型的汽车软件源代码仿真测试方法,它能够确保汽车软件中与可控的物理工作过程相关的源代码的正确性,具有确保汽车系统的安全性、降低软件开发的成本、加快软件开发速度和提高软件质量等优点。为了实现上述目的,本发明采用如下技术方案基于UPPAAL模型的汽车软件源代码仿真测试实现步骤如下(I)根据需求规格说明,构建UPPAAL模型,构建好的UPPAAL模型中的全局声明部分定义的数据变量和管道(channels)变量就是测试系统中的输入变量和输出变量,利用构建好的UPPAAL模型进行仿真和功能需求验证;(2)根据UPPAAL模型的定义或者通过UPPAAL仿真器,确定测试系统的输入队列和
输出变量;(3 )将UPPAAL模型转化为C++代码;(4)根据测试系统的输入变量和输出变量,确定软件源代码中相应的输入变量和输出变量,在软件源代码和测试系统中的输入变量和输出变量之间建立映射关系;(5)设置测试系统的输入队列,运行代码转化后的UPPAAL模型和软件源代码,并记录它们的输出结果,最后判断它们的输出结果是否一致,如果一致就说明与系统的可控的物理工作过程相关的源代码是正确的,否则就存在错误。所述步骤(3)的实现步骤为(3-1)利用 MSXML(Microsoft XML Core Services)技术,通过 DOM 接口从 UPPAAL模型的XML文件中获取到UPPAAL模型信息。DOM是万维网联盟的推荐标准,是表示诸如XML,HTML格式文档和访问、操作构成文档的各种元素的应用程序接口。DOM将一个XML文档作为一种树形结构并声明成一个文档对象,通过使用该文档对象的方法和属性实现对XML文件中数据的管理。(3-2)生成 UPPAAL 模型的 C++ 代码的第一部分 CUppaalLocation,CUppaalTransition 和 CUppaalTemplate 三个 C++ 类,它们分别用来描述位置(locations)元素、转换(transition)元素和模板(templates)元素的数据结构,这部分代码是固定的,只需要产生一次,将它们写为C++类库。(3-3)将UPPAAL系统编辑器中的变量声明部分(包括全局声明、模板的声明以及模板的参数)和时间自动机图形描述中的表达式(卫士条件(guard)表达式、赋值操作表达式和不变式(invariants))进行C++代码表示。定义一组将UPPAAL模型中变量、参数和表达式转化为C++代码的转化规则
Rl:将UPPAAL模型中的全局声明部分转化为C++代码中的全局声明;R2:将UPPAAL模板中的局部声明中的元素转化为C++代码中模板类对象的成员变量;R3:将UPPAAL模板中的参数转化为C++代码中模板类对象的成员变量;R4:将UPPAAL中的时钟变量转换为C++代码中的一种整形变量,这类整形变量与用于计时的线程相关;R5:将UPPAAL中的有界的整形变量转化为C++代码中的一种整形变量,这类整形变量有一个对其限定取值范围的声明;R6:将UPPAAL中的同步管道转化为一种字符串变量,这类字符串变量表示它们作为同步管道的特殊用途;R7:将UPPAAL中的不变式、卫士条件表达式和赋值操作表达式转化为C++代码中的全局函数。(3-4)生成UPPAAL模型的C++代码的第二部分C++类CUppaalModel,用于描述UPPAAL模型中的位置、转换和模板的信息,以下是CUppaalModeI类定义的格式#include flUppaalTemplate .hnclass CUppaalModei
{
public:
CUppaalMoclel();virtual UppaaiModeI();
CSlring gelModelFilePalh();
CTypedPtrArray<CObArray, CUppaalTemplate *> * getPtrArrayTemplate(); private;
void inhUppaaiModelO;
/* Template*/
void sctUpipaalTcmplatcOfCUppaalTcmplatc * uppaalTcmplatcO);
void setPtrArrayl ocarionO(CTypedPirArray<CObArray, CLlppaali ,ocation *> *ptrArrayLocationO);
void setPtrArray l mnsitionOiC IypedPtrAiray^'CObArray, CUppaal l ransition*
ptr4rrayTransitionO,CTvpedPtrAtTay<CObAn'ay. CUppaalLocation *> ^pirArrayLocationO);/isTemplare5V
void selUppaalTeiiipIatel(CUppaalTeniplaie * uppaalTempiaiel),
void setPtr ArrayLocation I (CTypedPtrArrayi-CObAiTayri CUppaalLocation *> *ptrArrayLocationl);
void setPtrArrayTransition I (CTypecf Ptr Array<COb Array, CUppaalTransition *> *ptrArrayTransitionI,CTypedPtrArray-CObArrayr CUppaalLocation *> i<ptrArrayLocationl);
/* Template*/
I冬 Template*/

ClJppaaiLociTiun * getLocationById(CString byId,CTypedPtrArray<C()bArray,CUppiialLocation *、> ^ptrArrayLocation);
C String m_strModelFi!ePath;
rTypedPirAri.ay<CT)bAiTay, ClJppaalTemplate *> * m_ptrArrayTeniplaie;
};本发明的有益效果本发明以汽车软件中与可控的物理工作过程相关的源代码为研究对象,研究如何能够利用需求分析阶段的UPPAAL模型来仿真测试软件的源代码。使用本发明能够确保汽车软件中与可控的物理工作过程相关的源代码的正确性 ,从而确保汽车系统的安全性,能够降低软件开发的成本、加快软件开发速度和提高软件质量。本发明结合我国汽车软件开发中的实际需求,解决汽车软件开发和测试中的关键性问题,其研究成果将应用到汽车电子产品研制过程中,力求提高汽车电子控制软件的质量,产生重要社会经济效益。


图I基于UPPAAL模型的汽车软件源代码仿真测试系统的工作原理;图2LAMPCTRL和DRIVER的时间自动机。
具体实施例方式下面结合附图与实例对本发明作进一步说明。基于UPPAAL模型的汽车软件源代码仿真测试系统的工作原理如图I所示。需求说明文档可以被形式化表示为UPPAAL模型,UPPAAL模型能够用于验证需求和产生软件源代码。为了实现源代码仿真测试系统的自动性和实时性,需要将UPPAAL模型转化为C++代码。源代码仿真测试系统的输入是一个三元组(d,e, t)的队列,其中d是数据变量的集合,e是事件变量的集合,t是时钟约束的集合。一个输入元组(d,e, t)表示在数据输入为d、时钟约束为t的情况下,发出e这个事件请求信息。当软件源代码和代码转化后的UPPAAL模型收到输入(d,e,t)后,将分别产生一个数据变量集合的输出结果。在软件源代码和代码转化后的UPPAAL模型处理完所有的输入数据(三元组(d,e, t)的队列)后,如果它们的输出结果一致就可以判定源代码是正确的,否则就存在错误。所述UPPAAL由瑞典Uppsala大学和丹麦Aalborg大学于1995年联合提出,是一种基于时间自动机理论而构建的实时系统建模、仿真和验证工具,UPPAAL建模语言对传统的时间自动机进行了一些扩展,引入了一些额外的特性,UPPAAL中的表达式可以使用时钟变量和有界的整型变量(或者整型数组),这一扩展大大提高了时间自动机的表达能力,可以表达更加复杂的卫士条件表达式、赋值操作表达式和不变式。UPPAAL模型包括一个非确定的并行过程(process)的积,每一个过程被描述为由有限控制结构、实数值时钟和变量组成的时间自动机,过程之间通过管道和(或者)共享变量来进行通讯,管道被定义为形如chanc,带有标签为c!的边可以与标签为c 的边同步,管道用于保证不同自动机间的两个转换同时执行。UPPAAL主要通过快速搜索机制来验证时钟约束和可达性,它的主要优点是高效性和方便性。所述时间自动机由R. Alur和D. Dill提出,是一种扩展了时钟变量的有限状态机,使用稠密时间模型,时钟变量使用有限的实数值,所有的时钟同步变化,在应用中经常将若干个时间自动机通过时钟集合和操作组成时间自动机网络。在给出时间自动机的定义之前,先给出如下的定义设C为时钟变量的集合,B(C)是简单条件或者的并集,其中
权利要求
1.一种基于UPPAAL模型的汽车软件源代码仿真测试方法,其特征是,实现步骤如下 (O根据需求规格说明,构建UPPAAL模型,构建好的UPPAAL模型中的全局声明部分定义的数据变量和管道变量就是测试系统中的输入变量和输出变量,利用构建好的UPPAAL模型进行仿真和功能需求验证; (2)根据UPPAAL模型的定义或者通过UPPAAL仿真器,确定测试系统的输入队列和输出变量; (3)将UPPAAL模型转化为C++代码; (4)根据测试系统的输入变量和输出变量,确定软件源代码中相应的输入变量和输出变量,在软件源代码和测试系统中的输入变量和输出变量之间建立映射关系; (5)设置测试系统的输入队列,运行代码转化后的UPPAAL模型和软件源代码,并记录它们的输出结果,最后判断它们的输出结果是否一致,如果一致就说明与系统的可控的物理工作过程相关的源代码是正确的,否则就存在错误。
2.如权利要求I所述的一种基于UPPAAL模型的汽车软件源代码仿真测试方法,其特征是,所述步骤(3)的具体步骤为 (3-1)利用MSXML技术,通过DOM接口从UPPAAL模型的XML文件中获取到UPPAAL模型信息;DOM是万维网联盟的推荐标准,是表示诸如XML、HTML格式文档和访问、操作构成文档的各种元素的应用程序接口 ;D0M将一个XML文档作为一种树形结构并声明成一个文档对象,通过使用该文档对象的方法和属性实现对XML文件中数据的管理; (3-2)生成 UPPAAL 模型的 C++ 代码的第一部分 CUppaalLocation,CUppaalTransition和CUppaalTemplate三个C++类,它们分别用来描述位置元素、转换元素和模板元素的数据结构,这部分代码是固定的,只需要产生一次,将它们写为C++类库; (3-3)将UPPAAL系统编辑器中的变量声明部分和时间自动机图形描述中的表达式进行C++代码表示;其中,变量声明部分包括全局声明、模板的声明以及模板的参数,时间自动机图形描述中的表达式包括卫士条件表达式、赋值操作表达式和不变式;定义一组将UPPAAL模型中变量、参数和表达式转化为C++代码的转化规则 Rl:将UPPAAL模型中的全局声明部分转化为C++代码中的全局声明; R2:将UPPAAL模板中的局部声明中的元素转化为C++代码中模板类对象的成员变量; R3:将UPPAAL模板中的参数转化为C++代码中模板类对象的成员变量; R4:将UPPAAL中的时钟变量转换为C++代码中的一种整形变量,这类整形变量与用于计时的线程相关; R5:将UPPAAL中的有界的整形变量转化为C++代码中的一种整形变量,这类整形变量有一个对其限定取值范围的声明; R6:将UPPAAL中的同步管道转化为一种字符串变量,这类字符串变量表示它们作为同步管道的特殊用途; R7:将UPPAAL中的不变式、卫士条件表达式和赋值操作表达式转化为C++代码中的全局函数; (3-4)生成UPPAAL模型的C++代码的第二部分C++类CUppaalModel,用于描述UPPAAL模型中的位置、转换和模板的信息,以下是CUppaalModel类定义的格式#include MUppaalTemplate.h"class Cl ippaal Mode!{public:CUppaaiModcli);virtual -CUppaalModelO; CString gciModc!FilcPath();CTypedPtrArray<CObArray, CTJppaalTemplate *> * getPtrArrayTenip!ate();private:void initlJppaalModelO;产 Template*/ void setljppaalTemplateO(Cl JppaaITemplate * uppaalTeniplateO); void sctPtr Array LocationO(CTypcdPtrArray<COb Array, CUppaalLocation φ> *ptrArrayLocationO);void setPtr/\n*ayTransitionO(CTypedPtiv\rmy<COb/uTay, CUppaalTransition *> *ptrArrayTransiuonOX^TvpedPtrAiray<CObArray, CUppaalLocation ;iipl.rArrayLocationO);/^Template*/void setUppaalTemplate !(CUppaalTempIate * uppaalTemplate I );void setPtrArrayLocation I (CTypedPtrArray^rCObArray, CUppaalLocation*ptrArrayLocation I):void setPtrArrayTnmsition] (CTypedPtrArray<COb/\iTay.,. CUppaalTransition *> *ptrArray l ransiLion I !ypedPtrArray<CObArray, CUppaalLocation *> ^pirArrayLocarion I);Templateih/ Ztii Template*/ CUppaalLocation * getLocationById(C String byld, CTypedPtrArray<C ObArray5CUppaalLocation *> ptrArrayLocation);CString m_strModeIFiiePath; C iypedPtrArmy<CObArray,. CLppaalTempiate 〃> * m_ptrAiray i emplate;};o
全文摘要
本发明属于软件工程领域,针对汽车软件系统中与可控的物理工作过程相关的源代码测试中存在的问题,同时考虑到UPPAAL模型的特性,设计了一种汽车软件源代码仿真测试系统。该系统的输入是由数据变量的集合、事件变量的集合和时钟约束的集合组成的三元组的队列,输出是数据变量的集合。为了实现源代码仿真测试系统的自动性和实时性,将UPPAAL模型转化为C++代码。在软件源代码和代码转化后的UPPAAL模型处理完所有的输入数据后,如果它们的输出结果一致就可以判定源代码是正确的,否则就存在错误。使用本发明能够测试汽车软件中与可控的物理工作过程相关的源代码,从而确保系统的安全性,并且能够降低软件开发成本、加快软件开发速度和提高软件的质量。
文档编号G06F11/36GK102866952SQ20121038223
公开日2013年1月9日 申请日期2012年10月11日 优先权日2012年10月11日
发明者闫旭琴, 刘晓建, 王知学, 成巍 申请人:山东省科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1