软件开发中的糊涂用语-01-功能模块

博客指出功能和模块是模糊用语,功能模块的说法有误。以取款机为例说明功能的模糊性,应按用例、路径、回合、步骤细分。还探讨了微服务,指出其是妥协的不良结构,分割应依据内部组件耦合内聚,而非简单按用例。

0
00:00:00,450 --> 00:00:02,460
今天我们来说一下

1
00:00:02,820 --> 00:00:04,620
一些我们常用的

2
00:00:04,620 --> 00:00:06,420
但实际上是错误的

3
00:00:06,700 --> 00:00:08,150
一些用语 

4
00:00:08,910 --> 00:00:10,293
那第一个呢

5
00:00:10,293 --> 00:00:13,890
我们要说的是,功能模块这个用语

6
00:00:16,820 --> 00:00:19,660
首先我们来看功能这两个字

7
00:00:20,200 --> 00:00:22,700
功能,它是一个模糊用语

8
00:00:25,750 --> 00:00:27,050
什么是功能

9
00:00:27,540 --> 00:00:29,630
比如说,拿取款机为例

10
00:00:31,160 --> 00:00:33,670
取现金是功能

11
00:00:35,650 --> 00:00:37,090
登录也是

12
00:00:37,690 --> 00:00:39,080
输密码也是

13
00:00:39,460 --> 00:00:40,880
验密码也是

14
00:00:41,400 --> 00:00:41,700
 

15
00:00:41,700 --> 00:00:44,400
系统算手续费也是

16
00:00:45,380 --> 00:00:46,513
都是功能

17
00:00:46,513 --> 00:00:49,460
但它们的大小是不一样的

18
00:00:50,220 --> 00:00:50,458


19
00:00:50,458 --> 00:00:52,370
这也功能,那也功能

20
00:00:54,170 --> 00:00:56,260
所以呢,这是一个糊涂的

21
00:00:56,820 --> 00:00:58,590
模糊的用语 

22
00:01:00,300 --> 00:01:02,338
那如果能够把它分清楚 

23
00:01:02,338 --> 00:01:04,376
按照用例、路径

24
00:01:04,376 --> 00:01:05,803
路径里面有回合

25
00:01:05,803 --> 00:01:07,230
回合里面有步骤

26
00:01:07,750 --> 00:01:07,955
 

27
00:01:07,955 --> 00:01:09,800
这个就清楚了

28
00:01:09,800 --> 00:01:11,440
取现金是一个用例

29
00:01:11,830 --> 00:01:12,102
 

30
00:01:12,102 --> 00:01:16,190
是外面的储户对这个取款机的期望

31
00:01:16,840 --> 00:01:20,274
以及取款机对储户的承诺的一个平衡点

32
00:01:20,274 --> 00:01:21,890
或者说,买卖平衡点

33
00:01:23,560 --> 00:01:25,299
而正常的取现金

34
00:01:25,299 --> 00:01:26,790
这是一条路径

35
00:01:27,550 --> 00:01:29,464
路径里面有很多回合

36
00:01:29,464 --> 00:01:30,954
登录是一个回合

37
00:01:30,954 --> 00:01:36,060
从输密码到系统验证,反馈验证的结果这个为止

38
00:01:36,340 --> 00:01:37,536
这是一个回合

39
00:01:37,536 --> 00:01:39,330
回合里面可能有

40
00:01:40,100 --> 00:01:42,675
三到四个步骤

41
00:01:42,675 --> 00:01:43,820
输密码

42
00:01:44,550 --> 00:01:45,428
然后呢

43
00:01:45,428 --> 00:01:46,600
系统验证

44
00:01:47,010 --> 00:01:47,325
 

45
00:01:47,325 --> 00:01:47,956
验证

46
00:01:47,956 --> 00:01:53,950
然后反馈验证结果以及账户的详情

47
00:01:54,830 --> 00:01:55,980
三个步骤

48
00:01:56,430 --> 00:01:59,766
可能还要记录一下,某某曾经登录过 

49
00:01:59,766 --> 00:02:01,225
可能有四个步骤

50
00:02:01,225 --> 00:02:02,060
也有可能

51
00:02:05,420 --> 00:02:09,080
所以呢,功能这是一个模糊的用语

0
00:00:00,070 --> 00:00:03,120
同样的,模块也是一个模糊用语 

1
00:00:03,400 --> 00:00:04,425
什么是模块

2
00:00:04,425 --> 00:00:05,450
你是一个类

3
00:00:06,440 --> 00:00:07,730
一个组件

4
00:00:08,710 --> 00:00:10,040
一个子系统

5
00:00:11,010 --> 00:00:11,930
不知道

6
00:00:16,340 --> 00:00:17,250
模糊的

