高级软件工程(第2章:软件过程)_第1页
高级软件工程(第2章:软件过程)_第2页
高级软件工程(第2章:软件过程)_第3页
高级软件工程(第2章:软件过程)_第4页
高级软件工程(第2章:软件过程)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.1 2.1 软件过程定义软件过程定义 定义:软件过程定义:软件过程(software processes)(software processes)也称为软件生存周期也称为软件生存周期 过程或软件过程组,是指软件生存周期中的一系过程或软件过程组,是指软件生存周期中的一系 列相关过程列相关过程(process)(process)。 其中:过程就是活动的集合;其中:过程就是活动的集合; 活动是任务的集合;活动是任务的集合; 任务则起到把输入加工成输出的作用。任务则起到把输入加工成输出的作用。 活动的执行可以是顺序的、迭代的活动的执行可以是顺序的、迭代的( (重复的重复的) )、并行的、并行的、嵌

2、套的或者是有条件地引发的。嵌套的或者是有条件地引发的。 说明:说明: 1. 1. 该定义是扩展的、多视面的软件过程定义该定义是扩展的、多视面的软件过程定义 2. 2. 对一个特定的软件项目而言,软件过程可被视为开展对一个特定的软件项目而言,软件过程可被视为开展 与软件开发相关的一切活动的指导性的纲领和方案与软件开发相关的一切活动的指导性的纲领和方案 3. 3.过程定义了方法使用的顺序、可交付产品过程定义了方法使用的顺序、可交付产品( (文档、报告文档、报告以及格式等以及格式等) )的要求、帮助确保质量和变更的控制,使的要求、帮助确保质量和变更的控制,使软件管理人员能对它们的进展进行评价。软件管

3、理人员能对它们的进展进行评价。 4. 4.不论软件过程的概念如何解释、如何划分,软件过程应不论软件过程的概念如何解释、如何划分,软件过程应当包含以下三个含义:当包含以下三个含义: 一为个体含义,即指软件或系统在生存周期中的某一类一为个体含义,即指软件或系统在生存周期中的某一类活动的集合如获取过程、开发过程、管理过程等活动的集合如获取过程、开发过程、管理过程等 二为整体含义,即指软件或系统在所有上述含义下的软二为整体含义,即指软件或系统在所有上述含义下的软件过程的总体件过程的总体 三为工程含义,即指解决软件过程的工程,它应用软件三为工程含义,即指解决软件过程的工程,它应用软件工程的原则、方法来构

4、造软件工程的原则、方法来构造软件过程模型过程模型,并结合软件的具,并结合软件的具体要求进行例化(具体应用),以及在用户环境中运作,体要求进行例化(具体应用),以及在用户环境中运作,以此进一步提高软件开发率、降低成本以此进一步提高软件开发率、降低成本 一、过程模型的概念一、过程模型的概念 软件过程模型(也称为软件生存期模型)软件过程模型(也称为软件生存期模型) ,是对软,是对软件过程的结构及其属性的抽象(使用某种图形工具)描件过程的结构及其属性的抽象(使用某种图形工具)描述与定义述与定义 说明:说明: 1. 1. 软件过程模型,是从软件项目需求定义直至软件运行软件过程模型,是从软件项目需求定义直

5、至软件运行维护为止,跨越整个生存周期的系统开发、运行和维护维护为止,跨越整个生存周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架所实施的全部过程、活动和任务的结构框架. . 2. 2. 直观的讲,软件过程模型就是对软件过程的图形描述直观的讲,软件过程模型就是对软件过程的图形描述和详细说明。和详细说明。 例如,传统的基于面向过程例如,传统的基于面向过程: : 瀑布模型、增量模型等瀑布模型、增量模型等 传统的基于面向对象传统的基于面向对象: : 喷泉模型喷泉模型2.2 2.2 软件过程模型软件过程模型 二、二、 传统软件过程模型传统软件过程模型 1. 基于面向过程的瀑布模型:基于面

6、向过程的瀑布模型:2. 基于面向过程的基于面向过程的增量模型增量模型 是把软件产品作为一系列的增量构件来设计、编码、是把软件产品作为一系列的增量构件来设计、编码、集成和测试的过程,如下图所示:集成和测试的过程,如下图所示: 其过程模型如下:其过程模型如下:特点:特点:1. 过程渐进性和软件由小到大的逐步扩充性过程渐进性和软件由小到大的逐步扩充性 2. 适用于最初软件需求不太明确的软件系统适用于最初软件需求不太明确的软件系统 3. 适用于基于构件软件系统开发适用于基于构件软件系统开发 3. 基于面向对象的基于面向对象的喷泉模型(喷泉模型(Water Fountain Model) 注注: “:

7、“喷泉喷泉”一词代表的一词代表的 含义是含义是“软件开发软件开发 过程的迭代性和无过程的迭代性和无 缝性缝性” ” 三、例化的过程模型三、例化的过程模型 1. RUP模型模型 RUP (Rational Unified Process- Rational 统一过程)统一过程) 其二维开发模型如下:其二维开发模型如下:其中:其中:RUP中包括:中包括: 说明:每个阶段都是由一次或多次迭代所组成,即重复说明:每个阶段都是由一次或多次迭代所组成,即重复 工作流的过程。工作流的过程。 9 9个核心个核心工作流程工作流程业务建模(业务建模(场景描述场景描述, ,如组织如组织/ /体系结构图体系结构图)需

8、求需求分析、设计分析、设计实施(编码实现)实施(编码实现)测试测试部署(发布、运行维护)部署(发布、运行维护)配置与变更管理配置与变更管理项目管理项目管理环境(在市场上销售环境(在市场上销售/ /在企业中使用)在企业中使用)过程工作流过程工作流支持工作流支持工作流静态静态4 4个阶段个阶段初始(也称为先启,需求和分析)初始(也称为先启,需求和分析)细化(逐步求精,需求、分析和设计)细化(逐步求精,需求、分析和设计)构造(逐步实现,编码和单元测试)构造(逐步实现,编码和单元测试)交付(产品化,组装和集成测试)交付(产品化,组装和集成测试)动态动态RUP模型的展开直观迭代示意图:模型的展开直观迭代

9、示意图:其中:其中:RUPRUP对每一个工作流均给出了定义。对每一个工作流均给出了定义。 即详细说明每一工作即详细说明每一工作 流重点做什么,使用流重点做什么,使用UMLUML视图来描述,及描述过程的局部视图来描述,及描述过程的局部 过程模型等。过程模型等。说明:说明: RUP用二维坐标来描述:(自己看)用二维坐标来描述:(自己看) 纵轴以内容来组织,是自然的逻辑活动,体现开发过纵轴以内容来组织,是自然的逻辑活动,体现开发过 程的静态结构。它表示软件开发生命周期的几个部分是程的静态结构。它表示软件开发生命周期的几个部分是 相互交错、反复迭代的,而不是一遍就可以完相互交错、反复迭代的,而不是一遍

10、就可以完 成的;成的; 横轴通过时间组织,是过程展开的生命周期特征,体横轴通过时间组织,是过程展开的生命周期特征,体 现开发过程的动态结构。它表示通过核心工作流的每一现开发过程的动态结构。它表示通过核心工作流的每一 个阶段的积累才可以完成一个完整的软件开发过程。个阶段的积累才可以完成一个完整的软件开发过程。 RUP有三大特点:有三大特点: 软件开发是一个叠代过程软件开发是一个叠代过程 软件开发是由软件开发是由UseCaseUseCase驱动的驱动的 软件开发是以构架设计(软件开发是以构架设计(ArchitecturalDesignArchitecturalDesign)为)为 中心的中心的 R

11、UP通常同通常同UML( Unified Modeling Language统统 一建模语言)配套使用。一建模语言)配套使用。2. 微软软件过程模型微软软件过程模型 微软产品过程模型是微软公司数十年实际开发经验的精微软产品过程模型是微软公司数十年实际开发经验的精髓,微软公司的所有产品,从最初的产品策划到编程,髓,微软公司的所有产品,从最初的产品策划到编程,BetaBeta(测试)版发行,(测试)版发行,GammaGamma(正式)版本的发布,下一(正式)版本的发布,下一个版本的开发,都遵循该过程模型。微软产品周期模型是个版本的开发,都遵循该过程模型。微软产品周期模型是整个微软开发流程的核心和基

12、础。整个微软开发流程的核心和基础。 其过程模型由以下其过程模型由以下5 5个主要阶段组成:个主要阶段组成: 规划规划 设计设计 开发开发 稳定稳定 发布发布 过程模型框架如下图所示:过程模型框架如下图所示:微软软件过程模型微软软件过程模型说明:说明:过程模型描述了过程模型描述了一个软件是软件开发过程的多次不间断重一个软件是软件开发过程的多次不间断重 复。复。每一次开发,都以阶段和里程碑为基础每一次开发,都以阶段和里程碑为基础,且每个阶段都且每个阶段都 是由里程碑驱动的是由里程碑驱动的其中:(自己看)其中:(自己看)(1)(1)规划阶段规划阶段 项目团队必须对项目的前景有一个清晰的认识,明确最终

13、要提项目团队必须对项目的前景有一个清晰的认识,明确最终要提供给客户的是什么样的产品供给客户的是什么样的产品(2)(2)设计阶段设计阶段 根据产品的远景目标,完成软件的功能或特性规格说明书,并根据产品的远景目标,完成软件的功能或特性规格说明书,并确定产品开发的主要进度确定产品开发的主要进度(3)(3)开发阶段开发阶段 开发人员根据产品功能或特性规格说明书开发人员根据产品功能或特性规格说明书, ,完成软件的开发工作完成软件的开发工作(4)(4)稳定阶段稳定阶段 稳定阶段着重于对产品的测试与调试,项目在此阶段尽量不再稳定阶段着重于对产品的测试与调试,项目在此阶段尽量不再增加新的功能。测试人员根据产品

14、规格说明书,对开发人员提交的增加新的功能。测试人员根据产品规格说明书,对开发人员提交的软件产品进行功能和性能测试软件产品进行功能和性能测试 (5)(5)发布阶段发布阶段 在确认产品质量符合发布标准之后在确认产品质量符合发布标准之后, ,将产品的最终发布版本发布将产品的最终发布版本发布四、现代软件过程模型四、现代软件过程模型 1. 1. 形式化方法模型形式化方法模型- -变换模型变换模型 形式化方法是指形式化方法是指“基于数学的和基于数学的和/ /或能被算法识别且进或能被算法识别且进行转换的软件开发方法行转换的软件开发方法” 其变换模型其变换模型为:为:需求定义需求定义形式化描述形式化描述形式化

15、转换形式化转换1形式化转换形式化转换2形式化转换形式化转换n集成和系统测试集成和系统测试其中,在形式化方法模型中:其中,在形式化方法模型中: 软件需求描述被精炼成用数学符号表达的详细的形式软件需求描述被精炼成用数学符号表达的详细的形式 化描述。化描述。 开发过程被数个形式化转换的开发过程所代替,形式开发过程被数个形式化转换的开发过程所代替,形式 化描述经过系列转换变成执行程序。化描述经过系列转换变成执行程序。 在转换过程中,系统形式化的数学表达被系统地转换在转换过程中,系统形式化的数学表达被系统地转换 成更详细但数学上仍然是正确的系统表示。每个步骤成更详细但数学上仍然是正确的系统表示。每个步骤

