软件架构设计和UML统一建模语言没有必然关系,同样,架构设计和UML工具也没有必然关系。架构就在那里,UML和UML建模工具只是辅助架构设计表达的一种工具而已。
对于从事软件架构设计的工程师来说,如果对架构进行可视化表达是其面临的重要问题之一。支持UML的工具种类繁多,既有开源的又有商业的,既有简单的,又有复杂的,既有支持代码到模型逆向工程的,又有模型到代码自动生成的。举例来说:
Viso:支持简单UML图
Power Point:非专业,但可以基于线框表达你要的UML图
IBM Rational Software Architecture:复杂商业化工具,支持模型到代码生成
draw.io:在线画图,也支持UML
工具带来的好处是自动化支持,对于熟悉工具的工程师而言工作可能效率很高。但,工具有其自身的复杂性,工程师必须要熟悉工具的使用才能熟练的进行建模,越是功能强大的工具,越会带来工具使用的复杂性。同时,不同工具对UML的支持程度不一,图形风格也不尽相同,那么,这些工具导出的图也不应完全是符合大众认知的UML表达,其传达的架构信息会有一定折扣。你真的需要UML吗?我们不能否认UML的价值,基于统一建模语言能够更有效的进行架构设计的信息传递和沟通,也能基于UML提供的详细的模型图元素进行充分的设计表达。团队中是否要基于UML进行沟通需要权衡,因为UML可能并不能表达你所要传达的全部的架构信息。其实,大多数情况下并不需要进行完备的UML建模设计,而使用PPT这种简单的方式可能更加轻量和有效。实际工作中,可能会采用混合方式,有些使用UML进行建模,有些使用PPT或者白板画图即可。比如:
表达流程和工作流可以采用UML活动图
表达运行时的交互可以采用UML时序图
表达领域模型或者设计模式可以采用UML类图
表达状态转换可以采用UML状态机
表达系统的部署结构可以使用UML部署图