软件工程的几种图

本文介绍了软件工程中的五种重要图表:用例图、类图、活动图、状态图和时序图。用例图展示了系统中的角色、用例和子系统之间的关系;类图描绘了类的结构和它们之间的继承、关联等关系;活动图用于描述系统动态行为,类似流程图;状态图则反映了实体基于事件的动态行为;时序图尚未展开讨论。文章适合于理解和学习软件建模。

第一次更新: 2021/12/2 16:07
注意:本文很多内容尚不完整,主要用来应付考试。

用例图

  1. 概念

    用例图主要用于描述角色以及角色与用例之间的链接关系,说明的是谁要使用系统,以及他们使用系统可以做些什么。

  2. 用例图的元素

    • 用例图的三个元素 :

      {参与者(Actor),用例(Use Case),子系统}

    • 参与者 Actor

      大多数系统具有多种类型的用户,每类用户表示为一个参与者。

      用一个火柴人表示:

      图片.png

    • 用例 Use Case

      在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述。

      用椭圆表示

      图片.png

    • 子系统

      用来展示系统的一部分功能,这部分功能联系紧密

      用方框表示

  3. 用例图的关系

关系类型说明表示符号
关联参与者与用例之间的关系图片.png
泛化参与者之间或用例之间的关系
包含用例之间的关系
扩展用例之间的关系
  • 关联

    表示参与者与用例之间的通信,用实线表示,指向消息接收方。

    图片.png

  • 泛化

    表示继承关系,指向父用例

    图片.png

  • 包含

    将一个复杂的用例的功能拆解成多个简单的步骤。

    当用例事件流过于复杂时,要简化用例的描述,可以将一段事件流抽象成一个被包含的用例;另一种情况,当用例划分过于细致繁琐时,可以抽象出一个基用例。

    箭头指向分解出来的功能用例。

    • 扩展

      扩展是基础用例的一个延伸,为基础用例一个附加的功能。

      箭头指基础用例

  1. 用例图实例

    超市信息管理系统

@startuml
left to right direction
Actor 超市管理员 as admin
Actor 收银员 as cashier
Actor 顾客 as customer

rectangle 超市商品管理系统 {
admin --> (商品录入)
admin --> (用户信息管理)
admin --> (OS登录)
admin --> (退出)
admin --> (进货管理)
admin --> (销售管理)
admin --> (库存管理)

(商品录入) --> cashier
(OS登录) --> cashier
(退出) --> cashier
(结账) -> cashier

(结账) <-- customer
}
@enduml

类图

  1. 概念

    类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。

  2. 类图的元素

    • 类(Class)

      类一般包含三个组成部分:{类名,属性,方法}

      第一行 类名 ; 第二行 属性 ;第三行 方法

      • 属性和方法之前可附加的可见性修饰符:

        加号("+")修饰 -> 公有成员 public

        减号("-")修饰 -> 私有成员 private

        井号("#")修饰 -> 保护成员 protected

      • 静态属性或方法具有下划线

        class Sample{
            private static double var=0;
            public static void add(double j){
                var +=j;
            }
        
            public static double getVar() {
                return var;
            }
        }
        

        描述为类图中的类

      • 抽象方法或抽象类为斜体

        Shape.java

        abstract class Shape{
            public abstract void draw();
        }
        

        Star.java

        public class Star extends Shape {
            @Override
            public void draw() {
                System.out.println("★");
            }
        }
        

        Star类继承于抽象类Shape。

    • 包(Package)

      包是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。

      用方框表示

    • 接口(Interface)

      接口在类图中为斜体,如

    • 关系

      • 常见的关系有:

        {继承(Inheritance),共享关系(Associaion),聚合关系(Aggregation),复合关系(Compositon),依赖关系(Dependency),实现关系(Implementation)}

      • 其中 {聚合关系(Aggregation),复合关系(Compositon)}属于关联关系(Association)。

      • 类图中的关系表示

        img

      • 在类图中,关系还分一对一关系,一对多关系等。

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nddei0uL-1638431176635)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211201225902995.png)]

        图中,图中Professor和TeacherAssistant之间连线上的数字代表:

        一个教授(Professor)可以有多个教师助理(TeacherAssistant),即教授对应教师助理是一对多关系。

        同理,Teacher和TeacherAssistan互为一对一关系。

活动图

  1. 概述

    活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图

  2. 活动图的元素

    {开始结点,终止结点,活动状态图,分支与合并,动作流,对象,数据存储对象,对象流}

    • ▞开始结点(Initial Node)

      实心黑色圆点

    • ▞终止结点(Final Node)

      • 活动终止节点表示整个活动的结束

        圆圈+内部实心黑色圆点

      • 而流程终止结点是子流程的结束

        圆圈+内部X

    • ▞活动状态图(Activity)

      有如下特点

      • 活动状态可以分解成其他子活动或者动作状态。
      • 活动状态的内部活动可以用另一个活动图来表示。
      • 和动作状态不同,活动状态可以有入口动作出口动作,也可以有内部转移
      • 动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态

      平滑的圆角矩形

    • ▞动作流(Control Flow)

      动作之间的转换

      动作之间的转换称之为动作流活动图的转换

    • ▞分支与合并

    • 对象(Objects)

    • 数据存储对象(DataStore)——关键字**<>**

    • 对象流(Object Flows)

      对象流是动作状态或者活动状态对象之间的依赖关系**,表示动作使用对象或动作对对象的影响**。

      状态图中的对象用矩形表示矩形内是该对象的名称名称下的方括号表明对象此时的状态

  3. 实例

    新雇员信息管理系统:

状态图

  1. 概述

    状态图描述了一个实体基于事件反映的动态行为,显示了该实体是如何根据当前所处的状态对不同的事件作出反应的。

  2. 状态图的元素

    {状态,转换,初始状态,终止状态,判定}

    • 状态

      状态用于对实体在其生命周期中的各种状况进行建模,一个实体总是在有限的一段时间内保持一个状态。

    • 转换

      在UML的状态建模机制中,转换用带箭头的直线表示,一端连接源状态,箭头指向目标状态。转换还可以标注与此转换相关的选项,如事件、监护条件和动作等,如下图所示。

    • 判定

      活动图和状态图中都有需要根据给定条件进行判断,然后根据不同的判断结果进行不同转换的情况。实际就是工作流在此处按监护条件的取值发生分支,在UML中,判定用空心菱形表示。

    • 初始状态

      每个状态图都应该有一个初始状态,它代表状态图的起始位置。

      初始状态用一个实心圆表示

    • 终止状态

      终止状态是一个状态图的终点,一个状态图可以拥有一个或者多个终止状态。

      终止状态用一个含有实心圆的空心圆表示

    3.实例

    ​ 公共汽车状态图

时序图

待填坑…

包图

待填坑…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值