1、软件过程管理,-Ch.1 软件过程规范,内容概览,全书共分为10章,以全面阐述软件过程管理的各个方面。首先说明了软件过程规范、成熟度及其相关的概念和理论,包括软件过程标准体系。然后在此基础上,深入讨论了软件过程的组织管理、需求管理、项目管理、质量管理、技术管理和集成管理等流程、方法和实践,并进一步探讨了软件过程评估和改进的框架、模型和实施细节,最后通过具体的应用实践对软件过程管理做了全方位的阐释。,课程目标,通过本课程的学习,可以了解并掌握:软件过程规范的内容、影响和作用 软件过程不成熟的特点、软件过程成熟的标准 软件过程的可视性和过程能力 软件过程文化、环境和过程框架 如何定义组织过程并对过
2、程剪裁以获得项目过程 软件过程的需求管理 、项目管理和质量管理软件过程的技术管理和集成管理 如何实施软件过程的评估和改进 ,课程服务于,项目经理 Project manager 程序经理 Program manager 产品经理 Product manager- 软件质量管理人员 The member of SQAG 软件工程过程组成员 The member of SEPG 软件配置管理人员 The member of SCMG还包括: 软件企业高层管理人员 软件工程师和测试工程师 软件分析师 、软件咨询顾问,课程安排,建议: 3 学分,60 学时,课程安排 - 2,课程安排 - 3,课程安排
3、 - 4,软件过程规范,一旦人们将注意力转向过程,将发现一个全新的思维空间。James Harrington,本章提纲,1.1 过程的定义1.2过程规范1.3 软件生命周期的过程需求1.4 软件生命周期标准1.5 软件过程建模,1.1 过程的定义,1.1.1 过程的定义1.1.2 软件过程的分类和组成1.1.3 软件过程定义的层次性,1.1 过程的定义,牛津简明词典中,“过程”被定义为活动与操作的集合,例如一系列的生产阶段或操作。书氏大词典定义“过程”是用于产生某结果的一整套操作、一系列的活动、变化以及作为最终结果的功能。IEEE-Std-610定义“过程”是为完成一个特定的目标而进行的一系列
4、操作步骤,如软件开发过程。SEICMM 定义过程是用于软件开发及维护的一系列活动、方法及实践。,过程的简单描述,实现、管理和支持过程之间的关系,1.1.2 软件过程的分类和组成,软件基本过程:软件获取、供应、开发、运行和维护的过程,包括需求分析、软件设计、编码等过程。软件支持过程:对软件主要过程提供支持的过程,包括文档编制过程、配置管理过程、质量保证过程、验证和确认过程(测试过程)、评审过程等。软件组织过程:对软件主要过程和支持过程的组织保证过程,包括管理过程、基础设施过程、改进过程和培训过程。,IEC12207软件生存周期过程,软件过程的组成,ISO/IEC15504软件生存周期过程,1.1
5、.3 软件过程定义的层次性,公共(通用)软件过程。 组织标准软件过程。 项目自定义的软件过程。,1.2 过程规范,1.2.1 什么是过程规范1.2.2 过程规范的内容和示例1.2.3 过程规范的影响和作用,1.2.1 什么是过程规范,“规范”一词被解释为“明文规定或约定俗成的标准”,或理解为“用来控制或治理一个团队的一系列准则与章程,以及团队成员必须遵守的相关的规章制度” 过程规范就是对输入/输出和活动所构成的过程进行明文规定或约定俗成的标准。软件过程规范是软件开发组织行动的准则与指南,可以依据上述各类过程的特点而建立相应的规范,如软件基本过程规范、软件支持过程规范和软件组织过程规范。,软件过
6、程规范的建立,软件能力成熟度模型(CMM/CMMI )个体软件过程(PSP)团队软件过程(TSP)IBM-Raional 统一过程(RUP)极限编程 (eXtreme Programming,XP) 微软软件框架(MSF),1.2.2 过程规范的内容和示例,任务规范日常规章制度软件工具 “责任人、参与人员、入口准则、出口准则、输入、输出和活动”等基本内容,1.2.3 过程规范的影响和作用,消极影响的存在和消除 Fred Brooks “创造力来自个人,而不是组织结构或者过程” 规范存在的必要性 过程规范的作用 帮助团队实现共同的目标一个规范的软件过程必将能带来稳定的、高水平的过程质量过程规范使
7、软件组织的生产效率更高,1.3 软件生命周期的过程需求,1.3.1 软件工程过程1.3.2 软件支持过程1.3.3 软件管理过程1.3.4 软件组织过程1.3.5 软件客户供应商的过程,1.3.1 软件工程过程,工程过程是软件系统、产品的定义、设计、实现以及维护的过程。开发过程:定义并开发软件产品的活动过程,包括需求分析、软件设计和编程等。运行过程:在规定的环境中为其用户提供运行计算机系统服务的活动过程,包括软件部署维护过程:提供维护软件产品服务的活动过程,也就是通过软件的修改、变更,使软件系统保持合适的运行状态,这一过程包括软件产品的移植和退役。,1.3.2 软件支持过程,文档编制 配置管理
8、 质量保证 验证 确认 联合评审 审核 问题解决,明确并定义文档开发中所采用的标准、软件过程中所需要的各类文档。详细说明所有文档的内容、目的及相关的输出产品。根据定义的标准与已确定的计划来编写、审查、修改和发布所有文档。按已定义的标准和具体的规则维护文档。,软件过程或项目中的配置项(如程序、文件和数据等有关内容)被标识、定义。 根据已定义的配置项建立基线,以便对更改与发布进行有效的控制,并控制配置项的存储、处理与分发,确保配置项的完全性与一致性。 记录并报告配置项的状态以及已发生变更的需求。,针对过程或项目确定质量保证活动、制定出相应的计划与进度表。确定质量保证活动的有关标准、方法、规程与工具
9、。确定进行质量保证活动所需的资源、组织及其组织成员的职责。有足够的能力确保必要的质量保证活动独立于管理者以及过程实际执行者之外进行开展和实施。在与各类相关的计划进度保持一致的前提下,实施所制定的质量保证活动 。,根据需要验证的工作产品所制定的规范(如产品规格说明书)实施必要的检验活动:有效地发现各类阶段性产品所存在的缺陷,并跟踪和消除缺陷。,根据客户实际需求,确认所有工作产品相应的质量准则,并实施必需的确认活动。 提供有关证据,以证明开发出的工作产品满足或适合指定的需求。,与客户、供应商以及其他利益相关方(或独立的第三方)对开发的活动和产品进行评估 。为联合评审的实施制定相应的计划与进度,跟踪
10、评审活动,直至结束 。,判断是否与指定的需求、计划以及合同相一致 。由合适的、独立的一方来安排对产品或过程的审核工作 。以确定其是否符合特定需求,提供及时的、有明确职责的以及文档化的方式,以确保所有发现的问题都经过相应的分析并得到解决 。 提供一种相应的机制,以识别所发现的问题并根据相应的趋势采取行动 。,1.3.3 软件管理过程,1.3.3 软件的管理过程,项目管理过程是计划、跟踪和协调项目执行及生产所需资源的管理过程。项目管理过程的活动,包括软件基本过程的范围确定、策划、执行和控制、评审和评价等。 质量管理过程是对项目产品和服务的质量加以管理,从而获得最大的客户满意度。此过程包括在项目以及
11、组织层次上建立对产品和过程质量管理的关注 风险管理过程,在整个项目的生命周期中对风险不断的识别、诊断和分析,回避风险、降低风险或消除风险,并在项目以及组织层次上建立有效的风险管理机制 子合同商管理过程,选择合格的子合同商并对其进行管理的过程,1.3.4 软件组织过程,业务规划过程是为组织与项目成员提供对愿景的描述以及企业文化的介绍,从而使项目成员能更有效地工作。 定义过程是建立一个可重复使用的过程定义库,从而对其它过程等提供指导、约束和支持改进过程是为了满足业务变化的需要,提高过程的效率与有效性,而对软件过程进行持续的评估、度量、控制和改善的过程 人力资源和培训过程,为项目或其它组织过程提供培
12、训合格的人员所需的活动 基础设施过程是建立生存周期过程基础结构、为其他过程建立和维护所需基础设施的过程,1.3.5 软件客户供应商的过程,客户供应商过程是内部直接影响到客户、外部直接影响开发、向客户交付软件以及软件正确操作与使用的过程,包括软件获得、客户需求管理、提供软件、操作软件以及提供客户服务等5个子过程,获取过程从确定需要获取的软件系统、产品或服务开始,然后制定和发布标书、选择供方和管理获取过程,直到验收软件系统、产品或服务 。该过程的成功实施会导致最终生成一个明确的合同或条约,清楚地描述出客户与供应方的期望、职责与义务。,在整个软件生命周期中,针对不断变化的客户需求加以收集、处理和跟踪
13、,并建立软件需求的基准线,以作为项目中软件开发活动过程和产品度量和变更管理的基础,按客户、事先规定的要求对软件进行包装、发布与安装的活动过程 确定包装、发布以及安装软件的有关要求。软件有效地被安装与使用。软件达到需求定义中所规定的质量水平。,确定和管理由于引人并发操作软件而带来的操作上的风险。按要求的步骤和在要求的操作环境中运行软件。提供操作上的技术支持,以便解决操作过程个出现的问题确保软件(或主机系统)有足够的能力满足用户的需求。,基于实施情况,确定客户所需要的支持服务。通过提供适当的服务来满足客户的需求。针对客户对产品本身及其相应的支持服务的满意程度进行持续的评估,1.4 软件生命周期标准
14、,1.4.1 ISO/IEC标准体系1.4.2 IEEE标准体系1.4.3 标准体系全貌图,1.4.1 ISO/IEC标准体系,ISO/IEC 12207:1995-软件生存周期过程 从多个角度说明了软件生命周期各个过程中的活动,对规范软件开发过程,协调各类人员之间的关系,都具有指导作用。 ISO/IEC15504软件过程评估标准 能力确定模式,帮助评估并确定一个潜在软件供应商的能力。 过程改进模式,帮助提高软件开发过程的水平。 自我评估模式,帮助判断是否有能力承接新项目的开发。,ISO/IEC标准体系的构成,1.4.2 IEEE标准体系,IEEE 1074:1997 - 生命周期过程的标准。
15、IEEE 1540-01 - 软件风险管理。IEEE 1517-99 - 软件复用过程。IEEE 1219-1998 - 软件维护过程。IEEE Std 730-2001 -软件质量保证计划。IEEE Std 1012 - 验证与确认。IEEE Std 1028 - 评审。,1.4.3 标准体系全貌图,1.5 软件过程建模,1.5.1 软件过程建模型1.5.2 基于UML的过程建模1.5.3 基于IDEF3的过程建模1.5.4 基于Agent的自适应软件过程模型1.5.5 基于SOA的软件过程模型,1.5.1 软件过程模型,瀑布模型螺旋模型、增量模型、迭代模型V模型 并发过程模型极限编程(XP
16、)IBM-Rational统一过程(RUP),1.5.2 基于UML的过程建模,用户模型视图,从用户的视角来表示系统。用例(Use-case)描述使用场景,可用于用户模型视图的建模方案。结构模型视图,从系统内部来分析数据和功能,属于静态结构建模。行为模型视图,描述系统动态或行为方面的各种元素间交互或协作关系,属于动态结构建模。实现模型视图,针对如何构建(实现)系统的结构和行为时的表示。环境模型视图,表示待实现的系统环境的结构和行为。,UML图,用例模型:对应用例图、序列图、协作图、状态图和活动图分析模型:对应类图和对象图(包括子系统和包)、序列图、协作图、状态图和活动图。设计模型:对应类图和对
17、象图(包括子系统和包)、序列图、协作图、状态图和活动图。开发模型:对应配置图(包括活动类和组件)、序列图、协作图。实现模型:对应组件图、序列图和协作图。测试模型:测试模型引用了所有其它模型,所以使用所对应的所有视图。,从迭代的角度理解UML建模,从顺序角度理解UML建模,1.5.3 基于IDEF3的过程建模,美国空军集成计算机辅助制造(ICAM)项目基础上建立起来的,只包含3种方法功能建模(IDEF0)、信息建模(IDEF1)和动态建模(IDEF2)。随着信息系统的相继开发,后来又增加了不少IDEF方法,如数据建模扩展版本(IDEF1X)、过程描述获取方法(IDEF3)、面向对象的设计方法(I
18、DEF4)、实体论(Ontology)描述获取方法(IDEF5)、设计理论(rationale)获取方法(IDEF6)、人机交互设计方法(IDEF8)、业务约束发现方法(IDEF9)、网络设计方法(IDEF14)等。,IDEF3的过程描述方法,场景描述,通过文档记录由一个组织或系统阐明的一类典型问题的一组情况以及过程赖以发生的、重复出现的背景。场景描述的主要作用,就是要把过程描述的前后关系确定下来。对象,是那些发生在软件开发过程描述中的、任何具体的或概念的事物。对象的识别和特征抽取,有助于进行过程流描述和对象状态转换描述。,IDEF3建模图形符号,1.5.4 基于Agent的自适应软件过程模型
19、,过程Agent,实现任务的动态分配和分布式协同。监控Agent,负责在本地监控任务的实施。服务Agent,封装了任务实现的方法。活动Agent,帮助实现过程活动的动态整合。资源Agent,封装了活动实现的角色和方法。,软件过程模型的要素,基于Agent的软件过程模型,1.5.5 基于SOA的软件过程模型,面向服务架构(Service-Oriented Architecture,SOA)是企业级的、按需连接资源的新型架构,它描述了一系列模式和指导方针来创建松耦合、依赖业务的服务。,基于SOA的软件过程模型,服务的识别 服务的分级和分类 子系统分析 服务分配 服务实现,作业,第1章 1、2,Q & A,