过程改进 RUP Scrum XP 敏捷与 UCM 之学习小结

xiaoxiang7788 · 发布于 2010年06月12日 · 75 次阅读
96

[b][font=宋体]什么是[/font][font=Times New Roman]RUP[/font][/b][b][font=宋体]?[/font][/b] [font=Times New Roman][/font] [font=Times New Roman]RUP[/font][font=宋体]([/font][font=Times New Roman]Rational Unified Process[/font][font=宋体],统一软件开发过程,统一软件过程[/font][font=Times New Roman])[/font][font=宋体]是一个面向对象且基于网络的程序开发方法论。根据[/font][font=Times New Roman]Rational(Rational Rose[/font][font=宋体]和统一建模语言的开发者[/font][font=Times New Roman])[/font][font=宋体]的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。[/font][font=Times New Roman] RUP[/font][font=宋体]和类似的产品[/font][font=Times New Roman]--[/font][font=宋体]例如面向对象的软件过程([/font][font=Times New Roman]OOSP[/font][font=宋体]),以及[/font][font=Times New Roman]OPEN Process[/font][font=宋体]都是理解性的软件工程工具[/font][font=Times New Roman]--[/font][font=宋体]把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内。[/font] [font=Times New Roman]RUP[/font][font=宋体]中的软件生命周期在时间上被分解为四个顺序的阶段,分别是[/font][font=Times New Roman]:[/font][font=宋体]初始阶段([/font][font=Times New Roman]Inception[/font][font=宋体])、细化阶段([/font][font=Times New Roman]Elaboration[/font][font=宋体]),构造阶段([/font][font=Times New Roman]Construction[/font][font=宋体])和交付阶段([/font][font=Times New Roman]Transition[/font][font=宋体])。每个阶段结束于一个主要的里程碑,每个阶段是两个里程碑之间的时间跨度。在每个阶段的结尾招待一次评估以确定这个阶段的目标是否已经满足,如果评估结果令人满意的话,可以允许项目进入下一个阶段。[/font] [font=Times New Roman]RUP[/font][font=宋体]具有两个轴,一个是时间轴,动态的;另一个是工作流轴,静态的。时间轴上,分四个阶段:初始阶段,细化阶段,构造阶段和发布阶段,每个阶段都使用了迭代的概念;在工作流轴上,[/font][font=Times New Roman]RUP[/font][font=宋体]设计了六个核心工作流程和三个核心支撑工作流程,核心工作流轴包括:业务建模工作流,需求工作流,分析设计工作流,实现工作流,测试工作流和发布工作流;核心支撑工作流包括:环境工作流,项目管理工作流和配置与变更管理工作流。[/font] [font=宋体]摘自:[/font][url=http://baike.baidu.com/view/491030.htm?fr=ala0_1font=Times][ New Roman] http://baike.baidu.com/view/491030.htm?fr=ala0_1 [/font][/url] [font=Times New Roman][/font] [font=Times New Roman]RUP[/font][font=宋体]([/font][font=Times New Roman]Rational Unified Process[/font][font=宋体],[/font][font=Times New Roman]Rational [/font][font=宋体]统一过程),是一种被广泛使用的软件过程框架。简单说,RUP是由一组最佳实践组成的迭代的和适应性过程,例如迭代开发和配置管理。进一步说,它是灵活的和面向结果的。在它的主要结构中,采用了很多有用的实践,诸如[/font][font=Times New Roman]DSDM[/font][font=宋体],[/font][font=Times New Roman]Evo[/font][font=宋体],[/font][font=Times New Roman]Scrum[/font][font=宋体],和[/font][font=Times New Roman]XP[/font][font=宋体]。[/font] [b][font=Times New Roman][/font][/b] [b][font=宋体]什么是[/font][font=Times New Roman]Scrum?[/font][/b] [font=Times New Roman]Scrum[/font][font=宋体]是一种灵活的软件管理过程,它可以帮助你驾驭迭代,递增的软件开发过程。[/font][font=Times New Roman]Scrum[/font][font=宋体]于[/font][font=Times New Roman]1995[/font][font=宋体]年由[/font][font=Times New Roman]Advanced Development Methodologies,Inc[/font][font=宋体]提出,并在[/font][font=Times New Roman]2001[/font][font=宋体]年“敏捷联盟([/font][font=Times New Roman]Agile Alliance[/font][font=宋体])”形成后受到了更多欢迎。这个轻量的过程可以作为包装器,也就是说你可以把[/font][font=Times New Roman]Scrum[/font][font=宋体]与其它灵活的过程框架组合起来,比如说[/font][font=Times New Roman]RUP[/font][font=宋体]。[/font][font=Times New Roman] [/font] [font=Times New Roman][/font] [font=Times New Roman]Scrum[/font][font=宋体]提供了一种经验方法,它使得团队成员能够独立地,集中地在创造性的环境下工作。[/font][font=Times New Roman]Scrum[/font][font=宋体]认为软件的开发不应使用和一般制造业相同的方法,也就是不应采用一种反复的模式。这种重复使得输入和输出参数更加容易预测和描述,但这并不是当今软件工程的有益目标。现代软件工程的主要挑战包括上市时间,投资回报,以及影响顾客的需要等。[/font][font=Times New Roman]RUP[/font][font=宋体]和其他敏捷软件工程过程能够很好地迎接这些挑战。[/font] [font=Times New Roman][/font] [font=宋体]在任何现代软件开发项目中都会出现变更(变化应该是受到欢迎的!),但是[/font][font=Times New Roman]Scrum[/font][font=宋体]管理者不会为了引入发生在达成共识的目标上的变更而打断一个“疾跑”周期。他们抓住需要的变化,在本次“疾跑”结束时提出它们作为下一系列目标的一部分。这对[/font][font=Times New Roman]Scrum[/font][font=宋体]的“疾跑”来说是最关键的。团队与外界隔离开工作,不予许变化影响当前的“疾跑”。否则,迭代开发的领域(“疾跑”的目标)的不断调整将会导致团队失去中心,不能很好完成疾跑伊始确定的功能目标。[/font] [font=宋体]摘自:[/font][url=http://www.uml.org.cn/softwareprocess/200803194.aspfont=Times][ New Roman] http://www.uml.org.cn/softwareprocess/200803194.asp [/font][/url] [font=Times New Roman][/font] [b][font=宋体]什么是敏捷?[/font][/b] [font=Times New Roman][/font] [font=宋体]“什么是敏捷开发?它是一种开发方法学([/font][font=Times New Roman]Methodology[/font][font=宋体]),可以应对客户快速变更的需求。它强调以人为核心,采用迭代的方式,循序渐进地开发软件。在敏捷开发过程中,软件项目被划分成多个相互联系但也能独立运行的子项目。这就使得每个子项目在开发、测试直至完成的过程中一直保持可使用的状态。这个过程实际上就是要形成开发过程中团队之成员之间更加有效的合作关系,使其灵活性更高,以适应不断变化的需求。敏捷开发过程与传统开发过程的最大的不同之处在于,在敏捷开发过程中,团队是有激情、有活力的,能够适应更大的变化,生产出更高质量的软件。”[/font] [font=Times New Roman][/font] [font=宋体]敏捷开发方法的核心思想概括起来就是“适应变化”和“以人为本”。敏捷开发的核心原则主要包括如下几项:交付频繁;快速原型;强调变更;构建环境支持;交流频繁;迭代开发;快速反馈。[/font] [font=Times New Roman][/font] [font=宋体]敏捷开发的核心特征又包括如下几项:[/font] [font=宋体]交付频繁 [/font][font=Times New Roman]--->[/font][font=宋体]给开发者足够自由度[/font] [font=宋体]快速原形 [/font][font=Times New Roman]--->[/font][font=宋体]用户参与[/font] [font=宋体]强调变更 [/font][font=Times New Roman]--->[/font][font=宋体]变更频繁[/font] [font=宋体]构建环境支持[/font][font=Times New Roman] --->[/font][font=宋体]应用合理架构(比如[/font][font=Times New Roman]CI[/font][font=宋体])[/font] [font=宋体]交流频繁 [/font][font=Times New Roman]--->[/font][font=宋体]交流平台[/font] [font=宋体]迭代开发 [/font][font=Times New Roman]--->[/font][font=宋体]使用简单的工具[/font] [font=宋体]快速反馈 [/font][font=Times New Roman]--->[/font][font=宋体]反馈机制[/font] [font=宋体]摘自:[/font][url=http://www.uml.org.cn/softwareprocess/201005113.aspfont=Times][ New Roman] http://www.uml.org.cn/softwareprocess/201005113.asp [/font][/url] [font=Times New Roman][/font] [b][font=宋体]什么是极限编程([/font][font=Times New Roman]XP[/font][/b][b][font=宋体])?[/font][/b] [font=宋体]极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。[/font][font=Times New Roman]XP[/font][font=宋体]是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。[/font] [font=宋体]摘自:[/font][url=http://baike.baidu.com/view/259207.htm?fr=ala0_1_1font=Times][ New Roman] http://baike.baidu.com/view/259207.htm?fr=ala0_1_1 [/font][/url] [b][font=宋体][/font][/b] [b][font=宋体]什么是[/font][font=Times New Roman]UCM[/font][/b][b][font=宋体]?[/font][/b] [font=Times New Roman]UCM[/font][font=宋体]已成为[/font][font=Times New Roman]Rational[/font][font=宋体]用于软件开发最佳实践的全面框架[/font][font=Times New Roman]--Rational[/font][font=宋体]统一过程([/font][font=Times New Roman]RUP[/font][font=宋体])的关键组成部分[/font][font=Times New Roman].[/font][font=宋体]根据软件开发团队的具体需要,可以使用相应的过程模型来加速软件开发进度,提高软件质量并优化开发过程。[/font] [font=Times New Roman][/font] [font=Times New Roman]UCM[/font][font=宋体]使得团队从更高层次,根据活动来管理变更。一个开发活动可以自动的同其变更集相关联,避免了管理人员手动跟踪所有文件变更。[/font] [font=Times New Roman][/font] [font=Times New Roman]UCM[/font][font=宋体]是一个[/font][font=Times New Roman]model[/font][font=宋体],他的意义在于建立了动态的工件和开发活动的关联及统一管理,贯穿软件开发的始终,实现了对开发过程真正意义上的变更管理(包括软件资产变更和开发活动变更),这个模型的实现主要来自于过程和工具两个方面的,因此仅仅把工具集成使用就是[/font][font=Times New Roman]UCM[/font][font=宋体]的观点其实是一种误解。[/font] [font=Times New Roman][/font] [font=Times New Roman]UCM[/font][font=宋体]模型是软件开发中变更管理的一种方法,是使用[/font][font=Times New Roman]CC[/font][font=宋体]来进行版本控制和配置管理的一种模式,核心是基于活动和流的变更及配置管理,为开发者提供独立的工作空间,更加有利于并行开发模式,任务清晰,方便项目整合,易于追踪变更记录。[/font] [font=Times New Roman][/font] [b][font=宋体]他们的关系[/font][/b] [font=宋体]通过几天的资料学习,我个人理解如下,如有不正确的还请指正。鄙人不胜感激。[/font] [font=Times New Roman][/font] [font=宋体]我以建楼房来比喻我理解的[/font][font=Times New Roman]RUP[/font][font=宋体],[/font][font=Times New Roman]Scrum[/font][font=宋体],敏捷,[/font][font=Times New Roman]XP[/font][font=宋体]和[/font][font=Times New Roman]UCM[/font][font=宋体]之间的关系。[/font] [font=Times New Roman][/font] [font=Times New Roman]1[/font][font=宋体]:[/font][font=Times New Roman]RUP[/font][font=宋体]([/font][font=Times New Roman]Rational[/font][font=宋体]统一过程)是一种软件工程框架,分为了四个阶段,九个流程。就像是建楼房搭架子,架子选好了,搭起来了,要建什么样的楼房,还不能确定。[/font][font=Times New Roman]RUP[/font][font=宋体]就像是软件工程里的一个指导者。[/font] [font=Times New Roman][/font] [font=Times New Roman]2[/font][font=宋体]:[/font][font=Times New Roman]Scrum[/font][font=宋体],敏捷和[/font][font=Times New Roman]XP[/font][font=宋体]是软件工程或者软件过程又或者软件开发过程的方法。也即建楼房所采用的材料,想用砖头,还是用水泥刚筋,还是用土坯。[/font][font=Times New Roman]Scrum[/font][font=宋体]里面有一个概念叫“疾跑”,好像任何需求的变更都不可以影响这个“疾跑”的时间进度,但同时还需要考虑变更进入下一个“疾跑”阶段;敏捷则是以人为本,去适应变化的原则,欢迎变更,迭代开发,但同时变更又需要有个度(包括变更量,[/font][font=Times New Roman] [/font][font=宋体]变量程度,变更时间,开发进度等),从而实现开发人员的快乐开发;[/font][font=Times New Roman]XP[/font][font=宋体]则是以注重用户反馈为主。[/font] [font=Times New Roman][/font] [font=Times New Roman]3[/font][font=宋体]:[/font][font=Times New Roman]UCM[/font][font=宋体]([/font][font=Times New Roman]Unified Change Management[/font][font=宋体])模型是[/font][font=Times New Roman]Rational[/font][font=宋体]管理软件开发中变更管理的一种方法,是使用[/font][font=Times New Roman]CC[/font][font=宋体]来进行版本控制和配置管理的一种模式,核心是基于活动和流的变更及配置管理,为开发者提供独立的工作空间,更加有利于并行开发模式,任务清晰,方便项目整合,易于追踪变更记录。[/font][font=Times New Roman]UCM[/font][font=宋体]在建楼房的角色分类中就好像是工程监工,监工负责管理材料,材料的使用状况,并记录材料用在了哪里,从而可以更好的保障楼房建设顺利的进行。[/font] [font=Times New Roman][/font] [b][font=宋体]学习小结[/font][/b] [font=宋体]以下几条是我个人对他们做的区分:[/font] [font=Times New Roman][/font] [font=Times New Roman]1[/font][font=宋体]:[/font][font=Times New Roman]UCM[/font][font=宋体]是一种模型,是[/font][font=Times New Roman]RUP[/font][font=宋体]框架的关键组成部分。[/font][font=Times New Roman]UCM[/font][font=宋体]是统一变更管理,而[/font][font=Times New Roman]RUP[/font][font=宋体]是[/font][font=Times New Roman]Rational Unified Process[/font][font=宋体]统一开发过程。一个是强调变更过程,而另一个则偏重于开发过程。[/font] [font=Times New Roman][/font] [font=Times New Roman]2[/font][font=宋体]:[/font][font=Times New Roman]UCM[/font][font=宋体]是一种模型,强调变更过程,而敏捷则是一种软件开发方法,强调开发。[/font] [font=Times New Roman][/font] [font=Times New Roman]3[/font][font=宋体]:[/font][font=Times New Roman]UCM[/font][font=宋体]是统一变更管理过程,故[/font][font=Times New Roman]UCM[/font][font=宋体]适用于[/font][font=Times New Roman]RUP[/font][font=宋体]和敏捷开发,而迭代开发是[/font][font=Times New Roman]RUP[/font][font=宋体]开发的一个核心原则。[/font] [font=Times New Roman][/font] [font=Times New Roman]4[/font][font=宋体]:[/font][font=Times New Roman]UCM[/font][font=宋体]适用于[/font][font=Times New Roman]RUP[/font][font=宋体]框架,适用于[/font][font=Times New Roman]xp, scrum, [/font][font=宋体]敏捷等其它开发过程,我的体会是[/font][font=Times New Roman]UCM[/font][font=宋体]注重关联性及统一性;关联是指开发活动与配置库工件的关联,统一性是指开发活动与变更的统一。[/font] [font=Times New Roman][/font] [font=Times New Roman]5[/font][font=宋体]:[/font][font=Times New Roman]CC/CQ [/font][font=宋体]一个[/font][font=Times New Roman]UCM[/font][font=宋体]模型的建立,包括了人,过程和工具,符合软件过程三要素。但并不是说[/font][font=Times New Roman]CC[/font][font=宋体]和[/font][font=Times New Roman]CQ[/font][font=宋体]集成以后就是[/font][font=Times New Roman]UCM[/font][font=宋体]模型,因为这只符合了工具;即使不做[/font][font=Times New Roman]clearcase[/font][font=宋体]跟[/font][font=Times New Roman]clearquest[/font][font=宋体]的集成一样可以在[/font][font=Times New Roman]clearcase[/font][font=宋体]中使用[/font][font=Times New Roman]UCM projcet[/font][font=宋体]、创建[/font][font=Times New Roman]UCM [/font][font=宋体]对象,只是关联活动的控制无法使用到[/font][font=Times New Roman]ClearQuest[/font][font=宋体]中的功能特性了。[/font] [font=Times New Roman][/font] [font=Times New Roman]6[/font][font=宋体]:即使一起使用了[/font][font=Times New Roman]clearcase[/font][font=宋体]和[/font][font=Times New Roman]clearquest[/font][font=宋体],在[/font][font=Times New Roman]clearcase[/font][font=宋体]当中采用的是[/font][font=Times New Roman]base VOB[/font][font=宋体]对软件资产进行配置管理,在[/font][font=Times New Roman]ClearQuest[/font][font=宋体]当中仅仅是对活动进行单独管理也不能称之为[/font][font=Times New Roman]UCM[/font][font=宋体]。[/font] [font=Times New Roman][/font] [font=宋体]不要把[/font][font=Times New Roman]RUP[/font][font=宋体]同敏捷,[/font][font=Times New Roman]XP[/font][font=宋体],[/font][font=Times New Roman]Scrum[/font][font=宋体]混为一谈。[/font]

[[i] 本帖最后由 xiaoxiang7788 于 2010-6-12 13:48 编辑 ]

共收到 1 条回复
4
laofo · #1 · 2010年06月12日

hehe

小子最近很UCM嘛

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册