《UML精粹》札记

Thu 29 May 2014 / In categories Book Review

UML

作为一门规范,UML必然是纷繁、冗杂、细碎的。但我们日常用到的80%的UML,只是UML规范中20%的部分。Martin Fowler写的这本《UML精粹》将UML中最精华的20%的带给我们。

书中提到了对UML的三种用法:草图(sketch)、设计图(blueprint)和编程语言(programming language)。

草图非常适合用来勾勒原型。比如我们设计一个类,会先列出这个类的主要属性和方法,以及和其他类之间的关系。在和其他人交流设计思想,或者进行具体编写代码的时候,原型都有很大的参考意义。在画UML草图的时候,往往需要不断地根据反馈进行修改,使用起来会比较随意,不会严格遵守条条框框。草图适合在白板或者草稿上画,即便是使用软件,一些轻量级的软件也就足够了。

但是具体到细节的时候,也就是把草图转化成设计图的时候情形就不一样了。设计图强调完整性,设计过程产生的各种决策都要体现到UML图示中。这样实现人员拿着设计图在不需要很多思考的情况下就能轻易将其转化为程序代码。设计图对作图工具有很高的要求,需要记录各种不同的细节。

将设计图转化成程序代码这一步往往是十分机械化的,自然而然人们就希望能够将其自动化。当UML能够被编译自动生成代码时,实际上UML就变成了一种程序设计语言。直接应用UML来进行程序开发其实就是实现了MDA(Model Driven Architecture)。

MDA通常把开发工作分为两个层次。上层应用部分用UML建模,称为PIM(Platform Independent Model),下层平台相关的运行环境称为PSM(Platform Specific Model)。

IBM的RSARTE就是一个例子,RSA,Rational Software Architecture用UML来为应用建模;RTE,Real-Time Environment是专门为嵌入式开发准备的运行环境。

总之,从把UML当作草图到当作作设计图,从设计图到程序语言,对工具的要求越来越高,最后工具附加的复杂性可能会超过其带来的便利。如何更好地使用UML是权衡的,UML只是一种工具,无法满足所有需求。

UML图示分类:

  • Structure Diagram

    • Class Diagram

      (Class, features, and relationships)

    • Component Diagram

      (Structure and connections of components)

    • Composite Structure Diagram

      (Runtime decomposition of a class)

    • Deployment Diagram

      (Deployment of artifacts to nodes)

    • Object Diagram

      (Example configurations of instances)

    • Package Diagram

      (Compile-time hierarchic structure)

  • Behavior Diagram

    • Activity Diagram

      (Procedural and parallel behavior)

    • Use Case Diagram

      (How users interact with a system)

    • State Machine Diagram

      (How events change an object over its life)

    • Interaction Diagram

      • Sequence Diagram

        (Interaction between objects; emphasis on sequence)

      • Communication Diagram

        (Interaction between objects; emphasis on links)

      • Interaction Overview Diagram

        (Mix of sequence and activity diagram)

      • Timing Diagram

        (Interaction between objects; emphasis on timing)

Load Disqus Comments