随着嵌入式软件系统在汽车、核工业、航空、航天等安全关键领域的广泛应用,其失效将会导致财产的损失、环境的破坏甚至人员的伤亡,使得保障软件安全性成为系统开发过程中的重要部分.传统的安全性分析方法主要应用在软件的需求分析阶段和设计阶段,然而需求与设计之间的鸿沟却一直是软件工程领域的一大难题.正是由于这一鸿沟的存在,使得需求分析阶段的安全性分析结果难以完整而详尽地反映在软件设计中.其根本原因是:当前的软件需求主要通过自然语言描述,存在二义性与模糊性,且难以进行自动化处理.为了解决这一问题,面向构件化嵌入式软件,首先提出了一种半结构化的限定自然语言需求模板用于需求规约,能够有效地降低自然语言需求的二义性与模糊性;然后,为了降低自动化处理的复杂性,采用需求抽象语法图作为中间模型,实现基于限定自然语言需求模板规约的软件需求与AADL模型之间的转换,并在此过程中自动记录两者之间的可追踪关系;最后,基于AADL开源工具OSATE对所提出方法进行了插件实现,并通过航天器导航、制导与控制系统(guidance,navigation and control,简称GNC)进行了实例性验证.
模型检验是硬件和软件形式化验证最成功的技术之一.目前大部分的模型检验技术是基于状态的而不考虑迁移上的操作和事件.这导致模型检验在验证使用事件进行交互的组件系统中面临新的困难,因此需要新的规约技术对状态事件系统进行规约.状态事件线性时序逻辑(State/Event Linear Temporal Logic,SE-LTL)给出了一种简洁和直接的方式表达包含状态和事件的系统属性.在SE-LTL中,状态和事件都可以作为原子命题.基于自动机理论的线性时序逻辑(Linear Temporal Logic,LTL)模型检验可以被用来对SE-LTL属性进行验证.然而SE-LTL属性在经典的stutter等价(stutter-equivalent)下无法保持,所以最有效的并发程序状态约简技术:偏序约简技术(Partial Order Reduction,POR)不能直接应用于SE-LTL的验证.该文提出一种新的方法利用已有的偏序约简技术对SE-LTL验证过程的状态空间进行约简.该方法分为两个部分:第一个部分是针对SE-LTL不带NEXT算子的约简方法;第二部分则是带NEXT算子的约简方法.第一部分的主要思想是从一个Büchi自动机(Automata,BA)中抽取出“状态部分”.“状态部分”的含义是该部分只与系统的状态相关.基于“状态部分”,给出关于BA和标签Kripke结构(Labeled Kripke Structure)的同步乘,并在同步乘的构造过程中嵌入偏序约简技术,从而约简同步乘的状态空间,即该文的约简技术是on-the-fly的.嵌入的偏序约简在已有的偏序约简基础上,面向SE-LTL公式中的事件引入新的可见操作的识别方法.为了能够将偏序约简技术应用到所有的SE-LTL公式,该文同时给出验证SE-LTL带NEXT算子的偏序约简算法.NEXT算子是偏序约简的另一个主要障碍.该部分是文中的第二部分工作.该部分的技术依然是on-the-fly的,并且需要与状态部分的识别相结合.通过将该文技术实现到SPIN模型检验器中对已有的模型进行验证.Spin是针对LTL的�
程序最坏执行时间(Worst Case Execution Time,WCET)是嵌入式实时系统时间属性验证的基础,在采用静态分析技术的WCET估算中需要分阶段对不同的执行环境约束条件进行分析,并整合所有约束信息、结合程序控制流结构估算全局最坏路径,因此各阶段分析的中间结果对最终的WCET估算性能具有较大影响.在现代嵌入式系统中,硬件平台中的Cache机制成为对执行时间影响较大的硬件体系结构,对其进行精确的行为分析在WCET估算中具有重要的现实意义.采用抽象解释理论对Cache行为进行分析已有较为成熟的技术成果和相关工具,但由于静态分析技术具有较难理解和使用的特点,对于技术没有覆盖、工具没有支持的硬件架构,针对这类硬件架构进行相关研究和验证工具开发都具有较大难度和挑战.该文以抽象解释为理论基础,以复用Cache分析过程为目标,提出了基于抽象解释的模块化Cache行为分析框架,对Cache行为分析过程进行了层次划分,提出了易于复用的Cache行为分析方法设计,能够针对不同架构的Cache机制分析方法进行建模,并以统一的分析框架对分析过程进行复用.案例实验表明,该框架可支持采用抽象解释对使用LRU策略的Cache行为进行建模分析,并能够得到Cache命中情况标记信息以支持后续WCET的估算过程.