浅谈EssUP--核心统一过程

    很久没来写点东西了,正好前些天参加了雅格布森博士主持,CSDN主办的“最佳实践大会”,并有幸和我心目中的偶像聊了聊,最让我感动的是他的哪种对科学的执着精神,因为以他目前的财力,他可以过上他任何想要的生活,但是他那么大年纪了,对科学的热爱却丝毫不减。境界啊。。。

    另外,雅格布森博士非常的好接触,先给大家一张照片Show一下,^_^

   

     当然更多的感受是是他渊博的知识,那些最前沿的思想给我带来了很大启发,下面将雅格布森博士博士最新的EssUP带给大家一起来分享一下,资料来源于雅格布森博士的论文,有些地方我添加了一些总结和观点,写的不好请大家多多谅解,只当是抛砖引玉吧,^_^

 

EssUP ――核心统一过程
                  一个全新过程的开始
核心统一过程(EssUP)创建于Ivar Jacobson,他是现代软件的很多方面的大师,EssUP整合了来自三大阵营的最佳实践――UP阵营、敏捷阵营和过程改进阵营。
 
每个人都意识到对改进软件开发的过程的需要。每个人也都意识到对敏捷、灵活性和适应性的需要。并且每个人也都同意对质量的需要。但是很多人都认为现有的过程过于繁琐,制约和阻碍了我们的创造性。

      现在,开发者们已经厌烦了过程。UP过程变得越来越沉重,过程的改进也充斥着过多的让人厌烦的工作。但是,我们都知道,我们还是需要好的实践来让我们在规定的时间和预算内开发出良好的软件。总之,我们必须从根本上重新整合过程的设计、配置、教授、采纳和部署。

EssUP(核心统一过程)

EssUP是一个以现代软件开发实践为基础的全新的过程,被称为第三代软件开发过程,它整合了来自三大阵营成功的实践――统一过程阵营、敏捷方法阵营、过程改进阵营。其中主要包括关注点分离(SOC),它源于面向方面的软件开发(AOSD)思想;还包括用例驱动的软件开发(UDD),它则有点属于敏捷阵营的思想,但目前软件开发过程中,对用例的使用以远远超过了这个范围;而统一过程思想(UP)则提供了宝贵的基础实践的积累。

       那么我们为什么需要一个新的过程,原因如下:

·         传统的软件过程太过沉重,几乎没人去读那些又大又长过程描述。

·         过程必须聚焦于开发者角度,而不应该仅仅是过程专家。

·         过程必须有助于团队获得产品质量以及过程质量;这就意味着不仅仅要通过CMMI的评价,而且要必须交付好的软件。任何软件开发过程必须把重点放在生产优质软件上。

·         过程必须提供纪律基础上的敏捷,平衡管理和创新。

·         方法必须让项目团队(没有过程工程师的帮助下)很容易的在他们现有的过程上添加好的实践。

·         过程应该授权与团队。

EssUP中包括8个核心的实践,其中五个是软件工程方面的实践,另外3个是科学工程实践、过程实践和组织实践,详细如下图所示:

      

新的变化:实践成了一等公民

       首先看一下什么是实践?

·         实践首先必须有一个清楚的开始和结束,并且可以单独的被使用

·         实践可能是如迭代开发、用例驱动开发、结对编程等。

·         实践必须是易分离,易组合的。

传统的过程(如RUP)包含了不同的活动和工件,这些活动和工件可能服务不同的目标--使用用例做需求分析、测试驱动的设计、或者基于组件的开发等。这些实践不是清楚的、可见的,并且没有一个名字。这个过程就像“实践的一锅粥”。

为了更简单的识别、设计和配置一个新的实践,我们需要让实践成为一等公民。过程是我们所选择的实践进行组合的结果。为了使这些成为可能,我们需要能够在设计、配置和改进的过程中分离出不同的实践。

在这点上,在表现上EssUP和其它的过程或方法是非常不同的。在面向方面理论的基础下,它实现了一个新的过程工业化思想――关注点分离(SOC)。当我们应用这个思想去进行过程的开发的时候,我们得到了一个根本不同的过程――一个使用非常简单和更直观的过程剪裁方法。更重要的是,它使计划和执行一个软件项目更加自然和直观。举例说明一下,下面就是使用关注点分离(SOC)思想后的一些情况:

·         每个实践都和其它的实践保持分离。除了出去那些不必要的活动和制品之外,你可以仅仅选择你需要的实践。你可以单独使用你选择的实践,也可以和你现有的实践进行组合使用。

·         你可以很容易的分离现存的过程中的元素和从EssUP中来的元素。这可以让你每次以进化的方式来改进你现有的实践。

