《UML用户指南(第2版.修订版)》—第2章2.1节UML概述

简介:

span style='letter-spacing:1px'>本节书摘来自异步社区《UML用户指南(第2版.修订版)》一书中的第2章2.1节UML概述,作者【美】Grady Booch , James Rumbaugh , Ivar Jacobson,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第2章 UML介绍
UML用户指南(第2版.修订版)
本章内容

UML概述
理解UML的3个步骤
软件体系结构
软件开发过程
统一建模语言(Unified Modeling Language,UML)是一种绘制软件蓝图的标准语言。可以用UML对软件密集型系统的制品进行可视化、详述、构造和文档化。

从企业信息系统到基于Web的分布式应用,乃至硬实时嵌入式系统,都适合用UML来建模。UML是一种富有表达力的语言,可以描述开发所需要的各种视图,然后以此为基础来部署系统。虽然UML的表达力很丰富,但理解和使用它并不困难。要学习使用UML,一个有效的出发点是形成该语言的概念模型,这要求学习3个要素:UML的基本构造块、支配这些构造块如何放置在一起的规则以及运用于整个语言的一些公共机制。

UML仅仅是一种语言,因此仅仅是软件开发方法的一部分。UML是独立于过程的,但最好把它用于以用况为驱动、以体系结构为中心、迭代和增量的过程。

2.1 UML概述
UML用户指南(第2版.修订版)
UML是一种对软件密集型系统的制品进行下述工作的语言:

可视化;
详述;
构造;
文档化。
2.1.1 UML是一种语言
语言提供了用于交流的词汇表和在词汇表中组合词汇的规则,而建模语言的词汇表和规则注重于对系统进行概念上和物理上的描述,因而像UML这样的建模语言是用于软件蓝图的标准语言。

建模是为了产生对系统的理解。只用一个模型是不够的,相反,为了理解系统(除非是非常微小的系统)中的各种事物,经常需要多个相互联系的模型。对于软件密集型系统,就需要这样一种语言,它贯穿于软件开发的生命期,表达系统体系结构的各种不同视图。

【第1章讨论建模的基本原理。】

像UML这样的语言的词汇表和规则可以告诉你如何创建或理解形式良好的模型,但它没有说明应该在什么时候创建什么样的模型,因为这是软件开发过程的工作。一个定义良好的过程将指导你决定生产什么制品,由什么样的活动和人员来创建与管理这些制品,怎样采用这些制品从整体上去度量和控制项目。

2.1.2 UML是一种用于可视化的语言
对于很多程序员来说,从考虑实现到产生程序代码,其间没有什么距离可言,就是思考和编码。事实上,对有些事情的处理最好就是直接编码。使用文本是既省事又直接的书写表达式和算法的方式。

在这种情况下,程序员仍然要做一些建模,虽然只是在内心里这样做。他们甚至可以在白板或餐巾纸上草拟出一些想法。然而,这样做存在几个问题。第一,别人对这些概念模型容易产生错误的理解,因为并不是每个人都使用相同的语言。一种典型的情况是,假设项目开发单位建立了自己的语言,如果你是外来者或是加入项目组的新人,就难以理解该单位在做什么事。第二,除非建立了模型(不仅仅是文字的编程语言),否则就不能够理解软件系统中的某些事情。例如,阅读一个类层次的所有代码,虽可推断出它的含义,但不能直接领会它。类似地,在基于Web的系统中研究系统的代码,虽可推断出对象的物理分布和可能迁移,但也不能直接领会它。第三,如果一个开发者删节了代码而没有写下他头脑中的模型,一旦他另谋高就,那么这些信息就会永远丢失,最好的情况也只能是通过实现而部分地重建。

用UML建模可解决第三个问题:清晰的模型有利于交流。

对有些事物最好是用文字建模,而对有些事物又最好是用图形建模。的确,在所有引人关注的系统中都有一些用编程语言难以描绘的结构。UML正是这样的图形化语言。这一点针对前面谈到的第二个问题。

UML不仅只是一组图形符号。确切地讲,UML表示法中的每个符号都有明确语义。这样,一个开发者可以用UML绘制一个模型,而另一个开发者(甚至工具)可以无歧义地解释这个模型。这一点针对前面谈到的第一个问题。

【UML的完整语义在The Unified Modeling Language Reference一书中讨论。】

2.1.3 UML是一种可用于详细描述的语言
在此处,详细描述意味着所建的模型是精确的、无歧义的和完整的。特别是,UML适于对所有重要的分析、设计和实现决策进行详细描述,这些是软件密集型系统在开发和部署时所必需的。

2.1.4 UML是一种用于构造的语言
UML不是一种可视化的编程语言,但用UML描述的模型可与各种编程语言直接相关联。这意味着一种可能性,即可把用UML描述的模型映射成编程语言,如Java、C++和Visual Basic等,甚至映射成关系数据库的表或面向对象数据库的持久存储。对一个事物,如果表示为图形方式最为恰当,则用UML,而如果表示为文字方式最为恰当,则用编程语言。

这种映射允许进行正向工程——从UML模型到编程语言的代码生成,也可以进行逆向工程——由编程语言代码重新构造UML模型。逆向工程并不是魔术。除非对实现中的信息编码,否则从模型到代码生成将会丢失信息。逆向工程需要工具支持和人的干预。把正向代码生成和逆向工程这两种方式结合起来就可以产生双向工程,这意味着既能在图形视图下工作,又能在文字视图下工作,只要用工具来保持二者的一致性即可。

【本书的第二部分和第三部分讨论对系统的结构建模。】

除了直接映射以外,UML具有丰富的表达力,而且无歧义性,这允许直接执行模型、模拟系统以及对运行系统进行操纵。

【本书的第四部分和第五部分讨论对系统的行为建模。】

2.1.5 UML是一种用于文档化的语言
一个健康的软件组织除了生产可执行代码之外,还要给出各种制品。这些制品包括(但不限于):

需求;
体系结构;
设计;
源代码;
项目计划;
测试;
原型;
发布。
依赖于开发文化,一些制品做得或多或少地比另一些制品要正规些。这些制品不但是项目交付时所要求的,而且无论是在开发期间还是在交付使用后对控制、度量和理解系统也是关键的。

UML适于建立系统体系结构及其所有细节的文档。UML还提供了用于表达需求和用于测试的语言。此外,UML提供了对项目计划活动和发布管理活动进行建模的语言。

2.1.6 在何处能使用UML
UML主要用于软件密集型系统。在下列领域中已经有效地应用了UML:

企业信息系统;
银行与金融服务;
电信;
运输;
国防/航天;
零售;
医疗电子;
科学;
基于Web的分布式服务。
UML不限于对软件建模。事实上,它的表达能力对非软件系统建模也是足够的。例如,法律系统的工作流程、病人保健系统的结构和行为、飞机战斗系统中的软件工程以及硬件设计等。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
3天前
|
uml
UML之类图
UML之类图
20 1
|
6月前
|
uml
IDEA使用插件绘制UML类图+PlantUML语法讲解
IDEA使用插件绘制UML类图+PlantUML语法讲解
271 0
|
3月前
|
设计模式 数据可视化 程序员
软件设计模式:UML类图
软件设计模式:UML类图
|
1月前
|
存储 Java uml
Java-UML类图简介
Java-UML类图简介
18 0