16、 增加细节直到形式化描述被转换成对等的程序。增加细节直到形式化描述被转换成对等的程序。 转换是非常准确的,有严格的数学方法保障,因此,转换是非常准确的,有严格的数学方法保障,因此, 转换的正确性能得到保证。转换的正确性能得到保证。说明:说明: 形式化方法模型最好的例化是净室软件工程,它是基于函数形式化方法模型最好的例化是净室软件工程,它是基于函数 的规范设计和统计过程控制下的增量式的软件开发的规范设计和统计过程控制下的增量式的软件开发 形式化方法目前并不是主流开发方法,在实际软件开发中应用形式化方法目前并不是主流开发方法,在实际软件开发中应用 较少,其主要原因是现实应用的系统大多数是交互性强的

17、软较少,其主要原因是现实应用的系统大多数是交互性强的软 件,这些系统难以用现有的形式化方法进行描述件,这些系统难以用现有的形式化方法进行描述2. 2. 基于构件的开发模型基于构件的开发模型 基于构件的软件工程是强调使用可复用的软件基于构件的软件工程是强调使用可复用的软件“构件构件”来设计和构造基于计算机的系统的过程。来设计和构造基于计算机的系统的过程。组装应用系统组装应用系统设计软件体系结构设计软件体系结构检索、取得构件检索、取得构件开发新构件开发新构件系统开发的主要系统开发的主要工作工作从已有系统中从已有系统中发掘提炼构件发掘提炼构件采购新构件采购新构件构件开发与维护构件开发与维护构件库构件

18、库需求分析需求分析 系统设计系统设计 组装组装 测试测试 维护维护2001年,软件过程方法论学者峰会接受了敏捷方法的年,软件过程方法论学者峰会接受了敏捷方法的定义,并形成了定义,并形成了敏捷软件开发宣言敏捷软件开发宣言,目的在于说明什,目的在于说明什么是敏捷软件开发。该宣言声明:么是敏捷软件开发。该宣言声明: 我们正在通过亲身实践以及帮助其他人实践,揭示更好的软件我们正在通过亲身实践以及帮助其他人实践,揭示更好的软件开发之路,我们认为:开发之路,我们认为: 个体和交互胜过过程和工具个体和交互胜过过程和工具 能够发挥作用的软件胜过面面俱到的文档能够发挥作用的软件胜过面面俱到的文档 客户合作胜过合

19、同谈判客户合作胜过合同谈判 随时应对变化胜过遵循计划随时应对变化胜过遵循计划 也就是说,虽然我们也关注上述右边的内容,但是更关注左也就是说,虽然我们也关注上述右边的内容,但是更关注左边的内容。边的内容。 敏捷宣言敏捷宣言是一份寻求反传统软件开发观点的非常是一份寻求反传统软件开发观点的非常简明的声明。它的基础是以下简明的声明。它的基础是以下12条原则:条原则: 3. 敏捷过程模型敏捷过程模型我们的首要任务是通过尽早并且持续提供有价值的软件满足客户的需要。我们的首要任务是通过尽早并且持续提供有价值的软件满足客户的需要。即使在开发后期,也欢迎需求变更。敏捷过程驾驭变更,使客户获得竞争优即使在开发后期

20、,也欢迎需求变更。敏捷过程驾驭变更,使客户获得竞争优势。势。 频繁提供能够发挥作用的软件,间隔时间从几周到几个月,时间间隔越短越频繁提供能够发挥作用的软件,间隔时间从几周到几个月,时间间隔越短越好。好。在整个项目期间,业务人员和开发人员每天都必须在一起工作。在整个项目期间,业务人员和开发人员每天都必须在一起工作。围绕士气旺盛的人进行软件开发,向他们提供所需的环境和支持,相信他们围绕士气旺盛的人进行软件开发,向他们提供所需的环境和支持,相信他们能够完成任务。能够完成任务。向开发团队和在开发团队内部传递信息最高效、最有效的方法,就是面对面向开发团队和在开发团队内部传递信息最高效、最有效的方法,就是

21、面对面的交流。的交流。能够发挥作用的软件是工作进展的主要度量标准。能够发挥作用的软件是工作进展的主要度量标准。敏捷过程提倡可持续开发。出资方、开发方和用户都应该能够保持一种长期、敏捷过程提倡可持续开发。出资方、开发方和用户都应该能够保持一种长期、稳定的开发速度。稳定的开发速度。对卓越技术和良好设计的不断追求可提高敏捷性。对卓越技术和良好设计的不断追求可提高敏捷性。简单简单-尽可能少的工作量是至关重要的。尽可能少的工作量是至关重要的。最好的体系结构、需求和设计都来自于自组织团队。最好的体系结构、需求和设计都来自于自组织团队。团队定期反思如何提高有效性,并相应地调整自己的行为。团队定期反思如何提高