从一个通用的平台,你可以使用一些简单的,源自于游戏产业的技巧来描述你自己的过程。在此基础上,你可以添加你自己的实践,而不用全盘接受所有的实践。除了规避重大的风险之外,你可以仅仅采用你需要的和你的组织可以接受的那些实践。

·         EssUP分为两个不同的过程视图――过程制定者视图和软件开发者视图。在过去,过程完全集中在过程制定者的需要,而EssUP则优先考虑开发者的需要。它使用一些源自于游戏产业的技巧去开发、指导、运用和使用,从而使得过程更加的轻量级和敏捷。并且,我们保证,会越来越有趣。

·         我们要分离开必要的和不必要的。这让我们可以创建一个有着史无前例的增长潜能的、核心的、轻量级的过程。

在过去的几年中,我们了解到,无论是在书里还是在网上,很少有人真正的去读那些过程的资料。因此,我们不应该给开发者一些他们不愿意接受的或无用的信息,而应该提供给他们一些核心的、本质的信息。想了解和学习这些,现在已经可以找到很多相关的书籍和文章,或者向一些有这方面经验的人去学习。通过这些有效的分离,就可以使过程更加轻量级,并且更容易采纳和改变。

·         EssUP用一种均衡的方法,区分开了什么是显式的知识,什么是隐性的知识。隐性的知识是你通过其它途径已经获得的知识――它存在你的大脑里,而显式的知识则表现为那些对你有意义的描述。

在过去,过程曾视图以一种简明的形式来捕获那些所有相关的知识。虽然这是一个良好的愿望,但它使得过程非常沉重。而EssUP则只选择那些核心的、清楚的元素,去掉了那些无关的和隐性的元素。不过, 当我们需要的时候,处理这些元素最优雅的方式就是通过智能代理,我们所谓的“聪明的实践”,这些聪明的实践现在就可以在Jaczone (www.jaczone.com)上的Waypointer软件里找到。

·         EssUP打算将创新的工作和体力劳动区别开,这让你可以花费你的时间在人类最擅长的活动――创新上,而把那些体力劳动完全交给智能代理去做。我们用了“准备”这个词,是因为EssUP还没有把代理完全整合进去,代理仍然以附件形式存在。

·         EssUP分为两种类型的制品――alphas版和betas版。我们还没有给它任何的名字,我们认为alphas版和betas版之间的区别在于,哪一个在所有项目中是更基础的,暂时的你可以称alphas版为“关键点”,betas版为“关键点的证据”。

alphas版是软件项目中最重要的东西,无论它是否存在于具体的描述中。事实上,alphas版不特定于任何特殊的过程。举例来说,每一个软件项目都有alphas版,如项目、实现的系统、订货和风险等。每一个alpha版都有一系列的betas版,如一个项目alpha版中,可能会有一个项目计划,一个迭代计划,风险的风险列表,订货的特点列表和变更列表。

betas版是alpha版的验证。他们可以用图、工作流、你喜欢的文档形式来描述,或者根本就没有文档来描述,没有文档意思就是你的团队把这些知识都保存在大脑里。

alphas版是稳定的并且过程是独立的,betas版则可以根据你选择不同的实践而不同。alphas版和betas版的分离可以让你保持最少量的项目文档。你可以用一个精确的办法来讨论到底需要多少文档。这让你在遵守纪律的基础上变得敏捷,你可以分离出哪些是必要的,哪些是非必要的。

过程的基础

EssUP的核心包括了一系列简单的并且被验证过的实践,这些实践可以被用作所有类型和精度的软件的开发过程。这些实践可以被单独的使用,也可以以你期望的组合的方式使用。这使得过程更容易被采纳,并且为你创建和装配一个你真正需要的、开发者需要的、开发团队需要的过程提供了一个基础。

EssUP由五个基础的实践和三个适用于团队工作的实践组成。五个基础的实践用于技术开发的工作,它完善了提供给开发实践的技术基础。其它的三个实践则促进了有效的团队工作和过程改进。

测试是无处不在的。我们相信,就像所说的“不管你做什么,你都应该做到直到你已经验证了你做的是你想做的”,或者“每个人都是他自己的清洁工”。我们让测试成为我们做的所有事情的一部分。用例的核心包括了测试用例的设计,测试用例是以用例为基础的。组件的核心包括组件的单元测试。

这系列的实践为你采用敏捷的方法去处理计划和实现打下了基础。你可以采纳所有的实践,或仅仅是你需要的实践,或个别的实践,或实践的一部分。你可以混合和匹配实践使之满足你的需要,写你自己的实践来扩展过程,并且可以混入以你自己的经验得来的实践。这和传统的过程有着很大的不同,因为传统的过程使所有的实践紧密的交织在一起。

来自本源的新方法

这种对过程的改变有助于达到关注点分离,并且用一个全新的方法代表了过程的本身。

