UML,对于大部分开发者而言都再熟悉不过了。我对它的认识还是在大学课程《软件工程》,虽然在工作中也经常用到。在大型项目,尤其是采用RUP开发流程,UML是文档中的大头。在敏捷开发中,虽然不强制要求,但在架构设计,团队交流时候,还是发挥了不可替代的作用。最近,系统学习了Martin Fowler的经典UML著作《UML Distilled 3rd》(原版),100多页,足以让我们一窥精华。“less is more”。UML已经越来越庞大冗杂,而我们常用到的还是其中的某些精华。什么时候用UML,用什么图,怎样用?Martin Fowler将自己的多年经验毫无保留分享给大家。
使用UML的主流方式:as sketch,blueprint an program language
sketch-开发者在设计系统的某个部分时采用UML来交流,这个时候,白板来画UML草图应该是最合适的
blueprint-在RUP开发中参加,整个系统的开发设计文档都包含了详细了UML图
program language-还是一种不太成熟的技术,理想是用某种辅助工具,在上面画UML图,然后直接生成我们想要的软件程序
使用UML时,在“合乎规则”和“方便使用”取舍?
大部分时候,我们使用UML都遵循规则,将它看成一个program language。然而,不要忘了,我们描绘UML并不是为了直接生成软件。更多的是为了交流。当UML阻碍你的设计时候,大胆采用你认为方便的方法,目的是让他人更好地明白你的idea
UML图包括两部分:结构图和行为图
结构图又细分为:
Class Diagram: 是UML中最常用到的图。它是与code鸿沟最浅的图。如果设计的更详细,可以采用相关工具实现“图--代码”的转换。类图,主要是描述系统中某个具体类的properties 和 operations以及这个类与其他类的关系约束。类图使用的标记可以很多,这使得我们容易陷入一个误区:就是“尽一切可能使用每一个标记”。只关注重点,只描绘我们关注的类。无需面面俱到。
Object Diagram: 对象,是类的实例。对象图关注的是运行时各个对象之间的交互。很多时候,我们描述一个系统的静态结构都用Class Diagram。当类图还是很难让人理解时,考虑用对象图来辅助。
Package Diagram:包图,和程序语言中的“包”类似,它其实是对元素的包装组合。在大型系统设计中,常常设计到非常多的图,往往让人很难理解结构。这个时候,用包图来重新组织子图,在更抽象的层次理解系统。包图,不仅仅只对类图进行封装,还可以对与其他的结构图包装。当你感觉你的系统设计图过于庞大时,就该考虑它了。
Deployment Diagram:当你的系统部署很复杂,用到了很多组件/中间件,硬件条件也很复杂,该考虑它了。它可以简单明了地展示,哪些程序运行在哪些设备上。
还有 Component Diagram -描述组件间的关系;Composite Structure Diagram-类在运行时分解(当一个类很庞大,很复杂)
行为图分为:
Sequence Diagram:展示了一个Use Case的若干个对象间的交互协作。虽然它提供了很多的标记,可以描述各种复杂的行为,比如条件、行为、并发……但这些并不是它的强项,越复杂只能越让人难以理解
Activity Diagram:可以描述业务逻辑,工作流……与流程图功能类似,它的独特之处在于支持并行行为。可以描述各种复杂的业务逻辑。如果业务逻辑太庞大负载,还可以将其分解成子图。
State Machine Diagram: 描述一个对象横跨若干个Use Case的行为。它重点关注的是一个对象自身生命周期在不同场景的变化。在程序中实现状态图有3中常见的方式:条件语句(switch)、状态模式和表驱动;
Use Case Diagram:关注的是系统的功能展示。描述了Actor与系统的交互。很多时候难点在于找到真正的Actor。用例图不要画得太复杂。更多详细的约束条件可以在相关的约束文档中体现。
还有 Interaction Overview Diagram-系列图和活动图的mix版;Timing Diagram-描述对象的交互,关注的是时间
最后以一句我一直推崇的名言来结束关于UML的讨论
“最好的文档就是source code”
分享到:
相关推荐
**UML Distilled**,由Martin Fowler撰写,是UML(统一建模语言)领域的一本经典著作。这本书的第三版详细介绍了UML的核心概念、语法和用途,旨在为软件开发人员提供一个清晰且简洁的指南。UML是面向对象设计和系统...
### UML精华UML Distilled, 3rd Ed (Martin Fowler - Addison Wesley) #### 书籍简介 《UML精华》(UML Distilled)第三版是著名软件设计师Martin Fowler的一部经典著作,由Addison Wesley出版社出版。本书旨在...
JUDE-Community支持创建序列图,便于分析和设计系统的操作流程,尤其适用于理解并调试多线程或多组件的交互。 4. **其他UML图表**:除了上述图表,JUDE-Community还支持状态图、活动图、通信图等,这些图表有助于...
1. **多平台支持**:由于ArgoUML是用Java编写的,因此它可以在任何安装了Java运行环境的平台上运行,包括Windows、Linux和Mac OS X等操作系统。 2. **全功能建模**:ArgoUML支持UML的多种图表类型,如类图、用例图...
ArgoUML-0.34-setup.exe
本资料集“computer-uml.rar”包含了与计算机UML相关的图像和描述,特别是针对“uml-customer-system”的设计,这是对一个基于SSD3技术的客户系统的详细建模。 首先,我们要理解UML的基本概念。UML是一种标准化的...
资源分类:Python库 所属语言:Python 资源全名:protobuf-uml-diagram-0.7.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
《UML中文教材》是一本全面介绍统一建模语言(Unified Modeling Language,简称UML)的教育资源,适合初学者及有一定经验的IT从业者。UML是软件开发领域中用于系统建模的一种标准化语言,它通过图形化的方式清晰地...
旅游预订系统是一个旨在简化旅游规划和预订流程的软件应用,它结合了UML(统一建模语言)的设计方法,以实现高效、用户友好的服务。本文将深入探讨该系统的需求、设计模型及其功能。 一、项目概述 旅游预订系统的...
### 基于UML的J-QQ即时通信系统分析与设计 #### UML统一建模技术概述 UML(Unified Modeling Language),即统一建模语言,是20世纪90年代末由Grady Booch、James Rumbaugh和Ivar Jacobson三位面向对象建模方法论...
UML建模实例-课程注册系统 UML建模实例-课程注册系统是一个综合的软件构架文档,旨在为Wylie College开发课程注册系统。该系统旨在支持联机课程注册,提供了课程注册、学生信息维护、教授信息维护、成绩提交、成绩...
根据给定的信息,我们可以推断出这是一篇与UML设计工具相关的文章,但实际内容似乎是乱码或者非相关文字。不过,我们仍然可以从标题、描述以及部分标签中提取一些有关UML设计工具的重要知识点。 ### UML设计工具...
### UML大作业-教务管理系统 ...通过上述分析可以看出,基于UML的教务管理系统不仅能够清晰地展现系统的结构和行为,还能够帮助开发者更好地理解系统的工作流程,从而提高开发效率和系统的可用性。
在下载并解压"ArgoUML-0.30-setup.zip"后,用户会发现其中包含两个重要文件:一是"jre-6u45-windows-i586.exe",这是Java运行环境的安装程序,针对Windows 32位系统。因为ArgoUML是用Java编写的,所以用户在安装Argo...
【标题】"北航UML课件---北航考博软件工程UML考试范围"揭示了这组资料的核心内容,即北京大学航空航天大学(北航)针对博士研究生入学考试中的软件工程科目,重点聚焦于统一建模语言(UML)的学习与复习。UML是一种...
### UML中文教材-第七章:UML的扩展 #### 7.1 UML的架构 UML(统一建模语言)的定义基于一个建模概念框架,此框架由四个不同的抽象层次或级别组成,分别为元元模型层、元模型层、模型层以及用户模型层。 1. **...
首先,"argouml-diagrams-sequence.jar.zip"是一个压缩文件,其中包含的主要元素是"argouml-diagrams-sequence.jar"和"mof-license.txt"。前者是ArgoUML序列图插件的可执行文件,用于扩展ArgoUML的功能,让用户能够...
**UML学习--UML参考(英文)** UML(统一建模语言)是一种标准化的图形建模语言,用于软件工程和其他领域中的系统建模。它由Grady Booch、Ivar Jacobson和James Rumbaugh等人开发,旨在提供一个通用的、可视化的方式...
UML参考手册--基本概念,UML参考手册--基本概念