22、有效性,并相应地调整自己的行为。注:课后自己阅读注:课后自己阅读 说明:说明: 敏捷性通常定义为敏捷性通常定义为“应对变更的能力应对变更的能力” 软件工程环境下的敏捷软件工程环境下的敏捷, Jackson给出一个有用的论述给出一个有用的论述: 敏捷敏捷已经成为当今描述现代软件过程的时髦用词。每个人都是已经成为当今描述现代软件过程的时髦用词。每个人都是敏捷的,敏捷团队是能够适当响应变化的灵活团队。变化就是软件敏捷的,敏捷团队是能够适当响应变化的灵活团队。变化就是软件开发本身,软件构件有变化、团队成员在变化、使用新技术会带来开发本身,软件构件有变化、团队成员在变化、使用新技术会带来变化,各种变化都

23、会对开发的软件产品以及项目本身造成影响。我变化,各种变化都会对开发的软件产品以及项目本身造成影响。我们必须接受们必须接受“支持变化支持变化”的思想,它应当根植于软件开发中的每一的思想,它应当根植于软件开发中的每一件件事中,因为这是软件的心脏和灵魂。敏捷团队意识到软件是由团队事中,因为这是软件的心脏和灵魂。敏捷团队意识到软件是由团队中所有人共同开发完成的,这些人的个人技能和合作能力是项目成中所有人共同开发完成的,这些人的个人技能和合作能力是项目成功的关键所在。功的关键所在。 敏捷可用于任何软件过程,实现要点是将软件过程设敏捷可用于任何软件过程,实现要点是将软件过程设计成如下方式:计成如下方式:

24、允许项目团队调整并合理安排任务,理解敏捷开发方法的易变性允许项目团队调整并合理安排任务,理解敏捷开发方法的易变性并制定计划,精简并维持最基本的工作产品,强调并制定计划,精简并维持最基本的工作产品,强调增量交付增量交付策略策略,快速向客户提供适应产品类型和运行环境的可运行软件,快速向客户提供适应产品类型和运行环境的可运行软件 敏捷开发集成了新型开发模式的共同特点,它重点敏捷开发集成了新型开发模式的共同特点,它重点 强调以下几个方面强调以下几个方面: 以人为本,注重编程中人的自我特长发挥以人为本,注重编程中人的自我特长发挥. . 强调软件开发的产品是软件,而不是文档强调软件开发的产品是软件,而不是

25、文档. . 文档是为文档是为 软件开发服务的,而不是开发的主体软件开发服务的,而不是开发的主体. . 客户与开发者的关系是协作,不是合约客户与开发者的关系是协作,不是合约. . 开发者不是开发者不是 客户业务的客户业务的“专家专家”,要适应客户的需求,是要与客户,要适应客户的需求,是要与客户 合作来阐述实际的需求细节,而不是为了开发软件,合作来阐述实际的需求细节,而不是为了开发软件, 把开发人员变成客户业务的专家把开发人员变成客户业务的专家. . 设计周密是为了最终软件的质量,但不表明设计比实设计周密是为了最终软件的质量,但不表明设计比实 现更重要,要适应客户需求的不断变化,设计也要不现更重要

26、,要适应客户需求的不断变化,设计也要不 断跟进断跟进. .能够根据环境的不断变化、修改自己的设计、能够根据环境的不断变化、修改自己的设计、 指导开发的方向是敏捷开发的目标指导开发的方向是敏捷开发的目标. .总之,敏捷开发避免了传统瀑布方式的弊端,主要是吸总之,敏捷开发避免了传统瀑布方式的弊端,主要是吸收了各种新型开发模式的收了各种新型开发模式的“动态动态”特性,关注点从文档到特性,关注点从文档到开发者,管理方式也从工厂的流水线到团队的自我放松式开发者,管理方式也从工厂的流水线到团队的自我放松式的组织。的组织。 极限编程极限编程(eXtreme Programming,XP)使用面向对象方法作为

27、推使用面向对象方法作为推荐的开发范型荐的开发范型. XP包含了策划、设计、编码和测试包含了策划、设计、编码和测试4个框架活动的个框架活动的规则和实践规则和实践. XP的过程模型描述如下:的过程模型描述如下:敏捷过程模型之一:极限编程敏捷过程模型之一:极限编程 策划:策划活动开始于建立一系列描述待开发系统必要特征和策划:策划活动开始于建立一系列描述待开发系统必要特征和 功能需求的功能需求的“场景场景”,每个,每个“场景场景”由客户书写并置于一张索由客户书写并置于一张索 引卡上。客户根据对应特征或功能的全局业务价值确定场景的引卡上。客户根据对应特征或功能的全局业务价值确定场景的 权值权值( (优先

28、级优先级) )。 设计:设计:XPXP设计严格遵循:设计严格遵循: 其一,设计已经定义的功能,其一,设计已经定义的功能, 不鼓励设计额外的功能不鼓励设计额外的功能( (开发者开发者 假定以后会用到假定以后会用到) ); 其二,本着其二,本着“保持简洁保持简洁”的原则,以尽可能简单的方式来设计的原则,以尽可能简单的方式来设计 要交付的功能。要交付的功能。 编码:编码:XPXP编码要求遵循:编码要求遵循: 其一,编码活动采用其一,编码活动采用“结对编程结对编程” ” 方式。比如,两个人同时方式。比如,两个人同时 坐在一台计算机前,一个进行编码或案例测试,另外一坐在一台计算机前,一个进行编码或案例测

29、试,另外一 个评审和思考,创造一个持续又动态的交互氛围;个评审和思考,创造一个持续又动态的交互氛围; 其二,其二,XPXP不推荐在场景策划和基本设计完成以后,直接开始编不推荐在场景策划和基本设计完成以后,直接开始编 码,而是开发一系列用于检测本次发布的单元测试(设码,而是开发一系列用于检测本次发布的单元测试(设 计测试用例、编写测试程序计测试用例、编写测试程序采用自动化测试方式时采用自动化测试方式时 ),即),即“预先测试,然后再编码预先测试,然后再编码”。 测试:正如已经指出的,在编码开始之前建立单元测试是测试:正如已经指出的,在编码开始之前建立单元测试是XPXP 方法的关键所在。所建立的单