每个实践被做成了一套过程卡片,它们包括了你制定你的过程的所有元素,包括能力参考、活动和制品。这些卡片帮助你制定和使用过程。并且使的过程本身变得敏捷和容易使用。这些卡片代替了电子文档,它们使过程的采纳、项目的计划更加容易操作,并且为从业者提供了方便的参考。卡片给过程带来了活力,并且比用Web站点和书本展示带来更好的可视化效果。

1是一个用例的核心实践的例子。图1a)是一个制品卡,1b)是一个活动卡,1c)是一个能力参考卡。每种卡有一个2-4页的指导(2),这些指导说明了将这些卡付诸实施所必须的基本信息。他们还联系到一些更广泛的参考,脚本工具,模板,例子。例如,活动的指导包括了介绍,参与者信息,完成标准,和一系列为了避免一般错误的提示。这些信息提供给你一些必要的实践过程中的指导和建议。    

[Click image to view at full size]

 

Figure 2: Guidelines.

(a)

 

 

(b)



(c)

 

Figure 1: (a) Artifact card; (b) activity card; (c) competency card.

过程怎么打包?

在指南的帮助下,我们可以用一系列基础实践的集合来制定过程,并把它记录到卡上。基础实践可以使用支持包来扩展。这些支持包是为了满足你自己的特殊需要,你可以自己写,并且可以提供给其它人使用。它们可以包括如面向服务架构(SOA),业务建模,企业架构(EA),结对编程,过程改进等你喜欢的元素。

这些卡有许多不同的用途。例如,它们可以被用来:

·         建立支持你项目的模版。

·         创建新的过程元素或组合现有过程卡来适应项目成员的工作。

·         很多卡本身就是项目中一些可交付的内容和任务。

·         在卡上可以添加你自己项目相关的注释。

·         捕获一些可以用在你的实现上的数据。

·         把这些卡交给项目组,提供一些他们需要的过程信息。

·         在卡上项目组成员可以记录自己的相关信息或者备忘。

·         卡可以在你团队内部交换观看。

·         为了支持你自己的环境,你可以创建一些新卡。

尽管这三个适合团队工作的实践已经涵盖了产品要素,过程要素,团队要素,但过程指导给你以一个敏捷办法,它让你可以轻松的在你的项目团队里使用这些卡片。这些卡你可以使用实际的卡片或者电子形式的都可以。过程可以帮助你在团队环境下更好的完成工作。过程可以紧密的整合到微软的Visual Studio团队工作系统中,并且可以应用到Eclipse过程框架中。

在你的卡上有很多卡通形象,附带的一些文字可以给你一些直接的帮助和指导。这些都可以是实际的卡片或者是电子介质形式的。

怎么实现过程?

你可以通过在一段时间内循序渐进的提高现有的过程来实现过程。你可以在没有重大风险的情况下,采用你所需要的过程元素和你认为你组织可以接受的过程元素。你可以先给项目组一些他们需要重点关注的元素的卡。卡包括一些核心的信息,并且可以由项目经理加入一些项目的特殊指示。在过去,过程基本上是聚焦在过程制定者需要上。而EssUP则更注重于从开发者的角度出发。这些技术可以用于开发,教育,运用,并且可以让这些活动变得更轻量级和敏捷。

EssUP三大精髓:

      ·         迭代(计划、任务)。

      ·         SOC(关注点分离)。

      ·         最小化。

工具

       EssWork是实现EssUP的一个基础框架,其相关内容可以在www.ivarjacobson.com找到,其核心如下图所示:

      

结束语

核型统一过程:

·         聚焦于核心,普遍适用于所有项目。

·         建立于你已经拥有的技能上。

·         提供贯彻一致的指导方针。

·         重点放在提高项目相关人员的技能。

·         添加足够的过程来规避项目风险。

我们的长期目标是,帮助人们从每个人被强制去考虑过程的“过程”时代,过渡到我们不需要去特别考虑过程的“无形的过程”时代。

===============完===============

有点累啊,以上的内容希望能给大家带来一点点参考,一点点我觉得就满足了,^_^

下面有我的联系方式,希望能在这里找到更多的志同道合的朋友,大家一起交流,一起进步。

声明:如有转载,请注明出处。

自我简介

中文名字:黄志远 

英文名字:Gary Huang

行业:计算机软件

职位:技术总监、首席架构师

职业专长:RUP、UML、AOSD、J2EE系统架构

     职业概述:工作内容包括RUP、UML、AOSD、J2EE系统架构、最佳实践;

     E-Mail:h_wolf2000@sohu.com

     QQ:9122399

     MSN:huang_zhiyuan@hotmail.com

     顺便预告一下下一篇文章:浅谈AOSD面向方面软件开发思想。

 

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值