UML(第三章:用例建模+ea实战)_(1)在 ea 工具中建立项目文件“图书.eap”,并对业务模型进行 组织; (2)识别业务参-程序员宅基地

技术标签: # uml学习笔记  uml  

上一篇:UML(第二章:可视化建模实践概念知识)

前言

使用的ea环境:
在这里插入图片描述


一.用例建模相关理论知识

适合用例建模的情况:

  • 系统由功能需求所主导
  • 系统具有很多类型的用户,系统对他们提供不同的功能
  • 系统具有很多接口

不适合:

  • 系统有非功能需求所主导
  • 系统具有很少的用户
  • 系统具有很少的接口

1.1 获取原始需求

在这里插入图片描述

非功能性需求(Robert Grady软件质量准则“FURPS”):

  • 功能性(Functionality)
  • 使用性(Usability)
  • 可靠性(Reliability)
  • 性能(Performance)
  • 可支持性(Supportability)

1.2 开发一个可以理解的需求

1.2.1 识别参与者

1.2.1.1参与者定义(Actor)

在这里插入图片描述

在系统之外,透过系统边界与系统进行有意义交互的任何事物

1.2.1.2 参与者要点
  • 参与者可以是系统外的,代表在系统边界之外的真实事务,并不是系统的成分
  • 参与者可以是系统边界,表示参与者透过系统边界直接与系统交互,此时参与者的确定代表着系统边界的确定
  • 参与者必须具备有意义的交互
  • 参与者的类型可以是人、外系统、外部因素、时间等
1.2.1.3 参与者的名字

对参与者赋予能更好地表达其角色(作用)的名称,避免使用个人姓名。

1.2.1.4 参与者的泛化
  • 同种类的用例之间可以进行通信。(例如下图中,经历可以参加雇员的所有用例)
    在这里插入图片描述

  • 没有实际意义的参与者,不允许访问任何用例(例如下图中的用户actor没有具体指向性)
    在这里插入图片描述

1.2.2 识别用例

1.2.2.1用例定义

用例实例是系统执行的一系列动作,这些动作将生成特定参与者可观测的结果值。

1.2.2.2用例要点
  • 可观测性:用例止于系统边界,这意味着用例重点在于描述交互行为,而不显示内在的系统活动

  • 结果值:用例必须是有意义的目标

  • 系统执行:结果值由系统生成

  • 使用的语言是相应场景条件下的业务语言(用户词汇),且应该站在用户的观点。
    在这里插入图片描述

  • 一组用例实例即为用例的粒度

1.2.2.3用例的命名
  1. 执行者视角:(状语)动词+(定语+)宾语
    在这里插入图片描述
1.2.2.4用例粒度

需要注意的是下面两个问题:

  • 步骤当用例(这样主要是会使得过于详细,不具有简洁性,在大型用例集合中选用优先级不高)
    在这里插入图片描述

  • 系统活动当用例(同上太详细了,不应该划分为用例,只用在用例对应的事件流中进行说明就行了)
    在这里插入图片描述
    对于用例粒度的理解最好把握一个原则:当前用例独立而完整。
    下图中include“打印借书证”用例是一个正确的用法。
    这是因为办证和补证本身互相独立,但他们都包含了“打印借书证”这一公共部分,此时将多个用例的公共部分细化为一个新的用例就比上面单一化列出某一用例的include用例要好,它能够进一步表明办证和补证的独立性,也从逻辑上说明了用例的完整性,比如只要打印借书证功能正常,补证可以不考虑办证的情况而正常办理。
    在这里插入图片描述

1.3 分析问题(描述需求)

1.3.1用例规约文档

用例图是框架,用例规约文档就是其内在的补充。

1.3.2用例规约组成

  • 用例名称
  • 用例标识
  • 涉及的参与者
  • 描述
  • 用例的规格说明
    • 前置条件(PreConditions):约束在用例开始前系统的状态
    • 后置条件(PostConditions):约束用例执行后系统的状态
    • 正常事件流(Flow of events)
    • 备选事件流(Alternate flow)

1.3.3事件流描述要点

在这里插入图片描述

