Ave Coder!
您有一个很酷的产品创意,但又不想因为细节太小而陷入僵局并丢失整个图片?您是否打算坐下来为公司服务器打听,您是否需要补充一些很棒的东西和IT?
本系列文章将专门介绍有关年轻成长的有用但有时难以捉摸的知识-UML图。我将从概述现有图表开始,让我们谈谈历史以及为什么会有这么多图表。
UML是统一建模语言的缩写,众所周知,它是一种标准化的建模语言,由一组集成的图组成,旨在帮助系统和软件开发人员识别,可视化,构建和记录软件系统的构件,以及,例如,用于业务建模。
UML是一组最佳工程实践,已被证明对大型复杂系统建模有效,并且是面向对象软件开发的重要组成部分。
UML主要使用图形符号来表达软件项目的设计。使用UML可帮助项目团队进行交流,探索潜在项目并验证软件架构设计。
UML的由来
UML的目标是提供一种可以供所有面向对象方法使用的标准符号,以及选择和集成前身符号的最佳元素。UML已设计用于多种应用程序。因此,它为各种系统和活动(例如,分布式系统,分析,系统设计和部署)提供了设计。
UML并不是从零开始的,它先于一些重大事件,个性和方法论。例如:
- OMT [James Rumbaugh 1991], .
- Booch [Grady Booch 1994] — . - . , , , , .
- OOSE (- [Ivar Jacobson 1992]) — , — , , .
1994年,吉姆·拉姆博(Jim Rambeau)不想与约翰·兰博(John Rambo)混淆,尽管吉姆(Jim)也很酷,因为他是上述对象建模技术的创建者,在离开通用电气(General Electric)并加入Rational Corp.的Grady Booch时一度震惊了软件界。合作的目的是将他们的想法组合成一个统一的方法(该方法的工作名称实际上是“统一方法”)。
到1995年,OOSE的创建者Ivar Jacobson也加入了Rational,他的想法(特别是“用例”的概念)被包含在新的统一方法中,现在称为统一建模语言。
与著名的“四人帮”不同,Rumbo,Butch和Jacobson团队被称为“三个朋友”。
UML还受到其他面向对象符号的影响:
- Mellor和Schlaer [1998]
- 考德和尤登[1995]
- Wirfs-Brock [1990]
- 马丁和奥德尔[1992]
UML还包括新概念,当时还没有采用其他基本方法,例如扩展机制和语言约束。
为什么是UML?
随着软件对许多公司的战略价值增长,业界正在寻找使软件生产自动化以及提高质量,减少成本和缩短上市时间的方法。
这些技术包括组件技术,可视化编程,模板和结构。
公司还寻求在规模扩大时管理系统复杂性的方法。
特别是,他们认识到需要解决重复的体系结构问题,例如物理分布,并发,复制,安全性,负载平衡和容错。
另外,Web开发在简化事情的同时,通常还会加剧这些体系结构问题。
开发了统一建模语言(UML)来满足这些需求。
UML设计的主要目标是:
- 为用户提供现成的表达性可视化建模语言,以便他们可以开发和共享有意义的模型。
- 提供可扩展性和专业化机制以扩展核心概念。
- 独立于特定的编程语言和开发流程。
- 为理解建模语言提供正式的基础。
- 鼓励面向对象工具市场的增长。
- 支持高级设计概念,例如协作,结构,模板和组件。
- 整合最佳做法。
UML图分为两类-结构图和行为图。
结构图显示了系统的静态结构及其在抽象和实现的不同级别上的各个部分,以及它们之间的关系。结构图中的元素表示系统的有意义的概念,并且可以包括抽象,现实世界和实现概念。有七种类型的结构图:
- 复合结构图
- 部署图
- 包装图
- 轮廓图
- 类图
- 对象图
- 组成图
行为图显示了系统中对象的动态行为,可以将其描述为系统随时间的一系列变化。行为图包括:
- 活动图
- 用例图
- 状态图
- 顺序图
- 通讯图
- 互动概览图
- 时序图
现在关于他们每个人的几句话
类图
类图是一种主要在几乎所有面向对象方法中使用的中央建模技术。此图描述了系统中对象的类型以及它们之间存在的各种静态关系。
类图中的三个最重要的关系类型(实际上还有更多)是:
关联,表示类型实例之间的关系,例如,某人在公司工作,该公司有多个办事处。
继承,与面向对象设计中的继承紧密匹配。
聚合,这是面向对象设计中的一种对象组合形式。
组成图
在统一建模语言中,组件图显示了组件如何组合在一起以形成更大的组件或软件系统。
它说明了软件组件的体系结构以及它们之间的依赖关系。
这些软件组件包括运行时组件,可执行组件和源代码组件。
部署图
部署图有助于模拟面向对象软件系统的物理方面。它是一个框图,显示了作为软件工件的部署(分布)的系统体系结构。
人工制品代表了物理世界中特定元素,这些元素是开发过程的结果。
该图在静态视图中模拟运行时配置,并可视化应用程序中工件的分布。
在大多数情况下,这包括对硬件配置以及它们所在的软件组件进行建模。
对象图
静态对象图是类图的实例。它显示了特定时间点系统详细状态的快照。不同之处在于,类图是类及其关系的抽象模型。
但是,对象图是特定时刻的实例,具有特定的性质,因此对象图的使用受到很大限制,即显示数据结构的示例。
包装图
程序包图是一个UML结构图,其中显示了程序包及其之间的依赖关系。
它允许您显示系统的不同视图,例如,很容易为多层应用程序建模。
复合结构图
组合结构图与类图相似,是主要在微型系统建模中使用的一种组件图,但是它描述的是单个部分而不是整个类。这是一种静态结构图,显示了类的内部结构以及该结构可能实现的交互。
该图可以包括内部,部件通过它们相互通信或类实例与部件以及与外界交互的端口以及部件或端口之间的连接器。组合结构是一组相互连接的元素,它们在运行时相互作用以实现目标。每个元素在协作中都有特定的作用。
轮廓图
概要图使我们可以创建特定于域和特定于平台的构造型,并确定它们之间的关系。我们可以通过绘制原型的形状并将其通过面向资源的接口链接到合成或概括来创建原型。我们还可以定义和可视化构造型值。
用例图
用例图根据用例描述了系统的功能需求。本质上,它是系统预期功能(用例)及其环境(参与者)的模型。
用例使我们可以将系统需要的内容与系统如何满足这些需求联系起来。
活动图
活动图是分步和分步工作流的图形表示,并支持选择,迭代和并发。
他们描述了目标系统的控制流,例如对复杂业务规则和操作的研究,以及用例和业务流程。
在UML中,活动图旨在模拟计算和组织过程。
状态图
状态图是UML中用于描述系统行为的一种类型的图,它基于David Harel提出的状态图的概念。状态图显示了启用的状态和转换以及影响这些转换的事件。它帮助您可视化对象的整个生命周期,从而帮助您更好地了解基于状态的系统。
顺序图
时序图基于时间序列对对象的交互进行建模。它显示了在特定用例中某些对象如何与其他对象交互。
通讯图
像顺序图一样,通信图也用于对用例的动态行为进行建模。与序列图相比,通信图更着重于显示对象的交互,而不是时间序列。实际上,通信图和序列图在语义上是等效的,并且可以彼此融合。
互动概览图
交互概述图着重于交互管理流程的概述。这是活动图的变体,其中节点是交互或交互事件。交互概述图描述了隐藏消息和生命线的交互。我们可以链接“真实”图,并在交互概览图中实现图之间的高度导航。
时序图
时序图显示了给定时间段内对象的行为。实际上,这是序列图的一种特殊形式,它们之间的区别在于轴被交换,因此时间从左到右增加,生命线显示在垂直放置的单独隔间中。
为什么UML中有这么多图?
这样做的原因是,您可以从不同的角度看待系统,因为许多感兴趣的参与者都将参与软件开发,例如:分析师,设计师,编码人员,测试人员,质量控制人员,客户,技术作者。
所有这些人都对系统的各个方面感兴趣,并且每个人都需要不同级别的详细信息。
例如,编码器必须了解系统的设计,并且能够将设计转换为低级代码。
相反,技术作家对整个系统的行为感兴趣,并且必须了解产品的功能。
UML试图以一种富有表现力的方式提供该语言,以使所有感兴趣的各方都可以从至少一个UML图中受益。
对于那些懒得阅读的人:
大道!