1)估算软件规模(重点)
a.代码行技术
每个人都估计程序的
最小规模
(a)
、
最大规模
(b)
和
最可能的规模
(m)
,分别算出这三种规模的平均值
a,b
和
m
之后,再用下式计算
程序规模
的估计值:
用代码行技术度量软件规模时,当程序较小时常用的单位是
代码行数
(LOC)
,当程序较大时常用的单位是
千行代码数
(KLOC)
。
b.功能点技术
功能点技术定义了信息域的
5
个特性
,分别是输入项数
(
Inp
)
、输出项数
(Out)
、查询数
(
Inq
)
,主文件数
(
Maf
)
和外部接口数
(
Inf
)
。
计算步骤:
(1)计算未调整的功能点数UFP(Unadjusted Function Points)
首先,把产品信息域的每个特性
(
即
Inp
、
Out
、
Inq
、
Maf
和
Inf
)
都分类成
简单级
(simple)
、平均级
(average)
或复杂级
(complex)
。根据其等级,为每个特性都分配一个功能点数。
然后,用下式计算未调整的功能点数
UFP
UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf。其中,ai(1≤i≤5)是信息域特性系数,其值由相应特性的复杂级别决定。
(2)计算技术复杂性因子TCF(Technical Complexity Factors)
这一步将度量
14
种技术因素
对软件规模的影响程度。在表
13.2
中列出了全部技术因素,并用
F
i
(1≤i≤14)
代表这些因素。根据软件特点,为每个因素分配一个从
0
到
5
的值。
0:
无影响;
1
:偶然;
2
:适中;
3
:普通;
4
:重要;
5
:极重要
然后,用下式计算技术因素对软件规模的
综合影响程度
DI (Degree of Influence)
:
技术复杂性因子
TCF
由下式计算:
TCF=0.65+0.01×DI
3)计算功能点数FP
功能点数
FP
由下式计算:
FP=UFP(未调整的功能点数)×TCF(技术复杂性因子)
功能点数与所用的
编程语言无关
,因此,功能点技术比代码行技术
更合理一些
。但是,在判断信息域特性复杂级别及技术因素的影响程度时,存在相当大的
主观因素
。
2)工作量估算(重点)
a.静态单变量模型
E=A+B×(ev)C
p
其中,
A
、
B
和
C
是由经验数据导出的常数,
E
是以人月为单位的工作量,
ev
是估算变量
(LOC
或
FP)
。
b.动态多变量模型
E=〔LOC×B0.333/P〕3×(1/t)4
其中,
E
是以人月或人年为单位的工作量;
t
是以月或年为单位的项目持续时间;
B
是
“
特殊技术因子
”
(specialskills factor)
P是“生产率参数”(productivity parameter)
c.COCOMO II模型
p
其中
E
是开发工作量
(
以人月为单位
)
,
a
,
b
是模型系数,
KLOC
是估计的代码行数
(
以千行为单位
)
,
f
i
(
i
=1
到
17)
是成本因素。
3)进度计划(重点)
a.甘特图
优点:
直观简明
和
容易掌握
、
容易绘制
缺点
:
不能显式地描绘各项作业彼此间的依赖关系;
进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象;
计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。
b.工程网络
工程网络是制定进度计划时另一种常用的图形工具,它同样能描绘任务分解情况以及每项作业的开始时间和结束时间,此外,它还显式地描绘各个作业彼此间的依赖关系。因此,工程网络是系统分析和系统设计的强有力的工具。
在图
13.2
中还有一些虚线箭头,它们表示
虚拟作业
(dummyactivities)
,也就是事实上并不存在的作业。引入虚拟作业是为了显式地表示作业之间的
依赖关系
。
注意,虚拟作业既不消耗资源也不需要时间。
c.估算工作进度——在工程网络上增加信息
首先,把每个作业估计
需要使用的时间
写在表示该项作业的箭头上方。注意,箭头长度和它代表的作业持续时间没有关系,箭头仅表示依赖关系,它上方的数字才表示作业的持续时间。
其次,为每个事件计算下述两个统计数字:
最早时刻
EET
和
最迟时刻
LET
。这两个数字将分别写在表示事件的圆圈的右上角和右下角,如图
13.3
左下角的符号所示。
事件的最早时刻
EET
是该事件可以发生的最早时间。
通常工程网络中
第一个事件的最早时刻
定义为零,其他事件的最早时刻在工程网络上从左至右按事件发生顺序计算。
计算最早时刻
EET
使用下述三条简单规则:
考虑进入该事件的所有作业;
对于每个作业都计算它的持续时间与起始事件的
EET
之和;
选取上述和数中的最大值作为该事件的最早时刻
EET
。
事件的
最迟时刻
是在不影响工程竣工时间的前提下,该事件最晚可以发生的时刻。
按惯例,
最后一个事件
(
工程结束
)
的最迟时刻就是它的最早时刻。其他事件的最迟时刻在工程网络上从右至左按逆作业流的方向计算。
计算最迟时刻
LET
使用下述三条规则:
考虑离开该事件的所有作业;
从每个作业的结束事件的最迟时刻中减去该作业的持续时间;
选取上述差数中的最小值做为该事件的最迟时刻
LET
。
关键路径:在图中用粗线表示 必须准时完成
机动时间:
机动时间=(LET)结束-(EET)开始-持续时间
----------以下内容朴勇明确说不考了----------------
4)人员组织
民主制程序员组——基本概念:无私编程
主程序员组
现代程序员组——实际的“主程序员”应该由两个人来担任:一个技术负责人(teamleader),负责小组的技术活动;一个行政负责人(team manager),负责所有非技术的管理决策。
分散决策——结合二者
5)质量保证
软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”
影响软件质量的三种倾向:
产品运行(productoperation),产品修改(productrevision)和产品转移(producttransition)
主要措施
基于非执行的测试
(
复审
/
评审
)
、基于执行的测试
(
测试
)
和
程序正确性证明。
正式技术复审实际上是一类复审方法,包括走查(Walkthrough)和审查(Inspection)等具体方法。
走查:参与者驱动法、文档驱动法
审查:综述、准备、审查、返工、跟踪
6)软件配置管理
软件配置管理是在软件项目启动时就开始,并且一直持续到软件退役后才终止的一组跟踪和控制活动。
软件配置管理的目标是,使
变化更容易被适应
,并且在必须变化时减少所需花费的工作量。
软件配置管理主要有五项任务:标识、版本控制、变化控制、配置审计和报告。
7)能力成熟度模型(随便看看吧。。。)
8)风险管理
主要目标:预防风险
采用建立风险条目检查表的方法,人们可以集中精力识别下列已知的和可预测的风险。
风险有两个显著特点。
不确定性
:标志风险的事件可能发生也可能不发生,也就是说,没有
100%
发生的风险
(100%
发生的风险是施加在软件项目上的约束
)
。
损失
:如果风险变成了现实,就会造成不好的后果或损失。
风险分类:
1.
按照风险的影响范围分类
项目风险
技术风险
商业风险
2.
按照风险的可预测性分类
已知风险
可预测的风险
不可预测的风险
风险预测
(
也称为风险估算
)
试图从两个方面来评估每个风险:
风险变成现实的可能性或概率
,以及当风险变成现实时所
造成的后果
。四个方面:性能、支持、成本、进度 四个等级:可忽略的、轻微的、严重的和灾难性的。
如果
性能下降、成本超支、支持困难或进度延迟
(
或这
4
种因素的组合
)
超过了预先定义的限度,则因风险过大项目将被迫终止。
一个有效的策略应该包括下述三方面的内容:风险避免
(
或缓解
)
;风险监控;风险管理和意外事件计划。