30、元测试应当使用一个可以自动实方法的关键所在。所建立的单元测试应当使用一个可以自动实 施的框架施的框架( (因此易于并可重复执行因此易于并可重复执行) ),这种方式支持代码修改之,这种方式支持代码修改之 后即时的回归测试策略后即时的回归测试策略( (会经常发生,为会经常发生,为XPXP提供重构支持提供重构支持) )。 自适应软件开发自适应软件开发(Adaptive Software Development(Adaptive Software Development,ASD)ASD)是一个基于协作的敏捷开发方法,定义了如何在高速、是一个基于协作的敏捷开发方法,定义了如何在高速、变更性和非确定性等强

31、化复杂性的关键特征下开发更好的变更性和非确定性等强化复杂性的关键特征下开发更好的软件。软件。 其中:其中: 自适应软件开发(自适应软件开发(ASDASD)是用于变化,不是抵制变)是用于变化,不是抵制变 化。化。 在自适应软件开发(在自适应软件开发(ASDASD)中,静态的策划)中,静态的策划-建模建模 -构建生命周期被动态的预测构建生命周期被动态的预测-协作协作-学习的生命学习的生命 周期所取代。周期所取代。 这个生命周期致力于连续学习和面向变化、再次评这个生命周期致力于连续学习和面向变化、再次评 估、在不确定的未来中显现,以及开发人员、管理估、在不确定的未来中显现,以及开发人员、管理 人员和

32、客户的密切协作。人员和客户的密切协作。敏捷过程模型之二:自适应软件开发敏捷过程模型之二:自适应软件开发自适应软件开发(自适应软件开发(ASD)过程模型:)过程模型: (1) (1)预测:启动与规划预测:启动与规划 启动是指项目初始化,包括设置项目的任务和目标、理解约束启动是指项目初始化,包括设置项目的任务和目标、理解约束 建立开发项目中的各种组织等。建立开发项目中的各种组织等。 规划是指根据项目的需求,决定迭代的次数,给出每次迭代的规划是指根据项目的需求,决定迭代的次数,给出每次迭代的 里程碑和时间框,制作整个项目的进度表等。里程碑和时间框,制作整个项目的进度表等。 (2)(2)协作:并发特性

33、开发协作:并发特性开发 并发指两个或两个以上人员同时操作,协作方法是所有敏并发指两个或两个以上人员同时操作,协作方法是所有敏 捷方法中不断重现的主旋律。捷方法中不断重现的主旋律。 (3)(3)学习:质量评审学习:质量评审 当当ASDASD团队成员开始开发作为自适应循环一部分的构件时,其团队成员开始开发作为自适应循环一部分的构件时,其重点是在完成循环的过程中学习尽可能多的东西。重点是在完成循环的过程中学习尽可能多的东西。ASDASD团队通过团队通过以下以下3 3种方式学习。种方式学习。 焦点组:用户对已发布的软件增量提供反馈意见,这些反馈意焦点组:用户对已发布的软件增量提供反馈意见,这些反馈意

34、见表明了产品是否满足业务需求。见表明了产品是否满足业务需求。 正式的技术评审:正式的技术评审:ASDASD团队评审他们开发的软件构件,以便在团队评审他们开发的软件构件,以便在 工作进展的同时提高质量,并学习知识。工作进展的同时提高质量,并学习知识。 事后剖析:事后剖析:ASDASD团队成员进行反思,以方法的学习和改进为目团队成员进行反思,以方法的学习和改进为目 的,着眼于检讨自身的表现和过程。的,着眼于检讨自身的表现和过程。2.3 2.3 软件过程改进软件过程改进 软件过程改进是指:软件过程改进是指: “ “将现有的软件过程(文档)和人员(开发和管理)改造成符合将现有的软件过程(文档)和人员(

35、开发和管理)改造成符合要求的过程要求的过程”. .一、一、 CMM/CMMICMM/CMMI 1.CMM: Capabllity Maturity Model 1.CMM: Capabllity Maturity Model(软件能力成熟度模型)的(软件能力成熟度模型)的 缩写缩写 其中:其中: 软件能力成熟度是指软件能力成熟度是指“一个特定的软件过程被显式地定义、一个特定的软件过程被显式地定义、 管理、度量、控制和能行管理、度量、控制和能行( (按步骤执行按步骤执行) )的程度的程度”.”. 它是由美国卡耐基它是由美国卡耐基梅隆大学软件工程研究所梅隆大学软件工程研究所(SEI)(SEI)于于

36、19871987年年 提出的一种软件能力评估标准提出的一种软件能力评估标准. . 它侧重于软件开发过程的管理及工程能力的提高与评估,现它侧重于软件开发过程的管理及工程能力的提高与评估,现 已成为软件业最权威的评估认证体系已成为软件业最权威的评估认证体系. . CMM CMM 描述了一个开发组织开发高质量软件产品的能力,现行描述了一个开发组织开发高质量软件产品的能力,现行 的国际标准主要有两个:的国际标准主要有两个: ISO9000.3ISO9000.3和和CMMCMM ISO9000强调的是衡量的准则,该做什么、什么强调的是衡量的准则,该做什么、什么算好、什么算不好;没有告诉软件开发人员如何算