事件流一般是可观测的、体现客户利益的文字。
事件流有两种类型:

  1. 基本事件流
    一般用来描述没有任何错误发生的情况。
  2. 备选事件流
    是对于基本事件流的补充,比如基本事件流出现分支或异常的情况。

1.3.4活动图在用例需求分析中的作用

活动图能够直观清晰的分析用例,了解动作与动作之间的依赖关系。一张完整的活动图是所有用例的集成图。同时用例能对整个系统的工作过程加以区分。

1.4 重构用例模型

1.4.1 用例关系

在这里插入图片描述

  • 包含关系(Include):基用例中复用被包含用例的行为;一般提取公共步骤,便于复用。
    在这里插入图片描述

  • 扩展关系(Extend):通过扩展用例对基用例增加附加的行为,表示功能被扩展。一般扩展发生在要处理某些特殊情况时。
    在这里插入图片描述

  • 泛化关系(Generalization):父与子的关系,派生用例继承泛化用例的行为并添加新行为。
    在这里插入图片描述

1.4.2 用例分类

1.4.2.1开发周期

是围绕用例的需求来组织的,一个开发周期要被指派一个到多个用例,如果完全版本的用例在一个开发周期中处理起来太复杂的话,那就采用简化版本的用例。
在这里插入图片描述

用例分类原则: 高级别用例——对系统核心体系影响最大的用例。

1.4.2.2用例的分包

目的是为了让用例图能够更为清晰的表现出系统的业务逻辑关系和层次。对系统进行模块的分割。是为了应对庞大数量的用例。
常见的分包方式:

  • 按参与者分包
  • 按主题分包
  • 按开发团队分包
  • 按发布情况分包
    推荐顺序:主题>开发团队>发布情况>参与者
    我们可以看一个例子:
    在这里插入图片描述
    分别进入不同的包我们可以查看详情:

在这里插入图片描述

二.理论实战:某学校网上选课系统

题目详情:
管理员通过学校网络课程管理系统,建立本学期要开设的各种课程,将课程信息发布到网上,并可以对课程进行改动和删除。
学生通过自己的计算机进入系统,可以浏览课程目录,查询课程详细信息,选择课程,网上支付课程费用。

2.1 找出系统外部参与者,确定系统边界和范围

在这里插入图片描述

2.2 确定各参与者所期望的系统行为

管理员 学生
建立课程 浏览课程目录
发布课程 查询课程信息
修改课程信息 选择课程
删除课程 网上付费

2.3给这些系统行为命名为用例

在这里插入图片描述

2.4 绘制用例图

在这里插入图片描述

2.5 编制用例叙述

在这里紧以管理员“建立课程”这一用例为例——

  • 用例一:建立课程
  • 参与者:管理员
  • 事件流:
    ①管理员选择进入管理界面,用例开始
    ②系统提示输入管理员账号密码
    ③管理员输入密码
    ④系统检验密码
    A1:密码错误(表示备选事件流)
    ⑤进入管理界面,系统显示当前所建立的全部课程信息
    ⑥管理员选择建立课程,管理员输入新课程信息
    ⑦系统验证是都与已有课程冲突
    A2:有冲突(表示备选事件流)
    ⑧系统添加新课程,并提示添加成功
    ⑨系统回到管理主界面,显示所有课程,用例结束。

三.ea(Enterprise Architect)实战:图书馆的图书借阅

文件——新建项目——(在弹出的提示框中给相应的EAP项目文件)命名
在这里插入图片描述
在跳出的“模型向导”中选择”use case“模板,(如果模型向导没有跳出来,可以点击项目浏览器栏中的第一个小图标):
在这里插入图片描述
然后我们可以看到在项目浏览器中出现了相应use case的模板(默认格式是两个包,一个是用户包,一个是基本事件流包,我们可以对默认包里的组件进行更改,也可以新建包弄自己的)
补充说明:
当前视图中“工具栏”可以通过点击视图上方的"<<"调出来(最好把当前项目浏览器——工具栏——视图界面工作界面进行保存,就不用每次开始都要重新调出来了。保存方法:窗口——保存工作区布局——命名——确定)
ea刚开始学的时候一定要自己多瞎点看看,大不了就点崩而已哈!
在这里插入图片描述
接下来我们先直接利用默认包分析一下当前案例:

