软件工程
电子教案
王树林
第二部分 软件项目的管理
我们主要考虑计划、组织、监管和控制
软件项目所需要的管理技术。在这一部分我
们主要解决下列问题:
( 1)在一个软件项目中如何管理软件过程和过
程指导下的项目?
( 2)什么是软件度量?如何使用它们管理软件
过程和过程指导下的项目?
( 3)什么度量能够辅助管理者评估开发的产品
质量以及使用的过程的有效性?
( 4)一个软件项目组如何对工作量、成本和项
目时间进行可靠的评估?
第二部分 软件项目的管理
( 5)一个组织何时应该开发软件?何时
应该获取软件?何时应该请求外援?
( 6)如何评估风险?
( 7)如何创建一个项目实施进度计划?
( 8)什么是软件质量保证?如何使用他
作为项目控制机制?
( 9)为什么正式的技术复审那么重要?
第三章 项目管理的概念
许多项目管理者,在根本不可能完成的最
后期限下苦苦挣扎。系统交付后,又花许多
时间去维护该系统。
原因:项目管理太弱。
3.1 管理的范围
有效的项目管理集中于 3个 P上:人员
( People)、问题( Problem)和过程
( Process)。其中人员是第一位的。
软件工程是人的智力密集的劳动,忽视了
这一点就不可能成功?
第三章 项目管理的概念
如果对问题理解有误,那么再好的解决方案也是无用的。
忽视过程也会给项目带来额外的风险。
3.1.1 人员
软件工程研究所专门开发了一个人员管理能力成熟度
模型( PM-CMM),旨在“通过吸引、培养、鼓励和
留驻改善其软件开发能力所需要的人才增强软件组织
承担日益复杂的应用程序开发的能力。”
人员管理成熟度模型为软件人员定义了以下的关键实践
区域:招募、选择、业绩管理、培训、报酬、专业发
展、组织和工作计划、以及团队精神 /企业文化培养。
第三章 项目管理的概念
3.1.2 问题
在项目实施以前,应该首先明确该项目的
目的和范围,考虑可选的解决方案。定义技
术和管理的约束。没有这些信息,就不能进
行合理的成本估算、有效的风险评估和进行
适当的项目任务划分。根据产品的最后交付
期限、预算的限制、可用的人员、技术接口
及各种其他因素,给出项目的约束。
3.1.3 过程
第三章 项目管理的概念
软件过程提供了一个框架,在这个框架下
可以建立一个软件开发的综合计划。软件项
目是由若干个不同任务集合组成的,每一个
集合都是由任务、里程碑、交付物以及质量
保证点组成。
3.2 人员
一个成功的软件项目中,最成功的因素是人。
但事实上一些公司的行为与说话不符。常常认
为人员是不成问题的。
第三章 项目管理的概念
3.2.1 项目参与者
参与软件过程的人员可以分为五类:
( 1)高级管理者:负责确定商业问题。这些问
题往往对项目产生很大影响。
( 2)项目管理者:必须计划、刺激、组织和控
制软件开发人员。
( 3)开发人员:负责开发一个产品或应用软件
所需要的专门技术人员。
( 4)客户:负责说明带开发软件的需求的人员。
( 5)最终用户:最终用户是直接与软件进行交
互的人。
第三章 项目管理的概念
3.2.2 项目负责人
项目管理是集中于人的活动,一个项目负责
人应具备什么素质。
领导能力模型( MOI):
( 1)刺激( Motivate):鼓励软件开发人员发
挥其最大能力的一种能力。
( 2)组织( Organization):融合已有的过程的
一种能力。
( 3)创新( Innovation):鼓励人们去创造,并
感到有创造性的一种能力。
第三章 项目管理的概念
成功的项目负责人应采用一种解决问题的
管理风格。让每一位员工知道质量很重要,
不能妥协。
3.2.3 软件项目组
一个项目需要 n个人工作 k年,那么这个项目
可有若干人力资源分配方案。
( 1) n个人被分配来完成 m个不同的功能,一般
而言,没有合作发生。协调是管理者的事情。
( 2) n个人被分配来完成 m个不同的功能
( m<n),建立非正式的小组,指定一个专门
的小组负责人小组之间的协调由专门的软件
管理者进行。
第三章 项目管理的概念
( 3) n个人被分成 t个小组,每一个小组完
成一个或多个功能任务,每一个小组有
一个特定的结构,该结构是为同一个项
目的所有小组定义的,协调工作由小组
和软件项目管理者共同控制。
每一种方法都有其优缺点,但正式
的小组的划分是效率最高的。
第三章 项目管理的概念
三种一般的小组组织方式:
( 1) 民主分权式( Democratic Decentralized,
DD):小组里没有固定的负责人,成员之间
的通信是平行的,问题和解决方法的 确定
是大家讨论的。
( 2)控制分权式( Controlled Decentralized,
CD),小组有一个固定的负责人,他协调任务
以及二级子任务的二级负责人的关系。存在
上下级的通信。问题解决仍是一个群体活动。
第三章 项目管理的概念
控制集权式( Controlled Centralized,CC),
负责人和小组成员之间的关系是上下级
之间的关系。
一个有凝聚力的小组是一个团结紧密的人,
他们的整体力量大于个体力量的总和。
第三章 项目管理的概念
3.2.4 协调和通信问题
有很多原因会使软件项目陷入困境。
现代软件的这些特性 —规模、不确定性和互操
作性 —都是现实的问题。
解决这些问题的办法就是加强小组之间和成员
之间的交流。
共享想法,相互帮助,天天交流。
正式的交流方式,会议,文字,文档,技术
备忘录,项目里程碑,进度和项目控制。
非正式的交流方式:个人之间。
第三章 项目管理的概念
协调技术的价值
协调技术的使用
个人间讨论
项目控制工具
中心数据库
原代码
项目公告栏
代码检查
电子邮件
文档
项目里程碑
小组会议
设计复审
需求复审
第三章 项目管理的概念
电子通信,电子邮件、电子公告栏、
Web站点以及基于视频的会议系统。
个人间的网络:与项目组外的人进行非正
式的讨论。
3.3 问题
项目一开始,管理者就要估算成本,指
定项目计划。但此时信息缺乏。
3.3.1 软件范围
第三章 项目管理的概念
软件项目管理的第一个活动便是软件范围
的确定。
背景:适应大型的系统和商业背景,要加
什么约束。
信息目标,输出是什么,输入是什么。
功能和性能,如何把输入转换成输出,需
要满足什么样的性能。
第三章 项目管理的概念
3.3.2 问题分解
? 面对复杂的问题人们总是采取分而治之的策
略。
? 由于成本和估算都是面向功能的,所以分解
是很有用的。
例如:我们要开发一个新的字处理项目。功能
包括:连续语音输入,自动拷贝编辑,键盘
输入,页面布局,自动建立索引和目录等。
自动拷贝编辑功能分解,拼写检查,语句文
法检查等。
第三章 项目管理的概念
3.4 过程
软件过程的一般阶段(定义,开发和维
护)适用于所有的软件项目。问题在于
如何选择一个适合项目组开发的软件过
程模型。
? 线性顺序模型
? 原形模型
? RAD模型
第三章 项目管理的概念
? 增量模型
? 螺旋模型
? 构件组装模型
? 并发开发模型
? 形式化方法模型
? 第四代技术
项目管理者必须决定哪一个过程模型最适合待开发项目,
然后基于公共过程框架活动集合,定义一个初步计划,
一旦建立了初步计划,便可以进行过程分解,即必须
建立一个完整的计划,以反映框架活动过程中所需要
的工作任务。
第三章 项目管理的概念
3.4.1 合并问题和过程
项目计划开始于问题和过程的合并。软件项目组要开发的每
一个功能都必须通过软件组织定义的框架活动集合来完成。
过程框架活
动
用户通信 计划 风险分析 工程
产品功能
正文输入
编辑功能
页面布局
第三章 项目管理的概念
用户通信:开发者和用户之间的沟通;
计划,定义资源(人、财和物),进度及其他相关信息所需要
的任务。
风险分析:评估技术的和管理的风险所需要的任务。
建造及发布,建造、测试、安装和提供用户支持(如文档与培训)
所需要的任务。
用户评估:基于在工程阶段产生的或在安装阶段实现的软件表示的
评估,获得用户反馈所需要的任务。
第三章 项目管理的概念
3.4.2 过程分解
有了软件项目,就要选择适当的模型。
? 开发的项目与以前的类似,就可以选择线性模型。
? 如果时间紧,问题清晰,任务明确,可以选用 RAD模
型。
? 如果时间紧,不可能完成所有功能时,就可以选用增
量模型。
一旦选定了过程模型,公共过程框架( Common
Process Framework,CPF)就可以适用了。
第三章 项目管理的概念
例如:一个小型的,相对简单的项目在用户通
信活动中的可能任务是:
( 1)列出需澄清的问题清单。
( 2)与用户见面说明需澄清的问题。
( 3)共同给出范围描述。
( 4)根据需求修改范围描述。
( 5)与用户开会讨论。
等等
第三章 项目管理的概念
3.5 项目
一些产业专家们,常常提及 90-90规则:一个
系统的第一个 90%花费了所分配工作量和时间
的 90%。系统最后的 10%也会花费所分配工作
量和时间的 90%。这说明了很多关于一个项目
陷入困境的情况:
? 评估进度所采用的方法是有缺陷的;
? 没有办法测定进度;
? 进度计划是有缺陷的;
? 没有明确地考虑风险;
3.6 小结
软件项目管理是软件工程的保护性活动。它贯
穿于整个计算机软件的定义、开发和维护。
三个 P对软件项目的管理有本质的影响 —人员、
问题和过程。人员被组织成有效率的小组。
问题必须由开发者和用户交流,分解成较小
的部分;过程必须适应于人员和问题。选择
一个公共过程框架,采用一个合适的软件工
程范型。
关键因素是人员。
正式的技术复审和非正式的个人间通信对开
发者最有价值。
3.6 Summary
Software project management is an umbrella
activity within software engineering,It begins
before any technical activity is initiated and
continues throughout the definition,development,
and maintenance of computer software.
Three P’s have a substantial influence on software
project management –people,problem,and
process, People must be organized into effective
teams,motivated to do high-quality software
work,and coordinated to achieve effective
communication,The problem must be
communicated from customer to
3.6 Summary
developer,partitioned(decomposed) into its
constituent parts,and positioned for work by the
software team,The process must be adapted to
the people and the problem.A common process
framework is selected,an appropriate software
engineering paradigm is applied,and a set of
work tasks is chosen to get the job done.
The pivotal element in all software projects is
people,Software engineers can be organized in a
number of different team structures that range
from traditional control hierarchies to ―open
paradigm ― teams,A variety of coordination and
3.6 Summary
communication techniques can be applied to
support the work of the team,In general,formal
reviews and informal person-to-person
communication have the most value for
practitioners.
The project management activity encompasses
measurement and metrics,estimation,risk
analysis,schedules,tracking,and control,Each of
these topics is considered in the chapters that
follow.
电子教案
王树林
第二部分 软件项目的管理
我们主要考虑计划、组织、监管和控制
软件项目所需要的管理技术。在这一部分我
们主要解决下列问题:
( 1)在一个软件项目中如何管理软件过程和过
程指导下的项目?
( 2)什么是软件度量?如何使用它们管理软件
过程和过程指导下的项目?
( 3)什么度量能够辅助管理者评估开发的产品
质量以及使用的过程的有效性?
( 4)一个软件项目组如何对工作量、成本和项
目时间进行可靠的评估?
第二部分 软件项目的管理
( 5)一个组织何时应该开发软件?何时
应该获取软件?何时应该请求外援?
( 6)如何评估风险?
( 7)如何创建一个项目实施进度计划?
( 8)什么是软件质量保证?如何使用他
作为项目控制机制?
( 9)为什么正式的技术复审那么重要?
第三章 项目管理的概念
许多项目管理者,在根本不可能完成的最
后期限下苦苦挣扎。系统交付后,又花许多
时间去维护该系统。
原因:项目管理太弱。
3.1 管理的范围
有效的项目管理集中于 3个 P上:人员
( People)、问题( Problem)和过程
( Process)。其中人员是第一位的。
软件工程是人的智力密集的劳动,忽视了
这一点就不可能成功?
第三章 项目管理的概念
如果对问题理解有误,那么再好的解决方案也是无用的。
忽视过程也会给项目带来额外的风险。
3.1.1 人员
软件工程研究所专门开发了一个人员管理能力成熟度
模型( PM-CMM),旨在“通过吸引、培养、鼓励和
留驻改善其软件开发能力所需要的人才增强软件组织
承担日益复杂的应用程序开发的能力。”
人员管理成熟度模型为软件人员定义了以下的关键实践
区域:招募、选择、业绩管理、培训、报酬、专业发
展、组织和工作计划、以及团队精神 /企业文化培养。
第三章 项目管理的概念
3.1.2 问题
在项目实施以前,应该首先明确该项目的
目的和范围,考虑可选的解决方案。定义技
术和管理的约束。没有这些信息,就不能进
行合理的成本估算、有效的风险评估和进行
适当的项目任务划分。根据产品的最后交付
期限、预算的限制、可用的人员、技术接口
及各种其他因素,给出项目的约束。
3.1.3 过程
第三章 项目管理的概念
软件过程提供了一个框架,在这个框架下
可以建立一个软件开发的综合计划。软件项
目是由若干个不同任务集合组成的,每一个
集合都是由任务、里程碑、交付物以及质量
保证点组成。
3.2 人员
一个成功的软件项目中,最成功的因素是人。
但事实上一些公司的行为与说话不符。常常认
为人员是不成问题的。
第三章 项目管理的概念
3.2.1 项目参与者
参与软件过程的人员可以分为五类:
( 1)高级管理者:负责确定商业问题。这些问
题往往对项目产生很大影响。
( 2)项目管理者:必须计划、刺激、组织和控
制软件开发人员。
( 3)开发人员:负责开发一个产品或应用软件
所需要的专门技术人员。
( 4)客户:负责说明带开发软件的需求的人员。
( 5)最终用户:最终用户是直接与软件进行交
互的人。
第三章 项目管理的概念
3.2.2 项目负责人
项目管理是集中于人的活动,一个项目负责
人应具备什么素质。
领导能力模型( MOI):
( 1)刺激( Motivate):鼓励软件开发人员发
挥其最大能力的一种能力。
( 2)组织( Organization):融合已有的过程的
一种能力。
( 3)创新( Innovation):鼓励人们去创造,并
感到有创造性的一种能力。
第三章 项目管理的概念
成功的项目负责人应采用一种解决问题的
管理风格。让每一位员工知道质量很重要,
不能妥协。
3.2.3 软件项目组
一个项目需要 n个人工作 k年,那么这个项目
可有若干人力资源分配方案。
( 1) n个人被分配来完成 m个不同的功能,一般
而言,没有合作发生。协调是管理者的事情。
( 2) n个人被分配来完成 m个不同的功能
( m<n),建立非正式的小组,指定一个专门
的小组负责人小组之间的协调由专门的软件
管理者进行。
第三章 项目管理的概念
( 3) n个人被分成 t个小组,每一个小组完
成一个或多个功能任务,每一个小组有
一个特定的结构,该结构是为同一个项
目的所有小组定义的,协调工作由小组
和软件项目管理者共同控制。
每一种方法都有其优缺点,但正式
的小组的划分是效率最高的。
第三章 项目管理的概念
三种一般的小组组织方式:
( 1) 民主分权式( Democratic Decentralized,
DD):小组里没有固定的负责人,成员之间
的通信是平行的,问题和解决方法的 确定
是大家讨论的。
( 2)控制分权式( Controlled Decentralized,
CD),小组有一个固定的负责人,他协调任务
以及二级子任务的二级负责人的关系。存在
上下级的通信。问题解决仍是一个群体活动。
第三章 项目管理的概念
控制集权式( Controlled Centralized,CC),
负责人和小组成员之间的关系是上下级
之间的关系。
一个有凝聚力的小组是一个团结紧密的人,
他们的整体力量大于个体力量的总和。
第三章 项目管理的概念
3.2.4 协调和通信问题
有很多原因会使软件项目陷入困境。
现代软件的这些特性 —规模、不确定性和互操
作性 —都是现实的问题。
解决这些问题的办法就是加强小组之间和成员
之间的交流。
共享想法,相互帮助,天天交流。
正式的交流方式,会议,文字,文档,技术
备忘录,项目里程碑,进度和项目控制。
非正式的交流方式:个人之间。
第三章 项目管理的概念
协调技术的价值
协调技术的使用
个人间讨论
项目控制工具
中心数据库
原代码
项目公告栏
代码检查
电子邮件
文档
项目里程碑
小组会议
设计复审
需求复审
第三章 项目管理的概念
电子通信,电子邮件、电子公告栏、
Web站点以及基于视频的会议系统。
个人间的网络:与项目组外的人进行非正
式的讨论。
3.3 问题
项目一开始,管理者就要估算成本,指
定项目计划。但此时信息缺乏。
3.3.1 软件范围
第三章 项目管理的概念
软件项目管理的第一个活动便是软件范围
的确定。
背景:适应大型的系统和商业背景,要加
什么约束。
信息目标,输出是什么,输入是什么。
功能和性能,如何把输入转换成输出,需
要满足什么样的性能。
第三章 项目管理的概念
3.3.2 问题分解
? 面对复杂的问题人们总是采取分而治之的策
略。
? 由于成本和估算都是面向功能的,所以分解
是很有用的。
例如:我们要开发一个新的字处理项目。功能
包括:连续语音输入,自动拷贝编辑,键盘
输入,页面布局,自动建立索引和目录等。
自动拷贝编辑功能分解,拼写检查,语句文
法检查等。
第三章 项目管理的概念
3.4 过程
软件过程的一般阶段(定义,开发和维
护)适用于所有的软件项目。问题在于
如何选择一个适合项目组开发的软件过
程模型。
? 线性顺序模型
? 原形模型
? RAD模型
第三章 项目管理的概念
? 增量模型
? 螺旋模型
? 构件组装模型
? 并发开发模型
? 形式化方法模型
? 第四代技术
项目管理者必须决定哪一个过程模型最适合待开发项目,
然后基于公共过程框架活动集合,定义一个初步计划,
一旦建立了初步计划,便可以进行过程分解,即必须
建立一个完整的计划,以反映框架活动过程中所需要
的工作任务。
第三章 项目管理的概念
3.4.1 合并问题和过程
项目计划开始于问题和过程的合并。软件项目组要开发的每
一个功能都必须通过软件组织定义的框架活动集合来完成。
过程框架活
动
用户通信 计划 风险分析 工程
产品功能
正文输入
编辑功能
页面布局
第三章 项目管理的概念
用户通信:开发者和用户之间的沟通;
计划,定义资源(人、财和物),进度及其他相关信息所需要
的任务。
风险分析:评估技术的和管理的风险所需要的任务。
建造及发布,建造、测试、安装和提供用户支持(如文档与培训)
所需要的任务。
用户评估:基于在工程阶段产生的或在安装阶段实现的软件表示的
评估,获得用户反馈所需要的任务。
第三章 项目管理的概念
3.4.2 过程分解
有了软件项目,就要选择适当的模型。
? 开发的项目与以前的类似,就可以选择线性模型。
? 如果时间紧,问题清晰,任务明确,可以选用 RAD模
型。
? 如果时间紧,不可能完成所有功能时,就可以选用增
量模型。
一旦选定了过程模型,公共过程框架( Common
Process Framework,CPF)就可以适用了。
第三章 项目管理的概念
例如:一个小型的,相对简单的项目在用户通
信活动中的可能任务是:
( 1)列出需澄清的问题清单。
( 2)与用户见面说明需澄清的问题。
( 3)共同给出范围描述。
( 4)根据需求修改范围描述。
( 5)与用户开会讨论。
等等
第三章 项目管理的概念
3.5 项目
一些产业专家们,常常提及 90-90规则:一个
系统的第一个 90%花费了所分配工作量和时间
的 90%。系统最后的 10%也会花费所分配工作
量和时间的 90%。这说明了很多关于一个项目
陷入困境的情况:
? 评估进度所采用的方法是有缺陷的;
? 没有办法测定进度;
? 进度计划是有缺陷的;
? 没有明确地考虑风险;
3.6 小结
软件项目管理是软件工程的保护性活动。它贯
穿于整个计算机软件的定义、开发和维护。
三个 P对软件项目的管理有本质的影响 —人员、
问题和过程。人员被组织成有效率的小组。
问题必须由开发者和用户交流,分解成较小
的部分;过程必须适应于人员和问题。选择
一个公共过程框架,采用一个合适的软件工
程范型。
关键因素是人员。
正式的技术复审和非正式的个人间通信对开
发者最有价值。
3.6 Summary
Software project management is an umbrella
activity within software engineering,It begins
before any technical activity is initiated and
continues throughout the definition,development,
and maintenance of computer software.
Three P’s have a substantial influence on software
project management –people,problem,and
process, People must be organized into effective
teams,motivated to do high-quality software
work,and coordinated to achieve effective
communication,The problem must be
communicated from customer to
3.6 Summary
developer,partitioned(decomposed) into its
constituent parts,and positioned for work by the
software team,The process must be adapted to
the people and the problem.A common process
framework is selected,an appropriate software
engineering paradigm is applied,and a set of
work tasks is chosen to get the job done.
The pivotal element in all software projects is
people,Software engineers can be organized in a
number of different team structures that range
from traditional control hierarchies to ―open
paradigm ― teams,A variety of coordination and
3.6 Summary
communication techniques can be applied to
support the work of the team,In general,formal
reviews and informal person-to-person
communication have the most value for
practitioners.
The project management activity encompasses
measurement and metrics,estimation,risk
analysis,schedules,tracking,and control,Each of
these topics is considered in the chapters that
follow.