1、11.1 过程的定义1.2 过程规范1.3 软件生命周期的过程需求1.4 软件生命周期标准1.5 软件过程建模软件过程管理不当-软件危机绝大多数软件企业长期面临“产品质量低下、进度延误、成本高昂”的共性问题,就像患了恶劣的慢性病,难以根除。1969 年,“软件危机”,数十年后,司空见惯,习以为常了。软件过程管理的目的:最大限度地提高软件产品的质量与软件开发过程的生产率。1.1 过程的定义牛津简明词典中,“过程”被定义为活动与操作的集合,例如一系列的生产阶段或操作。书氏大词典定义“过程”是用于产生某结果的一整套操作、一系列的活动、变化以及作为最终结果的功能。IEEE-Std-610 定义“过程”
2、是为完成一个特定的目标而进行的一系列操作步骤,如软件开发过程。SEICMM 定义过程是用于软件开发及维护的一系列活动、方法及实践。实现、管理和支持过程之间的关系:过程一般可分为实现过程、管理过程、支持过程。2软件过程包括?软件过程(software process),是人们用来开发和维护软件及产品的活动、方法、实践和改进的集合。软件过程包括?(作业 1)需求分析、概要设计、详细设计、编码、测试、上面几点仅属于基本过程1.1.2 软件过程的分类和组成软件基本过程(实现过程):软件获取、供应、开发、运行和维护的过程,包括需求分析、软件设计、编码等过程。软件支持过程:包括文档编制过程、配置管理过程、
3、质量保证过程、验证和确认过程(测试过程)、评审过程等。软件组织过程:对软件主要过程和支持过程的组织保证过程,包括管理过程、基础设施过程、改进过程和培训过程。软件生存周期过程(简称 IEC)3工程过程(Engineering Process, ENG)支持过程(Support Process, SUP)管理过程(Management Process, MAN)组织过程(Organization Process, ORG)客户-供应商过程(Customer-supplier Process, CUS)*ISO/IEC15504 软件生存周期过程41.1.3 软件过程定义的层次性1)公共(通用)软件
4、过程。2)组织标准软件过程。3)项目自定义的软件过程。 1.3 软件生命周期的过程需求1.3.1 软件工程过程工程过程是软件系统、产品的定义、设计、实现以及维护的过程。P10开发过程:定义并开发软件产品的活动过程,包括需求分析、软件设计(功能性与非功能性)和编程等。运行过程:在规定的环境中为其用户提供运行计算机系统服务的活动过程,包括软件部署维护过程:提供维护软件产品服务的活动过程,也就是通过软件的修改、变更,使软件系统保持合适的运行状态,这一过程包括软件产品的移植和退役。 51.3.2 软件支持过程1.文档编制明确如何写文档(标准)?写什么文档(各类文档)?规定文档的内容?相关的输出产品?根
5、据定义的标准与已确定的计划来编写、审查、修改和发布所有文档。按已定义的标准和具体的规则维护文档。文献综述、开题报告、毕业论文、内容及系统、阶段性的检查、答辩 2.配置管理进行配置管理最低要求是保证重要工作成果不发生混乱。如果没有配置管理?最大的麻烦就是工作成果被覆盖。新的覆盖老的版本,后果?Check out/ check in,时间间隔?(例:ghost)如同入库出库,必须做好所有记录,严格坚持出入库检查。确保配置项的完全性与一致性。P1263.质量保证健康定义,古代/现代?最高境界:“零缺陷”?Microsoft,航空航天什么时间进行?6制定出计划与进度表。确定有关标准、方法、规程与工具,
6、所需的资源、组织及其组织成员的职责。保证各类相关的计划进度保持一致 。 4.验证(见作业)(1)根据需要验证的工作产品所制定的规范(如产品规格说明书)实施必要的检验活动:(2)有效地发现各类阶段性产品所存在的缺陷,并跟踪和消除缺陷。验证强调的是在开发过程中对工作产品进行检查,尽早发现问题验证(VER):保证做的对,验证规格需求按钮响应时间为 1 秒5.确认(见作业)确认强调的是,在真实的使用环境中,确保软件能达到 预期的效果。如:尽快发出一个小版本,在实际环境中运行起来,尽快发现确认其中的问题。 一般来说,调试、试用、验收测试等都是确认的工作。确定(VAL):保证做对的产品 ,属于性能需求。大
7、容量存储,响应时间为 1 秒(多线程后台处理来解决这个问题 )6.联合评审与客户、供应商以及其他利益相关方(或独立的第三方)对开发的活动和产品进行评估 。为联合评审的实施制定相应的计划与进度,跟踪评审活动,直至结7束 。7.审核判断是否与指定的需求、计划以及合同相一致 。由合适的、独立的一方来安排对产品或过程的审核工作 。以确定其是否符合特定需求 8.问题解决提供及时的、有明确职责的以及文档化的方式,以确保所有发现的问题都经过相应的分析并得到解决 。提供一种相应的机制,以识别所发现的问题并根据相应的趋势采取行动 。1.3.3 软件管理过程对其它四个过程的实践活动提供指导、跟踪和监控的过程。1.
8、项目管理过程是计划、跟踪和协调项目执行及生产所需资源的管理过程。立项管理是决策行为,决策是指“做正确的事情”8立项后,目标是“正确地做事情”(正确=¥)为过程和执行制定计划,进行项目规划(城市规划)制定进度表;项目监控;成本估计;项目间接口等结项管理与立项管理相对应2.质量管理过程是对项目产品和服务的质量加以管理,从而获得最大的客户满意度。以客户的质量需要为基础;定义质量度量标准并实时检查;未达到质量目标要及时采取相应的措施等3.风险管理过程,在整个项目的生命周期中对风险不断的识别、诊断和分析,回避风险、降低风险或消除风险,并在项目以及组织层次上建立有效的风险管理机制 被刻画为风险的事件最终可
9、能发生也可能不发生。人们对待风险有两种态度:被动态度(“救火模式”)主动态度(“防火模式”)=风险管理属于“防火模式”量化管理风险:风险严重性,风险可能性,风险系数4.子合同商管理过程,选择合格的子合同商并对其进行管理的过程 软件管理的四个过程?(作业 2)1.3.4 软件组织过程组织过程是软件组织用来建立和实现由相关的生命周期过程和人员组成的基础结构并不断改进这种结构的过程。 91.业务规划过程业务规划过程是为组织与项目成员提供对远景的描述以及企业文化的介绍,从而使项目成员能更有效地工作。(明确保每个人都有明确定义的工作)2.定义过程定义过程是建立一个可重复使用的过程定义库,指导其他四个过程
10、(裁剪)3.改进过程改进过程是为了满足业务变化的需要,提高过程的效率与有效性,而对软件过程进行持续的评估、度量、控制和改善的过程(进一步裁剪)4.人力资源和培训过程人力资源和培训过程,为项目或其它组织过程提供培训合格的人员所需的活动5.基础设施过程基础设施过程是建立生存周期过程基础结构、为其他过程建立和维护所需基础设施的过程 (软件工程环境)1.3.5 软件客户供应商的过程客户供应商过程是内部直接影响到客户、外部直接影响开发、向客户交付软件以及软件正确操作与使用的过程,包括:1)获取过程:以客户为主导的。以客户的需求为起点,以客户对产品或服务的认同与接受为终点。10从确定需要获取的软件系统、产
11、品或服务开始,然后制定和发布标书、选择供方和管理获取过程,直到验收软件系统、产品或服务 。该过程的成功实施会导致最终生成一个明确的合同或条约,清楚地描述出客户与供应方的期望、职责与义务。2)客户需求管理过程:在整个软件生命周期中,针对不断变化的客户需求加以收集、处理和跟踪,并建立软件需求的基准线,以作为项目中软件开发活动过程和产品度量和变更管理的基础 收集,处理,跟踪同样重要。需求是产品的根源,需求工作的优劣对产品影响最大。(河流污染)3)供应过程:按客户、事先规定的要求对软件进行包装、发布与安装的活动过程 确定包装、发布以及安装软件的有关要求。软件有效地被安装与使用。软件达到需求定义中所规定
12、的质量水平。4)软件操作过程:确定和管理由于引入并发操作软件而带来的操作上的风险。按要求的步骤和在要求的操作环境中运行软件。提供操作上的技术支持,以便解决操作过程中出现的问题确保软件(或主机系统)有足够的能力满足用户的需求。5)客户支持过程:基于实施情况,确定客户所需要的支持服务。通过提供适当的服务来满足客户的需求。11针对客户对产品本身及其相应的支持服务的满意程度进行持续的评估作业:1.软件过程包括?2.软件管理的四个过程?3.软件项目管理包括哪几个主要管理,了解项目经理的职能。(上网或查资料,要求写满一页)第二章:2.1 过程成熟度标准2.1.1 软件过程不成熟的特点2.1.2 软件过程成
13、熟的标准3 个基本概念:软件过程能力、软件过程性能、软件过程成熟度1)软件过程能力:遵循软件过程后能够实现预期结果的程度。(关注预期结果)该指标是对能力的一种衡量,用它可以预测一个组织(企业)在承接下一个软件项目时,所能期望得到的最可能的结果。例如:如果能按要求完成三年的高中学习,你有能力考上大学2)软件过程性能:表示遵循一个软件过程后所得到的实际结果。(关注已得到的结果)由于项目要求和客观环境的差异,导致预期和结果不相符合。软件过程性能不可能充分反应软件过程整体能力,即软件过程能力受限于它的环境。12例如:如果没考上大学,不代表你的能力不行,可能是其它原因引起的。3)软件过程成熟度是指一个具
14、体的软件过程被明确地定义、管理、评价、控制和产生实效的程度 。成熟度表明了组织(企业)实施软件过程的实际水平。组织软件过程成熟度能力的提高=从而提高软件过程能力从而使软件的质量、生产率和生产周期得到改善。从而达到良好的软件过程性能2.1.2 软件过程成熟的标准软件过程能力高:能达到预期结果,不断提高自身能力。软件过程性能可预见性:积累了有关过程性能的大量历史数据,对效率,成本,质量能做出准确的估计。过程的可视性:软件组织的能力是已知的/软件过程定义清晰;过程的每个阶段进出的标准,执行的方法和规则清楚/人员职责清楚。过程的稳定性:有纪律的过程软件过程规范化:过程定义、方法和规则等文档化,所有过程
15、标准化,有规则可循。过程的一致性:软件过程被正确无误地传递到不同的团队。已定义的过程是真正的标准。过程的丰富性:各种子过程过程的不断改进:通过可控的先导性试验和成本效率分析对过程进行13持续改进。(可持续发展)2.2 能力成熟度模型概述2.2.1 CMM 的基本内容CMM 是软件过程能力成熟度模型( Capacity Maturity Model,CMM )的简称, 1991 年正式推出了 CMM 1.0 版。 CMM 描述一条从无序的、混乱的过程 到成熟的、有纪律的过程的改进途径。CMM 建立起一个标准,对照这个标准就能以可重复的方式判断组织软件过程的成熟度CMM 建立的目的:确定成熟度,找
16、改进策略。内容和结构(缩写 )每个成熟度等级由若干个关键过程域(KPA)组成 。不同的成熟度关注的过程域不同。下一层为上一层的基础,先有物质文明,后有精神文明。14每个 KPA 用若干关键实践(KP)加以描述。实施这些关键实践,就实现了关键过程区域的目标。(Flash 中的关键帧)关键实践以 5 个共同特点(Common Features)加以组织: 执行约定、执行能力、执行的活动、测量和分析、验证实施。执行约定(Commitment to Perform,简称 CO):企业为了保证过程建立和继续起作用必须采取的一些措施。例:建立机构策略。 执行能力(Ability to Perform,简称
17、 AB):组织和项目实施软件过程的先决条件。执行能力一般指提供资源、分派职责和人员培训。 执行的活动(Activities Performed,简称 AC):指实施关键过程区域所必需的角色和规程。执行的活动一般包括制订计划和规程、执行活动、跟踪与监督并在必要时采取纠正措施。(只有此条与项目执行相关) 测量和分析( Measurement and Analysis,简称 ME):对过程进行测量和对测量结果进行分析。 验证实施(Verifying Implementation,简称 VE):保证按照已建立的过程执行活动的步骤。例:评审和审计。三合一:十几年来,CMM 的改进工作一直不断地进行。美国
18、国防部希望把现在所有的、以及将被开发出来的各种能力成熟度模型,集成到一个框架中去。到 2000 年,CMM 演化成为 CMMI(Capability Maturity Model 15Integration,能力成熟度模型集成)。CMMI 不仅适合软件,而且适合于软件硬件结合的系统,这是对CMM 最大的改进。2.2.4 CMMI 介绍 P(37)模型学科 源模型软件 SW-CMM,草案版本 2.0系统工程 EIA/731集成化产品与过程开发 IPD-CMM, 版本 0.98CMMI 项目的成就之一就是在软件和系统工程之间实现了较高的集成化程序。软件和系统工程集成后产生了一个公共的过程域集。2.
19、3 过程成熟度级别2.3.1 成熟度等级的行为特征16初始级具有明显的不成熟过程的特点 (1)软件过程的特点是杂乱无章,有时甚至混乱,几乎没有定义过程的规则或步骤。所谓“过程”,往往是“就这么干”而言。(2)开发过程中不断地出现危机,以及不断的“救火”。甚至遇到危机就放弃原计划过程,反复编码和测试。(3)偶尔成功完全依赖个人努力和杰出的专业人才,能力只是个人的特性,而不是开发组织的特性。一旦优秀人物离去,项目就无法继续。(4)过分的承诺,常作出良好的承诺:如“按照软件工程方式,有序的工程来工作”;或达到高目标的许诺。但实际上却出现一系列问题。(5)软件过程是不可确定的和不可预见的。(过程是随意
20、的)。这类组织也在开发产品,但其成果是不稳定的,不可预见的,不可重复17的。也就是说,软件的计划、预算、功能和产品的质量都是不可确定和不可预见的。做事情(考研)要有计划,有跟踪,有文档可查。可重复级/受管理级:根据多年的经验和教训,人们总结出软件开发的首要问题不是技术问题而是管理问题。因此,第二级的焦点集中在软件管理过程上。可重复级/受管理级建立了管理软件项目的方针和实施这些方针的规程,使软件项目的有效管理过程制度化,有能力去跟踪成本、进度和质量。一个有效过程可特征化为已文档化的、已实施的、可培训的和可测量的软件过程。达到二级证明已经进入规模开发(特征):(1)进行较为现实的承诺,可按以前在同
21、类项目上的成功经验建立的必要过程准则来确保再一次的成功。(2)主要是 逐个项目 地建立基本过程管理条例来加强过程能力。 (3)建立了 基本的项目管理过程来跟踪成本、进度和功能。 (4)管理工作主要跟踪软件经费支出、进度及功能。识别在承诺方面出现的问题。(5)采用 基线 (BASELINE)来标志进展、控制完整性。 已定义级:第二级中存在的问题:仅定义了管理的基本过程,而没有定义执行的步骤标准;按项目制定软件过程,而不是总结各种项目的成功经验,使之规则化18已定义级包含一组协调的、集成的、适度定义的软件工程过程和管理过程,具有良好的文档化、标准化,使软件过程具有可视性、一致性、稳定性和可重复性,
22、软件过程被集成为一个有机的整体 (特征):(1) 无论管理方面或工程方面的软件过程都已文件化、标准化,并综合成软件开发组织的标准软件过程。(2)软件过程标准被应用到所有的工程中,用于编制和维护软件。有的项目也可根据实际情况,对软件开发组织的标准软件过程进行剪裁。(3)在从事一项工程时,产品的生产过程、花费、计划以及功能都是可以控制的,从而软件质量也可以控制。 (4)软件工程过程组负责软件活动。(5)在全组织范围内安排培训计划。已管理级:已管理级的软件过程是量化的管理过程。在上述已定义级的基础上,可以建立有关软件过程和产品质量的、一致的度量体系,采集详细的数据进行分析,从而对软件产品和过程进行有
23、效的定量控制和管理。 (量化控制将使软件开发真正变成为一种工业生产活动 )第四级软件产品是高质量的 (特征):(1)制定了软件过程和产品质量的详细而具体的度量标准,软件过程和产品质量都可以被理解和控制。(2)软件组织的能力是可预见的,原因是软件过程是被明确的度量标19准所度量和操作。超过限制范围时,采取措施予以而使软件产品具有可预测的高质量。(3)具有良好定义及一致数据库,保存收集到的数据,可用于各项目的软件过程需要改进的地方已管理级需要改进的地方:(1)缺陷防范,不仅仅在发现了问题时能及时改进,而且应采取特定行动防止将来出现这类缺陷。(2)主动进行技术变动管理、标识、选择和评价新技术,使有效
24、的新技术能在开发组织中施行。(3)进行过程变动管理,定义过程改进的目的,经常不断地进行过程改进。优化级:第五级的目标是达到一个持续改善的境界,所谓持续改善是指可根据过程执行的反馈信息来改善下一步的执行过程,即优化执行步骤优化级:不断改善组织的软件过程能力和项目的过程性能利用来自过程和来自新思想、新技术的先导性试验的定量反馈信息,使持续过程改进成为可能。为了预防缺陷出现,组织有办法识别出弱点并预先针对性地加强过程 2.3.2 理解成熟度等级CMM 是一个描述模型,或者说是一个规范。CMM 处在调试的抽象20层次上,使之不会过多限制一个组织如何去实施软件过程,而是告诉一个组织应该达到的软件过程能力
25、和框架。相当于学英语时的英语大纲,告诉你应该达到的什么水平,但不会限制你如何去学习。2.3.3 成熟度等级的过程特征第 4 级,对软件产品的质量、开发进度和其它开发目标进行有效的评估和预测 (量化管理)第 5 级,其焦点是软件过程的持续改进 成熟度各个级别的软件过程特征,如表 2-2 所示。 2.3.4 CMMI 过程域212.3.5 CMM 和 CMMI 过程域的比较分析2.4 软件过程的可视性2.6.3 PSP/TSP 和 CMM 组成的软件过程框架个体软件过程(Personal Software Process, PSP)帮助软件开发团队22中的个体-软件工程师改善其个人能力和素质的组织
26、过程PSP 告诉软件工程师:如何计划要做的工作、如何有效的按照计划来执行工作、如何按照计划跟踪自己的性能、如何提高程序质量 团队软件过程 TSP团队软件过程 (Team Software Process,TSP) 属于团队软件开发过程:用于指导项目组中的成员如何有效地规划和管理所面临的项目开发任务并且告诉管理人员如何指导软件开发队伍。始终以最佳状态来完成工作。TSP 实施集体管理与自己管理自己相结合的原则。2.6.3 PSP/TSP23PSP/TSP/CMM 之间的关系组织的过程目标 24作业:举出一些具体的例子说明过程不成熟性。通过查找资料,详细介绍 CMM 的第二、三、四、五等等级的核心过
27、程域 ?PSP/TSP/CMM 之间的关系?Ch.3 软件过程的组织管理CMM 组成253.1 组织过程焦点:1. 执行约定 2. 执行能力 3. 执行活动 4. 测量与分析 5. 验证实施1.执行约定(1)组织应该遵循一个文档化的关于协调软件流程的制定和改进活动的组织方针(2)高级管理人员发起对软件过程制定和改进的组织活动(3)高级管理人员监督软件过程的制定和改进的组织活动2. 执行能力(1)建立一个负责整个组织的软件过程活动的工作组(2)为软件过程活动提供足够的资源和资金(3)组织软件过程活动的组员进行培训(4)软件工程组和其他工程组的组员接受软件过程活动的相关培训263. 执行活动(1)
28、发现问题:定期评估软件过程并根据评估结果制订相应的更改计划(2)制定计划:组织制定和维护有关软件过程和改进活动的计划(3)改进工作:协调组织的标准软件过程和项目自定义的软件过程的制定和改进工作(4)保存数据:协调组织的软件过程数据库的使用(5)尝试新方法:新过程、新方法、新工具的评价、监控和推广(6)培训:对有关组织和项目的软件过程培训进行统一管理(7)通知:及时将有关软件过程制定和改进的活动通知与实施软件过程相关的组和人员3.1.3 组织过程焦点-评估1. 测量和分析(两个比较)每次软件过程的评估结果与以往的评估结果和建议的比较。已经完成的工作量以及实际消耗的资源与计划的比较。2. 实施验证
29、(要求领导的足够重视)评审软件过程制定和改进活动的进展状态。分析在低层次上无法解决的矛盾和问题。各项活动的组织、实施、审核以及结果。总结验证结果3.2 组织过程定义组织过程定义:在组织层上定义软件过程。(各个项目通用的过程)27组织过程定义的目的:是开发和维护一组可用的软件过程财富(software process assets),(成功经验) 用来改进跨越各个项目的过程性能,为组织的长期发展奠定基础。软件过程财富可用于开发、执行和维护标准软件过程和项目定义软件过程。软件过程财富主要包含如下内容:组织标准软件过程、软件生命周期的描述、 过剪裁指南和准则、组织软件过程数据库、软件过程的有关文档库
30、。28PSP/TSP 和 CMM 组成的软件过程框架个体软件过程(Personal Software Process,PSP) 帮助软件开发团队中的个体-软件工程师改善其个人能力和素质的组织过程PSP 告诉软件工程师:如何计划要做的工作、如何有效的按照计划来执行工作、如何按照计划跟踪自己的性能、如何提高程序质量 团队软件过程 TSP团队软件过程 (Team Software Process,TSP) 属于团队软件开发过程:用于指导项目组中的成员如何有效地规划和管理所面临的项目开发任务、并且告诉管理人、如何指导软件开发队伍。始终以最佳状态来完成工作。29TSP 实施集体管理与自己管理自己相结合的
31、原则。3.3 PSP 过程框架PSP 的目的:为了改善软件工程师的开发性能,对项目有一个比较准确的把握。PSP 过程由一系列方法、表格、脚本等组成,用以指导软件开发人员计划、度量和管理他们的工作。 PSP 过程框架*3.3.3 PSP 成熟度模型PSP 是一个具有 4 个等级的成熟度框架。4 个等级分别为:个体度量过程-PSP0/PSP0.1 、个体计划过程-PSP1/PSP1.1、个体质量管理过程-PSP2/PSP2.1、个体循环过程-PSP3303.5&3.6 TSP 小组软件过程(了解)TSP 解决的主要问题:如何规划和管理一个软件开发团队。如何制订团队工作所需要的策略。如何定义和确定团队中每个角色的职责。如何为团队中每个成员分配不同的角色。团队及其不同角色在整个开发过程的不同阶段应该做些什么,如何更好地发挥作用。在如何协调团队成员之间的任务,并跟踪报告团队整体的任务进度。