您的位置:首页 > 其它

软件工程复习——第十三章

2018-01-06 10:49 288 查看
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中列出了全部技术因素,并用Fi(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是估计的代码行数(以千行为单位),fi(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种因素的组合)超过了预先定义的限度,则因风险过大项目将被迫终止。

一个有效的策略应该包括下述三方面的内容:风险避免(或缓解);风险监控;风险管理和意外事件计划。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: