请用 Firefox 54+ 浏览
我的文章 我的评论 我的书评 我的知乎*
书单 书讯 书评
需求知识体系 特性 用例 统一用例方法 用户故事 需求工具
业务建模 UML OOD
敏捷知识体系 敏捷方法 敏捷问答 敏捷工具 敏捷评论 敏捷资源
业务模式 需求模式 架构模式 设计模式 大道至简:实话设计模式 Web 应用架构模式
.NET Java JS 笔记
Amazon* ITPub* Martin Fowler* Wikipedia* 教程
需求分析需求模型非功能需求业务需求分析
SpringJSF
> 建模 > UML > > 建模 > UML >
在线/9 登录/0

UML 中文 FAQ

阅读数:9463
基本历史
第一部份 UML 基础

UML 有哪些特点?


概括而言,UML 建模语言具备这样一些特点:通用性、可视性、抽象性、实用性、 统一性 、灵活性、 可扩展性和 广泛性 等等 ... (像不像软件质量属性?其实 UML 本身也是一种“软件”)

UML 的“通用性”主要是指不仅仅可以用它来描述软件, 而且还可以用它来描述一般企业或组织的业务流程以及由软、硬件共同组成、以软件为主的复杂系统 (即所谓的软件密集型系统),甚至还包括非软件系统。

UML 的“可视性”是指可以通过 UML 一系列的图形符号, 组成多种视图(view)来直观、清晰地表达系统分析设计中方方面面的、许多复杂的概念。 UML 主要是为了方便人们的阅读和使用而设计的, 所以它采用了形式化或半形式化的、易于人们理解和交流的形式。

UML 是一种分析设计专用的抽象建模语言,它本身不是编程(programming)语言或实现级别的语言。 目前 UML 还不能直接执行,也不是一种严格意义上的程序语言,却可用它来生成可执行的程序框架。

UML 是一种比 C、C++、Java、VB、Delphi 等文本高级语言抽象层次更高的图形语言, 通过它我们可以抽象地表示用高级编程语言编写的文本程序的逻辑结构和行为。 相比传统的第三代、第四代高级编程语言(3GL、4GL),UML 能够更加高效、准确地反映软件设计的方案和思路, 在当代软件工程中,UML 是被真正用来“设计程序/高级程序”(design the programs)的语言。 从这个意义上看,不妨可以称之为“甚高级”或第五代程序设计语言(5GL)—— 鄙人之陋见。

UML 基本上不能算作一种全新的发明,而且作为一项产品,它也并非来自学者教授、科研机构理论性研究的最新学术成果, 而是直接来自于产业界、工程界的实践总结,它是在软件工业实践归纳基础上进行理论升华的产物, 其核心内容反映了 30 多年来全球软件工业的领导者在软件分析、设计和构造领域的最佳实践和成功经验, 因而具有很高的实用价值。

实践证明,作为对象技术的核心,面向对象分析设计(OOAD)方法比传统方法能更加准确、 全面地描述物理现实世界和由逻辑概念构成的虚拟软件世界。UML 是用来表述 OO 概念的一种语言工具, 而很奇妙,它本身作为一件产品同样也是由 世界级软件大师们 用 OO 方法设计出来的, 这使得 UML 具有传统建模语言所不具备的极强的语法语义表达能力和非常灵活的可扩展性。

UML 有什么用?


UML 的用途非常广泛,可以概括为“描述、可视化、构造、记载”四种基本功能, 在软件开发全生命周期的各阶段任务中,如业务建模、需求分析、系统设计、实现和测试、数据建模、 项目管理等,均可根据需要采用。

UML 建模是建立软件开发文档非常有效的一个手段,通过 UML 图形可视化地描述系统需求,记载软件构成, 能够显著地提高文档的质量和可读性,减少文档编写的工作量。

