开发中使用UML的流程_05 PIM-1:分析系统流程
目录
1、概述
2、PIM生成的过程
3、用例叙述格式
4、用例关系
5、执行流程:
6、惯用的编号方式
1、概述
在进入到PIM阶段之后,系统分析员将所有系统用例依相关性分成若干组,以组别方式生成该组系统用例涉及的PIM-1---PIM-4产生结果,随后交给后续的开发人员进行设计,编码及测试。然后,逐步生成一组一组的PIM-1---PIM-4产生结果,跟CIM的生成方式不同
PIM-1的主要产生结果是系统用例叙述,采用word。不过,虽说如此,我们还是要求系统分析员在StartUML中,针对每组的系统用例都建立一张专属的系统用例图,便于观看与管理。
2、PIM生成的过程
我们以基金模拟项目的生成时间,解释系统分析员逐步生成PIM的可能情况:
第一周:系统分析员进行CIM-1生成6个业务用例。
第二周:系统分析员进行CIM-2生成20张活动图。
第三周:系统分析员进行CIM-3生成80个系统用例。
第四周:决策人员从CIM-3挑选出40个系统用例,作为首期系统范围。同事系统分析员将40个系统用例,以其领域知识的相关性分成8组。如下,我们只列出第一组系统用例名单,省略第2-8组的系统用例名单。
第五-六周:生成第一期系统用例相关的PIM-1~PIM-4分析文件,并交由后续的开发人员进行设计,编码及测试。
第七周之后,依序生成第2-8期系统用例相关的PIM-1--PIM-4分析文件,并交由后续的开发人员进行设计,编码及测试。
3、用例叙述格式
一份用例叙述格式里头包括多项字段,如下列出实践中常见的字段,并将之细分为5大类,系统分析员可以从中挑选适用的字段组成自己的用例叙述格式:
1)用例基本数据
。用例名称
。用例编号(ID)
。用例简述
。用例图
。系统
。执行者
。相关用例
2)执行流程
。主要流程(Basic Flow)
。替代流程(Alternate Flows)
。额外流程(Exception Flows)
3)条件及规则
。启动事件或者条件(Triggers)
。前置条件
。后置条件
。失败时状态
。业务规则
4)相关文档
。用例叙述的历史版本
。UML图
。参考画面
。其他非UML文档
5)其他事项
。优先性
。迭代等级
。待解决问题
。基本假设
。相关人员
。特殊需求
4、用例关系
在UC(USER CASE)之间有两种关系,分别是“包含“(Include)和”扩展”(Extend)关系。
两个用例之间可以有“包含”关系,用以表示某一个用例的对话框中,包含着另一个用例的对话流程。一旦出现数个用例都有部分相同的对话流程时,将相同的流程记录在另一个用例中,前者称为"基用例“(Base UC),后者称为”包含用例“(Inclusion UC)。如此一来,这些基用例就可以共享包含用例。
简言之,包含关系是来自于抽象,即从数个不同的用例之中,抽离出共同部分,而称为可以重用的用例。系统分析员必须为每个用例撰写用例叙述,一旦将共同的叙述抽象出来,就不必在”网络申购单笔基金“和”网络申购定期定额基金“ 的用例叙述中重复描述出”电子邮件交易通知“。
两个用例之间可以有”扩展“关系,用以表示某一个用例的对话流程,可能会依条件临时插入另一个用例的对话流程中,前者称为”扩展用例“(Extension UC),后者称为”基用例“(Basic UC)
有了扩展关系后,便可以将特定条件下才会引发的流程记录于扩展用例中。当执行基用例期间,可以只是单纯地执行基用例所记载的流程。但是在特定条件发生时,则会额外插入并执行扩展用例所记载流程。
简言之,扩展关系来自于用例内执行活动的过程分为主要过程及可选择性过程。在基金模拟项目中,有些投资人可能跟理财专员认识多年,不打印申购收执联,有的需要打印。申购基金的过程是主要过程,而打印申购收执联则为可选择性过程。
5、执行流程:
。主要流程:这是用例叙述最核心的部分,其记载了整个用例正常的执行过程。
。替代流程:一个用例叙述里面,通常会包含一段主要流程,同时可以包含数段替代流程。如果将主要流程比拟成经常使用的大马路的话,替代流程就是比较少用的羊肠小道,不过走完一段羊肠小道之后,小径的尽头还是会接回大马路。
。例外流程:例外流程和替代流程不同,替代流程这条小径的尽头会接回主要流程,可是一旦进入例外流程之后,系统将不会继续执行完剩下的主要流程。也就是说,例外流程这条小径的尽头不会接回主要流程。
6、惯用的编号方式
主要流程里的步骤以1,2,3,4的数字编列,次步骤编为1.1,1.2,1.3,1.4。而替代流程则参照主要流程的编号,加上a,b,c的字母编列。如果替代流程随时可能发生,而不依附特定的步骤时,则以星号取代主要流程的数字,编为*.a, *.b, *.c, *.d。其次步骤编为*.a.1, *.a.2, *.a.3
系统分析员将上述访谈内容,整理编写出用例叙述,并与业务人员讨论确认。”SUC001-网络申购单笔基金“系统用例的叙述如下:
相关文章:
开发中使用UML的流程_05 PIM-1:分析系统流程
目录 1、概述 2、PIM生成的过程 3、用例叙述格式 4、用例关系 5、执行流程: 6、惯用的编号方式 1、概述 在进入到PIM阶段之后,系统分析员将所有系统用例依相关性分成若干组,以组别方式生成该组系统用例涉及的PIM-1---PIM-4产生结果&am…...
【Go】-go中的锁机制
目录 一、锁的基础知识 1. 互斥量/互斥锁 2. CAS(compare and swap) 3. 自旋锁 4. 读写锁 5. 乐观锁 & 悲观锁 6. 死锁 二、go中锁机制 1. Mutex-互斥锁 2. RWMutex-读写锁 2.1 RWMutex流程概览 2.2 写锁饥饿问题 2.3. golang的读写锁源…...
Scala学习记录,全文单词统计
package test32 import java.io.PrintWriter import scala.io.Source //知识点 // 字符串.split("分隔符":把字符串用指定的分隔符,拆分成多个部分,保存在数组中) object test {def main(args: Array[String]): Unit {//从文件1.t…...
重构项目架构
前言 我们上篇文章对整个项目进行一个整体的规划,其中对于APP类规划了类,本篇文章我们就来实现这个规划; class App {//加载页面constructor() {}//获取位置_getPosition() {}//接受位置_loadMap() {}//在地图上点击展现表单_showForm() {}/…...
一个开源轻量级的服务器资源监控平台,支持告警推送
大家好,今天给大家分享一款开源的轻量级服务器资源监控工具Beszel,提供历史数据记录、Docker容器统计信息监控以及多种警报功能,用于监控服务器资源。 项目介绍 Beszel由hub(中心服务器端应用,基于PocketBase构建&…...
介绍一下atof(arr);(c基础)
hi , I am 36 适合对象c语言初学者 atof(arr);是返回浮点数(double型),浮点数数是arr数组中字符中数字 格式 #include<stdio.h> atof(arr); 返回值arr数组中的数 未改变arr数组 #include<stdio.h> //atof(arr) 返 <stdlib> int…...
基于微信小程序的平价药房管理系统+LW参考示例
1.项目介绍 系统角色:管理员、医生、普通用户功能模块:用户管理、医生管理、药品分类管理、药品信息管理、在线问诊管理、生活常识管理、日常提醒管理、过期处理、订单管理等技术选型:SpringBoot,Vue,uniapp等测试环境…...
什么是 C++ 中的函数对象?它有什么特点?如何定义和使用函数对象?数对象与普通函数有什么区别?
在 C 中,函数对象(Function Object)也被称为仿函数(Functor),是一种可以像函数一样被调用的对象,是一个类的对象,该类重载了函数调用运算符operator()。 函数对象的特点: 与普通函数…...
JAVA篇05 —— 内部类(Local、Anonymous、Member、Static)
欢迎来到我的主页:【一只认真写代码的程序猿】 本篇文章收录于专栏【小小爪哇】 如果这篇文章对你有帮助,希望点赞收藏加关注啦~ 目录 1 内部类Inner Class 1.1 局部内部类 1.2 匿名内部类(※※) 1.3 匿名类最佳实践…...
vmware安装ubuntu22.04 复制黏贴 上网
1、ubuntu下载 [Download - 清华镜像站]: 点击 清华大学开源软件镜像站 - Ubuntu 22.04.4 下载 页面中的 ubuntu-22.04.4-desktop-amd64.iso清华大学开源软件镜像站 - Ubuntu 22.04.4 下载 2、安装向导 3、网络设置 sudo netplan try sudo netplan apply4、复制…...
Spring Bean初始化流程
首先: 加载Bean定义(Configuration) 然后对于每个Bean: 1、实例化Bean(应该是从Bean方法中获取,Bean方法里面包含new这个类型的代码)2、依赖注入(所依赖的Bean要经历相同的流程)、调用Setter…...
C 语言函数递归探秘:从基础概念到复杂问题求解的进阶之路
我的个人主页 我的专栏:C语言,希望能帮助到大家!!!点赞❤ 收藏❤ 目录 什么是函数递归递归的基本组成递归的工作原理递归的优缺点递归的经典案例 5.1 阶乘计算5.2 斐波那契数列5.3 汉诺塔问题5.4 二分查找 递归的高级…...
【Zookeeper】三,Zookeeper的安装与基本操作
文章目录 安装Zookeeper下载解压解压后的目录结构运行Zookeeper 基本操作 安装Zookeeper 下载 官网下载Zookeeper,会得到一个tar包,如:apache-zookeeper-3.8.4-bin.tar.gz 解压 tar -xvf apache-zookeeper-3.8.4-bin.tar.gz -C /usr/loca…...
STL算法之数值算法<stl_numeric.h>
这一节介绍的算法,统称为数值(numeric)算法。STL规定,欲使用它们,客户端必须包含头文件<numeric>.SGI将它们实现与<stl_numeric.h>文件中。 目录 运用实例 accumulate adjacent_difference inner_product partial_sum pow…...
Git 入门超简单指南
1. 什么是 Git? Git 是一个分布式版本控制系统,由 Linus Torvalds 于 2005 年创建。它的主要目的是帮助开发者有效地管理和跟踪项目的历史版本。通过使用 Git,你可以轻松地记录每一次代码的修改,回滚到以前的版本,以及…...
UE5 和 UE4 中常用的控制台命令总结
调用控制台 按下键盘上的 ~ 键可以调用控制台命令。 技巧 使用键盘的 ↑ 键可以查看之前输入过的指令。控制台指令并不需要打全名,输入空格后跟随指令的部分字符可以进行模糊搜索。按下 Ctrl Shift , 打开 GPUProfile 面板。 命令如下: 调试类 s…...
[护网杯 2018]easy_tornado
这里有一个hint点进去看看,他说md5(cookie_secretmd5(filename)),所以我们需要获得cookie_secret的value 根据题目tornado,它可能是tornado的SSTI 这里吧filehash改为NULL. 是tornado的SSTI 输入{{handler.settings}} (settings 属性是一个字典&am…...
论 ONLYOFFICE:开源办公套件的深度探索
公主请阅 引言第一部分:ONLYOFFICE 的历史背景1.1 开源软件的崛起1.2 ONLYOFFICE 的发展历程 第二部分:ONLYOFFICE 的核心功能2.1 文档处理2.2 电子表格2.3 演示文稿 第三部分:技术架构与兼容性3.1 技术架构3.2 兼容性 第四部分:部…...
华为OD机试真题---幼儿园篮球游戏
华为OD机试真题中的“幼儿园篮球游戏”是一道有趣的逻辑模拟题。以下是该题目的详细描述及解题思路: 题目描述 幼儿园里有一个放倒的圆桶,它是一个线性结构。允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。每个篮球有单独的编…...
C#基础控制台程序
11.有一个54的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 12.从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 13.输入一个数,判断它是奇数还是偶数,如果…...
CASS插入多行文字
问题描述 有时在DWG文件中需要标注多行文字,文字注记只是单行的。 解决办法 工具栏中选择文字——>写文字。快捷键是 MTEXT 可以自行换行,并设置相关格式。 当需要把多行文字转换成单行文字的时候,使用下列功能。可以将多行文字变成…...
【青牛科技】D1671 75Ω 带4级低通滤波的单通道视频放大电 路芯片介绍
概 述 : D1671是 一 块 带 4级 低 通 滤 波 的 单 通 道 视 频 放 大 电 路 , 可 在3V或5V的 低 电 压 下 工 作 。 该 电 路 用 在 有 TV影 象 输 出 功 能 的 产 品 上 面,比如 机 顶 盒 ,监 控 摄 象 头 ,DVD&#…...
基于stm32的智能教室管理系统/智能家居系统
基于stm32的智能教室管理系统/智能家居系统 持续更新,欢迎关注!!! ** 基于stm32的智能教室管理系统/智能家居系统 ** 目前,物联网已广泛应用在我们的生活中。智慧校园是将校园中的生活、学习、工作等相关的资源联系在一起,实现管理的智能化…...
3.10 内核 BUG_ON() at xfs_vm_writepage() -> page_buffers()
目录 前言 问题分析 page buffers创建 page buffers丢失 Write-Protect Dirty Page w/o Buffers 问题解决 前言 这个问题发生在3.10.0-514.el7上,并且在RHEL的知识库中快速找到了对应的案例以及解决方案,但是,理解问题如何发生和解决…...
理解Java集合的基本用法—Collection:List、Set 和 Queue,Map
本博文部分参考 博客 ,强烈推荐这篇博客,写得超级全面!!! 图片来源 Java 集合框架 主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合(单列…...
SQL for XML
关系数据模型与SQL SQL for XML 模式名功能RAW返回的行作为元素,列值作为元素的属性AUTO返回表名对应节点名称的元素,每列的属性作为元素的属性输出输出,可形成简单嵌套结构EXPLICIT通过SELECT语法定义输出XML结构PATH列名或列别名作为XPAT…...
RabbitMQ 篇-深入了解延迟消息、MQ 可靠性(生产者可靠性、MQ 可靠性、消费者可靠性)
??博客主页:【_-CSDN博客】** 感谢大家点赞??收藏评论** 文章目录 ???1.0 RabbitMQ 的可靠性 ? ? ? ? 2.0 发送者的可靠性 ? ? ? ? 2.1 生产者重试机制 ? ? ? ? 2.2 生产者确认机制 ? ? ? ? 2.2.1 开启生产者确认机制 ? ? ? ? 2.2…...
Java设计模式 —— 【创建型模式】原型模式(浅拷贝、深拷贝)详解
文章目录 前言原型模式一、浅拷贝1、案例2、引用数据类型 二、深拷贝1、重写clone()方法2、序列化 总结 前言 先看一下传统的对象克隆方式: 原型类: public class Student {private String name;public Student(String name) {this.name name;}publi…...
LightRAG - 更快更便宜的GraphRAG
检索增强生成(Retrieval-Augmented Generation, RAG)已经成为提升大型语言模型(LLMs)能力的重要方法之一,通过整合外部知识,显著改善了生成内容的质量和相关性。 RAG 的局限性 传统的 RAG 系统虽然表现优…...
基于STM32的智能风扇控制系统
基于STM32的智能风扇控制系统 持续更新,欢迎关注!!! ** 基于STM32的智能风扇控制系统 ** 近几年,我国电风扇市场发展迅速,产品产出持续扩张,国家产业政策鼓励电风扇产业向高技术产品方向发展,国内企业新增投资项目投…...
Java面试问答FAQ
目录: 1、post为什么会发送两次请求?2、单核CPU支持多线程吗?3、ConcurrentHashMap 如何保证线程的安全性? 1、post为什么会发送两次请求? A:那是因为浏览器的安全策略(同源策略)决…...
PHP中类名加双冒号的作用
在 PHP 中,类名加双冒号(::) 是一种用于访问类的静态成员和常量的语法。它也可以用来调用类的静态方法和访问 PHP 的类相关关键词(如 parent、self 和 static)。以下是详细的解释和用法。 1. 用途概述 :: 被称为作用域…...
[极客大挑战 2019]PHP
访问www.zip拿到源码. 绕过这三处. 构造exp <?php class Name{private $username admin;private $password 100;}$select new Name();$resserialize($select); echo $res ?>O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin"…...
【versal】【petalinux】添加LED驱动
versal 添加LED驱动 ` 提示:本文使用外部kernel与uboot`一、LED1.1 LED功能1.2 LED节点1.3 LED操作命令1.3.1 点LED1.3.2 关闭LED二、LED驱动2.1 驱动文件2.2 设备树兼容属性三、 LED设备树配置3.1 设备树配置信息3.2 设备树配置信息讲解四、提示4.1 正确4.2 错误4.3提示:本文…...
【前端】JavaScript中的字面量概念与应用详解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯字面量1. 数字字面量2. 字符串字面量3. 布尔字面量4. 空值字面量(null)5. 对象字面量6. 数组字面量7. 正则表达式字面量8. 特殊值字面量9. 函数字…...
工作学习:切换git账号
概括 最近工作用的git账号下发下来了,需要切换一下使用的账号。因为是第一次弄,不熟悉,现在记录一下。 打开设置 路径–git—git remotes,我这里选择项是Manage Remotes,点进去就可以了。 之后会出现一个输入框&am…...
python-解决一元一次方程
【题目】解决一元一次方程数学问题 【问题描述】 我们要解决一个较为复杂的一元一次方程数学问题,方程形如:ax b c,其中a、b、c为已知常数,x为未知数。 现在我们要通过编程的方式解决这个问题,即找到方程的解x。 【…...
在线音乐播放器 —— 测试报告
自动化脚本源代码:Java: 利用Java解题与实现部分功能及小项目的代码集合 - Gitee.com 目录 前言 一、项目简介 1.项目背景 2.应用技术 (1)后端开发 (2)前端开发 (3)数据库 二、项目功能…...
6.算法移植第六篇 YOLOV5/rknn生成可执行文件部署在RK3568上
接上一篇文章best-sim.rknn模型生成好后,我们要将其转换成可执行文件运行在RK3568上,这一步需要在rknpu上进行,在强调一遍!!rknpu的作用是可以直接生成在开发板上运行的程序 退出上一步的docker环境 exit1.复制best-…...
【贪心算法第七弹——674.最长连续递增序列(easy)】
目录 1.题目解析 题目来源 测试用例 2.算法原理 3.实战代码 代码分析 1.题目解析 题目来源 674.最长递增子序列——力扣 测试用例 2.算法原理 贪心思路 3.实战代码 class Solution { public:int findLengthOfLCIS(vector<int>& nums) {int n nums.size();in…...
剖析前后端 API 接口参数设计:JSON 数据结构化全攻略
在当今软件开发领域,前后端分离架构已成为主流趋势。而 API 接口作为前后端之间数据交互的桥梁,其设计的合理性对系统的可维护性和扩展性起着至关重要的作用。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式&…...
【RISC-V CPU debug 专栏 2.3 -- Run Control】
文章目录 Run ControlHart 运行控制状态位状态信号操作流程时间与实现注意事项Run Control 在 RISC-V 调试架构中,运行控制模块通过管理多个状态位来对硬件线程(harts)的执行进行调节和控制。这些状态位帮助调试器请求暂停或恢复 harts,并在 hart 复位时进行控制。以下是运…...
力扣887:鸡蛋掉落问题
题目描述: 给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f ,满足 0 < f < n ,任何从 高于 f 的楼层落下的鸡蛋都会碎,从 f 楼层或比它低的楼层落下的鸡蛋都不会破。…...
Matlab与python数据处理对比
MATLAB 和 Python 都是数据分析和科学计算中常用的编程语言,各自有其优点和应用场景。它们在数据处理方面有许多相似之处,但也有一些关键差异。以下是 MATLAB 和 Python 在数据处理方面的对比与总结。 ### 1. **语法与语言特性** - **MATLAB**: - 以…...
【系统架构设计师】高分论文:论软件架构的生命周期
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 摘要正文摘要 2022 年5月,本人所在的某集团公司承接了财务共享服务平台综合管理系统的项目开发,该项目主要实现财务系统主流业务的集成共享。本人担任项目组成员中的系统架构设计师一职,全面负责项目的全生命周…...
gitlab工作笔记
gitlab常用操作 gitlab常用笔记docker 安装模式pull imagerun一个gitlab container atttach入containerdocker run 之后要等几分钟安装之后的初始配置初始密码在哪里 :第一次登录创建和检查第一个工程能否正常clone gitlab常用笔记 装过几次gitlab,但每…...
shell完结
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
优维HAO案例:全球TOP15汽车零件供应商「IT运维自动化」创新工程
撰文:鹿小U / 制图:脾气超好 又是一家很厉害的客户。 YADT是全(hu)球(zhēn)领(ji)先(sh)的汽车座椅供应商,拥有从汽车座椅零部件到整椅的完整生产制造能力,为中国几乎所有的汽车制造商提供汽车整椅产品和服务。 YADT在国内拥…...
语义版本控制
注意: 本文内容于 2024-11-27 22:25:05 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:语义版本控制。感谢您的关注与支持! 由于自己平时喜欢写点小玩意,自然而…...
C++设计模式行为模式———策略模式
文章目录 一、引言二、策略模式三、总结 一、引言 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。与模板方法模式类似,都是以扩展的方式来支持未来的变化。…...