[图解]用例规约之扩展路径

news2024/9/22 5:35:19

1
00:00:01,710 --> 00:00:03,670
基本路径写完之后

2
00:00:04,690 --> 00:00:07,270
接下来就是扩展路径

3
00:00:08,620 --> 00:00:14,000
扩展路径就是系统要处理的意外和分支

4
00:00:14,010 --> 00:00:19,710
系统要处理的

5
00:00:20,970 --> 00:00:22,370
不处理的不算的

6
00:00:23,100 --> 00:00:28,700
也就是说,扩展路径也是系统的需求之一

7
00:00:29,860 --> 00:00:31,980
它是系统不得不这样做的

8
00:00:35,890 --> 00:00:37,500
那么扩展路径

9
00:00:38,860 --> 00:00:43,060
经常在什么地方出现,这么几个地方

1
00:00:02,200 --> 00:00:04,160
第一个是执行者的选择

2
00:00:05,680 --> 00:00:07,310
当执行者作出判断

3
00:00:07,320 --> 00:00:09,190
说有几条路要走

4
00:00:09,560 --> 00:00:11,440
那么这个判断由他来做的时候

5
00:00:12,450 --> 00:00:16,560
那么这个时候他到底选哪条路

6
00:00:17,280 --> 00:00:18,680
系统是没法判断的

7
00:00:19,340 --> 00:00:21,490
完全由执行者主动来选择

8
00:00:22,820 --> 00:00:23,700
这是第一种

9
00:00:25,440 --> 00:00:26,490
但这种要慎用

10
00:00:28,690 --> 00:00:30,080
因为很容易变成什么

11
00:00:31,090 --> 00:00:32,730
所有的可选项都是扩展了

12
00:00:32,940 --> 00:00:34,960
我们后面书上有讲

13
00:00:34,970 --> 00:00:36,760
后面幻灯片也会提到

14
00:00:37,070 --> 00:00:38,910
不过一会时间不够的话

15
00:00:38,920 --> 00:00:40,630
可能未必有时间讲

16
00:00:42,880 --> 00:00:43,990
大家可以自己看书

17
00:00:45,310 --> 00:00:49,880
很容易犯 把选项当成扩展点 的这种情况

18
00:00:51,890 --> 00:00:55,650
第二个,系统验证,这个一般都会有了

19
00:00:56,180 --> 00:00:59,240
因为你验证的目的是干嘛

20
00:00:59,250 --> 00:01:01,070
你验证肯定有结果

21
00:01:01,080 --> 00:01:03,190
结果必然有成功有失败

22
00:01:04,700 --> 00:01:05,820
那失败了怎么办呢

23
00:01:07,770 --> 00:01:10,010
你肯定得做一些不一样的事情

24
00:01:10,140 --> 00:01:10,570


25
00:01:10,970 --> 00:01:13,680
如果失败跟成功是一样的

26
00:01:15,640 --> 00:01:19,360
你验证它干什么,白搞嘛

27
00:01:21,170 --> 00:01:23,640
这是第二种

28
00:01:24,590 --> 00:01:28,420
第三种,就是步骤的失败

29
00:01:31,360 --> 00:01:32,970
而且是系统要处理的

30
00:01:35,990 --> 00:01:37,860
那么这里面我们要注意了

31
00:01:39,390 --> 00:01:41,620
系统能感知而且要处理的

32
00:01:44,380 --> 00:01:47,580
什么叫要处理的失败,就是系统能处理

33
00:01:48,690 --> 00:01:51,260
而且乐意处理的

34
00:01:52,370 --> 00:01:53,560
感兴趣去处理的

35
00:01:54,710 --> 00:01:58,750
比如说,我们做一个电子商务系统

36
00:02:00,770 --> 00:02:04,010
然后,正在下单过程中

37
00:02:07,600 --> 00:02:09,440
系统要保存订单

38
00:02:09,450 --> 00:02:11,240
有一句,系统保存订单

39
00:02:14,540 --> 00:02:15,810
保存订单失败

40
00:02:17,010 --> 00:02:18,010
算不算扩展

41
00:02:20,670 --> 00:02:21,880
保存订单会失败吗