7
00:00:18,600 --> 00:00:20,370
而这两个连起来

8
00:00:20,740 --> 00:00:21,834
叫功能模块

9
00:00:21,834 --> 00:00:23,148
那就是错的了 

10
00:00:23,148 --> 00:00:24,899
前面两个是模糊的

11
00:00:24,899 --> 00:00:26,870
只是说没有说清楚 

12
00:00:28,330 --> 00:00:30,322
这两个连起来呢就是错的

13
00:00:30,322 --> 00:00:31,120
不能连的

14
00:00:32,800 --> 00:00:34,430
功能模块

15
00:00:35,430 --> 00:00:38,393
功能,我们拿前面那个,虽然说模糊

16
00:00:38,393 --> 00:00:39,240
我们还可以

17
00:00:39,660 --> 00:00:41,520
给它一个差不多的定义

18
00:00:41,520 --> 00:00:42,760
什么叫功能 

19
00:00:43,410 --> 00:00:45,260
系统作为一个整体

20
00:00:46,460 --> 00:00:48,360
所需要完成的行为

21
00:00:49,140 --> 00:00:55,115
所以功能前面的主语是什么,系统应该能够什么,系统能够什么这样

22
00:00:55,115 --> 00:00:57,250
比如,系统应该能够什么

23
00:00:57,610 --> 00:01:00,085
提供取现金的功能对吧

24
00:01:00,085 --> 00:01:00,580


25
00:01:00,580 --> 00:01:02,560
系统应该能验密码

26
00:01:03,430 --> 00:01:03,639
 

27
00:01:03,639 --> 00:01:05,317
系统应该能什么 

28
00:01:05,317 --> 00:01:06,786
这有这个功能的

29
00:01:06,786 --> 00:01:12,240
再去作为一个整体的一个需要完成的行为或需要提供的服务

30
00:01:13,150 --> 00:01:14,580
模块是什么

31
00:01:15,050 --> 00:01:17,530
我们可以把它看作系统的内部结构

32
00:01:17,860 --> 00:01:19,009
不知道是什么了

33
00:01:19,009 --> 00:01:20,322
里面是类

34
00:01:20,322 --> 00:01:20,979
还是组件

35
00:01:20,979 --> 00:01:21,800
还是什么 

36
00:01:22,080 --> 00:01:24,035
如果你不是用面向对象的

37
00:01:24,035 --> 00:01:25,089
那类就没有了

38
00:01:25,089 --> 00:01:25,390


39
00:01:28,850 --> 00:01:30,474
比如说,拿人举例

40
00:01:30,474 --> 00:01:32,330
功能是人能走路

41
00:01:33,450 --> 00:01:35,910
模块是人的心脏

42
00:01:36,260 --> 00:01:37,130
对吧

43
00:01:37,740 --> 00:01:39,740
那功能模块连起来

44
00:01:39,740 --> 00:01:41,240
那就意味着什么

45
00:01:41,640 --> 00:01:43,610
走路用的心脏

46
00:01:44,540 --> 00:01:47,060
也就是说,这个心脏是走路的心脏

47
00:01:48,510 --> 00:01:49,894
但实际上不是的

48
00:01:49,894 --> 00:01:51,740
心脏是大家共用的

49
00:01:51,740 --> 00:01:52,432
对不对

50
00:01:52,432 --> 00:01:54,970
比如说,右边这个是一个人

51
00:01:56,830 --> 00:01:58,060
一位男士

52
00:01:58,960 --> 00:01:59,655
在白天

53
00:01:59,655 --> 00:02:03,594
在公司为老板996,提供996的服务

54
00:02:03,594 --> 00:02:04,290
为老板

55
00:02:05,220 --> 00:02:06,540
晚上回家

56
00:02:06,890 --> 00:02:08,530
还得为老婆服务

57
00:02:09,880 --> 00:02:10,481
然后呢

58
00:02:10,481 --> 00:02:12,086
回老家还得为

59
00:02:12,086 --> 00:02:13,290
老爸老妈扛煤气罐

60
00:02:15,620 --> 00:02:17,540
这三个场景 

61
00:02:18,080 --> 00:02:19,770
都需要用到心脏

62
00:02:20,060 --> 00:02:21,126
不能说

63
00:02:21,126 --> 00:02:22,406
心脏是老板的

64
00:02:22,406 --> 00:02:23,900
这个肾是老婆的

65
00:02:23,900 --> 00:02:25,606
那个大腿是老爸的

66
00:02:25,606 --> 00:02:26,460
不是的 

67
00:02:26,990 --> 00:02:28,040
共用的

68
00:02:28,630 --> 00:02:29,404
对不对

