• 豆瓣评分:8.1 (354人评价)
  • goodreads 评分:3.81 (5分制,904人评价)
  • 我的评分:8(好书,值得再读)

除了英文,UML 应该是最容易被程序员忽视的职业技能了。

软件研发是一项心智劳动,我们需要思考、勾勒草稿、交流,这些都需要承载工具。而 UML 就是目前业界最通用的工具。大量的技术书籍都采用 UML 进行设计的可视化。

广泛应用的技术总是难以避免被滥用、误用,UML 也不例外。比如传统瀑布式软件方法要求完备的需求设计文档,这些文档通常用详尽的 UML 来表述。用例图、状态图、交互图、泳道图,无所不用。随着瀑布式软件方法被口诛笔伐、被弃用,UML 也受到了波及。在很多开发者的认知里,UML 代表着陈旧和沉重。

但中肯地讲,UML是一种不一定最优秀、但肯定是最不差的工具。灵活应用它对软件研发大有裨益。比如本书作者 Craig Larman 就是这么介绍 UML 的:

用符号来表示说明问题所冒的风险是显而易见的,绘制或阅读 UML 意味着我们要以更加可视化的方式工作,开发我们的脑力,以便更快的掌握主流二维线框图表示法中的符号、单元及关系。

这个古老而朴素的道理常常会遗失在大量的 UML 细节和工具中。这是不应该的!图可以帮助我们更为便利地观察全景,发现软件元素或分析之间的联系,同时允许我们忽略或隐藏旁枝末节。这是 UML 或其他图形化语言的本质价值。

在这本书中,作者举了两个示例项目,讲解了它们的整个研发设计过程,从需求评估,到领域建模,到对象设计等。在讲解过程中融入了 UML 核心元素(如类图、时序图)的用法和设计模式,此外还介绍了逻辑分层架构、持久性框架设计等高阶内容。

与很多书不同,作者用近似逻辑推理的方法详细阐述了在多种可选的设计方案之间做抉择的思考过程。这一方法让我受益匪浅。不少技术书都习惯于牵着读者走:只讲解应该怎么做,却甚少提及为什么、有哪些别的方案、为什么筛掉了那些方案。让我们读罢着手实践时,遇到分岔路四顾茫然。

作者还在书中展示了很多手绘 UML 图,并反复提醒读者:交流过程中的 UML 只需要关注最基础的图形、线条,无需刻板地遵从严谨的 UML 标准。

总结,这是一本逻辑严谨、讲如何使用 UML 和设计模式辅助我们做出优雅设计的实战书。推荐阅读。

如果你喜欢 Martin Fowler 的《企业应用架构模式》和《UML Distilled》,你可能也会喜欢这本书。