知识卡片

三种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的静态描述能力,桥接到能实际跑出量化性能数据的仿真世界。

参考来源

- 位置:《软件架构理论与实践》第12章《软件架构仿真》"12.3 UML软件架构仿真"节(源文件:_epub-src/OEBPS/text00097.html) - 结论依据:原文分别说明Arief等人用C++SIM构造仿真程序("因为C++编译器产生的代码运行速度比SIMULA代码更快,所以C++SIM将产生更高效的仿真代码")、Balsamo等人的UML-PSI两步法及反馈机制、De Miguel等人对UML的实时扩展及OCL无法表达时间约束的局限,直接支撑本卡片结论。 - 原始内容:实时系统的架构和需求规约尤其需要关注及时性、性能和调度等方面……如"actorName是外部角色,每2毫秒发送消息messageName,对messageName的响应时间必须在1毫秒之内",但OCL并不能表示此类条件。