软件工程学习笔记(二)软件项目管理

软件项目管理

项目的特征:临时性,独特性,逐步完善

人员

  1. 软件项目的参与人员
  2. 软件开发团队
    组织方式:*式组织结构,主程序员式组织结构,技术管理式组织结构,大型项目的层次式组织结构
    选择人员进行软件项目开发时,应考虑以下因素:

软件工程学习笔记(二)软件项目管理
软件工程学习笔记(二)软件项目管理

产品:使用“产品分解结构”(PBS)作为产品分解的工具
过程:使用“工作分解结构”(WBS)作为过程分解的工具
项目:项目管理四阶段:

  1. 项目启动:确定项目范围,组建项目团队,建立项目的基础设施
  2. 项目规划:确定项目活动,预算项目成本,制定进度计划
  3. 项目实施:监控项目执行,管理项目风险,控制项目变更
  4. 项目收尾:客户验收项目,安装培训软件,总结项目经验

软件项目估算

软件规模估算技术:
代码行技术(LOC技术)
根据以往开发类似产品的经验和历史数据,估算所开发软件的代码行数。将软件分解成一系列可分别独立估算的子功能,通过估算每个子功能的代码行数并进行累加,得到整个软件系统的总代码行数。
代码行数:若以1行代码为单位,记为LOC;若以1千行代码为单位,则记为KLOC。
软件工程学习笔记(二)软件项目管理
软件工程学习笔记(二)软件项目管理

功能点技术
根据软件信息域的基本特征和对软件复杂性的评估结果,估算所开发软件的规模。以功能点数(FP,Function Point)为度量单位。
该方法中定义了软件信息域的5个基本特征
外部输入,外部输出,外部查询,内部逻辑文件,外部接口

估算软件功能点数的基本步骤
第一步:估算未调整的功能点数UFP
软件工程学习笔记(二)软件项目管理

第二步:计算复杂度调节因子CAF
软件工程学习笔记(二)软件项目管理
第三步:计算调整后的功能点数
软件工程学习笔记(二)软件项目管理
经过复杂度调节因子CAF调整后的功能点数(DFP)被称为交付功能点。研究表明,上述计算出的功能点数可以代表软件规模,也可以作为进一步估算成本和工作量的依据。

软件工作量估算

利用基本COCOMO模型估算出的源代码行数来计算软件开发工作量:
软件工程学习笔记(二)软件项目管理
E——工作量(单位:人月)
L——估计的代码行数(单位:KLOC)
D——所需的开发时间(单位:月)
中级COCOMO模型:
软件工程学习笔记(二)软件项目管理
软件工程学习笔记(二)软件项目管理
EAF:工作量调节因子

软件成本/效益分析
方法:

  • 货币的时间价值
    成本估算是要对项目投资,因投资先于取得效益,因此要考虑货币的时间价值,通常以利率的形式表示。假设年利率为i,投资额P在n年后的价值F为:
    软件工程学习笔记(二)软件项目管理
    反之,预计n年后所产生的效益R折合成现在价值S为
    软件工程学习笔记(二)软件项目管理
    投资回收率:
    软件工程学习笔记(二)软件项目管理

  • 投资回收期

  • 纯收入

软件项目进度管理

常用图形工具:

  • 甘特图
  • 工程网络图(关键路径法)
    如何计算每个时间节点的最早时刻EET:约定整个工程的第一个时间节点的EET=0;从左向右顺着任务流的方向依次计算其它时间节点的EET:考虑流入该时间节点的所有任务,对每个任务计算:开始时间节点的EET + 持续时间,取所有和中的最大值作为该时间节点的EET
    如何计算每个时间节点的最晚时刻LET:
    约定整个工程的最后一个时间节点的LET = EET;从右向左逆着任务流的方向依次计算其它时间节点的LET:考虑流出该时间节点的所有任务,对每个任务计算:结束时间节点的LET - 持续时间,取所有差中的最小值作为该时间节点的EET
    非关键任务的机动时间:结束时间节点的LET - 开始时间节点的EET - 持续时间

软件项目风险管理

风险识别:建立风险条目检查表
常见软件风险:软件规模风险,客户相关风险, 商业影响风险, 软件过程风险,开发环境风险,开发技术风险, 开发人员风险
风险评估:建立风险评估表
风险规划:风险处理策略:规避风险, 接受并缓解风险, 转移风险, 风险自留
风险监控:贯穿于软件开发的全过程,是一种项目跟踪活动。