活动图高阶讲解-03

03-20 3070阅读 0评论

活动图高阶讲解-03 第1张

活动图高阶讲解-03 第2张活动图高阶讲解-03 第3张

活动图高阶讲解-03 第4张

1

00:00:00,000 --> 00:00:06,260

刚才我们讲了活动图的历史

2

00:00:06,260 --> 00:00:11,460

那我们来看这个活动图

3

00:00:11,460 --> 00:00:15,260

如果用来建模的话怎么用

4

00:00:15,260 --> 00:00:20,100

按照我们前面讲的软件方法的工作流

5

00:00:20,100 --> 00:00:23,500

业务建模、需求、分析、设计

6

00:00:23,500 --> 00:00:26,500

它怎么用

7

00:00:26,500 --> 00:00:29,900

实际上这四个工作流它都可以用

8

00:00:29,900 --> 00:00:33,900

第一个就是业务建模

9

00:00:33,900 --> 00:00:39,900

就是描述外部组织和我们的目标组织

10

00:00:39,900 --> 00:00:41,900

交互的时候

11

00:00:41,900 --> 00:00:44,900

然后各个系统之间怎么协作的

12

00:00:44,900 --> 00:00:51,900

那么系统在序列图上我们是业务工人、业务实体

13

00:00:51,900 --> 00:00:52,900

这样的东西

14

00:00:52,900 --> 00:00:58,900

那么活动图上就以泳道的方式来表示了

15

00:00:58,900 --> 00:01:01,900

当然泳道这个只是一个形式

16

00:01:01,900 --> 00:01:03,900

我们后面会说到,就是说

17

00:01:03,900 --> 00:01:10,900

活动图上我们可以把这个活动分配到某个块

18

00:01:10,900 --> 00:01:14,900

某个类或某个块的操作里面去

19

00:01:14,900 --> 00:01:20,900

成为那个类的操作的一个实现方式

20

00:01:20,900 --> 00:01:23,900

那这两个就绑定起来了

21

00:01:23,900 --> 00:01:27,900

表现在这个图上就是泳道的方式

22

00:01:27,900 --> 00:01:30,900

系统一,系统二这样

23

00:01:30,900 --> 00:01:31,900

但是呢

24

00:01:31,900 --> 00:01:33,900

EA在活动图上

25

00:01:33,900 --> 00:01:35,900

它没有

26

00:01:35,900 --> 00:01:38,900

这应该可以分很多栏的

27

00:01:38,900 --> 00:01:41,900

上面可以搞一个大的,目标组织这样的

28

00:01:41,900 --> 00:01:46,900

目标组织这个,单独起一个大的一栏

29

00:01:46,900 --> 00:01:47,900

没有

30

00:01:47,900 --> 00:01:50,900

你看刚才那个BPMN这里就有,对吧

31

00:01:50,900 --> 00:01:52,900

这里你看

32

00:01:52,900 --> 00:01:57,900

亚马公司这,是仓库部门、财务部门、销售部门

33

00:01:57,900 --> 00:01:58,900

对吧

34

00:01:58,900 --> 00:02:01,900

EA这个活动图的话

35

00:02:01,900 --> 00:02:03,900

我不知道怎么画,没画出来

36

00:02:03,900 --> 00:02:05,900

这个

37

00:02:05,900 --> 00:02:09,900

再捉摸捉摸

38

00:02:09,900 --> 00:02:12,900

也可能它就没有这个

39

00:02:12,900 --> 00:02:15,900

这个功能

40

00:02:15,900 --> 00:02:19,900

业务建模我们知道

41

00:02:19,900 --> 00:02:23,900

包括后面讲的系统的需求等等

42

00:02:23,900 --> 00:02:27,900

里面我们往往用用例

43

00:02:27,900 --> 00:02:31,900

来描述这个价值

44

00:02:31,900 --> 00:02:35,900

但是我们知道用例

45

00:02:35,900 --> 00:02:37,900

这个概念

46

00:02:37,900 --> 00:02:39,900

它是一个什么

47

00:02:39,900 --> 00:02:42,900

从卖的角度去看问题的

48

00:02:42,900 --> 00:02:47,900

从卖的角度去把一些

49

00:02:47,900 --> 00:02:49,900

交互的集合怎么样

50

00:02:49,900 --> 00:02:51,900

把它打包在一起的

51

00:02:51,900 --> 00:02:54,900

所以呢,往往一个用例背后

52

00:02:54,900 --> 00:02:59,900

