? 2008 BUPT TSEG
第 14,15章修佳鹏 xiujiapeng@bupt.cn
软件工程模型与方法
Models & Methods of Software
Engineering
2? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心主要内容
第 14章 软件项目管理
第 15章 软件过程管理
3? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心第 14章 软件项目管理
项目和软件项目的定义
软件项目管理过程
软件项目度量
软件规模度量
软件项目估算
软件项目进度安排
软件项目的组织结构
4? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心项目和软件项目的定义
项目,是一项为了创造某一唯一的产品或服务的时限性工作。具有以下特征:
需要由人来完成;
受到有限资源的限制;
需要计划、执行和控制。
软件项目是一种成果体现为软件产品的项目,其特有的特征表现为:
软件产品是无形的;
软件产品没有标准的软件过程 ;
大型软件项目开发常常是“一次性的”。
5? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心项目的管理过程
项目管理就是为了满足甚至超越项目干系人员对项目的需求和期望的一些活动,并将理论知识、技能、工具和技巧应用到项目的活动中。
项目管理包括以下九个知识领域:
1,综合管理:将项目管理各种必要要素综合为整体的过程和活动,并在项目管理过程组范围内识别、定义、组合、统一并协调。
2,范围管理:界定为了确保成功地完成项目所需要做的工作,也是仅仅被要求做的工作。
3,时间管理:阐述确保项目按时完成所需的各项过程。
4,成本管理:阐述了确保项目按照规定预算完成需要进行的费用规划、估算、预算的各项过程。
5,质量管理:阐述了确保项目达到其既定质量要求所需实施的各项过程。
6,人力资源管理:阐述了组织和管理项目团队的各个过程。
7,沟通管理:阐述了为确保项目信息及时而恰当地提取、收集、传输、存储和最终处置而需要实施的一系列过程。
8,风险管理:阐述了与项目风险管理有关的过程。
9,采购管理:阐述了采购或取得产品、服务或成果,以及合同管理所需的各过程。
6? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心项目目标及其制约因素
项目目标就是在一定时间、预算内完成工作的范围,以使客户满意。
实现项目目标要受到四个因素的制约,它们是:
项目范围是为使客户满意必须做的所有工作;
项目成本就是完成项目所需要的费用,它必须在客户为这个项目提供的资金限额以内;
项目进度是安排每项任务的起止时间以及所需的资源等,是为项目描绘的一个过程蓝图。
客户满意度:是指完成的项目质量是否达到预期的效果。
7? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件项目管理过程
( 1)启动软件项目:这是软件项目管理的第一个过程,
目的是确定软件项目的目标、范围。通常,软件人员和用户是在系统需求工程阶段确定项目的目标和范围的;
( 2)制定项目计划:项目计划是建立项目行动指南的基准,包括对软件 项目的估算、风险分析、进度安排、人员的选择与配备等;
( 3)项目计划的执行:根据定义的计划由具体的人员实施的各项活动;
( 4)项目的控制:在项目的执行过程中所必须的监督、
跟踪和控制活动,保证按时保质地完成计划的任务;
( 5)项目结束:在项目执行完毕时进行的总结。
8? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心制定项目计划内容
软件项目估算:就需要的人财物等资源、项目持续时间、成本作出估算。
软件项目度量:度量的作用是为了有效地进行定量管理。
风险分析:对软件开发过程和软件产品带来损害的因素进行分析,包括风险识别、风险评估、风险管理策略、风险解决和风险监控等。
进度安排:识别一组项目任务,再建立任务之间的相互关联,然后估算各个任务的工作量,分配人力和其他资源,制定进度时序。
人员组织结构设计和部署:明确在项目不同阶段如何合理地分配人力资源,明确人力资源的就位时间、持续时间以及使用的有效程度等。
9? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件项目度量
所谓度量,是指根据已明确的规则把数字或符号指定给现实世界中实体的某一属性,以便阐述实体的某种状态。
软件度量涉及的范围较广,其度量实体大致划分为三大类:
产品:是指在软件开发过程中产生的各种中间产品、
发布的资料和文档等,如规格说明书、设计模型、代码、测试用例等。
过程:是与软件相关的一些活动,如编制规格说明书
、详细设计、测试等活动。
资源:是指开发过程中使用的资源,包括人员、团队
、软件和硬件、办公地点等。
10? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件度量的内容
软件度量就是为了获取上述实体属性的值。这些实体的属性又划分为内部属性和外部属性。
内部属性:是能够纯粹用实体自身来度量的属性。如产品中设计模块实体的内部属性有:规模、可复用性
、耦合度、内聚度等。
外部属性:是指由实体与其相关环境一起共同才能度量的属性。如产品中设计模块实体的外部属性有质量
、复杂性、可维护性等。
实体属性的度量又可分为直接度量和间接度量:
直接度量:指实体属性的度量不依赖于其他属性的度量。
间接度量:指实体属性的度量与一个或多个其他属性的度量标准有关。
11? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件项目规模度量
其主要目的是为软件项目估算建立基线,是估算软件项目工作量、编制成本预算、策划合理项目进度的基础。
其度量对象包括软件产品、软件开发过程和软件资源;
需要度量的属性包括:
项目投入的费用、投入的人力、持续的时间;
产生的代码行数、完成的功能点数;
发生的错误数;
软件的生产率、软件质量等。
12? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心代码行度量方法
代码行指所有的可执行的源代码行数,包括可交付的动作和控制语句、数据定义、数据类型声明等。
生产率= KLOC/工作量(人月数)
质量=错误数/ KLOC
单位成本=成本/ KLOC
单位文档=文档页数/ KLOC
项目编码 工作量(人月) 成本(万元) KLOC 文档页数 错误数 人数
aaa-01 24 16.8 12.1 365 29 3
ccc-04 62 44 27.2 1224 86 5
fff-03 43 31.4 20.2 1050 64 6
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
13? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心功能点度量
功能点度量方法是由 IBM公司的工程师( Allan Albrecht)
于 20世纪 70年代提出的,是一种生产率度量法。
该方法利用程序的“功能性”和“实用性”,及有关软件数据域的一些计数度量和软件复杂性估计的经验关系式,
导出功能点。
功能点度量方法需要事先确定五个数据域特征计数:
外部输入数:对每个用户的输入进行计数。
外部输出数:对每个用户得到的输出进行计数。
外部查询数:一个查询被定义为一次联机输入。
内部逻辑文件数:每一个逻辑主文件都应计数。
外部接口文件数:对所有将信息传送到另一个系统中的接口(如磁带、磁盘和可读写光盘上的数据文件)均应计数。
计算调整后的功能点:
FP=总计数 × ( 0.65+ 0.01× sum( Fi)),Fi为环境因素
14? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件项目估算
为了制定合理有效的项目计划,就必须事先进行项目估算
,确定项目的范围、所需的资源、所能投入的成本以及项目开发所必需的时间。
明确项目范围:包括软件功能、性能、约束、接口和可靠性等;
估算项目资源:包括人力资源、开发环境及可复用的软件构件;
估算成本和工作量:根据软件项目的规模以及以往的经验建立估算项目基线以计算项目的成本和工作量;
基于分解技术的估算模型
基于经验的估算模型
COCOMO模型等
确定项目的开发时间:根据上述三项内容及甘特图和 PERT技术确定每项任务的关键路径,最终可得到最短、最合理和最长的项目开发时间,从而制定一个合理的项目开发计划。
15? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件项目的进度安排
软件项目的进度计划和工作的实际进展情况,需要采用图示的方法描述,特别是表现各项任务之间进度的相互依赖关系。
各任务的计划开始时间,完成时间;
各任务完成的标志(即○文档编写和△评审);
各任务与参与工作的人数,各个任务与工作量之间的衔接情况;
完成各个任务所需的物理资源和数据资源。
16? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心任务完成时间的估计
乐观时间 ai:顺利的情况下,完成第 i项任务的时间。
最可能时间 mi:正常情况下完成第 i项任务的时间。
悲观时间 bi:最不利的情况下完成第 i项任务的时间。
由此可算出第 i个任务期望完成时间
Ti = (ai+6mi+bi)/6
17? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件项目的组织结构
一个大型的软件项目参与人员通常组织成多个开发小组,每个小组有合适数量的参与人员,为了发现开发小组最大的工作效率,必须对项目小组成员进行有效地组织;其原则如下:
尽早落实责任:软件项目要尽早指定专人负责,使他有权有责。
减少接口:一个小组的生产率是和完成任务中存在的沟通途径数目成反比的。
责权均衡:软件经理人员所负的责任应与授予给他的权力对等,不要出现有责无权或者有权无责的不对等情况。
18? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心组织结构的模式
按课题划分的模式:把软件人员按课题组成小组,小组成员自始至终参加所承担课题的各项任务。
按职能划分的模式:把参加开发项目的软件人员按任务的工作阶段划分成若干专业小组。待开发的软件产品在每个专业小组完成阶段加工以后,沿工序流水线向下传递。
矩阵模式:一方面,按工作性质,成立一些专门组,如开发组、业务组、测试组等;另一方面,每一个项目又有它的经理人员负责管理。
每个软件人员属于某一个专门组,又参加某一项目的工作。
试产品经理 1
子项目 1
开发子项目 1
业务子项目 1 子项目 1 子项目 1
维护产品经理 2
子项目 2 子项目 2
产品经理 3
子项目 3 子项目 3 子项目 3
总经理
19? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心第 15章 软件过程管理
软件的过程能力
CMM背景
CMM主要内容
20? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件的过程能力
软件过程并不能保证软件产品能够按期交付,也不能保证软件产品能够满足用户的要求,也就是说,不能保证软件是有质量的。
究其主要原因是软件过程模型中定义的软件过程只是名义上的,过程的实际执行与管理等实践才是软件过程能力的保证措施。
所谓软件过程能力是指软件开发团队遵循某个软件过程规范后期望达到的结果范围。
在遵循某个软件过程规范后实际达到的结果称为软件过程性能。
21? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件过程的成熟性
软件过程的成熟性就是指一个具体的软件过程被明确地定义、管理、度量、控制和实施的程度。
一个软件项目开发队伍除了要对软件生命周期模型进行裁剪外,还需要在实际遵照过程规范执行的过程中对软件过程进行控制,根据过程执行状态不断提出过程的改进措施,从而真正实现软件过程的能力。
如何对软件过程的执行状态进行评估,如何提出过程的改进方向和路线,这些问题就是 CMM需要解决的。
22? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件组织的不成熟性
不成熟的软件组织具有如下特征:
软件过程一般并不预先计划、而是在项目进行中由开发人员和管理人员临时计划。有时候,即使软件过程已经计划好、仍不按照计划执行。
没有一个客观的基准来判断产品和过程质量,或解决产品和过程中的问题。对软件过程步骤如何影响软件质量一无所知,产品质量得不到保证。
不成熟的软件组织没有长远目标,管理人员通常只关注解决当前出现的危机。
23? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心软件组织的成熟性
管理员监视软件产品的质量以及生产这些产品的过程。
还制定有一系列客观基准来判别产品质量,并分析产品和过程中出现的问题。
进度和预算可以按照以前积累的经验来制定,结果可行。
预期的成本、进度、功能与性能和质量都能实现,并达到目的。
能准确及时地向开发人员通报实际软件过程性能,并按照计划有规则地工作。规定的过程都编成文档,可以执行。
软件过程和实际工作方法相吻合。必要时,过程定义会及时更新,通过测试,或者通过成本 /利润分析来改进过程。
24? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
CMM背景
CMM基于众多软件专家的实践经验,是组织进行软件过程改进和软件过程评估的一个有效的指导框架。
卡内基 -梅隆大学软件工程研究所 于 1987年研究并发布了软件过程成熟度框架,并提供了软件过程评估和软件能力评价两种评估方法,以及软件成熟度提问单评估工具。
1991年 SEI将软件过程成熟度框架进化为软件能力成熟度模型(
Capability Maturity Model for SoftWare,简称 SW-CMM),并发布了最早的 SW-CMM 1.0版。
1993年 SEI正式发布了 SW-CMM1.1版,这是目前使用最为广泛的版本

