一家之言,如有异议或者错误请忽略
Matlab
优点
- 面向算法,可以运行和仿真,能看到每个变量随时间变化的曲线,因而可以进行早期验证
- 各种现成的组件
- 各种现成的模板用于生成不同平台的代码
缺点
- 不面向对象,没有类的概念,也不能使用时序图,活动图等
- 好像只能生成C/C++代码
- 可以引用外部代码,但是不能增量式维护,只能改模型重新生成
- 贵!
Matlab的强项在于实现功能,而不是架构设计
StarUML
优点
- 简单,易上手
- 对象属性很全面,可以直接对应C++的各种属性,比如Virtual,Static,volatile等,
- 免费
缺点
- 只能从类图生成代码,所以只能进行框架设计,也不能在模型中插入实现代码
- 只能单向生成,不能增量式维护,因此如果模型有更改,只能生成新的代码,然后手动和现有代码进行比较更新
- 不能运行,无法进行早期验证
StartUML基本上只用于早期的概念阶段和框架设计,在设计阶段基本上就无法再用了
xtUML
优点
- 可以执行,因而可以进行早期验证
- 即可以设计框架,也可以设计实现
- 好像可以修改代码生成模板
- 据说兼容AUTOSAR
- 免费
缺点
- 好像只能生成C代码,不能生成C++代码?
- 执行过程不太友好,有时候不知道发生了什么,甚至不知道该如何发生
- 需要学习一种自有的脚本语言,好在好像不是太复杂
- 目标是生成代码直接使用,因而也无法双向维护,基本上更改只能从模型出发
OpenAmeos
优点
- 可以增量式维护,在生成的代码里进行的修改重新生成后还会保留
- 有语法检查
- 自动生成构造,析构函数,Get, Set, 拷贝构造函数
- 可以在模型里插入实现代码,自动加入到生成的代码里面
- Doxygen 风格的注释
- 适用于大型项目,有客户端和服务器端,还有不同的参与者角色区分
- 有版本管理功能,可以设置BaseLine,应该可以进行Baseline之间的比较
- 程序很小,才20M+功能却很强大
- 免费
缺点
- 类属性没有Static属性?
- 不能执行,所以也不能进行早期验证
- 有点复杂