今天下午复习了一下《软件项目管理》这门课程。因为快要考试了,所以总结了一下个人认为比较重要的内容,分享一下。
另外,大家如果感兴趣的话,还是下载这个PPT版本的话,因为文字就是总结这个PPT的。我上传到了新浪微盘:http://vdisk.weibo.com/s/4QlGr
不过这个PPT虽然是老师上课用的,但是老师额外增加了许多的内容,PPT只是提醒老师而已,许多的内容都是老师课堂上说的,所以大家可能会发现有些部分这个PPT比较粗略。
-----------------------------------------------------邪恶的分割线--------------------------------------------------------------------------------
第一章 绪论
l CMM软件能力成熟度模型是一种描述有效软件过程的关键元素的框架,CMM描述一条从无序的不成熟的过程到成熟的、有纪律的过程的进化的改进途径。
l CMM包括对软件开发和维护进行策划、工程化和管理的实践。遵循这些关键实践,就能改进组织在实现有关成本、进度、功能和产品质量等目标上的能力。
软件过程是指:人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。
l 软件过程能力:描述(开发组织或项目组)遵循其软件过程能够实现预期结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。
l 软件过程性能表示(开发组织或项目组)遵循其软件过程所得到的实际结果,软件过程性能描述的是已得到的实际结果,而软件过程能力则描述的是最可能的预期结果,它既可对整个软件开发组织而言,也可对一个特定项目而言。
CMM成熟度等级 分为5级:
1)初始级2)可重复级3)已定义级4)已管理级5)优化级
成熟度等级的五个级别的主要特征:
l 初始级特征:软件过程的特点是无秩序的,偶尔甚至是混乱的,几乎没有什么过程是经过定义的,成功依赖于个人努力。
l 可重复级特征:已建立基本的项目管理过程去跟踪成本进度和功能,必要的过程纪律已经就位,使具有类似应用的项目能重复以前的成功。
l 已定义级特征:管理活动和工程活动两方面的软件过程均已文档化、标准化,并集成到组织的标准软件过程中,全部项目均采用供开发和维护软件用的组织标准软件过程的一个经批准的普及剪裁版本。
l 已管理级特征:已采集详细的有关软件过程和产品质量的度量,无论软件过程还是产品均得到定量了解和控制。
l 优化级特征:利用来自过程和来自新思想、新技术的先导性实验的定量反馈信息,使持续过程的改进成为可能。
软件过程的可视性:
l 等级1―――一个黑盒
l 等级2――― 项目里程碑处具有管理可视性
l 等级3―――盒子的内部结构可视
l 等级4―――软件过程被配备上度量,并得到定量地控制
l 等级5―――对过程不断改进
CMM共有18个KPA(关键过程区域),2级――6个;3级――7个;4级――2个;5级――3个。
目标概括一个PKA中的所有关键实践,并能用于确定一个组织或项目是否已有效地实施此KPA。目标表示每个关键过程域地范围、边界和意图。
KPA的共同特点:执行约定,执行能力,执行活动,测量和分析,验证实施
执行约定是企业为了建立和实施相应KPA所必须采取的行动,这些行动主要牵涉到企业范围的政策和高层管理的责任。
执行能力描述为了使某软件过程得以始终如一地执行的必须在项目或企业中存在的先决条件,是企业实施KPA的前提条件。
执行活动描述了执行KPA所需求的必要行动、任务和步骤。是唯一与项目执行相关的属性
验证实施是验证执行活动是否与建立的过程一致,核实以确保所实施的过程是按照原定的计划以及达到其目标。
测量和分析关注于这个关键过程域的活动需要作的度量和度量分析要求。
过程评估的方法:成熟度问卷,文档,面谈
第二章 软件项目管理概述
项目管理:一种为实现既定目标而对技术、人力及金融资源所进行的系统集成。
项目:利用有限的资源,在有限的时间内为特定客户完成特定目标的一次性工作。
项目的特征:1)明确的范围和目标2)预期的完成时间3)可以利用的资源4)已定义的性能评估方法5)不是例行的任务。
项目管理的9方面内容:1)范围管理 2)质量管理 3)时间管理 4)成本管理 5)风险管理 6)人力资源管理 7) 合同/采购管理 8)通讯管理 9) 项目综合管理
项目管理的三个大的阶段:1)项目规划2)项目执行3)项目收尾
l 项目规划:主要是项目经理审阅合同条款,并制定一个满足他们的计划,实际上包括:定义生命周期、估计工作量和进度、制定任务进度计划等。
l 项目执行:包括执行项目计划、跟踪项目的状态,并在项目的绩效偏离项目计划设定的绩效时采取措施进行纠正。
l 项目收尾:主要是在客户接收工作产品之后对项目进行系统的总结。数据分析是这一阶段的主要任务。
第三章 需求规格和需求管理
需求过程:
1)需求开发(分析和产生需求的过程,发生在软件生命周期的开始)
2)需求管理 (包括对需求的评审,跟踪和控制活动,贯穿于整个生命周期)
变更管理过程:变更管理过程规定如何发出变更申请、何时需要正式批准等。在出现需求变更申请时,必须执行需求变更管理过程
第四章 过程定义和过程裁剪
过程描述:是项目可以用来遵照执行某些任务的一系列步骤,以及执行这些步骤的指南。
开发过程是提炼用户需求,设计、构建和测试满足这些需求的软件并最终将其交付给客户所需的过程。
主要包括:1)需求分析2)概要设计3)详细设计4)编码和单元测试5)集成测试
6)系统测试7)验收测试和安装8)文档整理9)系统维护
概要设计:主要给出从计算机的逻辑角度开发针对用户需求的解决方案。
详细设计:进一步对概要设计中的整体应用分解,分解成模块和程序,对程序进行逻辑设计。
编码和单元测试:根据详细设计用编程语言编写所需要的程序
集成测试:已通过单元测试的模块构建成一个完整软件结构的系统方法
系统测试:是依据需求规格验证软件产品有效性的活动;目的是为了发现那些只有通过测试整个系统才能暴露的缺陷
验收测试和安装:把软件产品集成到它的操作环境中,并在这个环境中经受测试,确保它按需求执行
文档:主要是操作手册,用户手册及客户需要的其他文档。
系统维护
过程裁剪是调整组织标准过程的过程,以此来获得用于项目的特定业务或技术需要的过程。
主要有:1)概要裁剪指南2)详细裁剪指南
概要级剪裁:根据项目特征,应用总体指南标准对标准过程进行剪裁
详细裁剪指南:列出过程中各种生命周期阶段的所有活动,还包括对每个活动相应的裁剪活动,指定每个步骤是必要的还是可裁剪,并给出选择的指南。
第五章 过程数据库与过程能力基线
软件度量可以来量化地描述软件过程和软件产品的不同方面的特点。
作用有:制定项目计划,控制项目过程,分析和组织改进过程。
过程数据库(PDB)是存放从项目可获得的过程性能数据的数据库,这些数据可以用于项目计划、估计、生产率和质量分析等。
PDB由已经完成的项目的数据构成。PDB的内容有:1)项目特征2)项目进度3)项目工作量4)项目规模5)故障6)风险
PDB由SEPG建立,项目经理可以阅读
过程能力基线(PCB)的主要内容:1)已交付软件的质量2)生产率3)进度计划4)工作量分布5)故障引入率6)过程中故障排除率7)质量成本8)故障分布
第六章 工作量估计和进度安排
自顶向下的估计方法: 规模估计--整体工作量--各阶段工作量 COCOMO 模型
自底向上的估计方法:各阶段的工作量--整体的工作量 此方法可以直接估计工作量
具体过程:任务分解--每个程序单元的复杂度定义--估计每个单元的编码工作量--计算整个程序的编码工作量--导出整体项目的工作量--各阶段的工作量
软件规模估计的主要估算方法有:代码行(LOC/KLOC)和功能点法
计划进度:1)整体进度计划2)详细进度计划(主要里程碑)
第七章 质量计划和缺陷估计
软件质量:是指软件产品满足规定的和隐含的需求的能力和有关特征的集合,软件过程质量决定了软件质量。
软件质量的定义:我们用已交付软件的故障密度作为软件质量的定义――即,已交付软件中每个单位规模的故障数。
质量管理的任务是规划合理的质量控制任务,然后正确地执行和控制它们,以实现项目的质量目标。
故障排除任务包括需求评审、设计评审、代码评审、单元测试、集成测试、系统测试和验收测试。
质量管理的量化方法1)设定量化质量目标2)量化管理软件开发过程
量化质量管理计划:1)设定质量目标2)质量过程计划3)其他阶段的缺陷估计
第八章 风险管理
风险管理(Risk management)试图使由于意外事件而导致项目失败的概率降到最小。
l 主要包括:1)风险评估2)风险控制
风险管理的目标:旨在识别出风险,然后采取措施使它们对项目的影响最小
风险管理规划的任务是确定使风险后果最小所需的措施,也称风险缓和措施。
第九章 项目管理计划
项目管理计划文档是项目经理承担的所有规划任务的核心。各种规划任务的结果都出现在该文档中,它是指导所有项目执行的基准文档。
主要分为四大块:项目概述,项目计划,项目跟踪,团队。
项目跟踪:1)任务跟踪2)事宜跟踪3)客户反馈4)状态报告5)升级规程
第十章 配置管理
软件配置管理是项目管理的一项内容,主要涉及对变更进行系统地控制,建立和维护在项目的整个软件生存周期中软件项目产品的完整性。
l 主要包括:标识在给定时间点上软件的配置,系统地控制对配置项的更改、并维护在整个软件生存周期中配置的完整性和可跟踪性。
配置管理过程主要有:1) 配置规划;2) 配置执行;3) 状态监控
配置控制任务主要有两个:一个涉及程序的状态转移管理;另一个涉及必须被实现的变更申请的管理
变更申请的步骤:1、接受变更申请;2、建立一种跟踪机制;3、检出需要进行变更的配置项;4、执行变更;5、注册配置项;6、在项目的整个生命期内维护该项目。
第11章 评 审
评审是最有效的也是最常用的标识故障的方法,可以对文档及代码进行评审。评审还可以使管理人员掌握项目的进展。
第12章 项目监督和控制
项目监督和控制的目的是:建立对项目的实际进展的适当的可视性,使管理者能在软件项目性能明显偏离软件计划时采取有效措施。
项目跟踪:1)任务跟踪 2)故障跟踪 3)问题跟踪 4)状态报告
任务跟踪的目的:确保任务可以按时完成。
故障跟踪主要有:系统的使用,表及数据库
问题跟踪:问题日志的使用
状态报告是定期向高级管理人员和客户通报项目状态的主要机制,目的是为了保证项目继续按计划进展并解决未决的问题。
故障预防旨在学习至今项目中所发现的故障,以防止项目的其余任务出现类似故障。
审计的基本目标是保证遵循已定义的过程,并使高级管理人员监督过程的使用
13章 软件测试
软件测试是根据软件开发各个阶段的规约和软件的内部结构,精心设计一批软件测试用例,并利用这些测试用例去运行程序,以发现软件中不符合质量特性要求的过程。
目标: 是用尽可能少的时间发现软件产品中尽可能多的错误。
成功的测试:发现了至今为止还没有发现的错误。
按照软件测试的动、静态分类:
l 静态测试(测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序举行检测)
l 动态测试(通过运行程序发现错误)
按照软件开发过程的内、外分类
(内)软件开发过程中的测试,按阶段分:单元测试, 集成测试,系统测试,验收测试
(外)软件产品测试(通常由第三方软件测试机构执行)
测试用例是由测试数据和预期结果构成的。一个好测试用例是其极有可能发现至今为止还没有发现的错误。
白盒测试:它是根据程序的内部逻辑而设计测试用例, 最彻底的白盒测试时能够覆盖程序中的每一条路径,但当程序中有大量的循环语句后,路径覆盖就不现实了。
黑盒测试: 也称为功能测试,主要在集成测试和系统及验收测试阶段,它不关心程序内部逻辑,而只是根据程序功能说明来设计测试用例,以证明每个功能是否符合要求
第14章 项目收尾
项目收尾是项目管理的一个阶段。项目收尾主要通过项目收尾分析来完成,是过程改进的绝好机会。