14
00:00:36,200 --> 00:00:42,960
下面我们就来进入学习
15
00:00:42,960 --> 00:00:49,640
首先我们先花点时间
16
00:00:49,640 --> 00:00:54,560
从面上把活动图的历史等等
17
00:00:54,560 --> 00:00:56,640
概述的一些内容过一下
18
00:00:57,840 --> 00:01:01,200
然后再进入建模元素的讲解
19
00:01:01,200 --> 00:01:02,840
然后再进入应用
20
00:01:02,840 --> 00:01:10,160
活动图
21
00:01:10,160 --> 00:01:12,200
最开始就是流程图了
22
00:01:12,200 --> 00:01:15,000
流程图
23
00:01:15,000 --> 00:01:17,120
最开始
24
00:01:17,120 --> 00:01:21,000
往后面追溯有据可查的
25
00:01:21,000 --> 00:01:24,920
应该不是用在计算机方面
26
00:01:24,920 --> 00:01:27,480
而是1921年
27
00:01:28,960 --> 00:01:33,680
有这个叫Gilbreth这样一个人
28
00:01:33,680 --> 00:01:36,520
他把它用在机械工程上面
29
00:01:36,520 --> 00:01:40,200
这是当时1921年的论文
30
00:01:40,200 --> 00:01:46,600
后来呢
31
00:01:46,600 --> 00:01:50,400
到194*年的时候
32
00:01:50,400 --> 00:01:53,280
就是,这个都知道了
33
00:01:53,280 --> 00:01:54,160
这个冯诺依曼
34
00:01:54,160 --> 00:01:55,440
对吧
35
00:01:55,440 --> 00:01:57,840
这是Goldstine
36
00:01:57,840 --> 00:01:58,960
37
00:01:58,960 --> 00:02:01,440
这个人
38
00:02:01,440 --> 00:02:03,400
还有冯诺依曼
39
00:02:03,400 --> 00:02:05,840
把它用在电子电路上面
40
00:02:05,840 --> 00:02:11,760
这是流程图
41
00:02:11,760 --> 00:02:13,360
当时还不是计算机了
42
00:02:13,360 --> 00:02:16,200
因为当时那个计算机还没有嘛
43
00:02:16,200 --> 00:02:16,480
对吧
44
00:02:16,480 --> 00:02:21,440
更不用说
45
00:02:21,440 --> 00:02:23,160
像我们今天写程序那样了
46
00:02:23,160 --> 00:02:23,920
没有
1
00:00:00,000 --> 00:00:05,920
这个图摘自《人月神话》书里面
2
00:00:05,920 --> 00:00:08,320
当时都已经在用了
3
00:00:08,320 --> 00:00:16,520
到了1970年代的时候
4
00:00:16,520 --> 00:00:20,840
它就演变出一个变体
5
00:00:20,840 --> 00:00:22,440
叫数据流图
6
00:00:22,440 --> 00:00:28,240
过去流程图主要是控制
7
00:00:28,480 --> 00:00:31,280
先做这个,再做这个,再做这个
8
00:00:31,280 --> 00:00:33,440
或者说,如果这样就做这个
9
00:00:33,440 --> 00:00:34,640
如果那样就做这个
10
00:00:34,640 --> 00:00:35,760
或者说循环
11
00:00:35,760 --> 00:00:39,040
把这个做多少多少遍
12
00:00:39,040 --> 00:00:41,920
只要满足这个条件就做这个
13
00:00:41,920 --> 00:00:47,560
重点在于控制这个流程
14
00:00:47,560 --> 00:00:53,120
而1970年代这个数据流图
15
00:00:53,120 --> 00:00:57,080
是由Demarco等等
16
00:00:57,080 --> 00:00:59,280
这些人提倡的
17
00:00:59,280 --> 00:01:02,600
他就把这个活动
18
00:01:02,600 --> 00:01:04,200
或者说
19
00:01:04,200 --> 00:01:07,360
中间这个结点
20
00:01:07,360 --> 00:01:11,840
把它看作一个数据的加工机
21
00:01:11,840 --> 00:01:14,640
或者说信息的加工机
22
00:01:14,640 --> 00:01:20,680
或者说,就把整个系统看作是一个
23
00:01:20,680 --> 00:01:24,120
信息的加工机
24
00:01:25,280 --> 00:01:28,240
把重点放在数据流动上面
25
00:01:28,240 --> 00:01:34,000
而不是之前的分支、循环、并行
26
00:01:34,000 --> 00:01:35,680
当然,那个也是要的
27
00:01:35,680 --> 00:01:39,680
但重点放在数据流上面
28
00:01:39,680 --> 00:01:43,040
那么数据流图
29
00:01:43,040 --> 00:01:47,880
是最早用于剖析大型系统的
30
00:01:47,880 --> 00:01:50,680
行之有效的方法
31
00:01:50,880 --> 00:01:56,000
就是说,你可以把整个大的,看作一个大的加工机
32
00:01:56,000 --> 00:01:57,920
什么数据流进来
33
00:01:57,920 --> 00:01:59,480
然后什么数据流出去
34
00:01:59,480 --> 00:02:04,320
然后进来之后你还可以在里面怎么分
35
00:02:04,320 --> 00:02:04,680
36
00:02:04,680 --> 00:02:06,800
数据流进来之后
37
00:02:06,800 --> 00:02:09,760
先到第一个加工环节
38
00:02:09,760 --> 00:02:11,800
变成什么出来
39
00:02:11,800 --> 00:02:13,480
再变成什么出来
40
00:02:13,480 --> 00:02:18,320
最终数据流动的
41
00:02:19,160 --> 00:02:20,960
总量应该是对等的
42
00:02:20,960 --> 00:02:22,840
两端要平衡
43
00:02:22,840 --> 00:02:28,320
这样的话就形成了一个
44
00:02:28,320 --> 00:02:30,960
比较严密的方法
45
00:02:30,960 --> 00:02:34,560
这是数据流图
46
00:02:34,560 --> 00:02:38,800
核心就是中间的处理
47
00:02:38,800 --> 00:02:41,160
数据进来
48
00:02:41,160 --> 00:02:43,160
然后变成新的数据出去
49
00:02:43,160 --> 00:02:47,600
当然,这个数据出去之后
50
00:02:47,600 --> 00:02:49,920
它可能马上进入另外一个处理
51
00:02:49,920 --> 00:02:52,600
或者是多个处理之间
52
00:02:52,600 --> 00:02:55,800
可以直接连接起来
53
00:02:55,800 --> 00:02:56,960
我处理完了
54
00:02:56,960 --> 00:02:59,040
数据出来,轮到你来处理
55
00:02:59,040 --> 00:03:01,440
一环套一环
56
00:03:01,440 --> 00:03:03,080
这样来
57
00:03:03,080 --> 00:03:09,360
就把我们这个流程看作是一个数据处理的一个过程
58
00:03:09,360 --> 00:03:13,360
这是数据流图
59
00:03:15,680 --> 00:03:20,680
后来UML也就把这个数据流图放进来了
60
00:03:20,680 --> 00:03:23,640
数据流图、流程图都放进来了
61
00:03:23,640 --> 00:03:25,080
就变成了活动图
62
00:03:25,080 --> 00:03:27,360
但是一开始
63
00:03:27,360 --> 00:03:30,080
做得并不好
64
00:03:30,080 --> 00:03:34,200
它把活动图看作是状态机图的一个变体
65
00:03:34,200 --> 00:03:40,280
你看,UML参考手册第一版的这个描述
66
00:03:40,280 --> 00:03:40,720
你看
67
00:03:40,720 --> 00:03:44,560
活动图是一种特殊的状态机
68
00:03:46,400 --> 00:03:48,160
但这个的话不太合适
69
00:03:48,160 --> 00:03:54,760
到了UML2就把它改过来了
70
00:03:54,760 --> 00:03:56,760
改成
71
00:03:56,760 --> 00:04:02,760
背后的语义就改成了松散的基于
72
00:04:02,760 --> 00:04:05,880
Petri网的一个语义
73
00:04:05,880 --> 00:04:11,840
那么这个后面的这些令牌传递
74
00:04:11,840 --> 00:04:15,320
这些概念,我们后面还会再详细地讲
75
00:04:15,320 --> 00:04:21,240
就是说,把它看作是有令牌流
76
00:04:21,240 --> 00:04:22,240
就是控制流嘛
77
00:04:22,240 --> 00:04:23,200
还有数据流
78
00:04:23,200 --> 00:04:27,800
这样的一个形态
79
00:04:27,800 --> 00:04:32,480
就把流程图跟数据流图结合起来
80
00:04:32,480 --> 00:04:41,160
接下来,就是进一步的拓展了
81
00:04:41,760 --> 00:04:43,280
比如说,把它拓展到
82
00:04:43,280 --> 00:04:46,760
运用到描述组织的流程
83
00:04:46,760 --> 00:04:47,880
84
00:04:47,880 --> 00:04:51,360
我研究的是一个大
85
00:04:51,360 --> 00:04:54,040
我把整个组织看作一个大型的系统
86
00:04:54,040 --> 00:04:59,720
你进来,外面有信息,有什么要求进来
87
00:04:59,720 --> 00:05:01,200
我里面经过处理
88
00:05:01,200 --> 00:05:02,800
最终出来一个结果给你
89
00:05:02,800 --> 00:05:06,440
这是描述组织
90
00:05:06,440 --> 00:05:09,000
那就是业务建模
91
00:05:10,280 --> 00:05:11,320
业务流程图
92
00:05:11,320 --> 00:05:14,920
可以描述系统
93
00:05:14,920 --> 00:05:15,720
刚才讲了
94
00:05:15,720 --> 00:05:20,440
还可以描述类的细节
95
00:05:20,440 --> 00:05:21,880
类的操作
96
00:05:21,880 --> 00:05:24,240
类里面各个参数
97
00:05:24,240 --> 00:05:28,320
在执行这个操作的时候,怎样互相合作的
98
00:05:28,320 --> 00:05:36,240
描述类的操作的细节
99
00:05:36,240 --> 00:05:39,520
这是范围上的拓展
100
00:05:40,560 --> 00:05:41,240
第二个
101
00:05:41,240 --> 00:05:43,880
流的拓展
102
00:05:43,880 --> 00:05:50,680
我们不只可以用它来描述信息流动
103
00:05:50,680 --> 00:05:54,560
还可以用来描述物质的流动
104
00:05:54,560 --> 00:05:57,000
能量的流动
105
00:05:57,000 --> 00:06:02,000
当我们做的系统不是信息系统的时候
106
00:06:02,000 --> 00:06:04,800
而是一个物质、能量处理的系统
107
00:06:07,400 --> 00:06:09,960
那我们也可以用活动图描述
108
00:06:09,960 --> 00:06:14,120
你看,这是SysML里面的一个活动图
109
00:06:14,120 --> 00:06:17,040
这是一个描述蒸馏水的
110
00:06:17,040 --> 00:06:18,640
蒸馏是动词
111
00:06:18,640 --> 00:06:19,800
蒸馏这个水
112
00:06:19,800 --> 00:06:22,280
就是把,你看,进来是冷的污水
113
00:06:22,280 --> 00:06:25,000
还有,给它加热
114
00:06:25,000 --> 00:06:30,160
只要有热,有污水进来
115
00:06:30,160 --> 00:06:30,840
经过这里面
116
00:06:30,840 --> 00:06:32,800
%……&*,不管多少步
117
00:06:32,800 --> 00:06:34,200
出来是什么
118
00:06:34,200 --> 00:06:35,760
有三个输出
119
00:06:35,760 --> 00:06:36,280
一个是
120
00:06:37,880 --> 00:06:38,360
净水
121
00:06:38,360 --> 00:06:41,320
干净的水
122
00:06:41,320 --> 00:06:43,760
第二个是残渣
123
00:06:43,760 --> 00:06:46,280
就是那个脏水里面的残渣
124
00:06:46,280 --> 00:06:47,160
还有呢
125
00:06:47,160 --> 00:06:47,680
废热
126
00:06:47,680 --> 00:06:50,920
没有用完的热
127
00:06:50,920 --> 00:06:56,720
你看,这是物质、能量流
128
00:06:56,720 --> 00:06:57,080
对吧
129
00:06:57,080 --> 00:07:01,800
拓展开
130
00:07:05,080 --> 00:07:06,680
这是历史