37、好、什么算不好;没有告诉软件开发人员如何达到好的目标,如何避免差错,它实际上是由英达到好的目标,如何避免差错,它实际上是由英国学院派一批没有做过复杂系统的人制定出来的国学院派一批没有做过复杂系统的人制定出来的标准标准 CMM则提供了一整套较为完善的软件研发项目则提供了一整套较为完善的软件研发项目管理的方法。美国先后在这上面投资了管理的方法。美国先后在这上面投资了5亿多美亿多美元,做了很多实践工作来改进软件研发项目管理,元,做了很多实践工作来改进软件研发项目管理,而且其内容还在不断地改进。而且其内容还在不断地改进。区别何在?区别何在?2. CMMI: Capabllity Maturity Mo

38、del Integration (软件能软件能 力成熟度模型集成力成熟度模型集成)的缩写的缩写 其中:其中: CMMI的来源与发展,如下图所示:的来源与发展,如下图所示: 即把几个不同的即把几个不同的CMM版本集成为统一的版本集成为统一的CMMI版本版本 CMMI分为分为5个等级,如图:个等级,如图: CMMI CMMI等级说明:等级说明: 初始级初始级 ( CMMI1 / ML1 CMMI1 / ML1 ) 处于初始级的软件组织其过程处于无序的状态,许多工作充满了处于初始级的软件组织其过程处于无序的状态,许多工作充满了任意性。这类组织的软件项目也并非没有成功的可能,但它们的成任意性。这类组织

