【软件工程】软件建模基本概念和常用UML模型图

一,软件建模基本概念

1.为什么建模?

  • 若要创建一座大厦,首先要做的肯定不是先去买所需要的材料,而是需要对建筑物的大小,形状和样式做一个规划,做出相应的图纸和模型。

  • 假如你要根据如下需求实现一个图书馆管理系统,应该如何实施?

  • 需求描述:

    图书馆管理系统,是使用计算机实现图书大量信息处理的电子档案管理系统,在本系统中主要满足借书者,图书管理员和系统管理员三个方面的需求:

    • 对于借书者来说主要是查询个人信息,查询图书信息,约定当前正在被别人借阅的图书,借阅图书和返还图书等。
    • 图书管理员是系统的主要使用者,负责借书处理和还书处理,当读者约定的图书借出给定预定者后取消图书预定
    • 系统管理员主要负责的系统维护工作,涉及到读者信息管理,图书信息管理,系统状态为维护等
  • 软件建模体现了软件设计思想,需求和实现之间架起了一座桥梁,通过模型指导软件系统的具体实现。

  • 模型并不是软件系统的一个完备表示,而是所研究的系统的一种抽象

2.如何进行软件建模?

  • 软件建模原则

    • 选择正确的模型,模型要与现实相关联
    • 从不同的角度,使用不同的模型来表示一个系统
    • 模型是抽象的,是选取系统某个最显著的特征并进行简化表示,因此需要通过不同角度的视角采用不同的模型来表示:
      • 外部视角: 对系统上下文或者环境进行建模
      • 交互视角:对系统即其环境或者系统的构件之间的交互进行建模
      • 结构化视角:对系统的组件或者系统所处理的数据的结构进行建模
      • 行为视角:对系统的动态行为以及系统如何响应事件进行建模
  • 软件建模方法

    在不同的领域和场景下有不同的软件建模方法,其各自的建模思想和采用的建模工具也不尽相同

    • 结构化方法
    • 面向对象方法
    • 基于构建方法
    • 面向服务方法
    • 面向方面方法
    • 模型驱动方法
    • 形式化方法
    • 对于开发人员普遍使用的面向对象方法建模
  • 软件建模工具

    随着面向对象技术的不断发展和应用,形成了面向对象的建模标准,即UML(Unified Modeling Language)统一建模语言,是面向对象开发中一种通用的图形化建模语言,具体特点如下:

    • 面向对象:支持面向对象技术的主要概念,提供了一批基本的模型元素的表示图像和方法,能简洁明了地表达面向对象的各种概念
    • 可视化,表达能力强:通过UML的模型图能够清晰地表示系统的逻辑模型和实现模型,可用于各种复杂系统的建模
    • 独立于过程: 是系统建模语言,独立于开发过程
    • 独立于程序设计语言: 用UML建立的软件系统模型可以用Java,C++,Smalltalk等任何一种面向对象的程序来实现
    • 易于掌握使用: UML图形结构清晰,建模简洁明了,以容易掌握使用

3.UML内容组成

  • 事物: 是UML中重要的组成部分,是UML模型中最基本的面向对象的构造块。它们在模型中属于最静态的部分,代表概念上或者物理上的元素
  • 关系: 把事物紧密联系在一起
  • 图: 是很多相互关系的事物的组

【软件工程】软件建模基本概念和常用UML模型图_第1张图片

4.9种UML模型图

  • 用例图
    • 用于描述角色以及角色与用例之间的关系(如:泛化,关联,依赖);说明的是谁要使用系统,以及他们使用系统可以做些什么。是一种静态模型
  • 类图
    • 用于描述系统中的类,以及各个类之间的关系(如:泛化,实现,依赖,聚合,组合)。是一种静态模型
  • 对象图
    • 于类图极为相似,它是类图的实例,对象图显示类的多个对象实例。而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系,是一种静态模型
  • 状态图
    • 用于描述类的对象所有可能的状态,以及事件发生时状态的转移条件,是对类图行为上的补充。是一种动态模型
  • 活动图
    • 用于描述用例要求所进行的活动,以及活动间的约束关系,有利于识别并行活动。是一种动态模型
  • 顺序图
    • 也叫做序列图或时序图,用于描述参与者与系统之间的交互过程,强调消息是如何在对象之间被发送和接收的。是一种动态模型
  • 合作图
    • 也叫做协作图,和顺序图相似,用于描述对象间的动态合作关系,可以看成是类图和顺序图的交集,重点描述对象之间的交互通信关系。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择合作图。是一种动态模型
  • 组件图
    • 也叫构建图,用于描述代码构建的物理结构以及各种构件之间的依赖关系,是一种静态模型
  • 部署图
    • 用于描述系统物理部署,例如计算机和设备,以及他们之间是如何连接的。是一种静态模型

5.UM4+1视图

【软件工程】软件建模基本概念和常用UML模型图_第2张图片

二,常用UML模型图

1.UML模型在软件开发流程中的应用

软件开发过程中,不同的阶段需要用到不同的UML图,选择使用那些图,需要深刻理解改图的主要用途,以及它表达的优势。

