-
Notifications
You must be signed in to change notification settings - Fork 32
/
5、结构化详细设计.md
281 lines (153 loc) · 10.8 KB
/
5、结构化详细设计.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
# 结构化详细设计
## 一、人机界面设计
### 1. 人机界面设计问题
1. 系统响应时间
从用户完成某控制动作,到软件给出预期响应。
两个重要属性:**长度**和**易变性**。
**长度:**
过长,用户感到不安、沮丧。
过短,迫使用户加快操作节奏,易导致出错。
**易变性:**
易变性指响应时间相对平均响应时间偏差,越低越好,否则会让用户误认为系统工作异常。
2. 用户帮助措施
**手册**和**联机帮助**。
联机帮助:集成帮助和附加帮助。
集成帮助设计在软件里面,附加帮助系统建成后加到软件中,前者可用性更强。
请求帮助:帮助菜单,特殊功能键(F1),HELP命令。
显示帮助信息:独立窗口、参考某个文档、屏幕固定位置作简短提示。
组织帮助信息:
- 平面结构,通过关键字访问
- 层次结构,查更详细信息
- 超文本结构
3. 出错信息处理
- 以用户可用理解术语;
- 提供清楚、易理解报错信息(出错位置、原因);
- 从错误中恢复的建设性意见;
- 信息用颜色等在视觉上引人注目;
- 可能造成负面后果。
4. 命令交互
建议保留命令交互方式:
- 控制序列:ctrl + c (拷贝)、ctrl + h (帮助)、ctrl + p (打印)
- 功能键:F1(帮助)
- 键入命令
- 命令宏机制:用户定义名字代表一个常用命令序列。
### 2. 人机界面设计指南
1. 一般交互
- 保持人机界面菜单选择、命令输入、数据显示风格一致;
- 提供有意义信息反馈:双向通信;
- 破坏性动作前要确认:删除、覆盖;
- 允许取消大多数操作;
- 减少两次操作之间必须的记忆量;
- 提高对话、移动和思考的效率;
- 允许犯错误:保护不受致命错误破坏;
- 按功能对动作分类,设计屏幕布局;
- 提供帮助措施;
- 用简单的动词或动词短语作为命令名。
2. 信息显示
- 显示与当前工作有关信息;
- 简单移动方式表示数据:图形、图表;
- 使用一致标记、标准缩写和可预知颜色;
- 产生有意义出错信息;
- 使用模拟的方式显示信息等。
3. 数据输入
- 减少用户输入动作:鼠标选择、滑动标尺等;
- 使当前不适用命令不起作用;
- 交互灵活:保留各种输入方式;
- 让用户控制交流;
- 对所有输入都提供帮助;
- 消除冗余输入:数据单位、整钱后键入.00、提供缺省值等。
## 二、过程设计
### 1. 过程设计任务
- 确定模块算法
- 确定模块使用数据结构
- 确定模块接口(系统外部接口、用户界面、内部模块间接口细节、输入数据和输出数据)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002000687.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
### 2. 结构化程序设计
结构化程序设计技术是过程设计的关键技术
- 经典定义:程序代码通过顺序、选择、循环三种控制结构连接,单入口单出口。
- 扩展定义:可限制使用GOTO语句、DO_UNTIL和DO_CASE
- 修正定义:LEAVE和BREAK,可从循环中转移出来。
### 3. 结构化程序设计工具
#### 3.1 程序流程图
历史最悠久、使用最广泛的过程设计工具。
1. 顺序型:几个连续的加工依次序排列
<img src="https://img-blog.csdnimg.cn/20210127002053473.png" width="10%"/>
2. 选择型:由某个判定的取值决定选择两个加工中一个。
<img src="https://img-blog.csdnimg.cn/20210127002110557.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="30%"/>
3. 当型循环型:当循环控制条件成立时,重复执行特定的加工。
<img src="https://img-blog.csdnimg.cn/20210127002127230.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="25%"/>
4. 直到型循环型:重复执行特定的加工,直到循环控制条件成立时。
<img src="https://img-blog.csdnimg.cn/20210127002150940.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="25%"/>
5. 多情况选择型:列出多种加工情况根据控制变量的取值,选择执行其一。
<img src="https://img-blog.csdnimg.cn/20210127002211460.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="25%"/>
程序设计流图标准化图符
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002231124.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002245171.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
优点:
对控制流程描绘直观,便于初学者掌握。
缺点:
1. 不是逐步求精的好工具,过早考虑控制流程,非整体结构;
2. 用箭头代表控制流,程序员随意转移控制;
3. 不易表示数据结构和调用关系。
#### 3.2 N-S图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002621970.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002607284.png)
特点:
1. 功能域(特定控制结构的作用域)明确;
2. 不可能任意转移控制;
3. 容易确定局部和全程数据的作用域;
4. 容易表现嵌套关系,也可表示模块的层次结构。
#### 3.3 PAD图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002644648.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002656765.png)
优点:
1. 使用PAD图设计的程序必然是结构化程序;
2. PAD图描绘的程序结构十分清晰;
3. 用PAD图表现程序逻辑,易读、易懂、易记;
4. 容易将PAD图转换成高级语言源程序;
5. 支持自顶向下逐步求精
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002709959.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
#### 3.4 判定表
能清晰表示复杂的条件组合与应做动作间对应关系。
四部分:
- 左上部列出所有条件;
- 左下部所有可能做的动作;
- 右上部表示各种条件组合的矩阵;
- 右下部是和每种条件组合相对应的动作。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002726867.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
#### 3.5 判定树
判定表变种,表示复杂条件组合与应做动作间对应关系。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002735823.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
优点:形式简单,易看出含义,易于掌握和使用。
缺点:简洁性不如判定表,相同数据元素重复写多遍,越接近叶端重复次数越多。
#### 3.6 过程设计语言
伪码,用正文形式表示数据和处理过程设计工具
PDL具有严格关键字外部语法,定义控制结构和数据结构;
PDL表示实际操作和条件的内部语法灵活自由。适应各种工程项目需要。
### 4. 程序复杂度
McCabe方法
1. 根据过程设计结果画出相应流图
流图描述程序控制流,基本图形符号如下图所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002756467.png)
流程图映射成流图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127003116555.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
符合条件下流图映射
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002812347.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
2. 计算流图的环形复杂度
<img src="https://img-blog.csdnimg.cn/20210127002835286.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="35%"/>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127002904287.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
## 三、面向数据结构设计方法
数据结构既影响程序的结构也影响程序的处理过程,可从数据结构导出程序的处理过程,适合详细设计。
面向数据结构设计方法两种:**Jacksom**和Warnier方法。
## 1. Jackson图
描述数据结构:顺序、选择、重复。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127003015256.png)
改进:直线,选择和循环结束条件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127003040618.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127003100869.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
## 2. Jackson方法步骤
1. 确定输入数据和输出数据逻辑结构,用Jackson图表达;
2. 确定输入结构和输出结构中有对应关系(因果)的单元;
3. 描绘数据结构的Jackson图导出描绘程序结构Jackson图;
4. 列出所有操作和条件,分配到Jackson图中;
5. 用伪码表示。