它会包含着多个回合的这种交互

53

00:02:59,900 --> 00:03:02,900

比如说,这个业务用例

54

00:03:02,900 --> 00:03:05,900

外部组织这样一做

55

00:03:05,900 --> 00:03:06,900

这边搞搞搞

56

00:03:06,900 --> 00:03:09,900

这时候返回一个东西到外部组织这里

57

00:03:09,900 --> 00:03:14,900

然后外部组织这里又做第二个

58

00:03:14,900 --> 00:03:16,900

进来,这边又这样

59

00:03:16,900 --> 00:03:18,900

也就是说,它为了

60

00:03:18,900 --> 00:03:22,900

达到一个它想要的价值

61

00:03:22,900 --> 00:03:28,900

它要和我们这个组织,和我们内部交互很多次

62

00:03:28,900 --> 00:03:33,900

就像,比如说,我们《软件方法》里面提到一个办证嘛

63

00:03:33,900 --> 00:03:33,900

对吧

64

00:03:33,900 --> 00:03:35,900

你办证

65

00:03:35,900 --> 00:03:37,900

你到工商去办证

66

00:03:37,900 --> 00:03:41,900

那么你首先要先提交申请

67

00:03:41,900 --> 00:03:43,900

提交完了

68

00:03:43,900 --> 00:03:45,900

里面有个流程

69

00:03:45,900 --> 00:03:48,900

过了很多天

70

00:03:48,900 --> 00:03:52,900

然后人家返回给你说,可以来

71

00:03:52,900 --> 00:03:54,900

正式来办了

72

00:03:54,900 --> 00:03:59,900

你再拿上材料又到工商去办

73

00:03:59,900 --> 00:04:02,900

也就是说,你要和工商打交道

74

00:04:02,900 --> 00:04:04,900

至少打两次交道

75

00:04:04,900 --> 00:04:08,900

但你不能说一次交道是一个用例,不是的

76

00:04:08,900 --> 00:04:11,900

因为你对它的期望

77

00:04:12,900 --> 00:04:14,900

就是把证办下来

78

00:04:14,900 --> 00:04:16,900

你证办不下来

79

00:04:16,900 --> 00:04:18,900

这个意义都不大

80

00:04:18,900 --> 00:04:20,900

你前面的做了白做

81

00:04:20,900 --> 00:04:23,900

那系统用例也是一样的

82

00:04:23,900 --> 00:04:25,900

比如说,拿取款机为例

83

00:04:25,900 --> 00:04:27,900

你为了取现金

84

00:04:27,900 --> 00:04:31,900

你要和这个取款机交互很多次

85

00:04:31,900 --> 00:04:33,900

才能取到现金

86

00:04:33,900 --> 00:04:39,900

所以我们这个活动图上面的话

87

00:04:40,900 --> 00:04:42,900

如果要描述这个用例的话

88

00:04:42,900 --> 00:04:46,900

它往往是要多次交互,多个活动

89

00:04:46,900 --> 00:04:49,900

组织起来的

90

00:04:49,900 --> 00:04:55,900

业务建模

91

00:04:55,900 --> 00:04:59,900

外部组织,目标组织里面多个系统

92

00:04:59,900 --> 00:05:01,900

需求呢

93

00:05:01,900 --> 00:05:03,900

跟业务建模差不多

94

00:05:03,900 --> 00:05:06,900

就是把目标系统放这里

95

00:05:06,900 --> 00:05:08,900

外部系统

96

00:05:08,900 --> 00:05:10,900

做什么

97

00:05:10,900 --> 00:05:14,900

也同样有多次的交互的回合

98

00:05:14,900 --> 00:05:20,900

那么这里面经常会有一个问题

99

00:05:20,900 --> 00:05:22,900

就是说

100

00:05:22,900 --> 00:05:25,900

假设我用活动图来描述需求的话

101

00:05:25,900 --> 00:05:29,900

应该描述到多细的问题

102

00:05:29,900 --> 00:05:36,900

因为有的同学经常会这样问

103

00:05:36,900 --> 00:05:38,900

有的同学会这样问

104

00:05:38,900 --> 00:05:45,900

假设我的系统是用面向过程的方式来做

105

00:05:45,900 --> 00:05:46,900

来思考

106

00:05:46,900 --> 00:05:48,900

我没有什么对象

107

00:05:48,900 --> 00:05:49,900

我就是过程

108

00:05:49,900 --> 00:05:53,900

对我来说就不分什么对象

109

00:05:53,900 --> 00:05:55,900