39、的软件项目也并非没有成功的可能,但它们的成功往往取决于个别优秀人员的能力和勤奋,而不是靠明确的过程要功往往取决于个别优秀人员的能力和勤奋,而不是靠明确的过程要求。然而,经常发生的是预算超出以及工作进度延误,并且偶然的求。然而,经常发生的是预算超出以及工作进度延误,并且偶然的成功无法变成可被重复的经验得到总结、再现和提高。成功无法变成可被重复的经验得到总结、再现和提高。 可重复级(可重复级( CMMI2 / ML2 CMMI2 / ML2 ) 在这一级,软件机构具有项目计划且跟踪稳定,项目过程可控。在这一级,软件机构具有项目计划且跟踪稳定,项目过程可控。这个级别使用了基本的软件项目管理措施,根据

40、从类似产品中获得这个级别使用了基本的软件项目管理措施,根据从类似产品中获得的经验对新的产品进行计划和管理。因而,这个级别的管理是可重的经验对新的产品进行计划和管理。因而,这个级别的管理是可重复的(应用到各个软件)。复的(应用到各个软件)。 已定义级(已定义级( CMMI3 / ML3 CMMI3 / ML3 ) 在这一级,软件机构已为软件生产的过程编制了完整的文档。软在这一级,软件机构已为软件生产的过程编制了完整的文档。软件过程的管理方面和技术方面都明确地做了定义,并按需要不断地件过程的管理方面和技术方面都明确地做了定义,并按需要不断地改进过程,而且采用评审的办法来保证软件的质量。软件过程已被

41、改进过程,而且采用评审的办法来保证软件的质量。软件过程已被提升成标准化过程,从而更加具有稳定性、可重复性和可控性。提升成标准化过程,从而更加具有稳定性、可重复性和可控性。 已定量管理级(已定量管理级( CMMI4 / ML4 CMMI4 / ML4 ) 软件过程和软件产品都有定量的目标,并被定量地管理,因而其软件过程和软件产品都有定量的目标,并被定量地管理,因而其软件过程能力是可预测的,其生产的软件产品是高质量的。软件过程能力是可预测的,其生产的软件产品是高质量的。 优化级(优化级( CMMI5 / ML5CMMI5 / ML5 ) 其特点是过程的量化反馈和先进的新思想、新技术促进过程不断其特

42、点是过程的量化反馈和先进的新思想、新技术促进过程不断改进,技术和过程的改进被作为常规的业务活动加以计划和管理改进,技术和过程的改进被作为常规的业务活动加以计划和管理. . 过程域之概念:过程域之概念: 所谓过程域所谓过程域(Process Area)PA(Process Area)PA是指是指“CMMICMMI为实施软件过为实施软件过程改进的组织提出的若干个值得重视的软件过程程改进的组织提出的若干个值得重视的软件过程”。 说明:说明: 除了初始级外,每一个成熟度等级是由若干个过程域构除了初始级外,每一个成熟度等级是由若干个过程域构成。过程域指出为了达到某个成熟度等级所要着手解决的成。过程域指出

43、为了达到某个成熟度等级所要着手解决的问题。要达到一个成熟度等级,必须实现该等级上的全部问题。要达到一个成熟度等级,必须实现该等级上的全部过程域。要实现一个关键过程域,就必须达到该过程域的过程域。要实现一个关键过程域,就必须达到该过程域的所有目标。所有目标。其中:其中: CMMI2CMMI2级过程域有级过程域有7 7个:个: 需求管理、项目策划、项目监督和控制、需求管理、项目策划、项目监督和控制、 供方协定管理、测量和分析、供方协定管理、测量和分析、 过程和产品质量保证、配置管理过程和产品质量保证、配置管理 CMMI3CMMI3级过程域有级过程域有1111个:个: 需求开发、技术解决、产品集成、

44、验证、确认、需求开发、技术解决、产品集成、验证、确认、 组织过程聚焦、组织过程定义、组织培训、组织过程聚焦、组织过程定义、组织培训、 集成项目管理、风险管理、决策分析和决定集成项目管理、风险管理、决策分析和决定 CMM4CMM4级过程域有级过程域有2 2个:个: 组织过程性能、定量项目管理组织过程性能、定量项目管理 CMM5CMM5级过程域有级过程域有2 2个:个: 组织革新和部署、原因分析和决定组织革新和部署、原因分析和决定 注意:这里给出的过程域是指需要改进的过程域注意:这里给出的过程域是指需要改进的过程域CMMI3过程改进文档过程改进文档项目级01-开发库02-管理库03-基线库04-产

45、品库组织级01-VSS财富库02-组织工作库03-公司管理制度库02-管理库01-生存周期02-全程管理01-售前02-立项03-项目策划04-需求05-设计06-实现07-测试08-试运行及验收09-结项01-项目监控02-风险管理03-度量分析04-决策分析05-评审管理06-变更管理08-质量保证09-配置管理10-采购其中:基于项目级的:其中:基于项目级的:01-计划基线:02-需求基线:03-设计基线:04-开发基线:05-测试基线03-基线库项目计划书用户需求说明书需求规格说明书概要设计说明书详细设计说明书单元测试用例系统测试用例集成测试用例程序代码其中:基于组织级的:其中:基于组

46、织级的:01-VSS财富库01-标准过程文件库02-公司经验库03-培训库04-度量库01-项目管理规范02-软件工程规范03-支持类04-组织过程类01-管理经验库02-工程技术类经验库03-支持类经验库04-可复用库05-组织过程库01-公司级培训02-人力资源库VSSVSS(Visual Source SafeVisual Source Safe):):VSS项目文件的管理软件项目文件的管理软件 它是它是 Microsoft Visual Studio Microsoft Visual Studio 的一名成员,其主要任务是在的一名成员,其主要任务是在网络环境下负责项目文件的管理。网络环

47、境下负责项目文件的管理。其中:其中:EPG:工程过程组(:工程过程组(Engineering Process Group)QA:质量保证(:质量保证(Quality Assurance)CM:配置管理(:配置管理(Configuration Management) 02-组织工作库01-会议记录02-EPG活动库03-QA活动库04-CM活动库05-采购库01-行政管理制定02-人力资源管理03-财务管理04-营销管理03-公司管理制度库MSG组长(1人) MSG成员(1人) EPG组长(1人) PAT4组织过程组(1人)PAT3过程支持组 (3人) PAT2软件工程组 (8人) PAT1项目

48、管理组 (3人) 咨询公司咨询师(2名) CMMI3过程改进组织结构MSG: 管理指导组;EPG: 工程过程组; PAT: 过程行动组其中:MSG:管理指导组(Management Steering Group)EPG: 工程过程组(Engineering Process Group)PAT: 过程行动组(Process Action Team)说明: PAT1(项目管理组)= PP,IPM,PMC,RSKM PAT2(软件工程组)= RD,REQM,TS,VER,VAL,PI PAT3(过程支持组)= PPQA,MA,CM,DAR,SAM PAT4(组织过程组)= OPF,OPD,OT 注:

49、18个 过程域( PA-Process Area)说明见下页:PP: 项目策划(Project Planning)PMC: 项目监控(Project Monitoring and Control)IPM: 集成的项目管理(Integrated Project Management)RSKM:风险管理(Risk Management)CM: 配置管理(Configuration Management)PPQA:过程和产品质量保证(Process and Product Quality Assurance)MA: 度量和分析(Measurement and Analysis)DAR: 决策分析和解

50、决方案(Decision Analysis and Resolution)SAM: 供应商协议管理 (Supplier Agreement Management )REQM:需求管理(Requirements Management)RD: 需求开发(Requirements Development)TS: 技术解决方案(Technical Solution)PI: 产品集成(Product Integration)Ver: 验证(Verification)Val: 确认(Validation)OPF: 组织过程焦点(Organization Process Focus)OPD: 组织过程定义(

51、Organization Process Definition)OT: 组织培训(Organizational Training)3.CMMCMMCMMICMMI的应用及面临的问题的应用及面临的问题 随着随着CMMCMMCMMICMMI应用得不断深入和广泛应用得不断深入和广泛, ,一些问题也显现出来一些问题也显现出来. .这这些问题是在应用些问题是在应用CMMCMM时必须要面对和解决的问题时必须要面对和解决的问题, ,否则就无法适当地否则就无法适当地应用应用CMM.CMM. CMMCMM主要面向大型项目主要面向大型项目, ,其体系比较庞大其体系比较庞大, ,实施起来成本昂贵实施起来成本昂贵.

52、.因因 此此, ,对于较小的组织来说对于较小的组织来说, ,根本无力承担应用和实施根本无力承担应用和实施CMMCMM的成本的成本. . 即使对于大型企业组织来说即使对于大型企业组织来说, ,也不可能照搬也不可能照搬CMM.CMM.如何对如何对CMMCMM裁剪裁剪, , 构造轻型和小型的构造轻型和小型的CMM,CMM,以适应不同的企业和组织的需要以适应不同的企业和组织的需要, ,是当前是当前 研究的重点研究的重点. . CMMCMM的变更控制十分严格的变更控制十分严格, ,要求一开始的时候就尽可能地将需求要求一开始的时候就尽可能地将需求 固定下来固定下来. .这在一定程度上造成了开发过程的僵化这

53、在一定程度上造成了开发过程的僵化, ,对于当前软对于当前软 件业来说也是很难实现的件业来说也是很难实现的, , CMMICMMI模型由于照顾各方面的意见显得复杂、臃肿模型由于照顾各方面的意见显得复杂、臃肿, ,给使用和评给使用和评 估带来了困难估带来了困难. .如何增强如何增强CMMCMM的灵活度的灵活度, ,敏捷方法提供了很好的思敏捷方法提供了很好的思 路路. . CMMCMMCMMICMMI是基于过程进行管理的是基于过程进行管理的, ,它指出了它指出了“what to do”,what to do”, 但是没有指出但是没有指出“how to do”,how to do”,可操作性比较差可操

54、作性比较差. .如何增强如何增强CMMCMM的的 可操作性是当前研究的热点可操作性是当前研究的热点. .CMM现状现状 二、二、 PSP PSP: Personal Software Process (个体软件过程)的缩写(个体软件过程)的缩写 其中:其中: 它是由美国卡耐基它是由美国卡耐基梅隆大学软件工程研究所梅隆大学软件工程研究所(SEI)领导开发,领导开发, 于于1995年推出。年推出。 PSPPSP是一种可用于控制、管理和改进个人工作方式的自我改善是一种可用于控制、管理和改进个人工作方式的自我改善 过程,是一个包括软件开发表格、指南和过程的结构化框架。过程,是一个包括软件开发表格、指南

55、和过程的结构化框架。 PSPPSP能够指导软件开发人员保证自己的工作质量,估计和规划能够指导软件开发人员保证自己的工作质量,估计和规划 自身的工作、度量和追踪个人表现,管理自身的软件过程和产自身的工作、度量和追踪个人表现,管理自身的软件过程和产 品质量。品质量。 注:据统计,软件项目开发成本的注:据统计,软件项目开发成本的7070取决于软件开发人员个人取决于软件开发人员个人 的技能、经验和工作习惯。的技能、经验和工作习惯。 PSP与具体的技术与具体的技术( (程序设计语言、工具或者设计方法程序设计语言、工具或者设计方法) )相对独相对独 立,其原则能够应用到几乎任何的软件工程任务之中。包括:立

56、,其原则能够应用到几乎任何的软件工程任务之中。包括: 能够说明个体软件过程的原则;能够说明个体软件过程的原则; 帮助软件工程师做出准确的计划;帮助软件工程师做出准确的计划; 确定软件工程师为改善产品质量要采取的步骤;确定软件工程师为改善产品质量要采取的步骤; 建立度量个体软件过程改善的基准;建立度量个体软件过程改善的基准; 确定过程的改变对软件工程师能力的影响。确定过程的改变对软件工程师能力的影响。 CMM CMM 侧重于软件企业中有关软件过程的宏观管理,面向软件开侧重于软件企业中有关软件过程的宏观管理,面向软件开 发单位。发单位。PSP PSP 则侧重于企业中有关软件过程的微观优化,面向则侧

57、重于企业中有关软件过程的微观优化,面向 软件开发人员。二者互相支持,互相补充,缺一不可。类似于软件开发人员。二者互相支持,互相补充,缺一不可。类似于 CMM CMM,PSPPSP为个体的能力也提供了一个阶梯式的进化框架为个体的能力也提供了一个阶梯式的进化框架说明:说明: PSP PSP由由4 4级组成,每一级都试级组成,每一级都试图指出过程缺陷并提供解决方图指出过程缺陷并提供解决方法。法。PSPPSP以循序渐进的方法介以循序渐进的方法介绍过程的概念,每一级别都包绍过程的概念,每一级别都包含了更低一级别中的所有元素,含了更低一级别中的所有元素,并增加了新的元素。并增加了新的元素。 个体度量过程(

58、个体度量过程(PSPOPSPO) 学会通过表格采集项目开发活动中的各种数据,建立度量基线。学会通过表格采集项目开发活动中的各种数据,建立度量基线。记录问题和具体分析解决问题的措施,提高个体的质量意识和过程记录问题和具体分析解决问题的措施,提高个体的质量意识和过程意识。意识。 个体规划过程(个体规划过程(PSP1PSP1) 引入了基于估算的计划方法,用自己的历史数据来预测新程序的引入了基于估算的计划方法,用自己的历史数据来预测新程序的大小和需要的开发时间。大小和需要的开发时间。 个体质量管理过程(个体质量管理过程(PSP2PSP2) 建立自己程序的质量目标,根据程序允许的缺陷率来建立检测表,建立

59、自己程序的质量目标,根据程序允许的缺陷率来建立检测表,按照检测表进行设计复查和代码走查,将流入到集成和系统测试阶按照检测表进行设计复查和代码走查,将流入到集成和系统测试阶段的缺陷控制在一定范围内。段的缺陷控制在一定范围内。 个体循环过程(个体循环过程(PSP3PSP3) 把个体开发小程序所能达到的生产效率和生产质量,延伸到大型把个体开发小程序所能达到的生产效率和生产质量,延伸到大型程序;其方法是采用螺旋式上升过程,即迭代增量式开发方法。首程序;其方法是采用螺旋式上升过程,即迭代增量式开发方法。首先把大型程序分解成小的模块,然后对每个模块按照先把大型程序分解成小的模块,然后对每个模块按照PSP2

60、PSP2所描述的所描述的过程进行开发,最后把这些模块逐步集成为完整的软件产品。应用过程进行开发,最后把这些模块逐步集成为完整的软件产品。应用PSP3PSP3开发大型软件系统,必须采用增量式开发方法,并要求每一个开发大型软件系统,必须采用增量式开发方法,并要求每一个增量都具有很高的质量。增量都具有很高的质量。 三、三、 TSPTSP 1.TSP: Team Software Process 1.TSP: Team Software Process (团队软件过程)的缩写(团队软件过程)的缩写 其中:其中: 它是由美国卡耐基它是由美国卡耐基梅隆大学软件工程研究所梅隆大学软件工程研究所(SEI)(S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论