2000~2001年 SEI发表了,系统工程和软件工程综合能力成熟度模型,
( CMMI-SE/SW) 1.0版和 CMMI-SE/SW 1.1版以及,系统工程、软件工程和集成产品与过程开发的综合能力成熟度模型,( CMMI-
SE/SW/IPPD) 1.1版。
25? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
CMM模型
CMM模型为较全面地描述和分析软件过程能力的发展程度,建立了一个描述一个软件组织的软件过程成熟程度的分级标准。
利用它,软件组织可以评估自己当前的过程成熟程度,并通过提出更严格的软件质量标准和过程改进,来选择自己的改进策略,以达到更高级别的成熟程度。
初 始 级
I n i t i a l
可 重 复 级
R e p e a t a b l e
已 定 义 级
D e f i n e d
已 管 理 级
M a n a g e d
优 化 级
O p t i m i z i n g
有 纪 律 的 过 程标 准 的 一 致 的 过 程有 预 见 能 力 的 过 程不 断 改 进 的 过 程
C M M 1
C M M 2
C M M 3
C M M 4
C M M 5
26? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
CMM1-CMM2
CMM1初始级的特点:
由于几乎没有定义软件过程的规则和步骤 ;
缺乏健全的项目管理制度 ;
项目开发能力完全依赖于优秀人员的个人努力和杰出的专业人才,依赖于他们先前的经验知识以及他们良好的职业道德精神。
CMM2可重复级的特点:
项目管理制度化,建立了基本的项目管理过程;
根据过去同类项目中的成功经验,逐个项目地建立基本过程准则和管理条例;
采用基线( baseline)来标志项目进展;
通过子合同有效地管理与外包单位的供求关系。
27? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
CMM3
CMM3已定义级的特点:
软件过程都已经文档化、标准化;
在软件组织一级定义的软件过程标准被应用到所有的工程项目中,用于开发和维护软件;
任何一个项目的质量、进度、成本、计划等都是可以得到控制的;
软件工程过程组负责软件过程活动;
在全组织范围内安排完善的培训制度 。
28? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
CMM4
CMM4已管理级的特点
制定了软件过程质量和软件产品质量的详细而具体的度量标准;
针对软件度量工作已经制定了规范的软件过程;
能定量地评价软件过程和软件产品质量,从而发现软件过程存在的问题,并进行及时改进。
软件组织的过程能力是可以预见的,软件产品的质量也是可以预见和控制的。
在组织内已经建立了软件过程资产库,用于管理软件过程和软件产品的定量度量数据。
29? 2008 BUPT TSEG 北京邮电大学 通信软件工程中心
CMM5
CMM5优化级的特点
收集软件过程的度量数据,定量分析软件过程存在问题的原因,
通过吸收新观念、新技术对存在的问题进行修正,使得软件过程的能力不断地得到改进。
根据软件过程效果进行成本效益分析,从成功的软件过程实践中吸取经验,加以总结,并迅速向全组织转移。
对失败的案例,软件过程小组分析并找出原因,总结问题解决的方法,并将失败的教训告知全体组织成员以防止重复发生相同的错误,从而使得组织能够事先预见软件过程的问题并预先加以改进。
在全组织内部推广软件过程的评价和软件过程改进,让全组织成员都能够意识到软件过程改进带来的效果。
整个组织特别关注软件过程改进的持续性,逐步提高软件过程的能力预见性,防止缺陷及问题的发生,不断提高组织的软件过程能力。