42
00:02:23,070 --> 00:02:23,550
会的

43
00:02:25,090 --> 00:02:25,650
怎么失败

44
00:02:27,420 --> 00:02:28,680
数据库坏了

45
00:02:29,340 --> 00:02:31,330
网络断了,等等

46
00:02:31,620 --> 00:02:32,650
代码写错了

47
00:02:34,540 --> 00:02:35,780
但是这个算不算扩展

48
00:02:36,270 --> 00:02:37,320
不算,为什么

49
00:02:39,150 --> 00:02:41,150
因为这个跟需求没有关系

50
00:02:45,320 --> 00:02:48,270
我们在讲愿景的时候

51
00:02:48,280 --> 00:02:51,980
我们说过,我们做需求的时候

52
00:02:53,340 --> 00:02:54,890
要把我们的系统看作是什么

53
00:02:56,700 --> 00:02:58,020
由外星人来做的

54
00:02:59,760 --> 00:03:02,020
外星人的网络会不会出问题

55
00:03:02,810 --> 00:03:06,380
外星人的硬盘会不会出问题

56
00:03:07,070 --> 00:03:08,510
外星人的代码会不会写错

57
00:03:09,390 --> 00:03:10,050
不会的

58
00:03:13,380 --> 00:03:18,590
所以这种由于程序员的能力不足

59
00:03:19,410 --> 00:03:20,600
带来的这种错误

60
00:03:21,620 --> 00:03:22,660
它不是扩展

61
00:03:24,260 --> 00:03:25,040
扩展是什么

62
00:03:25,590 --> 00:03:29,700
即使这个系统的代码是外星人写的

63
00:03:31,390 --> 00:03:33,540
而且这个系统是外星人部署的

64
00:03:36,270 --> 00:03:39,160
依然逃脱不了这种意外

65
00:03:42,010 --> 00:03:44,460
就拿我们前面讲取款机这个来说

66
00:03:46,480 --> 00:03:48,240
取款机,你插卡输密码

67
00:03:49,380 --> 00:03:50,130
密码不对

68
00:03:51,540 --> 00:03:53,190
那就要拒绝

69
00:03:54,440 --> 00:03:55,660
这可以看做一个扩展

70
00:03:58,050 --> 00:04:01,090
假设取款机的代码是外星人写的

71
00:04:01,880 --> 00:04:04,590
按照我们需求规约去写代码

72
00:04:07,580 --> 00:04:09,390
那么这个意外能避免吗

73
00:04:09,630 --> 00:04:10,010
不能

74
00:04:12,100 --> 00:04:12,510


75
00:04:12,970 --> 00:04:14,260
因为你根本不知道

76
00:04:14,270 --> 00:04:18,080
我外面那个储户要输什么密码

77
00:04:20,410 --> 00:04:23,100
外星人写的只是取款机的代码

78
00:04:23,110 --> 00:04:25,460
他并没有写储户的代码

79
00:04:28,620 --> 00:04:30,090
他管不着外面的储户

80
00:04:31,740 --> 00:04:35,130
这属于他控制的边界范围之外

81
00:04:36,410 --> 00:04:37,830
那么这个就是扩展

82
00:04:40,010 --> 00:04:41,110
因为这属于什么

83
00:04:43,080 --> 00:04:44,640
就算你代码一点错都没有

84
00:04:44,650 --> 00:04:46,240
什么网络什么都通畅的

85
00:04:46,610 --> 00:04:49,380
这样的意外依然不能避免

86
00:04:49,860 --> 00:04:52,720
而且这个意外,系统要处理的

87
00:04:54,110 --> 00:04:54,990
其他都不是的

88
00:04:57,070 --> 00:04:59,130
刚才我们说那种什么网络断了

89
00:05:00,110 --> 00:05:02,150
数据库设计出问题了

90
00:05:03,280 --> 00:05:04,940
程序员编码编错了

91
00:05:06,560 --> 00:05:07,670
像这种问题怎么样

92
00:05:08,670 --> 00:05:13,230
它跟特定的系统,跟特定领域是没有关系的

93
00:05:15,020 --> 00:05:17,570
所有的系统,所有的用例

