软件工程—开发设计

PlanUML

开源工具,使用简单的文字描述画UML图,官网地址:https://plantuml.com/zh/

UML

关联是一种所有权关系,允许一个类知道另一个类的属性和方法。聚合关系是一种关联关系,是一种强关联关系;关联和聚合在语法上是不可区分的,必须检查具体的逻辑关系。然而,没有整体,部分不能单独存在。组合关系是一种关联关系,强于聚合关系。

内容参考:软件工程

一、UML的概念模型

UML具有一个完整的概念模型,提供了一套完整、全面的表达方法,其主要元素包括:①UML的基本构造块支配这些构造块如何放在一起的规则一些运用于整个UML的公共机制

二、UML概念模型图例

在这里插入图片描述

三、UML的基本构造块

在UML中可以将词汇划分为3种构造块,即3类词汇或基本元素:事物关系

1、UML中的事物

(1)UML中的四种事物

事物是对模型中最具有代表性的成分的抽象,可分为结构事物行为事物分组事物注释事物

1)结构事物

通常是模型的静态部分,描述概念的物理元素。主要有以下五种结构事物:

  • (class) :与面向对象方法中类的概念一致。
  • 接口 (interface) :描述了一个类或构件的一个服务的操作集。
  • 用例 (use case) :代表了一个系统功能,是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(即系统用户)有价值而且可观察的结果。
  • 构件 (component) :描述的是系统中的软件物理事物。
  • 节点 (node) :是在运行时存在的物理元素,表示了一种可计算的资源。

2)行为事物

行为事物主要有:状态、交互。

3)分组事物

分组事物主要有:包。

4)注释事物

注释事物主要有:注解。

(2)UML中各种事物的图示法

依据上面对四种事物的描述,下面给出UML中各种事物的图示。

在这里插入图片描述

2、UML中的四种关系

UML中的四种关系是:依赖、关联、泛化、实现。

(1)依赖

两个模型元素中,有一个是独立的,一个是非独立的,独立的模型元素发生改变,会影响非独立的模型元素

用带箭头的虚线来表示依赖关系。

如图所示:

在这里插入图片描述

(2)关联

关联是一种结构化的关系,指两个模型元素有联系。双向关联用一条实线来表示。

注意:关联关系有多重度,主要有:010..10..*1..*

如图所示:

在这里插入图片描述

值得注意的是,关联中有两种特殊的关联关系:组合和聚合

如果是组合和聚合类型,则再加一个棱形符号

如下图所示:

在这里插入图片描述

在这里插入图片描述

(3)泛化

一般特殊的关系,也就是继承的关系。用实线加空心三角号来表示。

如图所示:

在这里插入图片描述

(4)实现

实现关系是,一种模型元素保证另外一种模型元素的执行,该关系主要用在接口中。用一条实线来表示。

如图所示:

在这里插入图片描述

以下再给出一张完整的图来回顾这四种关系。

在这里插入图片描述

IDEA中生成UML关系图

在这里插入图片描述

3、UML中的图形(五大类十种图)

(1)用例图

1)用例图的定义

用例图从用户角度描述系统功能,并指出各功能的操作者。

用例图显示若干角色执行者 (actor) 以及这些角色与系统提供的用例之间的连接关系。用例图定义的是系统的功能需求

2)用例图的基本构成

  • 用例;
  • 角色;
  • 角色之间的关系(如果有,主要是泛化);
  • 角色和用例之间的关系(单向关联或双向关联);
  • 用例和用例之间的关系(包含、扩展、泛化)。

3)元素与元素之间的关系

include:

  • include(包含关系),当两个或多个用例中共用一组相同的动作,可以将其抽出来作为一个独立的子用例,供多个基用例所共享。
  • 基用例并非一个完整的用例,所以必须和子用例一起使用才够完整。
  • include关系在用例图中使用带箭头的虚线表示(在线上标注 <<include>> ),箭头从基用例指向子用例

extend:

  • extend(扩展关系),对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
  • extend的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行。
  • extend关系在用例图中使用带箭头的虚线表示(在线上标注 <<extend>> ),箭头从子用例指向基用例

子用例和基用例的关系:

(泛化关系)子用例将继承父用例的所有结构、行为和关系。也就是说在任何使用基用例的地方都可以用子用例来代替。

(泛化关系)在用例图中使用空心的箭头表示,箭头方向从子用例指向基用例

4)图示

在这里插入图片描述

(2)静态图:类图、对象图、包图

1)类图

①定义: 类图(class diagram)描述系统所有涉及到的类以及类和类之间的关系。

②类图的基本构成:

  • 类(类名、属性和方法);
  • 类和类之间的关系(依赖、关联、泛化、实现)。

2)对象图

①定义: 对象图是类图的实例,几乎使用与类图完全相同的标识,但两者之间又有一定的差别,如下图例所示。

②图例:

在这里插入图片描述

(3)行为图:状态图、活动图

