CN107402759B - 基于aadl扩展附件的软件系统堆栈分析方法 - Google Patents
基于aadl扩展附件的软件系统堆栈分析方法 Download PDFInfo
- Publication number
- CN107402759B CN107402759B CN201710597752.4A CN201710597752A CN107402759B CN 107402759 B CN107402759 B CN 107402759B CN 201710597752 A CN201710597752 A CN 201710597752A CN 107402759 B CN107402759 B CN 107402759B
- Authority
- CN
- China
- Prior art keywords
- size
- component
- stack space
- components
- aad
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- 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/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于AADL扩展附件的软件系统堆栈分析方法,属于软件开发技术领域。本发明通过新增属性集,设计了一种基于AADL扩展附件的软件系统堆栈分析方法,其基于树结构实现任务栈空间计算和栈空间调整。利用系统AADL模型信息来构建树,自定义树结点数据结构,计算系统栈空间,并将其与内存大小对比,若设计的栈空间大小超出实际内存大小则进行调整,调整设计的堆栈数据以满足系统要求。该方法可以实现在模型设计阶段进行栈空间分析,提高软件开发效率。
Description
技术领域
本发明涉及软件开发技术领域,具体涉及一种基于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,…,Fn,则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的计算公式如下:
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模型,本发明增加属性集StackAnalysis_Property,设置堆栈分析所需相关属性,每个属性的类型可以是bits、bytes、kbytes。属性集如表1所示。
表1堆栈属性集扩展
令:
·LVTS=Local_Varibales_of_Task_Size;
·LVFS=Local_Variables_of_Function_Size;
·RAFS=Return_Address_of_Function_Size;
·CSF=Code_Size_of_Function
·CallNum表示AADL模型组件v被其他任务组件调用的次数;
·High表示v在树中深度;
·RS表示v的临近子结点栈空间总范围;
·MD表示v的工作模式。
本发明在扩展属性集的基础上,对AADL模型组件中的子程序组件和非子程序组件定义数据结构。
(1)v为非子程序组件
Struct_V={LVTS,CallNum,High,RS,MD}
(2)v为子程序组件
Struct_V={RAFS,LVFS,CSF,CallNum,High,MD}
步骤二 进行树结构的构建和栈空间范围的计算
堆栈分析中,本发明以系统AADL模型的组件为结点(组件具有的堆栈属性为结点数据),并根据结点间包含或调用关系确定各组件在树中的结构关系,从而构建树,也就是说AADL模型的中的特征、连接、工作模式不作为树结点。树结构用T(E,V)表示,其中V是带有属性信息的树结点集合,对于v为AADL模型组件,若v在多个模块中调用,则赋予不同的树结点名称;E为树枝集合,对于uv∈E表示两种情况:一种是v为非子程序组件,u包含v,u包含v;第二种是v是子程序组件,u调用v。
AADL模型中只有子程序可存在于任何其他组件中,故子程序是最小的组件。本发明将子程序组件和非子程序组件作为树结点,树结点的数据结构如步骤一中所述。
设父结点为F,子结点集合FS={S1,S2,…,Sm,F1,F2,…,Fn},FS中有m个子程序组件S1,S2,…,Sm,n个非子程序组件F1,F2,…,Fn,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的计算如下:
由于StackAnalysis_Property中各属性值均有各自的上下限值,将Struct_V中各参数的最小值和最大值代入式1-式4中可得飞控系统栈空间总范围[MinSize,MaxSize],将Struct_V中各参数的最小值代入式1-式4中可得飞控系统总栈空间范围的下限值MinSize,将Struct_V中各参数的最大值代入式1-式4中可得飞控系统总栈空间范围的上限值MaxSize。
计算栈空间范围的流程如图1。
步骤三 进行栈空间调整
通过步骤二中的分析,可以得到一个系统中栈空间范围及关键路径(产生栈空间范围[MinSize,MaxSize]的系统路径)。该范围可能超出实际系统提供的内存值MAXSIZE,即(MinSize>MAXSIZE)||(MaxSize>MAXSIZE&&MinSize≤MAXSIZE)。因此需要对设计的栈空间范围进行调整。
本发明提出一种基于动态规划的栈范围调整算法,通过调整对系统影响最小的组件栈空间范围,重新计算总栈空间以满足资源要求。
算法步骤如表Algorithm 1:
调整栈空间的流程如图2所示,包括以下步骤:
31、选取根据步骤二所得到系统的关键路径上的所有结点,组成集合T,所述关键路径是产生所述总栈空间范围[MinSize,MaxSize]的系统路径;
32、从T中选取深度最大的结点组合集合J;
33、判断J中是否有且只有1个元素,若是,则对该元素代表的组件进行调整,然后跳到步骤35,否则执行步骤34;
34、从J中选取参数调整范围最大的组件作为调整结点;
35、对组件进行调整;
36、计算调整后总栈空间范围是否满足内存条件,若满足则结束,否则将已调整的结点从树中剔除后返回步骤31。
结合AADL模型扩展属性集,通过栈空间计算算法和栈空间调整算法,可以实现在模型设计阶段进行栈空间分析,提高软件开发效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (4)
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为第i种工作模式下的第r个子程序组件的属性集中的属性,表示被调用函数局部变量大小范围;
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,…,Fn,则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的计算公式如下:
StackAnalysis_Property中各属性值均有各自的上下限值,将Struct_V中各参数的最小值和最大值代入式(1)至式(4)中得到系统的总栈空间范围[MinSize,MaxSize]。
2.如权利要求1所述的方法,其特征在于,在步骤二之后还包括以下步骤:
步骤三、进行栈空间调整
31、选取根据步骤二所得到系统的关键路径上的所有结点,组成集合T,所述关键路径是产生所述总栈空间范围[MinSize,MaxSize]的系统路径;
32、从T中选取深度最大的结点组合集合J;
33、判断J中是否有且只有1个元素,若是,则对该元素代表的组件进行调整,然后跳到步骤35,否则执行步骤34;
34、从J中选取参数调整范围最大的组件作为调整结点;
35、对组件进行调整;
36、计算调整后总栈空间范围是否满足内存条件,若满足则结束,否则将已调整的结点从树中剔除后返回步骤31。
3.如权利要求1所述的方法,其特征在于,步骤二中将Struct_V中各参数的最小值和最大值代入式(1)-式(4)中得到系统的总栈空间范围[MinSize,MaxSize]具体为:将Struct_V中各参数的最小值代入式(1)至式(4)中得到系统总栈空间范围的下限值MinSize,将Struct_V中各参数的最大值代入式(1)至式(4)中得到系统总栈空间范围的上限值MaxSize。
4.如权利要求1或2或3所述的方法,其特征在于,所述系统为飞控系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710597752.4A CN107402759B (zh) | 2017-07-20 | 2017-07-20 | 基于aadl扩展附件的软件系统堆栈分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710597752.4A CN107402759B (zh) | 2017-07-20 | 2017-07-20 | 基于aadl扩展附件的软件系统堆栈分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107402759A CN107402759A (zh) | 2017-11-28 |
CN107402759B true CN107402759B (zh) | 2020-07-17 |
Family
ID=60401045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710597752.4A Active CN107402759B (zh) | 2017-07-20 | 2017-07-20 | 基于aadl扩展附件的软件系统堆栈分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107402759B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272551A (zh) * | 2007-03-23 | 2008-09-24 | 中兴通讯股份有限公司 | 一种嵌入式系统最大栈空间的设定方法 |
CN101876923A (zh) * | 2009-11-27 | 2010-11-03 | 中国科学院声学研究所 | 一种用于精确估计嵌入式系统中堆栈需求量的方法 |
CN105468965A (zh) * | 2014-08-21 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种动态堆栈内存管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100131803A1 (en) * | 2008-11-25 | 2010-05-27 | Express Logic | Computation of stack usage in embedded computing systems |
-
2017
- 2017-07-20 CN CN201710597752.4A patent/CN107402759B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272551A (zh) * | 2007-03-23 | 2008-09-24 | 中兴通讯股份有限公司 | 一种嵌入式系统最大栈空间的设定方法 |
CN101876923A (zh) * | 2009-11-27 | 2010-11-03 | 中国科学院声学研究所 | 一种用于精确估计嵌入式系统中堆栈需求量的方法 |
CN105468965A (zh) * | 2014-08-21 | 2016-04-06 | 西安慧泽知识产权运营管理有限公司 | 一种动态堆栈内存管理方法 |
Non-Patent Citations (1)
Title |
---|
F. Singhoff, J. Legrand, L. Nana, L. Marc'e.Scheduling and Memory requirements analysis with AADL.《ACM SIGAda international conference》.2005, * |
Also Published As
Publication number | Publication date |
---|---|
CN107402759A (zh) | 2017-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111427681B (zh) | 边缘计算中基于资源监控的实时任务匹配调度系统和方法 | |
Snyman et al. | The Dynamic-Q optimization method: an alternative to SQP? | |
WO2003100598A1 (en) | Dynamical methods for solving large-scale discrete and continuous optimization problems | |
CN110209830A (zh) | 实体链接方法、装置、设备、计算机可读存储介质 | |
US20200097487A1 (en) | Novel olap pre-calculation model and modeling method | |
US20100080148A1 (en) | Adaptive enterprise service bus (esb) runtime system and method | |
US10896270B2 (en) | Method for solving multi-fidelity optimization problems | |
CN113255263B (zh) | 颗粒带分割方法、装置、计算机设备和存储介质 | |
Aish et al. | Progress towards multi-criteria design optimisation using DesignScript with SMART form, robot structural analysis and Ecotect building performance analysis | |
Janssen | Dexen: A scalable and extensible platform for experimenting with population-based design exploration algorithms | |
Katranuschkov et al. | Extending BIM for energy simulation and design tasks | |
CN107402759B (zh) | 基于aadl扩展附件的软件系统堆栈分析方法 | |
EP1872287B1 (en) | Customized processing in association with finite element analysis | |
CN103400050A (zh) | 一种多人协同的核反应堆风险确定方法及系统 | |
US8312008B2 (en) | Docbase management system and implementing method thereof | |
CN115796813A (zh) | 工程勘察信息数字化采集、管理及综合应用方法及系统 | |
CN115033212A (zh) | 航电系统图元模型一体化构建方法、装置、计算机设备 | |
CN108108472B (zh) | 数据处理方法以及服务器 | |
Bestavros et al. | Safe Compositional Network Sketches: Tool & Use Cases | |
CN105573717A (zh) | 一种面向多核处理器的程序划分方法及装置 | |
KR101679153B1 (ko) | 객체지향 물리적 모델링을 기초로 하는 건물 에너지 모델을 생성하고 이를 이용한 건물 성능 분석을 수행하기 위한 방법 | |
CN117422426B (zh) | 基于水运工程bim模型的信息优化方法及系统 | |
CN116797263B (zh) | 一种建筑工程造价核算管理方法及系统 | |
Wang et al. | A component retrieval method based on feature tree matching | |
Zhu et al. | A hybrid mapping and scheduling algorithm for distributed workflow applications in a heterogeneous computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |