UML的全面认识
学习UML之前,我们先从什么是面向对象开始
Uml是面向对象的描述语言也是面向对象的延申,所以在讲UML之前要先讲面向对象
从字面上讲面向对象,就是面向物体、面向真实的事物
怎么用抽象的语言直观的描述这个物体,可以让我们快速理解。
那第一步就是先给物体起一个名字,第二步就是怎么表示物体之间的关系
这就像我们生活中,我说苹果你马上就知道是什么,不需要我做任何多余的解释。我再说梨、西瓜,你就知道它们都是水果的关系。
就像实物,我们直接给它们命名。这是第一步
下第二步,如何描述它们之间相关联的关系,这我们就用到UML的Symbol符号。
这一点和五线谱的音乐符号还有电工符号很相似,可以直接的知道什么含义。
像图上的UML箭头符号,在这可以简单理解为“有„的意思,控制器上有按钮和led灯
面向对象的第三点,事物的分类,像我们生活一样会有鱼类、肉类、奶制类等,哪些事物属于哪类,不需要描述,我们大脑就会自动分类。
在编程世界数字世界也是一样的,比如图上的描述,我们使用的控制器属于STM32系列的,这也有一个UML符号空心实线箭头指向父类STM32,表示属于某一类,可以简单翻译成“是“。
接下来我们就进入UML的世界
UML Unified Modeling Language 是统一建模语言的简称,它是一种由一整套图表组成的标准化建模语言(看图,分为静态图/结构图和动态图俩大类,重点图用红色框表示)。UML用于帮助系统开发人员阐明、展示、构建和记录软件系统的产出。
像现在我们经常讲的数字孪生、数字双胞胎就是建模的一种表现形式,现实世界和数字世界、编程世界的对照。面对现在物联网Iot的发展和产品的复杂性,让我们知道建模技术的重要性。
接下来,通过几个重点建模图表,来认识一下UML的实用性。
第一个是用例图,用例图是UML图中最简单和最使用的图,是从用户的角度直观描述对信息系统的需求,分析产品的功能和行为;定义和描述了系统的外部可见行为。
用例图(Use Case Diagram)是描述用例、参与者以及它们之间关系的图。描述用户希望如何使用一个系统。通过用例图可以知道谁是系统相关的用户,希望系统提供哪些服务,以及为系统提供什么样的服务。用例建模是实现系统需求分析的一个很好的方法。
第二个图是活动图
活动图也是描述行为的图,不同在于活动图描述的是活动(activity)的流程。从when和how的维度来表达对应的事件。使用场景,一般活动图会配合用例图一起使用,我们通常使用用例图表达产品需求,确定功能的系统边界,接着通过活动图来表达用例之间的流程。 用例图是需求结构化的表达,能够比较容易的看到系统包含哪些功能,是静态的,单纯从用例图没办法了解用例之间是怎么流通的,因此我们会通过活动图来配合,表达出用例的流程
活动图(Activity Diagramm),描述了活动的顺序,展现从一个活动到另一个活动的控制流,即活动图是一种流程图。活动图主要由活动和动作构成。
接下来我们讲实现
那就是最最重要的类图
类是面向对象系统中最重要的构造块。对于程序员来说,最频繁使用的就是类图。
类图(Class Diagram):类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。软件设计师设计出类图后,程序员就可以用代码实现类图中包含的内容。
类图是UML图中最重要的图之一,是软件的实际蓝图。用例图和活动图只是为了让软件开发人员有足够的信息来设计和实现软件。
不仅将类图用于构造还用于实现。不仅可以使用它显示软件的结构,还可以从该图中生成源代码。
时序图(Sequence Diagram),UML交互图。时序图作为常用的UML交互图,可以直观的传达系统内外之间的交互过程
它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。时序图中包括的建模元素主要有:对象(Object)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等。 序列图,通过从源代码自动生成。
UML 状态图 state machine,主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。
用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。用于描述一个对象在其生存周期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action),这些状态控制外部或内部事件的不同状态。状态机由状态、转换、事件、活动和动作五部分组成。
接下来是系统工程的由来:
SysML是一种跨学科的建模语言。它在机械,电气工程,电子和软件之间进行调解,也是在UML的基础上开发的。
系统工程中由于缺乏标准的建模语言,从而限制系统工程师和其他学科之间关于系统需求和设计的有效通信,影响了系统工程的质量和效率。
随着软件系统体系变的越来越复杂、规模越来越大,高质量、高可靠性的嵌入式实时系统,并且可以进行安全性验证与分析的技术就尤为重要。
SysML ( System Modeling Language)是系统工程应用开发的标准建模语言,支持对各种复杂系统进行详细说明、分析、设计、验证和确认。它一种跨学科的建模语言,涵盖机械,电气,电子,液压,气动和软件领域,能够在一个模型中整体映射现代机电一体化系统。
和UML用来统一软件工程中使用的建模语言一样,SysML的目的是统一系统工程中使用的建模语言。