1)状态图

①定义: 状态图(state chart diagram)描述系统涉及到的某个对象的所有状态以及状态和状态之间转换的事件。

②状态图的基本构成:

  • 状态(圆角矩形);
  • 状态的起点、终点;
  • 状态之间转换的事件;
  • 注解(有时会有)。

③图例:

在这里插入图片描述

2)活动图

①定义: 活动图(activity diagram)描述满足用例功能需求所要进行的活动以及活动间的约束关系。

②活动图的基本构成:

  • 活动(注意符号与状态不同);
  • 活动的起点、终点(终点有时有多个);
  • 活动之间用箭头连接;
  • 判定(有时会有,棱型框);
  • 同步条(表示活动的分叉或汇合,包括水平、垂直两种);
  • 泳道(表示活动的不同职责)。

③图例:

在这里插入图片描述

(4)交互图:顺序图、协作图

1)顺序图

①定义: 顺序图显示对象之间的动态合作关系。。

②顺序图的基本构成:

  • 对象;
  • 生命线(对象正下方的虚线,表示对象在一段时期内的存在) ;
  • 窄矩形条(表示对象被激活,说明对象正在执行某种操作);
  • 交互的消息(有顺序之分,消息其实就是接收对象的操作方法);
  • 注解(有时会有);
  • 可以转换成协作图。

③图例:

在这里插入图片描述

2)协作图

①定义: 协作图(callobaration diagram)和顺序图的作用一样,反映的也是动态协作

②协作图的基本构成:

  • 对象;
  • 实线(对象之间的连接线,注意没有箭头) ;
  • 交互的消息(有顺序之分,消息其实就是接收对象的操作方法);
  • 注解(有时会有);
  • 可以转换成顺序图。

③图例:

在这里插入图片描述

(5)实现图:构建图、部署图

1)构件图

①定义: 描述代码构件的物理结构以及各构件之间的依赖关系。

②构件图的基本构成: 构件。

③图例:

在这里插入图片描述

2)部署图

①定义: 系统中硬件的物理体系结构。

②部署图的基本构成:

  • 三维立方体表示部件;
  • 节点名称位于立方体上部。

③图例:

在这里插入图片描述

数据流图与数据字典

一、数据流图的组成部分

数据流图中的基本图形元素包括数据流、加工、数据存储和外部实体(数据源或宿)。其中,数据流、加工和数据存储用于构建软件系统内部的数据处理模型;外部实体表示存在于系统之外的对象,用来帮助用户理解系统数据的来源和去向。DFD的基本图形元素如下图所示:

在这里插入图片描述

**(1)数据流:**由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向可以有以下几种:

1)从一个加工流向另一个加工;

2)从加工流向数据存储(写);

3)从数据存储流向加工(读);

4)从外部实体流向加工(输入);

5)从加工流向外部实体(输出)。

DFD中的每个数据流用一个定义明确的名字表示。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。值得注意的是,DFD中描述的是数据流,而不是控制流。数据流或者由具体的数据属性(也称为数据结构)构成,或者由其他数据流构成。组合数据流是由其他数据流构成的数据流,它们用于在高层的数据流图中组合相似的数据流,以使数据流图更便于阅读。

**(2)加工:**描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。每个加工都有一个名字和编号。编号能反映出该加工位于分层DFD中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。描述加工的方式有决策树、决策表和结构化语言等。一个加工可以有多个输入数据流和多个输出数据流,但至少有一个输入数据流和一个输出数据流。

**(3)数据存储:**用来存储数据。通常,一个流入加工的数据流经过加工处理后就消失了,而它的某些数据(或全部数据)可能被加工成输出数据流,流向其他加工或外部实体。除此之外,在软件系统中还常常要把某些信息保存下来以供以后使用,这时可以使用数据存储。例如,在考务处理系统中,报名时产生的考生名册要随着报名的过程不断补充,在统计成绩和制作考生通知书时还要使用考生名册的相关信息。因此,考生名册可以作为数据存储存在,以保存相关的考生信息。**每个数据存储都有一个定义明确的名字标识。**可以有数据流流入数据存储,表示数据的写入操作;也可以有数据流从数据存储流出,表示数据的读操作;还可以用双向箭头的数据流指向数据存储,表示对数据的修改。

这里要说明的是,DFD中的数据存储在具体实现时可以用文件系统实现,也可以用数据库系统实现。数据存储的存储介质可以是磁盘、磁带或其他存储介质。

**(4)外部实体(数据源或宿):**指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。例如,对于一个考务处理系统而言,考生向系统提供报名单(输入数据流),所以考生是考务处理系统的一个源;而考务处理系统要将考试成绩的统计分析表(输出数据流)传递给考试中心,所以考试中心是该系统的一个宿。在许多系统中,某个源和某个宿可以是同一个人员或组织,此时,在DFD中可以用同一个符号表示。考生向系统提供报名单,而系统向考生送出准考证,所以在考务处理系统中,考生既是源又是宿。源和宿采用相同的图形符号表示,当数据流从该符号流出时,表示它是源;当数据流流向该符号时,表示它是宿;当两者皆有时,表示它既是源又是宿。

二、数据流图的分层

从原理上讲,只要纸足够大,一个软件系统的分析模型就可以画在一张纸上。然而,一个复杂的软件系统可能涉及上百个加工和上百个数据流,甚至更多。如果将它们画在一张图上,则会十分复杂,不易阅读,也不易理解。所以这时候通常用分层数据流图清晰地对稍微复杂一些的实际问题建模。

分层数据流图的顶层只有一张图,其中只有一个加工,代表整个软件系统,该加工描述了软件系统与外界之间的数据流,称为顶层图。顶层图中的加工(即系统)经分解后的图称为0层图,也只有一张。

处于分层数据流图最底层的图称为底层图,在底层图中,所有的加工不再进行分解。分层数据流图中的其他图称为中间层,其中至少有一个加工(也可以是所有加工)被分解成一张子图。在整套分层数据流图中,凡是不再分解成子图的加工称为基本加工。

三、数据流图案例分析

案例1:商店业务管理系统

(1)某商店业务管理系统的顶层数据流图如下:

在这里插入图片描述

以上数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能。

(2)该管理系统的数据流图绘制步骤为:

  • 首先确定系统的输入输出
  • 根据商店的业务,画出顶层数据流图,以反映最主要业务的处理流程;
  • 经过分析,商店业务处理的主要功能应当有销售采购会计三大项。主要数据流的输入源点和输出终点是顾客和供应商;
  • 然后从输入端开始,根据商店业务的工作流程,画出数据流流经的各个加工框,逐步画到输出端,得到第0层数据流图

(3)根据步骤分别画出第0层和第1层数据流图。具体图形如下:

  • 第0层数据流图如下图所示:

在这里插入图片描述

  • 细化第0层数据流图的每一个加工项,得到第1层数据流图,其中包括销售采购会计三大项功能。具体数据流图如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

案例2:学籍管理系统

(1)某学籍管理系统的顶层数据流图如下:

在这里插入图片描述

(2)该管理系统的数据流图绘制步骤为:

  • 首先确定系统的输入输出
  • 根据学籍管理系统的业务,画出顶层数据流图,以反映最主要业务的处理流程;
  • 经过分析,据学籍管理系统的主要功能应当有注册成绩管理资格管理奖励管理四大项。主要数据流的输入源点和输出终点是学生和老师;
  • 然后从输入端开始,根据学籍管理系统相关业务的工作流程,画出数据流流经的各个加工框,逐步画到输出端,得到第0层数据流图

(3)根据步骤画出第0层数据流图。具体图形如下:

  • 第0层数据流图如下图所示:

在这里插入图片描述

案例3:大型企业数据中心

某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量的连接需求,欲构建数据管理中间件,其主要功能如下:

(1)数据管理员可通过中间件进行用户管理、操作管理和权限管理用户管理维护用户信息(用户名、密码),存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。

(2)中间件验证前端应用提供的用户信息。若验证不通过,返回非法用户信息;若验证通过,中间件将等待前端应用提交操作请求。

(3)前端应用提交操作请求后,中间件先对请求进行格式检查。如果格式不正确,返回格式错误信息;如果格式正确,则进行权限验证(验证用户是否有权执行请求的操作),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理

(4)连接管理连接相应的后端数据库并提交操作。连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接

(5)后端数据库执行操作并将结果传输给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。

现采用结构化方法对系统进行分析与设计,获得如下图所示的顶层数据流图0层数据流图

在这里插入图片描述
在这里插入图片描述

回答以下问题:

  1. E1、 E2 和 E3 分别指哪三个实体?E1:前端应用;E2:数据管理层;E3:后端数据库。
  2. D1 、D2 和 D3 分别指哪三个数据存储?D1:用户表;D2:操作表;D3:权限表。
  3. 加工P指什么?并指出0层数据流图丢失的两条数据流,包括数据流的起点、终点及数据流名称。加工p表示数据管理中间件。0层数据流图丢失的两条数据如4和5所示。
  4. 丢失的数据流1中,其起点、终点和名称分别是什么。→起点为P,终点为E,名称为处理后的操作结果
  5. 丢失的数据流2中,其起点、终点和名称分别是什么。→起点为E3,终点为P,名称为操作结果

四、数据字典案例分析

案例1:学籍管理系统

某学籍管理系统的第0层数据流图如下所示。

在这里插入图片描述

**Question:**根据以上第0层数据流图,请写出该学籍管理系统的五个条目。

Answer:

条目一:数据流

在这里插入图片描述

条目二:数据元素

在这里插入图片描述

条目三:数据存储

在这里插入图片描述

条目四:数据加工

在这里插入图片描述

条目五:外部项

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/HXBest/article/details/129642797