【软件工程】软件建模基本概念和常用UML模型图_第3张图片

2.用例图

  • 定义:
    • 用例图给出一组用例,参与制以及它们之间的关系。它以使用者如何使用系统的案例为核心,即使别清楚了价值客户群体,有描述了系统对外接口功能,是一个静态视图,描述系统在干什么。
  • 用例图中的关键元素
    • 描述用例首先确定参与者,即角色(Actors),Actors表示提供或者接受系统信息的人或系统,他们是与系统有交互作用的人或者事物,代表一个系统的使用者或外部通信的目标。
    • 用例是系统中的一个功能单元,被描述的角色与系统之间的一次交互。用例需要从角色希望系统提供的功能中提取,而不是以系统自身角度来提取,满足参与者的需求的用例才是好用例。
    • 用例见常见的关系有包含,扩展,泛化。包含也可以叫Use,表示本用例会用到被包含的其他用例,被包含的用例可以被重用的;扩展用例是可选的,在特定的场景下可以补充基础用例,降低基础用例的复杂性;泛化体现了父子关系,表现存在派生和继承。

3.类图

  • 定义:
    • 类图是依据系统结构从静态观点描述系统的视图,它定义系统中的对象和类及类之间的关系,以及类的内部结构,即类的属性和操作。
  • 类图中的关系:
    • 实现: 是一种类和接口的关系,表示类是接口所有特征和行为的实现。
    • 依赖: 是一种使用的关系,有单向依赖和双向依赖,但是避免使用双向依赖。
    • 泛化: 是一种继承关系,指定了子类继承父类的所有特征和行为。
    • 关联: 是一种拥有的关系,它使一个类知道另一个类的属性和方法。
    • 聚合: 是整体与个体的关系,可以理解成把个体聚集在一起。
    • 组合:是整体和局部的关系,整体的对象负责代表局部的对象的生命周期,可以理解成整体和由局部组成的。

4.动态图(顺序图,活动图,状态图)

动态模型是描述系统的功能是如何完成的

  • 顺序图

    • 定义:顺序图是强调消息时间顺序的交互图。描述了不同对象之间的相互协作完成预期行为的动态过程。顺序图具有直观,形象的优点。对吴现,理解不同对象间的交互关系时序具有较大的帮助。
    • 顺序图的主要元素
      • 顺序图将交互关系表示为一个二维图
      • 纵向是时间轴,时间沿竖线向下延伸
      • 横向轴代表了在协作中各独立对象的类元角色
      • 类元角色用生命线表示
      • 消息用从一个对象的生命线到另外一个对象生命线的箭头表示
  • 活动图

    • 定义:活动图用于对目标对象计算流程和工作流程建模
      • 一张活动图本质上是一个流程图,它显示系统从一个活动到另外一个活动的流程图迁移
      • 在完成用例建模后,通过活动图表示用例的活动步骤,用于描述用例模型,有助于用例的动态行为建模
      • 也可以用于通用的流程图建模场景
    • 活动图中的四种基本模型元素
      • 活动Activity: 表示一个执行步骤
      • 活动流Activity line:不同活动间的控制流或数据流
      • 控制符Cotrol node:分支decision/merge,并发fork/join
      • 泳道Swimming line:用于表示不同活动分组
  • 状态图

    • 定义:
      • 状态图描述了系统元素的状态条件和响应,它反映了类的对象可能具有的状态以及引起状态变化的事件。
      • 并不是所有的类都有相应的状态图,这些图仅用于具有下列特点的类:具有若干个确定的状态,类的行为在这些状态下会受到影响变为其他状态,另外也可为系统描述状态图。
      • 状态图可用于类,用例或者整个系统。
    • 状态图中的主要概念:
      • 状态:描述了一个类对象生命周期中的一个时间段。
      • **事件:**是发生在时间和空间上的值得注意的事情,事件可以引起状态迁移。事件分为:信号事件,调用事件,改变事件,时间事件等。
      • 转换:从状态出发的转换定义了处于此状态的对象对外界发生的事件所做出的反应。转换要引起转换的触发器事件,监护条件,转换的动作和转换的目标状态。
  • 顺序图,活动图和状态图的对比

    类别 建模对象 核心建模元素 建模时机 适用场景
    顺序图 多个不同对象间交互过程 Role-Message 在类图完成之后进行 描述复杂的多个对象间交互。并发,分支过多的场景会影响可理解性
    活动图 (特定对象或不同对象的)不同活动之间的流程 Activity-Control Flow 在用例图或者类图完成之后进行 描述涉及到复杂的活动步骤的用例。特别是并发,分支复杂等场景
    状态图 (特定对象的)不同状态迁移 State-Transition 在用例图或者类图完成之后进行 涉及到复杂的状态变化的场景,也适用于并发场景,如网络连接的会话状态等
  • Tips:

    • 顺序图强调多个不同对象之间的交互先后顺序
    • 活动图强调复杂流程处理中活动单元的分支处理
    • 状态图强调特定对象在不同事件发生后的状态变化

你可能感兴趣的:(软件工程,软件工程,uml)