什么是实践(类似于SOA中的服务)?
-
实践是自治的,不依赖于其他实践,可以单独被使用。
-
实践是可组合的,只要有需要它就能成为其他实践组合的有效成员。
-
实践是指Use Case、迭代、建模等活动。
传统的过程(如RUP和敏捷方法)包含了不同的活动和工件,这些活动和工件可能服务于不同的目标--使用Use Case做需求分析、测试驱动的设计、基于组件的开发、结对编程等。这些实践不是清楚的、可见的,并且没有进行命名。这个过程就像“实践的一锅粥”。
为了更简单的识别、设计和配置一个新的实践,我们需要让实践成为一等公民。过程是我们所选择的实践进行组合的结果。为了使这些成为可能,我们需要能够在设计、配置和改进的过程中分离出不同的实践。
EssUP通过给过程工业引入了一种新的思想:关注点分离(Separation of Concerns :SOC或面向方面的思想),从而使其在表现形式与其它过程或者方法有了很大的区别。当我们在过程开发中使用这种思想时,我们就能生成一个本质上不一样的过程。这样一个过程使得您可以更容易、更直观地定制您自己的软件过程。最重要的是她可以使计划和执行一个软件项目更加自然和直观。
为了使这样的思想更形象,我们在下面描述一些使用SOC思想后的情况:
1、
每一个实践都独立于其它实践。您可以仅仅选择您需要的实践,而不必取消那些不必要的活动和制品。你可以单独使用你选择的实践,也可以和你现有的实践进行组合使用。
2、
你可以很容易地从现有的过程中以及核心统一过程(EssUP)中分离出各种元素。这个特性允许您在需要时以一种进化的方式改进已有的实践。
从一个通用的平台开始,您可以使用一种源于纸牌游戏的简单技巧来描述您自己的过程。在此基础上,您可以自由灵活地导入你自己的实践,而不用全盘接受所有的实践。你可以仅仅采用你需要的和你的组织可以接受的那些实践,却不需要承担巨大的风险。
3、
EssUP分为两个不同的过程视图――过程制定者视图和软件开发者视图。在过去,过程完全集中在过程制定者的需要,而EssUP则优先考虑开发者的需要。它使用一些源自于游戏产业的技巧去开发、指导、运用和使用,从而使得过程更加的轻量和敏捷。并且,我们保证,会越来越有趣。
4、
我们把实践区分为核心的实践和非核心的实践。这使得我们可以创建一个核心的轻量级过程,同时这个过程有着很大的增量空间(比如上百个实践)。
在过去的几年中,我们了解到,无论是在书里还是在网上,很少有人真正的去读那些过程的资料。因此,我们不应该给开发者一些他们不愿意接受的或无用的信息,而应该提供给他们一些核心的、本质的信息。想了解和学习这些,现在已经可以找到很多相关的书籍和文章,或者向一些有这方面经验的人去学习。通过这些有效的分离,就可以使过程更加轻量级,并且更容易采纳和改变。
5、
EssUP用一种均衡的方法,区分开了什么是显式的知识,什么是隐性的知识。隐性的知识是你通过其它途径已经获得的知识――它存在你的大脑里,而显式的知识则表现为那些对你有意义的描述。
在过去,过程曾试图以一种简明的形式来捕获那些所有相关的知识。虽然这是一个良好的愿望,但它使得过程非常沉重。而EssUP则只选择那些核心的、清楚的元素,去掉了那些无关的和隐性的元素。不过, 当我们需要的时候,处理这些元素最优雅的方式就是通过智能代理,我们所谓的“聪明的实践”,这些聪明的实践现在就可以在Jaczone (www.jaczone.com)上的Waypointer软件里找到。
6、
EssUP打算将创新的工作和体力劳动区别开,这让你可以花费你的时间在人类最擅长的活动――创新上,而把那些体力劳动完全交给智能代理去做。我们用了“准备”这个词,是因为EssUP还没有把代理完全整合进去,代理仍然以附件形式存在。
7、
EssUP分为两种类型的制品――alphas版和betas版,我们还没有给它任何的名字。我们认为alphas版和betas版之间的区别在于,哪一个在所有项目中是更基础的,你可以暂时称alphas版为“关键点(key thing)”,称betas版为“关键点的证据(evidence)”。
alphas版是软件项目中最重要的东西,无论它是否存在于具体的描述中。事实上,alphas版不对应于任何特定的过程。举例来说,每一个软件项目都有alphas版,如项目、实现的系统、订货和风险等。每一个alpha版都有一系列的betas版,如一个项目alpha版中,可能会有一个项目计划,一个迭代计划,风险的风险列表,订货的特点列表和变更列表。
betas版是alpha版的证据。他们可以用图、工作流、你喜欢的文档形式来描述,或者根本就没有文档来描述,没有文档意思就是你的团队把这些知识都保存在大脑里。
alphas版是稳定的并且并独立于过程,而betas版则可以根据你选择不同的实践而不同。alphas版和betas版的分离可以让你保持最少量的项目文档。你可以用一个精确的办法来讨论到底需要多少文档。这让你在遵守纪律的基础上变得敏捷,你可以分离出哪些是必要的,哪些是非必要的。