系统架构设计师学习之路(27)

第6章 UML建模与架构文档化

20世纪70年代陆续出现了面向对象的建模方法,80年代末到90年代中期,各种建模方法从10种增加到50多种。方法种类的膨胀,也妨碍了用户的使用和交流。
UML(统一建模语言)一出现,以融合了多种面向对象建模方法,简洁的图形与符号,直观的表达和强大的表示能力,得到业界认可。它统一的表示法,使不同知识背景的领域专家、系统分析和开发人员以及用户可以方便的交流。

6.1 UML现状与发展

6.1.1 UML起源
1995年,Gray Booch和Janes Rumbaugh将他们的面向对象建模方法统一为Unified Method V0.8。一周后Ivar Jacobson加入,共同将该方法统一为二义性较少的UML 0.9。同时,这三位方法学家被称作“三友”。
很快,用户也认识到可对软件系统进行可视化、描述、构造和文档化的通用建模语言所带来的益处。他们将这种语言的早期草案应用于不同的领域。受用户强烈需求的驱动,建模工具厂商也很快在它们的产品中加入了对UML的支持。
UML成了实际上的工业标准。1996年,一个由建模专家组成的国际性队伍“UML伙伴组织”开始同“三友”一起工作,计划将UML提议作为OMG(Object Management Group)的标准建模语言。
1997年1月,伙伴组织向OMG提交了最初的提案UML1.0。经过了九个月的紧张修订,于1997年9月提出了最终提案UML1.1,这个提案在1997年11月被OMG正式采纳为对象建模标准。
在一个规范采纳后不久,将成立一个修订任务组,负责该规范的修订。1997年9月,OMG采纳UML1.1规范不久,特许成立了第一个UML修订任务组(RTF),负责收集有关评论,并提出修改意见。
该RTF提交的第一个主要产品是一个编辑版本UML1.2,它改编了规范,使之与其他OMG规范更为一致。尽管这一版本纠正了印刷和语法错误,以及某些明显的逻辑上的不一致,但还是没有涉及对重要技术的改进。
该RTF的第二个主要产品是其技术版本UML1.3,它修正和改善了UML1.1的遗留问题,并矫正了在此之后发现的许多小错误。该RTF一致推荐OMG批准其UML1.3最终草案,并于1999年6月提交了一份最终报告。被推荐的规范随后被提交给组织委员会和平台技术委员会以获得批准。

6.1.2 UML体系结构演变
UML是用元模型来描述的,元模型是4层元模型体系结构模式中的一层。此模式的其他层分别是元-元模型层、模型层和用户对象层。其中元模型层由元-元模型层导出,UML的元-元模型层在OMG MOF的元-元模型中定义,而UML元模型的元类是MOF元-元类的实例。
元模型的体系结构模式已被证明可以用来定义复杂模型所要求的的精确语义,这种复杂模型通常需要被可靠地保存、共享和操作,以及在工具之间进行交换。它的特点:
(1)在每一层都递归地定义语义结构,从而使语义更精确更正规。
(2)可用来定义重量级和轻量级扩展机制,如定义新的元类和构造型。
(3)在体系结构上将UML元模型与其他基于4层元模型体系结构的标准(如MOF和用于模型交换的XMI Facility)统一起来。
在元模型层,UML元模型又被分解为三个逻辑子包:基础包、行为元素包和模型管理包。

  • 基础包由核心、扩展机制和数据类型三个子包构成,它是描述静态结构的语言底层结构,支持类图、对象图和构件图和部署图等结构图。
  • 行为元素包是描述模型动态行为的语言上层结构,支持不同的行为图,包括Use Case(用况)图、顺序图、协作图、状态图和活动图。
  • 模型管理包则定义了对模型元素进行分组和管理的语义,它描述了几种分组结构,包括包、模型和子系统。

