基于AADL扩展附件的软件系统堆栈分析方法技术方案

技术编号:16662497 阅读:35 留言:0更新日期:2017-11-30 11:46
本发明专利技术涉及一种基于AADL扩展附件的软件系统堆栈分析方法,属于软件开发技术领域。本发明专利技术通过新增属性集,设计了一种基于AADL扩展附件的软件系统堆栈分析方法,其基于树结构实现任务栈空间计算和栈空间调整。利用系统AADL模型信息来构建树,自定义树结点数据结构,计算系统栈空间,并将其与内存大小对比,若设计的栈空间大小超出实际内存大小则进行调整,调整设计的堆栈数据以满足系统要求。该方法可以实现在模型设计阶段进行栈空间分析,提高软件开发效率。

【技术实现步骤摘要】
基于AADL扩展附件的软件系统堆栈分析方法
本专利技术涉及软件开发
,具体涉及一种基于AADL扩展附件的软件系统堆栈分析方法。
技术介绍
堆栈分析是系统开发一个重要步骤。给每个任务分配合理的栈空间,一方面确保任务顺利完成,另一方面尽量避免空间资源浪费。在软件开发过程中,应对任务栈空间进行预测和合理分配。利用模型驱动软件开发,在开发早期对模型的分析和测试,采用量化可行的方法提前验证软件体系结构,可以减少后期集成验证中发现设计错误的情况,提高开发效率。传统的堆栈分析是在已有代码基础上进行分析,或在内存允许范围内尽量分配较大的栈空间以确保任务顺利完成。前者的分析集中到软件设计后期,此时若进行栈空间调整则需要修改代码,工作量大;后者分配的栈空间内存浪费严重且不确定性高,对于任务关键系统危险程度较高。AADL模型对嵌入式系统有良好的支持,在安全关键嵌入式系统的分析和设计中广泛使用。对模型的分析可以将分析集中在软件设计早期,但目前对任务关键系统的AADL建模停留在对某个子模块的建模,缺乏对系统整体进行预测,无法实现利用模型在软件开发早期进行堆栈分析的功能。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是:如何实现在模型设计阶段进行栈空间分析,提高软件开发效率。(二)技术方案为了解决上述技术问题,本专利技术提供了一种基于AADL扩展附件的软件系统堆栈分析方法,包括以下步骤:步骤一、进行AADL堆栈属性集的扩展和数据结构的定义首先基于AADL模型增加属性集StackAnalysis_Property,设置堆栈分析所需的相关属性,每个属性的类型为bits、bytes或kbytes;令:LVTS=Local_Varibales_of_Task_Size,Local_Varibales_of_Task_Size为属性集中的属性,表示任务局部变量大小范围;LVFS=Local_Variables_of_Function_Size,Local_Variables_of_Function_Size为属性集中的属性,表示被调用函数局部变量大小范围;RAFS=Return_Address_of_Function_Size,Return_Address_of_Function_Size为属性集中的属性,表示被调用函数返回地址大小范围;CSF=Code_Size_of_Function,Code_Size_of_Function为属性集中的属性,表示被调用函数代码空间大小范围;CallNum表示AADL模型组件v被其他任务组件调用的次数;High表示v在树中深度;RS表示v的临近子结点栈空间总范围;MD表示v的工作模式;其次,在扩展属性集的基础上,对AADL模型组件中的子程序组件和非子程序组件定义数据结构:v为非子程序组件,其数据结构:Struct_V={LVTS,CallNum,High,RS,MD}v为子程序组件,其数据结构:Struct_V={RAFS,LVFS,CSF,CallNum,High,MD}步骤二、进行树结构的构建和总栈空间范围的计算以系统的AADL模型的组件为结点,组件具有的堆栈属性为结点数据,并根据结点间包含或调用关系确定各组件在树中的结构关系,从而构建树;树结构用T(E,V)表示,其中V是带有属性信息的树结点集合,对于v为AADL模型组件,若v在多个模块中调用,则赋予不同的树结点名称;E为树枝集合,对于uv∈E表示两种情况:一种是v为非子程序组件,则u包含v,u为v的父结点;第二种是v是子程序组件,则u调用v,u为v的父结点;将子程序组件和非子程序组件作为树中的结点,按步骤一的定义给出这两种组件结点的数据结构;设父结点为F,子结点集合FS={S1,S2,…,Sm,F1,F2,…,Fn},FS中有m个子程序组件S1,S2,…,Sm,n个非子程序组件F1,F2,…,Fm,则F的总栈空间计算公式为:TotalSize=max{MDSizei},i=1,2,...,N(1)其中,N代表FS中的工作模式数目,MDSizei表示同一种工作模式下的栈空间大小,设第i种工作模式下有t个子程序组件,p个非子程序组件,则公式(1)中的:其中,Sir表示第i种工作模式下的第r个子程序组件的栈空间大小,r=1,2,…t;Fij表示在第i种工作模式下第j个非子程序组件的栈空间大小;公式(2)中的Sir和Fij的计算公式如下:Fij=LVTSij+RSij,其中其中,nn表示在第i种工作模式下第j个非子程序组件的临近子结点个数,分别表示在第i种工作模式下第j个非子程序组件的第q个临近子结点对应的LVTS、RS表示的数据信息;其中,sn表示Sir的调用子程序组件个数,分别表示Sir的第i种工作模式下的第r个子程序组件的第q个临近子结点对应的LVFS、RAFS、CSF表示数据信息;StackAnalysis_Property中各属性值均有各自的上下限值,将Struct_V中各参数的最小值和最大值代入式(1)至式(4)中得到系统的总栈空间范围[MinSize,MaxSize]。优选地,在步骤二之后还包括以下步骤:步骤三、进行栈空间调整31、选取根据步骤二所得到系统的关键路径上的所有结点,组成集合T,所述关键路径是产生所述总栈空间范围[MinSize,MaxSize]的系统路径;32、从T中选取深度最大的结点组合集合J;33、判断J中是否有且只有1个元素,若是,则对该元素代表的组件进行调整,然后跳到步骤35,否则执行步骤34;34、从J中选取参数调整范围最大的组件作为调整结点;35、对组件进行调整;36、计算调整后总栈空间范围是否满足内存条件,若满足则结束,否则将已调整的结点从树中剔除后返回步骤31。优选地,步骤二中将Struct_V中各参数的最小值和最大值代入式(1)-式(4)中得到系统的总栈空间范围[MinSize,MaxSize]具体为:将Struct_V中各参数的最小值代入式(1)至式(4)中得到系统总栈空间范围的下限值MinSize,将Struct_V中各参数的最大值代入式(1)至式(4)中得到系统总栈空间范围的上限值MaxSize。优选地,所述系统为飞控系统。(三)有益效果本专利技术通过新增属性集,设计了一种基于AADL扩展附件的软件系统堆栈分析方法,其基于树结构实现任务栈空间计算和栈空间调整。利用系统AADL模型信息来构建树,自定义树结点数据结构,计算系统栈空间,并将其与内存大小对比,若设计的栈空间大小超出实际内存大小则进行调整,调整设计的堆栈数据以满足系统要求。该方法可以实现在模型设计阶段进行栈空间分析,提高软件开发效率。附图说明图1为本专利技术的方法中栈空间计算流程图;图2为本专利技术的方法中栈空间调整流程图。具体实施方式为使本专利技术的目的、内容、和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。现有的AADL模型属性中缺乏计算任务栈空间的相关属性。本专利技术增加属性集StackAnalysis_Property,设置堆栈分析所需相关属性。利用新增属性集,本专利技术利用系统AADL模型信息来构建树,自定义树结点数据结构,计算系统栈空间,并将其与内存大小对比,若设计的栈空间大小超出实际内存大小则使用调整算本文档来自技高网...
基于AADL扩展附件的软件系统堆栈分析方法

