不幸的是,这个问题并不容易回答,因为有很多商业和开源的工具可以帮助你进行软件架构和设计,这些工具往往会从不同的角度来处理这个问题。它们可以从较高层次归纳如下。
1.只有图 :有很多独立的UML工具和针对主流IDE1 的插件,可以让你画简单的UML图。它们对控制你的图和图描述的内容真的很有用,但这样的图也很容易随着时间推移而落后于现实。如果你有使用权,那么安装了UML模板的微软Visio或OmniGraffle都是很好的起点。
1 集成开发环境,Integrated Development Environment。——译者注
2.逆向工程 :有独立的UML工具和IDE插件可以从代码创建UML图。这非常好,因为你可以快速同步代码和图表,但这些图表往往也会很快变得杂乱,因为它们通常默认包含了所有细节(比如,每一个属性、方法和关系)。
3.往返工程 :许多逆向工程工具还允许你做往返工程,对模型所做的改变会反映在代码中,反之亦然。这有助于保持代码和图同步。
4.模型驱动 :有几个模型驱动架构(MDA)的工具,可以让你从模型自身驱动软件系统的实现,通常是通过在图上用可执行UML(xUML)或对象约束语言(OCL)之类的语言标注出所需特性和行为。这些工具可以提供一个完整的端到端的解决方案,但为了从中受益,你需要遵循一个不一样并且往往是刚性的开发过程。