UML 实质上是一种系统分析设计专用语言, 通过可视化的图形符号结合文字说明或标记可以帮助业务/系统分析员、软件架构师/设计师、 程序员等各种建模者有效地描述复杂软件(或业务)的静态结构和动态行为,包括工作流(数据流和控制流)、 功能需求、结构元素及关系、架构组成、设计模式、对象协作、事件响应和状态变化等等。

UML 是描述软件设计模式(Design Patterns)最常用和最有效的标准语言。

UML 不能做什么?


UML 不是高度形式化的语言,一般不能用于定理证明。

UML 是基于面向对象(OO)方法的通用建模语言,目前不适合用户图形界面(GUI)设计、 超大规模集成电路(VLSI)设计、基于规则的人工智能等专业领域。

UML 是一种离散型建模语言,适合对由软件、固件或数字逻辑构成的离散系统建模, 不适合对工程和物理学领域中的连续系统建模。

作为语言(language),UML 本身仅仅是一种表达形式,不是建模方法(method), 在实际的软件项目开发中仅仅掌握一套标准的图形符号是远远不够的。 用好 UML 首先需要掌握 OOAD 的基本原则和方法,并在一定的软件开发过程 (如统一过程 UP/USDP/RUP/AUP、XP 等)的指导下进行有取舍的运用。当然,有时候我们也会说“UML 方法”,这是 指“采用 UML 建模的开发方法”或者“UML 的建模方法”。

为什么要学习和掌握 UML ?


我们认为 UML 对于当前大多数希望进一步改进质量的软件开发团队来说是 必不可少或必须 的。 为什么这样说呢?因为, C++、Java 等源码并不能直观、方便地反映复杂程序的设计: 如内部逻辑结构、各种隐含的依赖关系、运行时的状态改变和特殊行为等等。 程序员编写出来的代码仅仅是一种可行的实现方式,很难反映出现象背后的真实本质 —— 软件的设计原理或算法,因此对于大多数稍稍复杂点的项目来说,仅有代码是不够的。

可视化建模历来是一种行之有效的最佳工程实践,并非软件行业所特有。 软件的设计方案在用 C++、Java 等编程语言实现之前,通常隐藏在人们的头脑当中,C++、Java 程序是人们思考的结果产物。而解决方案的设计正确与否是决定解决方案本身及软件质量优劣的根本。 为了保证一个复杂设计方案的正确性,我们最好在实现它之前,用简洁和恰当的方式把设计表达出来。 相较于含混的大脑模型和冗长的程序代码,经验老到的程序员发现对图形化的软件设计模型进行验证往往是一种更为 高效和可靠的工作方式。 事实上通过程序代码来表达、讨论、评估和选择复杂软件的设计往往是很笨拙的, 这一表达方式的空欠唯有通过像 UML 这样的比具体的程序语言/实现语言更高层次的、更抽象的建模语言来填补。

OO 方法是当代主流的软件开发技术。 世界先进的软件团队和个人早已摆脱了对如何使用具体的平台 API、个别编程语言特性的纠缠, 把更多的精力放在了需求、架构、设计机制和模式等对软件质量有重大影响的核心要素 —— 分析与设计上, 因而成功开发出了规模越来越大、复杂度越来越高、质量越来越好的软件产品与系统。 UML 作为工业界 OO 建模语言的事实上标准和主要的表达媒介, 在软件的分析、设计、架构和模式表达这些场合能发挥关键的作用。 所以,熟练地掌握并运用好 UML 是当今项目主管、系统分析员、 架构师/设计师以及高级程序员等软件工程人员所必备的一项基本技能。

<帮助> <全部评论> 共 1 个主题 2 条评论 (umlfaq)
(1) 回复-可否推荐一些实用的 UML 学习资料
(张恂 99 字 0 回复 E2007-1-18 10:16:39 LID:2)
(2) [转] 可否推荐一些实用的 UML 学习资料
(张恂 159 字 1 回复 E2007-1-18 10:15:33 LID:1)
首页 | 使用指南 | 站点地图 | 版权声明 | 联系方法 | © 2005-2018 张恂 版权所有. 沪ICP备05023401号