69
00:02:29,404 --> 00:02:31,468
就像公司员工一样

70
00:02:31,468 --> 00:02:33,533
员工是公司的员工

71
00:02:33,533 --> 00:02:36,630
不是公司某个流程的员工 

72
00:02:38,990 --> 00:02:40,750
但是多对多的

73
00:02:42,550 --> 00:02:44,280
所以年检就错了

74
00:02:48,990 --> 00:02:52,578
那这里面经常就会有人有这样的疑问

75
00:02:52,578 --> 00:02:52,789


76
00:02:52,789 --> 00:02:55,744
潘老师,现在流行鼓吹这个微服务

77
00:02:55,744 --> 00:02:57,011
什么叫微服务

78
00:02:57,011 --> 00:02:58,700
就是把这个系统 

79
00:02:59,340 --> 00:03:01,460
啪啪啪啪切成很多个

80
00:03:02,630 --> 00:03:05,190
微服务,很多个独立的

81
00:03:06,090 --> 00:03:07,160
小系统

82
00:03:07,790 --> 00:03:09,220
那不是功能模块吗

83
00:03:09,220 --> 00:03:09,756
对不对

84
00:03:09,756 --> 00:03:12,080
刚才说了,那个心脏是共用的

85
00:03:12,080 --> 00:03:13,510
我现在不共用了

86
00:03:14,190 --> 00:03:16,940
我996微服务一个心脏

87
00:03:16,940 --> 00:03:17,690
交作业

88
00:03:17,690 --> 00:03:18,690
一个心脏

89
00:03:19,500 --> 00:03:21,110
扛煤气罐,一个心脏

90
00:03:21,390 --> 00:03:22,160
对吧

91
00:03:23,040 --> 00:03:26,070
当然这几个心脏可能是残缺的 

92
00:03:26,550 --> 00:03:28,850
那这个微服务是什么样的

93
00:03:28,850 --> 00:03:30,106
怎么评价

94
00:03:30,106 --> 00:03:32,616
我后面会有专门的内容

95
00:03:32,616 --> 00:03:34,080
再来说这个问题

96
00:03:34,080 --> 00:03:37,845
我们现在先简单说几句这个问题 

97
00:03:37,845 --> 00:03:41,820
首先,微服务是一个妥协的不良结构 

98
00:03:42,990 --> 00:03:45,120
这个后面我们还会详细说

99
00:03:45,750 --> 00:03:46,730
第二个

100
00:03:48,830 --> 00:03:51,420
即使你是微服务

101
00:03:51,790 --> 00:03:54,371
也并不是说,按照用例来,一个用例

102
00:03:54,371 --> 00:03:55,403
一个微服务 

103
00:03:55,403 --> 00:03:55,920
对不对

104
00:03:56,660 --> 00:03:59,400
如果是按照用例来分微服务

105
00:04:01,160 --> 00:04:02,836
那这个就是什么

106
00:04:02,836 --> 00:04:05,141
从外面就切到里面去了 

107
00:04:05,141 --> 00:04:06,817
你微服务怎么分割

108
00:04:06,817 --> 00:04:08,493
哪些跟哪些在一起

109
00:04:08,493 --> 00:04:11,846
应该也是要根据里面的内部器官

110
00:04:11,846 --> 00:04:14,570
内部组件的耦合内聚来切割的

111
00:04:15,350 --> 00:04:17,050
怎么可能从外面来切呢

112
00:04:17,050 --> 00:04:17,560
对不对

113
00:04:18,150 --> 00:04:20,990
比如说,这几个功能是张三用的

114
00:04:21,390 --> 00:04:21,657

115
00:04:21,657 --> 00:04:26,200
我就把这个张三搞一个张三用的微服务

116
00:04:26,480 --> 00:04:27,894
这几个李四用的

117
00:04:27,894 --> 00:04:29,485
不是这样的

118
00:04:29,485 --> 00:04:30,370
是按照什么

119
00:04:30,970 --> 00:04:34,420
里面的那个耦合内聚来切割的

120
00:04:35,300 --> 00:04:36,300
而且

121
00:04:37,100 --> 00:04:38,414
不是说一个用例

122
00:04:38,414 --> 00:04:39,353
一个微服务

123
00:04:39,353 --> 00:04:40,668
它也是好多个的

124
00:04:40,668 --> 00:04:41,231
第二个

125
00:04:41,231 --> 00:04:44,048
刚才讲了,功能跟用例还不是一回事

126
00:04:44,048 --> 00:04:44,612
对不对

127
00:04:44,612 --> 00:04:46,490
功能那是一个模糊用语

128
00:04:46,800 --> 00:04:47,510


129
00:04:51,460 --> 00:04:53,950
所以呢,刚才讲的这个什么

