软件项目管理
1.管理的对象及内容
对象:软件工程项目
内容:项目工作范围;
可能遇到的风险;
需要的资源(人、软/硬件);
要完成的任务;
经历的里程碑;
花费的工作量(成本);
工作进度。
方法:制定项目开发计划,对计划的实施进行追踪、监控。
2.管理过程的活动
软件项目启动:在系统工程阶段确定软件项目的目标和范围。目标指出项目的目的。范
围标明项目实现的基本功能。
度量:度量是对计划进行追踪的基本手段、作用是有效地,定量地进行管理。
历史项目的度量数据是对项目进行估算制定项目开发计划的依据,是改进软件过程的依
据。
估算:以软件项目的工作范围、历史项目度量为基础把项目分解为可单独进行估算的小
块估算项目需要的资源、开发周期、成本。
风险分析:寻找项目开发中可能出现的不确定因素。如对用户需求的理解程度。可能出
现的技术障碍、资源(人、资金、软/硬件、设备)的变更。协作环境的变化等,对进度、
成本、质量造成的影响。
制定计划:资源分配、进度安排、风险分析及处理方案。
追踪控制:在软件项目过程中通过日报、周报、月报、例会等形式及收集各种度量数据
对资源使用情况,进度进行追踪与计划进行比较,进行必要的更改、调整。保证项目按时、
按质低成本地完成。
3.软件工程基本概念
软件
定义:
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的
完整集合。
软件的特点:
(1) 软件是一种逻辑实体,而不是具体的物理实体。
(2) 在软件的开发过程中没有明显的制造过程。一旦某一软件项目研制成功,可以大量
地复制同一内容的副本。必须着重在软件开发方面下功夫。
(3) 没有硬件那样的机械磨损,老化问题。不存在磨损和老化问题。而它存在退化问题。
软件维护比硬件维护要复杂得多。
(4) 对计算机系统有着不同程度的依赖性。
(5) 至今尚未完全摆脱手工艺的开发方式。大多是“定做”的。
(6) 软件是复杂的。软件开发,特别是应用软件的开发常常涉及到其他领域的专门知识。
(7) 软件的研制工作须要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高
的。
(8) 相当多的软件工作涉及到社会因素。
软件的分类:
(1) 按软件的功能划分
系统软件:与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软
件和数据协调、高效地工作的软件。
支撑软件:是协助用户开发软件的工具性软件。
应用软件:是在特定领域内开发,为特定目的服务的一类软件。
(2) 按软件规模进行划分
(3) 按工作方式划分
实时处理软件;
分时软件;
交互式软件;
批处理软件。
软件工程
定义:软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、
技术和方法来开发与维护软件。
软件工程要素:方法、工具(环境)、过程、标准(规范)。
方法:是软件开发“如何做”的技术。如项目计划方法,需求分析方法,数据结
构设计方法,系统设计方法,算法、编码、测试、维护方法。
工具:为软件工程方法提供的自动、半自动软件支撑工具。各种软件工具、开
发机器等组合形成软件工程环境。
过程:软件工程是开发、运行、维护和修复软件的系统方法。软件工程过程是
将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的
活动的序列。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量
和协调变化所需要的管理、及软件开发各个阶段完成的时程碑。
标准:软件工程实施过程中的一系列统一的约束和规定。
软件工程项目基本目标:
计划
需求分析
运行·维护
设计
编码
测试
维护阶段
定义
阶段
开
发
阶
段
付出较低的开发成本;
达到要求的软件功能;
取得较好的软件性能;
开发的软件易于移植;
需要较低的维护费用;
能按时完成开发工作,及时交付使用。
软件生存周期
定义:软件孕育、诞生、成长、成熟、衰亡的生存过程。一般称其为计算机软件的
生存期。
生存周期阶段:软件生存期分为六个阶段,即制定计划、需求分析和定义、软件设
计、程序编写、软件测试、运行维护。
生存期模型:软件生存模型是从软件项目需求定义直至软件经使用后废弃为止,跨
越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
瀑布模型:规定了各项软件工程活动,自上而下、相互衔接的固定次序,如同瀑布
流水,逐级下落。
软件生存期的瀑布模型
演化模型:进行两次开发,第一次是试验开发,其产品为“原型”,第二次是正式开
发得到满意的软件产品。
螺旋模型:
螺旋模型
软件文档
定义:文档是指某种数据媒体和其中所记录的数据。它具有永久性,并可以由人或
机器阅读,通常仅用于描述人工可读的东西。在软件工程中,文档常常用来表示对
活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的
信息。
文档的作用:
(1) 提高软件开发过程的能见度。
(2) 提高开发效率。
(3) 在一定阶段的工作成果和结束标志。
(4) 便于协调以后的软件、开发、使用和维护。
(5) 便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解。
(6) 便于用户了解软件的功能、性能等各项指标。
文档的种类:
(1) 开发文档;
(2) 管理文档;
(3) 用户文档
4.软件度量
什么是软件度量
软件度量就是在软件开发过程中把反映或影响软件开发成本、开发效率、软件质量的各
种数据测量出来并记录下来。
软件度量的作用
为了有效地定量地进行管理 ________ 计划、估算、过程监控、评价。是改进过程提高软
件质量的重要手段。
风险分析制定计划
客户评估 实施工程
从 CMM Level2(可重复级)的特征看度量的重要性
(1) 管理制度化,建立了基本的管理制度和规程,管理工作有章可循。
(2) 初步实现标准化,开发工作较好地实施标准。
(3) 变更依法时行,做到基线化。
(4) 新项目的计划和管理基于过去的实践经验,具有重复以前成功项目的环境和条
件。管理工作主要跟踪经费支出(资金、设备、人员、工时)进度、功能以及
识别存在的问题。
度量的内容
(1) 过程属性的度量
1) 工作量度量
工作产品(对象)标识:项目、文档、模块、工作时间 (月、周、日、时)
工作内容:调研、编写文档、编码、测试、评审、改错、项目例会
工作成果:文档页数、代码行数、模块数、发现或纠正的错误数
工作量:人月 、人周、 人时
2) 资源费用度量
工作产品(对象)标识:项目、模块
时间:起止年/月/日
资源:人数、设备数、支持工具数、资金数、场地面积
3) 事件度量
工作产品标识:项目
发生时间:年/月/日
事件描述:更改、偏离计划(进度、费用)
处理结果:更改/不更改、处理花费(损失)
事件发生总数或频率
(2) 产品属性度量
1) 面向产品规模的度量
工作产品标识:项目、模块
代码行数:千行语句数、字符数、字节数
注释率:注释语句数/代码行数
2) 面向功能的度量
度量内容
工作产品标识:项目、模块
用户输入数据数:在系统运行时要用户输入的数据
用户输出数据数:在系统运行时用户要求输出的数据
用户请求(查询)数:用户交互式有实时响应的次数
内部文件数(数据库): 数据库中与本系统有交换的数据结构数
外部文件数:本系统运行时机器可读的有交换的外系统数据结构数
功能点计算
加权因数
直接测量项 计数 简单 中间 复杂 加权计数
用户输入数据数 3 4 6
用户输出数据数 4 5 7
用户请求(查询)数 3 4 6
内部文件数 7 10 15
外部文件数 5 7 10
总计数
功能点 FP = 总计数×( + ×SUM(Fi))
Fi(i=1···14)为其它影响因素对计算功能点的校正值。
3) 错误缺陷及改正率度量
工作产品标识
产品规模 千行代码或功能点数
错误级别 分三级或五级
错误个数
改正个数
错误率 错误数/软件规模
改正率 改正错误数/发现错误数
4) 测试覆盖率测量
工作产品标识
语句覆盖率 测试经历语句数/总语句数
分支覆盖率 测试经历支路数/总支路数
简单路径覆盖率 测试经历简单路径数/总简单路径数
5)生产率、单位成本的计算
生产率=工作成果/工作量
单位成本=资源消耗折算成的成本(元)/产生的成果(最终成果)
5.软件项目估算
(1) 软件规模估算
软件项目分解:把软件分解成一些小的可分别独立进行估算的子功能,从而能
根据历史数据估算出每个子功能的规模。
估算出期望的软件规模数
L=(a+4m+b)
a 为最佳、m 为可能的、b 为最差的估计值。a、m、b 都从历史上同类功能软
件度量数据中获得。
(2) 工作量及工作周期的估算
建立企业的估算模型
E=aLb
E——工作量(人月),L——软件规模(千条语句数、功能点数)利用历史上多个
项目实际度量得到的 L、E 进行回归计算确定 a、b 值。
IBM 模型:1997 年从 60 个项中得到下列模型。
E= L——千条语句数 E——人月数
类似方法得到:
D= = D——持续时间(月)
S=× S——人数
DOC=49× DOC——文档页数
COCOMO 模型(Constructive Cost Model)
由 Boehm 在 63 个项目的历史数据中得到,对于规模不大(<5 万行=的软件有基
本模型
MM=(KDSI) MM——工作量(人月数)
KDSI 千条语句数
TDEV=(MM) TDEV——持续时间(月)
COCOMO 模型还考虑各种(15 种)影响因素而进行修正的值,(例如,人员
能力,使用语言的经验、程序设计技术、工具支持程度……)。
(3) 估算成本
根据历史项目的单位规模成本或人月成本计算软件成本
C=单位语句成本×L
C=单位人月成本×E
6.风险分析
目的:一是关心未来,风险是否会导致软件项目失败?二是关心变化,在用户需求、开
发技术、目标机器、以及所有其他与项目有关的实体中会发生什么变化?三是必须解决选择
问题:应当采用什么方法和工具,应当配备多少人力,在质量上强调到什么程度才满足要求?
4 个活动:风险识别,风险估计,风险评价和风险驾驭。
(1) 风险识别
项目风险识别潜在的预算、进度、个人(包括人员和组织)、资源、用户和需求方
面的问题。如项目复杂性、规模和结构等都可构成风险因素。
技术风险识别潜在的设计、实现、接口、检验和维护方面的问题。规格说明的多义
性、技术上的不确定性、技术陈旧、最新技术(不成熟)也是风险因素。
商业风险建立的软件不是真正所想要的;建立的软件不适合整个软件产品战略;销
售部门不清楚如何推销这种软件;失去上级管理部门的支持;失去预算或人员的承诺
(预算风险)。
(2) 风险估计
估计风险发生的可能性。估计风险可能产生的结果。
1) 建立一个尺度或标准来表示一个风险的可能性;
2) 描述风险的结果;
3) 估计风险对项目和产品的影响;
4) 确定风险估计的正确性。
(3) 风险评价
风险评价时,进一步检验在风险估计时所得到的估计的准确性,对已暴露的风险进
行优先排队,考虑控制和(或)消除可能出现风险的方法。
风险评价很有用的技术就是定义风险参照水准。有一个表明导致项目终止的水准。
风险的某种组合造成了一些问题,从而超出了一个或多个参照水准,就要中止工作。
(4) 风险驾驭和监控
风险驾驭是指利用某些技术,及某些项目管理方法等设法避开或转移风险。例如,
一项风险影响的估计值是:项目开发时间增加 15%,总成本增加 12%。
采取风险驾驭步骤带来了额外的项目成本。要对风险驾驭部分进行评价。风险消除
步骤,经过估算,将增加 15%的项目成本和开发时间,则管理或计划人员可以决定不
实现这个风险驾驭步骤。如果估算出这些风险消除步骤仅增加了 5%的成本和 3%的开
发时间。
风险监控:
1) 做风险因素跟踪;
2) 进行风险再估计;
3) 收集可用于将来的风险分析的信息。
7.制定计划
制定计划的目的是要回答:这个软件项目的范围是什么?需要哪些资源?花费多少工作
量?要用的成本有多少?进度如何安排等等一系列问题。
软件计划的类型
1) 项目实施计划(称为软件开发计划):这是软件开发的综合性计划,通常应包括任
务、进度、人力、环境、资源、组织等多个方面。
2) 质量保证计划:把软件开发的质量要求具体规定为在每个开发阶段中可以检查的质
量保证活动。
3) 软件测试计划:规定测试活动的任务、测试方法、进度、资源、人员职责等。
4) 文档编制计划:规定所开发项目应编制的文档种类、内容、进度、人员职责等。
5) 用户培训计划:规定对用户进行培训的目标、要求、进度、人员职责等。
6) 软件分发计划:软件开发项目完成后,如何提供给用户。
进度安排:
(1) 估算软件任务所需人月数。
(2) 开发阶段工作量分配:编码的工作量仅占 20%,编码前的工作量占 40%,编码后
的工作量占 40%;计划阶段的工作量占总工作量的 2%~3%;需求分析占工作量的
10%~25%;软件设计的工作量在 20%~25%之间;编码工作用总工作量的 15%~20%;
测试和随后的调试工作约占软件开发工作量的 30%~40%。
(3) 安排每项任务起止时间。
进度安排的图形方法
(1) 甘特图(Gantt Chart)
甘特图用水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工
时间和完成时间;线段的长度表示完成任务所需的时间。
文档编制与评审是软件开发进度的里程碑。甘特图的优点是标明了各任务的计划进
度和当前进度,能动态地反映软件开发进展情况。缺点是难以反映多个任务之间存在的
复杂的逻辑关系。
图 甘特图
(2) PERT(Porgram Evaluation & Review Technique)图
PERT 图采用数据结构中的 AOE 网(Activity On Edge network)以有向边表示活动,
边上标注的权可以是该活动的持续时间,也可以是活动的其它花费(成本)。顶点表示
事件。
用 PERT 图来表示软件项目的进度计划,则可以表达每项任务的计划进度及每项任
之间的连系(顺序或可并行)。顶点事件则可以反映软件项目过程中的里程碑。
图 一个 SOE 网实例
7.项目追踪和控制
追踪:
定期举行项目状态会议。在会上,报告进展遇到的问题。
评价软件工程过程中所产生的所有评审的结果。
确定由项目的计划进度所安排的正式的里程碑。
比较每一个任务的实际开始时间和计划开始时间。
与开发人员交谈,得到对开发进展和刚冒头的问题的客观评价。
控制:
当问题出现的时候,项目管理人员必须实行控制以尽可能快地排解它们。在问题领域
可能需要一些追加资源;人员可能要重新部署,或者项目进度要重新调整。
V1
V2 V5
V7
V6
V4
V3
9
a
9 =
2
a
2 = 2
a
8 =
4
a 7
=
6
a 10
=
3
a 5
=
1
a
4 =
3
a 1
=
7a 6 =
8a 3 =
1 2 3 4 5 6 7 8 9 10 11
12 13 14
A
B
C
D
E
任
务
周
○△
○△
○△
○△
○△
完成 计划完成
○ 文档编写
△ 评审
当前进度