我就是过程

110

00:05:55,900 --> 00:05:58,900

或者说,我所有的过程

111

00:05:58,900 --> 00:06:02,900

我都看作“系统”对象的一个操作

112

00:06:03,900 --> 00:06:06,900

所有的都是我这个系统的操作

113

00:06:06,900 --> 00:06:10,900

那既然是系统的操作

114

00:06:10,900 --> 00:06:13,900

系统作为一个整体的操作

115

00:06:13,900 --> 00:06:15,900

那不都是需求吗?对不对?

116

00:06:15,900 --> 00:06:20,900

是这样

117

00:06:20,900 --> 00:06:23,900

需求是系统作为一个整体的表现

118

00:06:23,900 --> 00:06:29,900

但不代表说系统作为整体的表现

119

00:06:29,900 --> 00:06:31,900

一定是需求

120

00:06:32,900 --> 00:06:33,900

这地方一定要注意

121

00:06:33,900 --> 00:06:35,900

需求是整体的

122

00:06:35,900 --> 00:06:37,900

系统作为整体的一个表现

123

00:06:37,900 --> 00:06:39,900

但系统作为整体的表现不一定是需求

124

00:06:39,900 --> 00:06:40,900

很简单

125

00:06:40,900 --> 00:06:41,900

比如说,我们举个例子

126

00:06:41,900 --> 00:06:45,900

就像我们刚才讲的那个

127

00:06:45,900 --> 00:06:49,900

假设我系统就把所有的代码团在一起

128

00:06:49,900 --> 00:06:52,900

我也不分什么模块,也不分了

129

00:06:52,900 --> 00:06:54,900

所有代码团在一起

130

00:06:54,900 --> 00:07:01,900

假设我系统是不分任何模块

131

00:07:01,900 --> 00:07:03,900

所有代码团在一起的话

132

00:07:03,900 --> 00:07:05,900

那里面的某一行代码算不算需求

133

00:07:05,900 --> 00:07:07,900

不算的

134

00:07:07,900 --> 00:07:10,900

倒过来是不对的

135

00:07:10,900 --> 00:07:12,900

因为我们需求是什么

136

00:07:12,900 --> 00:07:14,900

不这样不行

137

00:07:14,900 --> 00:07:19,900

你代码不这样写可以吗,是可以的

138

00:07:19,900 --> 00:07:24,900

那什么是不这样不行的

139

00:07:24,900 --> 00:07:26,900

就是功能和性能

140

00:07:26,900 --> 00:07:28,900

就是说在涉众眼里看来,不这样不行的

141

00:07:28,900 --> 00:07:31,900

所以这里面怎么样和分析

142

00:07:31,900 --> 00:07:35,900

把它分界线分清楚

143

00:07:35,900 --> 00:07:37,900

要点还是不这样不行

144

00:07:37,900 --> 00:07:40,900

就是说,你不这样分解可以吗?

145

00:07:40,900 --> 00:07:43,900

比如说,这里为什么分两个活动

146

00:07:43,900 --> 00:07:45,900

不分可以吗?

147

00:07:45,900 --> 00:07:47,900

如果说不分也可以

148

00:07:47,900 --> 00:07:51,900

照样可以满足涉众利益

149

00:07:51,900 --> 00:07:53,900

那这两个就不用分了

150

00:07:53,900 --> 00:07:56,900

一个活动就可以了

151

00:07:56,900 --> 00:07:57,900

如果说不分不行

152

00:07:57,900 --> 00:07:59,900

因为里面的规则

153

00:07:59,900 --> 00:08:02,900

我们业务规则本身就要求

154

00:08:02,900 --> 00:08:06,900

必须要这样分

155

00:08:06,900 --> 00:08:09,900

不分就没有办法满足我们的业务规则

156

00:08:09,900 --> 00:08:11,900

那就可以

157

00:08:11,900 --> 00:08:15,900

就是说

158

00:08:15,900 --> 00:08:17,900

分析

159

00:08:17,900 --> 00:08:19,900

如果是面向过程的话

160

00:08:19,900 --> 00:08:21,900

分析比需求

161

00:08:21,900 --> 00:08:23,900

需要分得更细的

162

00:08:24,900 --> 00:08:26,900

那么判断什么是需求

163

00:08:26,900 --> 00:08:28,900

什么是分析

164

00:08:28,900 --> 00:08:30,900

就要看

165

00:08:30,900 --> 00:08:32,900

什么是不这样不行

166