130
00:04:55,530 --> 00:05:00,027
功能模块这个,在什么时候能够成立 

131
00:05:00,027 --> 00:05:00,590
就是,刚才讲的

132
00:05:01,010 --> 00:05:02,440

133
00:05:03,280 --> 00:05:06,621
这个功能指的就是用例

134
00:05:06,621 --> 00:05:07,290
第二

135
00:05:08,660 --> 00:05:11,140
严格一个用例

136
00:05:11,700 --> 00:05:13,286
就一个独立的系统

137
00:05:13,286 --> 00:05:15,270
也就是说,系统就一个用例

138
00:05:17,550 --> 00:05:18,960
不能有多个

139
00:05:20,120 --> 00:05:22,573
你叫系统

140
00:05:22,573 --> 00:05:23,800
叫微服务也好 

141
00:05:24,590 --> 00:05:28,868
就一个,就按照一个用例一个对应,这样过来

142
00:05:28,868 --> 00:05:29,105

143
00:05:29,105 --> 00:05:31,720
那确实就是你的 

144
00:05:32,830 --> 00:05:34,715
只有在这个条件下

145
00:05:34,715 --> 00:05:36,600
你这样说可以的

146
00:05:38,330 --> 00:05:41,018
比如说你办一件事情就招一人

147
00:05:41,018 --> 00:05:42,880
办一件事就招一批人

148
00:05:43,160 --> 00:05:43,352

149
00:05:43,352 --> 00:05:44,891
这些人都不重叠的

150
00:05:44,891 --> 00:05:46,430
关键是要招一批人

151
00:05:47,090 --> 00:05:49,070
公司做什么就加入密人

152
00:05:49,350 --> 00:05:51,390
做什么要招聘人这样 

153
00:05:51,670 --> 00:05:53,331
那用开公司来类比

154
00:05:53,331 --> 00:05:55,200
就类似这样就可以 

0
00:00:01,270 --> 00:00:06,295
所以呢,功能的描述一般都会说,能够怎么样

1
00:00:06,295 --> 00:00:08,146
系统能够怎么样

2
00:00:08,146 --> 00:00:08,940
比如说

3
00:00:09,220 --> 00:00:10,425
拿取款机为例

4
00:00:10,425 --> 00:00:11,430
我们可以说

5
00:00:11,810 --> 00:00:16,590
储户能够用取款机来达到取款的目的

6
00:00:17,570 --> 00:00:19,390
取款机能够

7
00:00:19,790 --> 00:00:23,170
验证储户的身份

8
00:00:23,770 --> 00:00:26,593
取款机能够计算手续费

9
00:00:26,593 --> 00:00:27,440
对不对

10
00:00:28,770 --> 00:00:31,120
或者说,我们拿人来举例嘛

11
00:00:31,740 --> 00:00:33,810
人就是一个系统

12
00:00:33,810 --> 00:00:34,402
对吧

13
00:00:34,402 --> 00:00:37,360
人能够走路,人的功能

0
00:00:00,710 --> 00:00:03,760
也就是说,这个用例和组件

1
00:00:04,500 --> 00:00:06,460
是多对多的

2
00:00:07,530 --> 00:00:11,240
一个用例可能会用到系统里面很多个组件

3
00:00:12,070 --> 00:00:14,920
一个组件也可以为多个用例服务

4
00:00:18,200 --> 00:00:22,197
是系统的零件、或者系统的部件、组件

5
00:00:22,197 --> 00:00:24,330
你叫什么都可以

6
00:00:24,790 --> 00:00:26,620
系统的零件

7
00:00:27,040 --> 00:00:29,990
这是一个结构的概念

8
00:00:30,450 --> 00:00:32,130
而系统能做什么

9
00:00:32,130 --> 00:00:34,530
这是一个行为的概念

10
00:00:34,530 --> 00:00:38,130
结构和行为的对应,应该是多对多的

11
00:00:39,210 --> 00:00:42,770
这也是我们这个世界之所以复杂

12
00:00:43,810 --> 00:00:44,950
或者说

13
00:00:45,930 --> 00:00:47,260
我们这个

14
00:00:47,540 --> 00:00:50,610
软件之所以复杂的根源

15
00:00:51,240 --> 00:00:55,420
多对多,而哪个多对哪个多是最佳的方案

16
00:00:55,900 --> 00:00:57,610
是由我们人脑

17
00:00:58,080 --> 00:00:59,240
来判断的

18
00:01:00,280 --> 00:01:01,830
如果是一一对应的

19
00:01:02,160 --> 00:01:04,676
那计算机不是可以直接推出来了吗

20
00:01:04,676 --> 00:01:05,180
对不对

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值