行为元素包和模型管理包都依赖于基础包。
UML1.3是建模语言规范的第一个成熟的分布。它纠正或调整了从UML1.1中继承下来的遗留问题,并且修正了最终提交后的一年来所发现的大多数错误。从建模者的角度看,从UML1.1到UML1.3并没有很大的变化,对语言的大部分改进是在底层对UML元模型语义的调整,只有很少量的变化是针对表示法的细枝末节的修改。底层结构上的变化对大多数用户来说是看不到的,但这使UML在将来更容易实现和扩展。
1.解决UML1.1的遗留问题
(1)完善活动图的语义和表示法,增加了状态的动态激发语义,定义了执行条件线程的语义和表示法,而且增加了对象流功能。
(2)清理关系的标准元素。引入关系元类来组织各种类型的关系,并且把依赖构造型改造为依赖和流。
(3)体系结构的一致性。通过加入物理元模型和XMI、DTD定义,提高了UML1.3元模型的体系结构跟MOF和XMI Facility的一致性。
2.其他变化
(1)静态结构图,放宽了限制,使类和接口之间可以关联,并在类中可以声明信号。信号被定义为一个类元,可以操作。另外,还重新定义了模板和强类型的语义。
(2)用例图,用例之间的关系被重新定义为三种主要类型:泛化、包含和延伸。
(3)交互图,放宽了限制,使用户可以描述角色或实例。而且协作也可以泛化。
(4)模型管理图,改进了模型和子系统的语义和表示法,将它们从包中分离出来,并使之更容易使用。澄清了对包的访问和引入权限的区别。
尽管UML规范的核心是语法和语义定义,但它还包括模型交换、语言扩展以及约束等方面的定义。
3.为UML2.0确立路标

  • 体系结构:使用严格的元模型方法定义一个与MOF元-元模型严格一致的物理元模型。
  • 扩展性:提供4层元模型体系结构一致的扩展机制。提高外围规范的严密程度,使其支持用户对语言定制能力不断增加的要求。
  • 构件:增强基于构件的软件开发的语义和表示法。
  • 关系:提供“精化”和“追踪”依赖关系的基本语义。在多个抽象层次上定义关联的语义。
  • 状态图和活动图:定义独立于状态图语义的活动图语义。在活动图和状态图中提供更随意的并发。详细说明状态机的泛化。
  • 模型管理:重新定义模型和子系统的表示法和语义,以增强对企业体系结构视图的支持。
  • 总体机制:定义一种模型版本管理的机制。详细说明图的互换机制。

6.1.3 UML的应用与未来
UML是在多种面向对象建模方法的基础上发展起来的建模语言,主要用于软件密集型系统的建模。
UML的演化阶段:
(1)专家的联合行动,由三位Object-Oriented(面向对象)方法学家将他们各自的方法结合在一起,形成UML0.9。
(2)公司的联合行动,由十几家公司组成的“UML伙伴组织”将各自的意见加入UML,形成UML1.0和1.1,并作为向OMG申请成为建模语言规范的提案。
(3)在OMG控制下的修订与改进,OMG于1997年11月正式采纳UML1.1作为建模语言规范,然后成立任务组进行不断修订,并产生了UML1.2、1.3和1.4版本,其中,1.3为较重要的修订版。
(4)目前处于UML重大修订阶段,目标是推出UML2.0,作为向ISO提交的标准提案。

总的来说:
(1)UML已经取得重要成功,它已成为在软件工业中占支配地位的建模语言,并在许多领域的软件开发中得到应用。
(2)UML还存在许多问题,自它产生之日起就从未离开过批评:用户和教师抱怨它内容庞大、难学难教而且太过复杂;学者认为它缺少一个精炼的核心和定义良好的外围,有些语义定义得不够精确而且带有二义性;建模实践者认为它缺少支持自己领域建模要求的机制;工具开发商则因为规范本身的不确定性而产生理解上的偏差,它们对UML的自行诠释有可能误导用户。
(3)UML的关键问题是过于庞大和复杂,以及在语言体系结构、语义等方面存在理论偏差。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值