6
6
## 软件危机
7
7
1 . 软件危机的定义:
8
8
+ 计算机软件的开发和维护过程中所遇到的一系列严重问题。
9
- 1 . 与软件本身的特点有关
10
- + 逻辑部件,可见性差
11
- + 管理和控制软件开发很困难
12
- + 客观上软件维护比较困难
13
- + 需要人员协作和科学管理
14
- 2 . 与软件开发与维护的方法不正确有关
15
- + 采用了错误的方法和技术
16
- + 忽视软件需求分析,过早编码
17
- + 轻视软件维护的重要性
18
- 3 . 软件是有生命周期
19
- + 软件从定义、开发、使用、维护到终止的时期
20
- + 软件生命期中的有关经验数据
21
- + 编码通常占开发的10%~20%
22
- + 软件测试占开发的40%~50%
23
- + 设计错误占软件错误的63%,编码错误占37%
24
- + 软件维护费用占总投资的55%~70%
25
- + 软件后期变更比早期变更代价高
9
+ 2 . 产生原因:
10
+ + 与软件本身的特点有关
11
+ + 与软件开发与维护的方法不正确有关
12
+ + 软件是有生命周期
13
+ 3 . 表现:
14
+ + 对软件开发成本和进度的估计常常不正确
15
+ + 用户对“已完成的”软件系统不满意的现象常常发生
16
+ + 软件产品的质量往往靠不住
17
+ + 软件通常没有适当的文档资料
18
+ + 软件常常是不可维护
19
+ + 软件成本在计算机系统总成本所占的比例逐年上升
20
+ + 软件开发生产效率低
26
21
## 软件工程
27
22
1 . 基本原理
28
23
+ 用分阶段的生命周期计划严格规划
55
50
5 . 详细设计
56
51
6 . 编码和单元测试
57
52
7 . 综合测试
58
- + 软件维护 ** (3)**
53
+ + 软件维护/运行维护 ** (3)**
59
54
60
55
8 . 软件维护
61
56
+ 改正性维护
75
70
+ 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细检查。(有完备的后续检查)
76
71
+ 不足:完全依赖于书面的规格说明,可能导致产出的软件产品不能真正满足用户需要。
77
72
### 快速原型模型
78
- > 适合于需求动态变化,事先难以确定系统(** 不支持风险分析** )。
79
-
73
+ > 适合于需求动态变化,事先难以确定系统。
74
+ + 优点
75
+ + 有助于获取用户需求,加强对需求的理解
76
+ + 尽早发现软件中的错误
77
+ + 支持需求的动态变化
78
+ + 缺点
79
+ + 不支持风险分析
80
80
81
81
### 增量模型
82
82
+ 优点
120
120
121
121
122
122
### 原则
123
- 1 . 确定系统的源点和终点
124
- 2 . 确定系统的输入和输出数据流的关系
125
- 3 . 保持分解前后输入/输出数据流必须相同(父子平衡)
126
- 4 . 尽量简化加工之间的联系
127
- 5 . 用“自顶向下”方法,逐层画出数据流图,每张数据流图中加工(处理)的个数不能超过9个(7加减2)
128
- 6 . 注意分解速度(一般每分解一层增加2-7个加工)
129
- 7 . 在画数据流图时应避免线条交叉,必要时可使用重复的外部项(源点或终点)或数据存储符号
130
- 8 . 适当的命名,加工处理要编号
123
+ 1 . 第一层DFD应当是基本系统模型
124
+ 2 . 注意父图和子图的平衡,维护信息的连续性
125
+ 3 . 区分局部文件和局部外部项
126
+ 4 . 掌握分解速度,上快下慢
127
+ 5 . 遵守加工编号原则
128
+
129
+ ### 分层的原因
130
+ 1 . 便于实现:逐层分化有利于控制问题的复杂度。
131
+ 2 . 便于使用:使用户中的不同业务人员只选择与自己相关的图形。
132
+
131
133
132
134
## 数据字典
133
135
![ 数据字典] ( ../img/软件工程/数据字典.png )
228
230
+ ** 五种基本控制结构**
229
231
![ PAD图集合] ( ../img/软件工程/PAD图集合.png )
230
232
+ ** 范例**
231
- ![ 盒图范例 ] ( ../img/软件工程/盒图范例 .png )
233
+ ![ PAD图范例 ] ( ../img/软件工程/PAD图范例 .png )
232
234
233
235
### 判定树/表
234
236
清晰表达复杂条件组合和应做的动作之间的关系
235
-
237
+ > ** 例题**
238
+ > ![ 判定树、判定表例题] ( ../img/软件工程/判定树、判定表例题.png )
239
+ > ** 判定表**
240
+ > ![ 判定表] ( ../img/软件工程/判定表.png )
241
+ > ** 判定树**
242
+ > ![ 判定树] ( ../img/软件工程/判定树.png )
236
243
## 面向数据结构的设计方法
237
244
### Jackson图
238
245
+ 顺序结构
@@ -280,9 +287,9 @@ A end
280
287
281
288
** 对应的三种计算过程:**
282
289
E=11,N=9
283
- (1) V(G)=R1+R2+R3+R4=4
284
- (2) V(G)=E-N+2=4
285
- (3) V(G)=P1+P2+P3+1=4
290
+ 1. V(G)=R1+R2+R3+R4=4
291
+ 2. V(G)=E-N+2=4
292
+ 3. V(G)=P1+P2+P3+1=4
286
293
287
294
# 实现
288
295
# # 软件测试基础
@@ -307,6 +314,9 @@ E=11,N=9
307
314
308
315
# # 黑盒测试
309
316
+ 等价划分 —— 划分一组** 等价类** 描绘一组输入条件的有效或无效条件, 测试程序是否有设计方案中该有的输出结果。
317
+ > ** 范例**
318
+ > ! [等价类划分数据字典](../img/软件工程/等价类划分数据字典.png)
319
+ > ! [等价类划分](../img/软件工程/等价类划分.png)
310
320
+ 边界值分析 —— 选取刚好等于、稍小于和稍大于** 等价类边界值** 的数据作为测试数据。
311
321
+ 错误推测
312
322
0 commit comments