00:08:32,900 --> 00:08:35,900

分析是这样也行的

167

00:08:35,900 --> 00:08:39,900

因为分解有很多种分解

168

00:08:39,900 --> 00:08:41,900

比如,同样一个大的

169

00:08:41,900 --> 00:08:43,900

大的一个活动

170

00:08:43,900 --> 00:08:46,900

你可以分成两个,分成三个

171

00:08:46,900 --> 00:08:49,900

三个里面还可以再分,对不对

172

00:08:49,900 --> 00:08:52,900

理论上你可以无限地分下去

173

00:08:54,900 --> 00:08:57,900

但是哪些是你要画出来的

174

00:08:57,900 --> 00:08:59,900

表达出来的

175

00:08:59,900 --> 00:09:03,900

那么这里的判断标准就是

176

00:09:03,900 --> 00:09:05,900

不这样不行

177

00:09:05,900 --> 00:09:07,900

那分析就是

178

00:09:07,900 --> 00:09:09,900

结合

179

00:09:09,900 --> 00:09:11,900

因为你怎么分解

180

00:09:11,900 --> 00:09:14,900

到底分解成几个活动

181

00:09:14,900 --> 00:09:17,900

每一个活动的输入输出参数

182

00:09:17,900 --> 00:09:19,900

是什么类型

183

00:09:19,900 --> 00:09:22,900

是跟你的静态模型

184

00:09:22,900 --> 00:09:25,900

也就是类模型或者数据模型是相关的

185

00:09:25,900 --> 00:09:29,900

那分析就要结合我们的类模型

186

00:09:29,900 --> 00:09:31,900

或者说数据模型

187

00:09:31,900 --> 00:09:34,900

来决定

188

00:09:34,900 --> 00:09:37,900

怎么样的分解

189

00:09:37,900 --> 00:09:39,900

是比较合理的

190

00:09:39,900 --> 00:09:41,900

但这个跟需求没关系

191

00:09:41,900 --> 00:09:43,900

需求要的是功能和性能

192

00:09:43,900 --> 00:09:47,900

也就是说,在满足需求的情况下

193

00:09:47,900 --> 00:09:49,900

结合上这个

194

00:09:49,900 --> 00:09:51,900

合理的数据模型或类模型

195

00:09:51,900 --> 00:09:55,900

挑出一个最佳的

196

00:09:55,900 --> 00:09:57,900

子活动的分解

197

00:09:57,900 --> 00:09:59,900

这个是分析

198

00:09:59,900 --> 00:10:03,900

设计

199

00:10:03,900 --> 00:10:05,900

就是结合

200

00:10:05,900 --> 00:10:07,900

语言、平台的实现

201

00:10:07,900 --> 00:10:12,900

类模型和数据模型

202

00:10:12,900 --> 00:10:14,900

这个映射是一样的

203

00:10:14,900 --> 00:10:15,900

就不用说了

204

00:10:15,900 --> 00:10:17,900

我们看逻辑上

205

00:10:17,900 --> 00:10:19,900

逻辑上,活动图能用来做什么

206

00:10:19,900 --> 00:10:21,900

活动图的话

207

00:10:21,900 --> 00:10:24,900

最常见的就是

208

00:10:24,900 --> 00:10:26,900

我们把它当流程图用

209

00:10:26,900 --> 00:10:29,900

就在类的操作下面

210

00:10:29,900 --> 00:10:31,900

绑定一个活动图

211

00:10:31,900 --> 00:10:34,900

比如说,我们类的操作绑定这样一个活动图

212

00:10:34,900 --> 00:10:36,900

操作1,绑定这样一个活动图

213

00:10:36,900 --> 00:10:38,900

那这个图画完之后

214

00:10:38,900 --> 00:10:39,900

你绑定到这个操作

215

00:10:39,900 --> 00:10:41,900

生成代码的时候

216

00:10:41,900 --> 00:10:43,900

它会生成类似这样的代码

217

00:10:43,900 --> 00:10:45,900

这个代码就是生成的

218

00:10:45,900 --> 00:10:48,900

它跟我们的活动图是

219

00:10:48,900 --> 00:10:50,900

对应的

220

00:10:50,900 --> 00:10:55,900

这是面向对象

221

00:10:55,900 --> 00:10:57,900

包括面向过程

222

00:10:57,900 --> 00:10:59,900

都一样

223

00:10:59,900 --> 00:11:01,900

我们把它当成一个流程图来用

224

00:11:01,900 --> 00:11:04,900

