SOA是部署在网络上的,网络是无国界的。许多SOA项目成了分布于全球不同地方的专业人员共同协作、完成的项目。如今管理全球各地的人员和项目已经非常普遍。尽管如今这似乎司空见惯,但并非易事。有三条主线要牢牢抓住:制订基于系统的明确的里程碑、明确每次移交的标准、建立相互信任的关系。
在过去的15年,我参与了多个全球化项目。在基于SOA的全球化项目管理方面,我总结了确保这些项目成功的三个办法。
制订基于系统的明确的里程碑
全球化SOA项目面临的最大问题之一就是,知道谁依赖系统的哪个部分。有时,系统的几个部分相互关联,而项目不知道是怎样一种关联关系。如果你和你的项目队伍确定了基于开发过程的明确的移交内容,就可以大大提高知道能否按计划完成项目的可能性。
我往往会看到这样的重大里程碑:“需求完成”,或者屡见不鲜的“代码完成”。我认为自己还没有见过哪个项目达到“需求完成”这个里程碑。不过见过以需求为基准的一些项目,或者是确定最重要的需求、以便继续开展下去的项目。
因为我往往采用比较敏捷的工作方法(甚至对全球性项目也是如此),所以很少定义像“需求完成”这样的里程碑,而是定义“为某某场景(或者用户类型)定义的初期需求。”
有时,我会丢弃基于需求的里程碑,特别是项目队伍在按照特性进行实施时。这种情况下,我会定义诸如“第1项特性完成”此类的里程碑。一旦我们完成了所有特性,系统测试就可以开始了,哪怕这不是非常完善的系统。
按照特性实施的优点在于,作为项目经理,我在项目的早期阶段就能尽早知道大家有没有问题。如果实施(或测试)第1项特性的时间超过我们所预计的,我就得审查剩余进度,看看需要与项目队伍讨论什么。
你仍可以使用表明“代码完成”或“全部特性完成”的里程碑——只要你定义了“完成”指什么。因为这一般意味着列出所有特性,我更喜欢定义体现每项特性完成情况的更多个里程碑。
但不管你怎么来定义,要确保项目计划表中的里程碑能够体现每支队伍在系统方面何时取得了进步、取得了怎样的进步。那样,如果你对不同地区安排了设计诸多特性,那么你和项目队伍仍能够知道项目的当前状况。
明确每次移交的涵义
一般而言,我不喜欢标明“完成” 却没有定义完成是指什么的里程碑。我发觉,即使我要求开发人员对其代码进行单元测试。
我为全球化项目队伍确定项目计划表时,往往会列出里程碑及衡量里程碑的标准。譬如,我说“第1项特性完成”时,可能会列出这样的标准:
● 第1项特性的代码编译,所有平台上没有出现警告;
● 第1项特性的单元测试启动及运行(如果我管理的队伍采用测试驱动的开发,会删去这项标准);
● 对冒烟测试区启动第1项特性的冒烟测试(smoke test);
● 第1项特性开发完毕,冒烟测试运行成功。
在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的Bug,或者是否会对其他模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为冒烟测试。在很多情况下,冒烟测试是开发人员在试图解决一个问题的时候,造成了其他功能模块一系列的连锁反应,原因可能是只集中考虑了一开始的那个问题,而忽略了其他的问题,这就可能引起了新的Bug。Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低。
至于冒烟测试这个名称的来历,大概是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟在进行其他测试,否则就必须重新进行。类似的如果冒烟测试没有通过,那么这个build也会返回给开发队伍进行修正,测试人员测试的版本必须首先通过冒烟测试的考验。
从这份列表中显然可以看出,除非所有代码检查完毕、运行正常,并且运行了一些单元测试和冒烟测试,以证实该特性是否正常,否则我和项目队伍不会说“第1项特性完成”。
如果你管理同一地方的小队伍,可以找开发人员谈话,就这类标准达成共识。不过队伍越庞大,队伍越分布在多个地区,你和项目队伍需要就越具体的方面达成共识,那样才能知道项目的实际状况。
建立相互信任的关系
但经理或者项目经理在全球化开发方面采取的最重要的一项措施就是,在所有队伍之间建立相互信任的关系。几年前,我为一个项目充当顾问,负责该项目的几支队伍有的在欧洲国家,有的在亚洲国家。这些队伍共分布在7个国家。
当时高层管理人员担心开发成本。于是他们搞起了竞争制。哪个项目队伍提前达到特定的里程碑,将获得一定奖金,并且可以保住工作岗位。这样一来,项目进度“落伍”的队伍难免会弄虚作假。
结果,每支项目队伍都达到了每个里程碑。但是项目根本就不行。但每个人都达到了里程碑,不管计划表是何等荒谬。开发成本反而急剧增加。时至今日,整个组织还在为此相互推诿责任。
如果分布式队伍之间缺乏信任,项目就不可能成功。即使高层管理人员拟订的不是什么大型项目,分布式队伍也要知道:彼此在项目当中是平等的合作伙伴;为了整个组织的利益,他们需要协同工作。项目经理(及其他任何经理)只要与队伍及让队伍之间建立相互信任的关系,就可以做到这一点。
SOA项目全球化管理并非易事,但这是如今我们工作方式的一部分,恐怕很长时间内也会是如此。SOA项目为全球化管理提供了一个发展机遇,也提出了挑战。现在,为了项目成功,有必要改变您现有的管理方法。 (ccw)