94
00:05:18,040 --> 00:05:20,080
只要你这个程序员能力有问题

95
00:05:20,090 --> 00:05:21,480
都会出这种问题

96
00:05:21,490 --> 00:05:22,500


97
00:05:27,940 --> 00:05:29,250
步骤失败这个,要注意

98
00:05:30,030 --> 00:05:32,070
必须是需求的这种失败

99
00:05:32,080 --> 00:05:37,310
而不是说我们设计人员能力不足带来的

100
00:05:38,430 --> 00:05:41,100
但我们很多人喜欢把这种当成需求

101
00:05:41,110 --> 00:05:41,620
为什么

102
00:05:42,700 --> 00:05:44,560
这样的话,需求规约就丰满了

103
00:05:45,370 --> 00:05:46,450
他每个用例都写

104
00:05:46,460 --> 00:05:47,770
每一步都写失败

105
00:05:48,640 --> 00:05:49,390
保存,保存失败

106
00:05:50,310 --> 00:05:53,070
显示什么,也显示失败,为什么

107
00:05:54,060 --> 00:05:54,980
为什么会显示失败

108
00:05:56,560 --> 00:05:58,450
网页切错了

109
00:05:58,460 --> 00:06:00,760
我前端程序员能力不足

110
00:06:01,800 --> 00:06:02,750
网页写错了

111
00:06:03,830 --> 00:06:05,790
但是这跟需求没关系的

112
00:06:06,820 --> 00:06:07,720
这个要注意

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【题解】【高精度】—— [NOIP2003 普及组] 麦森数

【题解】【高精度】—— [NOIP2003 普及组] 麦森数 [NOIP2003 普及组] 麦森数题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 1.题意解析1.1.求位数1.2.输出最后500位1.2.1.输出1.2.2.高精度乘法1.2.3.快速幂 2.AC代码 [NOIP2003 普及组] 麦森数 题目描述 形如 2…

(一)C++学习笔记(满满的都是水货咕噜!)

1、基本概念 1 – 什么是C c就是c语言的扩展,完全兼容c语言 c语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c继承了c语言高效,简洁,快速和可移植的传统。 c融合了3种不同的编程方式: c语言代表的过程性语言. c在c语言基础上添加…

爬虫 Web Js 逆向:RPC 远程调用获取加密参数(2)使用 JsRPC 框架

RPC (Remote Procedure Call) 是远程调用的意思。 在 Js 逆向时,本地可以和浏览器以服务端和客户端的形式通过 WebSocket 协议进行 RPC 通信,这样可以直接调用浏览器中的一些函数方法,不必去在意函数具体的执行逻辑,可以省去大量的…

苹果macOS 15 Sequoia投屏功能 实现Mac上iPhone桌面管理

8月14日消息,苹果最新的 iOS 18 和 macOS 15 Sequoia 测试版为 iPhone 投屏功能带来了重大更新。用户可以直接在 Mac 上管理 iPhone 桌面。 iPhone 镜像功能 macOS Sequoia最大的更新是带来了iPhone 镜像功能,这个功能能让给 Mac 用户将 iPhone 的屏幕镜…

免费版音频格式转换器哪个好用?6大热门工具对比

在数字音频领域,音频格式转换已成为日常生活和工作中必不可少的一部分。无论是为了适配不同的设备,还是为了压缩音频文件以节省存储空间,音频格式转换器都能为我们提供极大的便利。市面上有众多免费版音频格式转换器,但哪些工具真…

【向量数据库】Ubuntu编译安装FAISS

参考官方的安装指导:https://github.com/facebookresearch/faiss/blob/main/INSTALL.md,不需要安装的可以跳过 ~$ wget https://github.com/facebookresearch/faiss/archive/refs/tags/v1.8.0.tar.gz ~$ tar -zxvf v1.8.0.tar.gz ~$ cd faiss-1.8.0 ~$ …

舵机模块学习

舵机是一种根据输入PWM信号占空比来控制输出角度的装置 执行逻辑:PWM信号输入到控制板,给控制版一个指定的目标角度,然后电位器检测输出轴的当前角度,如果大于目标角度,电机反转,小于正转,最终使…

