vlambda博客
学习文章列表

系统架构设计-你真的需要UML及UML工具吗?

软件架构设计和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部署图

以上这些采用UML表述可能更加物尽其用。如果表述系统概念图、语境图、容器图等等可能使用PPT表述也很清晰高效。 没有银弹 总之,工具太多了,不同的人可能有不同的个人偏好,比如我个人可能会倾向选择PPT或IBM RSA来辅助我的架构设计表述。但多数情况下PPT就足够了,通过灵活的线框图表达我的设计意图(不一定是UML图)。RSA是比较重的商业工具,喜欢它的原因主要有了两个,首要的是,画出的图风格比较 “好看”,第二个,毕竟是商业化工具,功能还是非常强大的。在偏向敏捷的团队,可能习惯于基于白板或白纸进行协作,这也是一种轻量级的表述方式,只要能够传达架构模型的信息即可。不论是否使用UML工具,仅仅是辅助性工具而已,而我们需要关注的应该是架构设计本身及架构所要传达的信息。所以,UML及UML工具并不是银弹,在需要使用它的时候就使用它,在不需要使用它的时候就用其他更加合适的方式替代。