【技术保护点】
一种基于AADL扩展附件的软件系统堆栈分析方法,其特征在于,包括以下步骤:步骤一、进行AADL堆栈属性集的扩展和数据结构的定义首先基于AADL模型增加属性集StackAnalysis_Property,设置堆栈分析所需的相关属性,每个属性的类型为bits、bytes或kbytes;令:LVTS=Local_Varibales_of_Task_Size,Local_Varibales_of_Task_Size为属性集中的属性,表示任务局部变量大小范围;LVFS=Local_Variables_of_Function_Size,Local_Variables_of_Function_Size为属性集中的属性,表示被调用函数局部变量大小范围;RAFS=Return_Address_of_Function_Size,Return_Address_of_Function_Size为属性集中的属性,表示被调用函数返回地址大小范围;CSF=Code_Size_of_Function,Code_Size_of_Function为属性集中的属性,表示被调用函数代码空间大小范围;CallNum表示AADL模型组件v被其他任务组件调用的次数;High表示v在树中深度;RS表示v的临近子结点栈空间总范围;MD表示v的工作模式;其次,在扩展属性集的基础上,对AADL模型组件中的子程序组件和非子程序组件定义数据结构:v为非子程序组件,其数据结构:Struct_V={LVTS,CallNum,High,RS,MD}v为子程序组件,其数据结构:Struct_V={RAFS,LVFS,CSF,CallNum,High,MD}步骤二、进行树结构的构建和总栈空间范围的计算以系统的AADL模型的组件为结点,组件具有的堆栈属性为结点数据,并根据结点间包含或调用关系确定各组件在树中的结构关系,从而构建树;树结构用T(E,V)表示,其中V是带有属性信息的树结点集合,对于...

