知识卡片
三种UML架构仿真方法对比
内容
架构分析分定性分析(处理系统功能特性,如是否无死锁、是否安全)和定量分析(通过度量或建模得出内存/执行/网络使用等概要),软件架构仿真属于定量分析方法。书中给出三种基于UML的仿真代表性方法,各自解决不同侧面的问题。基于UML类图和顺序图的仿真:Arief等人开发了从类图和顺序图自动推导仿真程序的工具,用C++SIM包(一个离散事件、基于进程的仿真工具库)构造仿真程序,之所以选C++而非SIMULA,是因为C++编译器生成的代码运行更快、仿真效率更高——这条技术选择本身体现了一个朴素原则:仿真工具自身的性能,直接决定了它能否在合理时间内跑出有意义的结果。基于UML用例图和活动图的仿真:Balsamo等人为带注释的UML架构推导仿真模型,分两步——先从UML注释中获取性能参数,再从UML图的XMI描述中自动提取用例图和活动图信息,构建可执行的离散事件仿真模型;仿真结果会以标签值形式插回原始UML图,为架构设计提供反馈,这个”仿真结果反哺原始设计图”的闭环正是UML性能模拟器(UML-PSI)的核心机制,建模周期是循环的,要迭代到开发出性能上令人满意的架构为止。从带注释UML图产生OPNET仿真模型:De Miguel等人针对实时系统对UML做了扩展(固化类型、标签值、约束模板),因为UML本身的语义规范虽然能描述软件生命周期各阶段,却没有考虑实时系统的时间限制、服务质量、资源消耗、调度参数等问题——例如UML标准的约束语言OCL根本无法表达”消息发送后必须在1毫秒内响应”这类时间约束;De Miguel的扩展方案特别强调系统负载分布、可用资源使用、时间约束调度、系统调度算法、分析结果表示这五方面此前被UML忽略的实时技术要素。三种方法的共同脉络是:UML本身设计初衷是”建模”而非”仿真”,三种方法各自用不同手段(外部仿真库、性能注解转译、实时语义扩展)把UML的静态描述能力,桥接到能实际跑出量化性能数据的仿真世界。