嵌入式软件系统的基于模型的调试方法
1. 引言
软件工程经历了多次范式转变,从汇编语言到结构化编程,再到面向对象和模型驱动开发(MDD)。为了构建更复杂的系统,同时确保系统的可靠性,各种验证和确认技术应运而生。然而,调试和运行时监控仍然是发现和解决软件系统缺陷的常用方法。
运行时或在线软件监控和验证是指在运行时观察和检查软件执行的行为。嵌入式系统,尤其是资源受限的深度嵌入式系统,对监控提出了特殊挑战,需要采用非侵入性或最小侵入性的监控方法。随着模型驱动方法的出现,统一建模语言(UML)等模型在基于模型的运行时监控和调试中的适用性正在评估中。
在实时嵌入式软件系统领域,使用序列图和时序图等进行基于模型的调试和可视化具有广阔前景。虽然一些专有MDD工具(如Rhapsody)可以实现嵌入式软件系统行为的基于模型的可视化,但现有的运行时监控和调试方法由于涉及大量监控开销,不太适合深度嵌入式系统。
2. 问题陈述
基于模型的调试和运行时监控存在以下问题,特别是在深度嵌入式软件系统中的适用性方面:
- 显著的插桩代码大小 :用于调试和监控的插桩代码会随着应用程序大小的增加而增加,其大小和复杂度因应用而异。这导致了该方法在调试小型嵌入式软件系统时的可扩展性和适用性问题。例如,某些MDD工具在支持嵌入式系统的基于模型的监控时,会使用动态源代码插桩或在目标上下载大量插桩代码。
- 对复杂接口的需求 :通常需要复杂的接口和通信协议来下载插桩代码,并在主机计算机上实时可视化目标的行为。例如,Rhapsody工具提供实时可视化目标行为的“实时动画”功能,但它引入了大