五、软件项目计划与管理

项目计划与估算

项目计划

项目计划(Project Plan)要列出软件开发要做的主要工作和任务清单,要回答“软件工程项目做什么”。

在工作和任务清单中要清楚地描述出:

  • 项目划分的各个实施阶段
  • 每个阶段的工作重点和任务是什么
  • 完成本阶段工作和任务的人力、资源需求,时间期限
  • 阶段工作和任务的成果形式
  • 项目实施过程中对风险、疑难、其他不可预见因素等的处理机制
  • 各任务组及开发人员之间的组织、协调关系等。

WBS(Work Breakdown Structure,工作分解结构)

创建WBS是把项目交付成果和项目工作分解成较小的,更易于管理的组成部分的过程。
示例:
image

项目成本估算

项目成本估算 是对完成项目工作所需要的费用进行估计和计划,是项目计划中的一个重要组成部分。

软件项目成本的构成因素
软件项目成本与工作量、商务成本、国家税收和企业利润等有关。
而其中最主要的是:软件开发费用,且软件项目成本 ≈软件开发费用

软件开发费用的计算
软件开发费用由开发工作量和工作量单价共同决定的。
\(软件开发费用 = 开发工作量 * 工作量单价\)

  1. 开发工作量:对软件开发工作量的估计值。
    单位:人月、人天

  2. 工作量单价:每个开发工作量的价格。
    单位: 元/人月 、 元/人天

注意:人月和“人”和“月”都没有直接关系

假设项目开发工作量是27.6人月,每组4个人,那么项目需要多长时间完成?
开发周期 = 27.6人月 / 4人 = 6.9月 ??
那要是每组4000个人呢?
显然是错误的

开发工作量

计算公式: \(开发工作量 = 估算工作量经验值α* 风险系数σ* 复用系数τ\)

估算工作量经验值 α (alpha)
国际、国内都是采用经验方式来估算。
建议按国标(GB/T 8566-2001)的生存期过程来估算。

风险系数 σ (sigma) \(1 ≤ σ ≤ 1.5\)
估算工作量经验值存在较大风险。根据对软件企业的了解进行估计。

复用系数 τ (tau) \(0.25 ≤ τ ≤ 1\)
如果软件企业很好采用了“基于构件的开发方法”,那么软件开发工作量就会相应减少。

工作量单价

公式: \(工作量单价 =(人头费P + 办公费Q + 税收利润R)* 管理系数S* 优质系数T\)

人头费 P \(P= β * 1.476\)
主要是员工平均工资 β、社会保险基金等。其中社保金累计占47.6%。

办公费 Q \(Q = β / 3\)
包括办公房屋租赁、物业费、水电费等。

税收利润等 R \(R = β / 3\)
国家税收、企业利润、年假薪酬、在职培训等费用。

管理系数 S \(1≤ S ≤ 1.2\)
通常每个机构都有一定的管理人员比例。
参照一些企业做法,是:2个管理人员/10个开发人员。

优质系数 T
企业提高软件质量,必然有开支,称质量成本。
企业为提高质量会申请通过国家或国际质量认证。

认证级别 无认证 ISO9000 CMM CMMI
大小 1.05 1.1 1.15 1.2

小结

综上:
工作量单价 = ( P + Q + R ) * S * T
=(β * 1.476 + β /3 + β /3)* 1.2 * T
= β * 2.575 * T
= β * λ

:1.05 ≤ T ≤ 1.2,所以 2.7≤ λ ≤3.09

项目成本
≈ 软件开发费用
= 开发工作量 * 工作量单价
= α * σ * τ * β * λ

  • α : 据经验对软件开发各阶段的工作量的估算
  • σ: 风险系数, 1 ≤ σ ≤ 1.5
  • τ : 复用系数, 0.25 ≤ τ ≤ 1
  • β : 软件企业平均工资,元/人月
  • λ: 综合系数, 2.7≤ λ ≤3.09

例题:
某外包企业承接开发某金融项目,开发工作量估算为20人月,没有可复用代码,企业人均工资为8000元/人月,请估算项目开发成本。

根据今天讲的软件成本估算方法,估算本组项目成本。
α参考值:
image
自行调研β。

项目开发周期估算

(三) 项目开发周期估算
关键路径

  1. 各任务项的完成时间估算
  2. WBS的前驱后继关系

一般使用甘特图表示。如下图:
image

配置管理

注意,项目管理和配置管理是平行的,不是包含关系
任务:对不同阶段产生的文档(结果项)及其不同版本进行管理。

软件配置项(Configuration Item)

软件开发过程中使用的或产生的,有价值的、值得保存的中间制品。

包括:
各类文档、评审记录、源代码及可执行的代码、自动化测试脚本、系统运行所需的软件以及支持软件的有关数据等。

软件配置管理SCM

SCM,Software Configuration Management
一套应用技术上和管理上的指导和监督的方法,
识别和记录配置项的功能特征和物理特征;
控制这些特征的变更;
记录和报告变更的处理和执行的状态;
以及验证其是否符合特定的需求。

软件配置管理的任务

1)版本管理
标识和保存每个配置项及每个版本。
以变更集(Change Set)为单位,进行增量存储。
2)建立配置库,管理代码传播。
签入(check in):将代码从个人工作区上传到配置库;
签出(check out):将代码从配置库下载到个人工作区。

3) 防止版本覆盖。
反方向适时更新工作区。
为修改的配置项“加锁”,或应用“并行合并”机制。
3) 防止版本覆盖。
反方向适时更新工作区。
为修改的配置项“加锁”,或应用“并行合并”机制。
4) 软件集成管理
集成(Integration)
根据软件需求,把不同的人开发的不同构件组合起来,以构成整体系统。

集成规则:
集成前:做充分的单元测试,保证提交质量;

集成中:较频繁的系统构建,持续集成;

集成后:建立系统基线(baseline)。

GIT

posted @ 2022-12-06 09:38  kingwzun  阅读(415)  评论(0编辑  收藏  举报