【技术特征摘要】
1.一种基于AADL扩展附件的软件系统堆栈分析方法,其特征在于,包括以下步骤:步骤一、进行AADL堆栈属性集的扩展和数据结构的定义首先基于AADL模型增加属性集StackAnalysis_Property,设置堆栈分析所需的相关属性,每个属性的类型为bits、bytes或kbytes;令:LVTS=Local_Varibales_of_Task_Size,Local_Varibales_of_Task_Size为属性集中的属性,表示任务局部变量大小范围;LVFS=Local_Variables_of_Function_Size,Local_Variables_of_Function_Size为属性集中的属性,表示被调用函数局部变量大小范围;RAFS=Return_Address_of_Function_Size,Return_Address_of_Function_Size为属性集中的属性,表示被调用函数返回地址大小范围;CSF=Code_Size_of_Function,Code_Size_of_Function为属性集中的属性,表示被调用函数代码空间大小范围;CallNum表示AADL模型组件v被其他任务组件调用的次数;High表示v在树中深度;RS表示v的临近子结点栈空间总范围;MD表示v的工作模式;其次,在扩展属性集的基础上,对AADL模型组件中的子程序组件和非子程序组件定义数据结构:v为非子程序组件,其数据结构:Struct_V={LVTS,CallNum,High,RS,MD}v为子程序组件,其数据结构:Struct_V={RAFS,LVFS,CSF,CallNum,High,MD}步骤二、进行树结构的构建和总栈空间范围的计算以系统的AADL模型的组件为结点,组件具有的堆栈属性为结点数据,并根据结点间包含或调用关系确定各组件在树中的结构关系,从而构建树;树结构用T(E,V)表示,其中V是带有属性信息的树结点集合,对于v为AADL模型组件,若v在多个模块中调用,则赋予不同的树结点名称;E为树枝集合,对于uv∈E表示两种情况:一种是v为非子程序组件,则u包含v,u为v的父结点;第二种是v是子程序组件,则u调用v,u为v的父结点;将子程序组件和非子程序组件作为树中的结点,按步骤一的定义给出这两种组件结点的数据结构;设父结点为F,子结点集合FS={S1,S2,…,Sm,F1,F2,…,Fn},FS中有m个子程序组件S1,S2,…,Sm,n个非子程序组件F1,F2,…,Fm,则F的总栈空间计算公式为:TotalSize=max{MDSizei},i=1,2,......

【专利技术属性】
技术研发人员:杨雨婷柯文俊达一菲侯敏陈静王泊涵王坤龙
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1