-
Notifications
You must be signed in to change notification settings - Fork 32
/
12、软件项目管理.md
219 lines (128 loc) · 5.48 KB
/
12、软件项目管理.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
# 软件项目管理
有效的软件项目管理集集中在4个P上,即
- 人员(Person):工作风格(外向/内向、理性/感性)
- 项目管理人员
- 高级管理人员
- 研发人员
- 客户
- 最终用户
- 产品(Product)
- 过程(Procedure)
- 项目(Project)
------
项目组织:
- 主程序员负责制小组
chief programmer team
- 高度确定性、稳定性、一致性和重复性
- 忘我方法
egoless approach
:让每个人平等地承担责任,民主式投票产生结果
- 大量的不确定性时
## 软件项目估算
方法:已完成类似项目、分解技术、经验
### 成本估算方法
自顶向下、自底向上、差别估算、专家估算法、类推估算法、算式估算法
悲观的预测x,乐观的预测y、最有可能的猜测z
则beta概率分布的平均值为(x+4y+z)/6
### COCOMO 估算模型
- 基本COCOMO模型(静态单变量)
$E=a(L)^b\\D=cE^d$
其中E工作量,D开发时间,L源代码行数
- 中级COCOMO模型(静态多变量,分为系统和部件)
$E=a(L)^bEAF$
其中EAF是工作量调节因子(15种影响软件工作量的因素)
- 详细COCOMO模型(分为系统、子系统、模块)
演化成COCOMOII模型,包括应用组装模型、早期设计阶段模型、体系结构阶段模型
$E=bS^cm(X)$
其中,bSc是初始的基于规模的估算,通过关于成本驱动因子信息的向量m(X)对它进行调整
### Putnam模型
动态多变量模型,假设在软件开发的整个生存期种工作量有特定的分布
![](https://img-blog.csdnimg.cn/20210124224940335.png)
其中td表示开发持续时间,Ck表示技术状态常数,其值依赖于开发环境
## 软件度量
分类:
1. 面向规模的度量:通常用程序的代码行数LOC来衡量
2. 面向功能的度量
------
1. 生产率度量
2. 质量度量
3. 技术度量
复杂性度量:规模、难度、结构、智能度
## McCabe度量法
又称环路度量,是程序流程图的改变
度量值$V(G)=m-n+2p$
其中,m是弧的个数,n是结点数,p是强连通分量的个数
一般10是上限,要充分测试此模块变得很艰难
## 进度管理
**项目进度(Project schedule)** 通过列举项目的各个阶段,把每个阶段分解成离散的任务或活动,来描述特定项目的软件开发周期。
**可交付产品(deliverable)**,即在项目开发的过程中客户希望看到的产品:
- 文档
- 功能的演示
- 子系统的演示
- 精确性的演示
- 可靠性、安全性或性能的演示
------
**活动(actibity)**:是项目的一部分,它在一段时间内发生
可以通过4个参数对活动进行描述:
- 前驱(precursor):活动的一组条件
- 工期(duration)
- 截止日期(due date)
- 终点(end point):表示活动已经结束,通常是一个里程碑或可交付的产品
**活动图:** 表示活动之间的依赖关系,虚线表示这些活动必须在后一个活动之前完成
**关键路径法(Critical Path Method, CPM)**:是每个节点的时差都为零的路径
*时差slack time/浮动时间float = 可用时间available time - 真实时间real time/实际时间actual time*
*时差=最晚开始时间 - 最早开始时间*
**里程碑(milestone)** 是活动的完成——某一特定的时刻
**工作分解结构(work breakdown structure)**:把项目描述为由若干离散部分构成的集合
------
工具:
- Gantt甘特图
- 水平条形图,以日历为基准
- 清晰地描述,每个任务从何时开始,到何时结束,任务的进展情况以及各个任务之间的并行性
- 但不能清楚地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分
- PERT(Program Evaluation & Review Technique)项目计划评审技术图
- 采用正态分布,对于实际时间的一个估计的窗口window/区间interval
- 有向图,箭头表示任务,结点表示事件
- 清晰地描述,每个任务从何时开始,到何时结束,给出各任务之间的关系,
- 但不能反映各个任务之间的并行性
## 软件项目的组织
- 主程序员制小组
- 民主制小组
- 层次式小组
## 软件质量管理
**质量特性:**
- ISO/IEC 9126指标
- 质量特性
- 功能性
- 可靠性
- 易使用性
- 质量子特性
- 度量指标
- Mc Call软件质量模型
- 产品运行
- 产品修正
- 产品转移
**质量保证**
**软件评审**
**软件容错技术**
## 软件配置管理
*Software Configure Management(SCM)*,用于整个软件工程过程,其目标是标识变更,控制变更,确保变更准确实现,报告有关变更
- 基线:各开发阶段的一个特定点,使开发阶段的工作划分更明确
- 软件配置项 *Software Configure Item,SCI*,配置管理的基本单位
- 版本控制
- 变更控制
## 风险管理
**风险类别**
**识别风险**
**风险预测/分析风险**
**评估风险/为每个风险分配优先级**
RE:风险显露度/风险暴露(risk exposure)
RE=P∗C
其中,P是风险发生的概率,C是风险发生时带来的项目成本
**风险评估**
(ri,li,xi)
分别表示**风险,概率,影响**
**风险杠杆** = (降低前的风险暴露-降低后的风险暴露)/(降低风险的成本)
**风险控制**
------
回归测试 *regression testing*:确保已有的功能仍能正常地工作