3.1 找出系统外部参与者,确定系统边界和范围

emmmm解释一哈,当时写这个博客的时候也在写自己的uml作业叫某学校网上选课管理系统,导致我根目录的用例图名称起成“某学校网上选课系统”了,哭,但我真的懒得再截图了,将就一哈哈哈,反正其他内容没错,只是取名取错了…… 就当它叫“图书馆的图书借阅”吧

在这里插入图片描述

3.2 确定各参与者所期望的系统行为

管理员:

  • 借书证管理:办证、补证、注销、证件查询
  • 图书管理:查询、添加、修改、删除
  • 借阅管理:书目查询、借书、还书、过期催还、丢失处理

借阅者:书目查询

3.3 把这些系统行为命名为用例在这里插入图片描述

3.4 确定各用例之间的关系(泛化、包含、扩展)

在这里插入图片描述

3.5 绘制用例图

在这个流程过程中涉及用例较多,所以我们可以采用包的形式对业务逻辑进行分层与控制。包图的相关知识可以看我以前的总结。
显然这个例子中我们使用nesting关系。
在根目录里的用例图“某学校网上管理系统”进行绘制,使用的package组件会自动生成子包放在当前的“Use Case Model”根下
在这里插入图片描述
然后我们进入对应的子包“借书证管理”中绘制用例图:
在这里插入图片描述

然后我们进入对应的子包“图书管理”中绘制用例图:
在这里插入图片描述

然后我们进入对应的子包“借阅管理”中绘制用例图:
在这里插入图片描述
这个时候我们再返回根目录的“某学校网上选课系统”就可以看到相应的包信息已经自动填充上去啦!
在这里插入图片描述

当然上述任何一张你画好的图你想保存的话,就先选中你要保存的图片所在,鼠标点击菜单栏中的图片——保存图到文件

3.6 编制用例叙述

  • 用例:借书
  • 参与者:管理员
  • 操作流
    ①管理员进入图书借阅界面,用例开始
    ②系统要求输入借阅者的借书证编码
    ③系统检验借书证编码,如果正确,则显示借阅者的信息
    A1:借书证编码有错
    A2:如果该借阅者所借图书已经超期,则提示,本次拒借
    ④系统要求输入所借图书的条码
    ⑤系统显示所借图书的信息
    ⑥确认借书
    ⑦系统回到上一界面,等待处理下一次借书请求
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/KQwangxi/article/details/115548639

智能推荐

java多线程用法整理_java 线程池 stepping-程序员宅基地

文章浏览阅读198次。本文主要整理Java的多线程机制、Java多线程的原理以及使用方法。线程的创建(基础)在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。但在使用Runnable接口时需要建立一个Thread实例。所以无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。Thread构造函数如下:public Thread();pu..._java 线程池 stepping

【matlab】【函数学习记录】寻找矩阵最大和次大极值点_matlab如何求一个矩阵最大值和次大值-程序员宅基地

文章浏览阅读1.7k次。【matlab】【函数学习记录】寻找矩阵最大和次大极值点。_matlab如何求一个矩阵最大值和次大值

如何利用PowerShell完成的Windows服务器系统安全加固实践和基线检测_利用shell检查linux安全基线-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏5次。0x00 前言简述最近单位在做等保测评,由本人从事安全运维方面的工作(PS:曾经做过等保等方面的安全服务),所以自然而然的与信安的测评人员一起对接相关业务系统的检查,在做主机系统测评检查时发现了系统中某些配置不符合等保要求,需要对不满足要求的主机做进一步整改,好在我们众多的系统基本都是运行在虚拟机上搭建的kubernetes集群中,这样一来就可以尽可能减少加固系统给应用带来的影响,我们可以一台一台加固更新。在这样环境的驱动下不得不将通宵熬夜,我准备好了枸杞和保温杯,当然也把测试环境也准备了一套,并将以前_利用shell检查linux安全基线

颜色空间,图像格式,彩色转灰度函数-程序员宅基地