Yearning开源SQL审核平台本地Linux系统部署与远程登录语句审核

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 本文主要介绍在 Linux 系统简单部署 Yearning 并结合 cpolar 内网穿透工具实现远程访问,破除…

【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task01 DeepSeek简易AI助手

【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向 Task01 正处于拿毕业证求职和实习离职期间的过渡期,想着闲着也是闲着,索性拉上本科同学队友报名参加AI比赛,想方设法卷个项目经验出来。 Task1的任务主要是体验从0开始搭建一个AI对…

联想季度收入强劲增长,全球PC市场回暖

联想季度收入显著增长 2024年8月14日,北京——中国科技巨头联想集团公布了其第一季度财报,收入同比增长20%,达到了154亿美元。这一增幅超过了LSEG调查分析师预期的141亿美元。这一财报标志着联想在经历了连续五个季度的收入下滑后&#xff0…

seata的使用(SpringBoot项目整合seata)

文章目录 1、解压 seata-server-1.7.1.zip2、启动 双击 seata-server.bat3、启动 seata 控制台用户界面4、所有分布式事务相关数据库要有undo-log5、项目引入seata依赖6、项目添加seata配置7、代码实现: 1、解压 seata-server-1.7.1.zip 2、启动 双击 seata-server.…

基于springboot在线课程管理系统的设计与实现

TOC springboot236基于springboot在线课程管理系统的设计与实现 绪论 1.1 选题背景 目前整个社会发展的速度,严重依赖于互联网,如果没有了互联网的存在,市场可能会一蹶不振,严重影响经济的发展水平,影响人们的生活…

上万张看图背单词图片英语图片#看图猜单词#

看图背英语类的数据没有搞到很多的,之前只有《800多小学生看图背单词ACCESS数据库》以及其他一些几百条的记录,而今天弄到了上万英语单词的图片,今天这份数据只有图片没有其他的数据,你可以使用其他的英语单词数据库和图片进行关联…

群晖NAS本地搭建可远程交互的大型语言模型LLM聊天机器人

文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 前言 本文主要分享如何在群晖NAS本地部署并运行一个基于大语言模型Llama 2的个人本地聊天机器人并结合内网穿透工具…

零基础学习Redis(2) -- Redis安装与配置

Redis官方是并不支持Windows系统的,并且现在绝大部分公司都是使用的Linux,所以我们在Linux上进行安装,这里我使用的是Ubuntu 1. 安装步骤 1. 首先使用工具连接到我们的云服务器,然后输入apt指令搜索redis相关的软件包&#xff1…

【扒代码】roi_align的定义

这段代码是一个名为 roi_align 的函数的部分实现,它用于执行区域兴趣(RoI)对齐操作,通常用于计算机视觉任务中,例如目标检测和分割。这个函数的主要目的是从输入特征图中提取特定区域,并将这些区域调整到指…

8.14 Day19 Windows服务器(Windows service 2008 R2)上域的搭建 (2)

1、在活动目录中创建OU 2、OU的规划例题: 在新添加的域控制器中,使用“Active Directory用户和计算机”创建北京分公司的OU,并创建市场部、技术部和财务部等三个子OU。 若真要删除,则如下操作: 所有OU规划完成 3、域…

Docker Containerd初体验

Docker Containerd概述 ​ Containerd是一个开源的容器运行时,它提供了一种标准化的方式来管理容器的生命周期。该项目最初是由Docker开发团队创建的,并在后来成为了一个独立的项目,被纳入了Cloud Native Computing Foundation(C…

零基础学习大模型

揭秘大模型智能背后的神秘力量 前言 在这个信息爆炸的时代,人工智能(AI)已经渗透到我们生活的方方面面。其中,大模型(LLM)以其强大的语言处理能力和广泛的应用场景,成为了AI领域的一颗璀璨明珠…

用这工具开发go语言程序,谁都可以成为程序员

前言 在之前有关TitanIDE的文章中,展示了使用TitanIDE开发任何一种语言的程序都显得尤为简单,所以毫无例外的,我们在TitanIDE开发一个go程序同样简单,话不多说,上才艺 在TitanIDE开发你的第一个go程序 1.创建go项目…