其中控制流是焦点

225

00:11:04,900 --> 00:11:06,900

控制流

226

00:11:06,900 --> 00:11:08,900

如果这样,否则这样

227

00:11:08,900 --> 00:11:10,900

if else 控制流

228

00:11:12,900 --> 00:11:14,900

另外一个

229

00:11:14,900 --> 00:11:16,900

用处就是

230

00:11:16,900 --> 00:11:18,900

把它当成数据流是焦点的

231

00:11:18,900 --> 00:11:22,900

就是

232

00:11:22,900 --> 00:11:24,900

现在另外一个流派

233

00:11:24,900 --> 00:11:26,900

函数式编程的思想

234

00:11:26,900 --> 00:11:28,900

把我们的

235

00:11:28,900 --> 00:11:32,900

系统看作是由若干函数

236

00:11:32,900 --> 00:11:34,900

237

00:11:34,900 --> 00:11:36,900

组装而成的

238

00:11:38,900 --> 00:11:40,900

这跟我们前面讲的

239

00:11:40,900 --> 00:11:42,900

数据的加工机一样

240

00:11:42,900 --> 00:11:44,900

进来

241

00:11:44,900 --> 00:11:46,900

出去

242

00:11:46,900 --> 00:11:48,900

变成

243

00:11:48,900 --> 00:11:49,900

文本的代码

244

00:11:49,900 --> 00:11:50,900

类似这样的

245

00:11:50,900 --> 00:11:51,900

管道一样的

246

00:11:51,900 --> 00:11:52,900

函数1

247

00:11:52,900 --> 00:11:54,900

函数2

248

00:11:54,900 --> 00:11:56,900

出来,函数3

249

00:11:56,900 --> 00:11:58,900

它跟这个是非常相像和对应的

250

00:11:58,900 --> 00:12:03,900

当然活动图本身只要能够解决好

251

00:12:03,900 --> 00:12:07,900

它本来是面向过程的

252

00:12:07,900 --> 00:12:09,900

你要变成面向函数的

253

00:12:09,900 --> 00:12:13,900

要解决好的一个,递归

254

00:12:13,900 --> 00:12:17,900

你怎么

255

00:12:17,900 --> 00:12:18,900

能够

256

00:12:18,900 --> 00:12:20,900

调用自己

257

00:12:20,900 --> 00:12:23,900

那这个的话

258

00:12:23,900 --> 00:12:25,900

可以解决

259

00:12:25,900 --> 00:12:31,900

把我自己的输出

260

00:12:31,900 --> 00:12:33,900

变成我自己的输入

261

00:12:36,900 --> 00:12:38,900

那第二个

262

00:12:38,900 --> 00:12:40,900

就是高阶函数

263

00:12:40,900 --> 00:12:42,900

就是把函数

264

00:12:42,900 --> 00:12:44,900

作为参数

265

00:12:44,900 --> 00:12:46,900

把函数作为另外一个函数的参数

266

00:12:46,900 --> 00:12:51,900

这个也可以解决

267

00:12:51,900 --> 00:12:53,900

就是说

268

00:12:53,900 --> 00:12:54,900

我们

269

00:12:54,900 --> 00:12:56,900

活动图有一个

270

00:12:56,900 --> 00:12:58,900

把活动当作块

271

00:12:58,900 --> 00:13:00,900

在SysML里面

272

00:13:00,900 --> 00:13:02,900

活动作为块来使用

273

00:13:04,900 --> 00:13:06,900

那块本身

274

00:13:06,900 --> 00:13:08,900

就是一个

275

00:13:08,900 --> 00:13:10,900

276

00:13:10,900 --> 00:13:11,900

它可以作为一个

277

00:13:11,900 --> 00:13:13,900

传递的参数

278

00:13:13,900 --> 00:13:17,900

所以活动图目前是

279

00:13:17,900 --> 00:13:19,900

函数式

280

00:13:19,900 --> 00:13:20,900

编程

281

00:13:20,900 --> 00:13:22,900

如果说有什么图形化

282

00:13:22,900 --> 00:13:24,900

表示的话

283

00:13:24,900 --> 00:13:25,900

活动图

284

00:13:25,900 --> 00:13:26,900

目前是

285

00:13:26,900 --> 00:13:28,900

为数不多的一个选择

286

00:13:31,900 --> 00:13:33,900

这是设计的

287

00:13:33,900 --> 00:13:37,900

工作流


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,3070人围观)

还没有评论,来说两句吧...

目录[+]