文章浏览阅读835次。、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、rgb颜色空间灰度图像是一个特殊的彩色图像,r=g=b,如图所以,要将彩色图像转化为灰度图像,只需令每个像素的r=g=b=x即可.而x等于多少,视不同情况而定。补充:黑色 r=0 g=0 b=0白色 r=..._9a:e8:ec:54:a4:oc

centos启动卡死进不去界面,停留在started GNOME display manager_centos7 started gnome display manager-程序员宅基地

文章浏览阅读1.4w次,点赞7次,收藏9次。重装centos7时,遇到见面卡死在[ok] started GNOME display manager此时按ctrl + alt f3 切换到登录界面,输入用户名 , 密码即可登录_centos7 started gnome display manager

微信小程序学习笔记-(10)-猫眼电影案例_微信小程序猫眼电影-程序员宅基地

文章浏览阅读7.9k次,点赞5次,收藏57次。使用前需要在微信公众号平台配置HTTPS服务器域名,但是可以做一个不合验的操作来发起请求.配置服务器域名的文档:https://mp.weixin.qq.com/wxamp/devprofile/get_profile?token=290458817&lang=zh_CN一,wx.reqiuest的常用参数二,创建项目的初始化第一步:删除index和logs这两个没用的页面第二步:创建自己想要的页面和顶部的配置第三步:实现点击标签滑动效果三,API接口的使用1,通过wx.g_微信小程序猫眼电影

随便推点

个人网站部署详细教程_个人部署玩-程序员宅基地

文章浏览阅读1.1k次。搭建步骤一、Ubuntu 18.04.1 安装 apache2二、Apache修改网站根目录及默认网页三、安装数据库四、安装 --php五、安装 phpmyadmin六、安装并配置 WordPress七、开启apache2 Rewrite模块八、配置SSL一、Ubuntu 18.04.1 安装 apache2更新源sudo apt install apache2 -ysystemctl s..._个人部署玩

web前端的一些奇葩问题_web开发的奇葩问题-程序员宅基地

文章浏览阅读273次。html部分textarea首行自动缩进问题一开始, 在代码中 标签textarea我是这么写的,但是当我查看页面的时候,发现首行自动缩进了好几个空格,但是我想要的是,一进去,获取焦点后,就是在首位,没有缩进. 如下代码:<textarea rows="3" cols="70" class="text-note" maxlength="150"></textarea&..._web开发的奇葩问题

Ansys 安装失败,提示“RSS被禁用”。-程序员宅基地

文章浏览阅读1w次。这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入有大神知道解决方法吗?在官网上下载的Ansys学生版本,安装后出现这个提示“RSS被禁用”,而且也没有桌面快捷方式。欢迎_rss被禁用

Google Earth Engine(GEE)——python检测 Sentinel-1 图像中的变化(part1)万字长文_sentinel-1 change detection-程序员宅基地

文章浏览阅读710次。在本教程中,我们将分析合成孔径雷达 (SAR) 图像,以检测地球表面具有统计意义的变化。正如副词“统计地”暗示的那样,我们需要对 SAR 图像的统计特性有基本的了解才能继续,而形容词“显着”意味着我们学习了假设检验的基础知识。我们将特别关注 GEE 档案中双极化强度 Sentinel-1 SAR 图像的时间序列。教程分为四部分:1. 单视和多视图像统计 2. 假设检验 3.多时态变化检测 4. 应用大部分材料基于我的文本Image Analysis, Classification and Cha_sentinel-1 change detection

npm 报错 ERR! [email protected] serve vue-cli-service serve-程序员宅基地

文章浏览阅读706次。解决问题启动Vue项目执行npm run serve报错原因:使用了不同的编辑器,而且配置文件弄混了1.删除node_modules文件夹。2.使用国内镜像重新安装npm install --registry=https://registry.npm.taobao.orgnpm install -g cnpm --registry=https://registry.npm.taobao.orgcnpm install3.重新运行npm run serve...

AQS、ReentrantLock、ReentrantReadWriteLock 结构与源码分析_readwrite lock aqs-程序员宅基地

文章浏览阅读911次。AQS 以及其实现类 ReentrantLock、ReentrantReadWriteLock 源码分析。_readwrite lock aqs