UML软件工程组织

一种优化的技术开发方法
来源:网友推荐

设想一下,一个全球化信息技术公司计划采用一个改进的CRM软件(CustomRelationManagement:客户关系管理软件)作为公司新产品线投入生产的支持系统。

一种方案是:美国软件开发组花了一年的时间研发CRM软件。在美国总部试用时没有任何问题,该软件完全能够满足产品生产的需要。软件开发组于是将软件推向中国市场。由于对中国市场缺乏了解,他们花了大量的费用和工作对软件系统进行改进。在经过一年的改进后,终于完善了软件功能。此时中国本地产品也开发出来了。

第二种方案是:组建两个软件开发组,他们相互独立而又同时开展工作。但是中国软件开发组团队既缺乏技术、又缺少经验。由于公司规定中国是受控国之一,中国软件开发组难以及时获得新产品线的有关信息,致使开发工作进展十分困难。因此,客户关系管理软件CRM软件在中国市场的推广工作非常不理想,致使大量客户十分不满。公司不得不花了两年多的时间,才消除了市场的负面影响。

假设还有第三种方案:与当地软件开发组采取松散的方式联合工作。美国软件开发组具有的丰富支持产品线的软件开发经验,他们把这些经验快速地传递给中国软件开发组。CRM软件在美国照常按计划投入使用,而在中国的软件开发组继续后面的工作,解决软件系统适应在中国使用的有关问题。CRM软件最多晚三个月,就能够在中国市场顺利投入使用。

以上三种假定的开发方案中,方案一是高度集中化,方案二是高度分散化,而方案三是最优化。其中第三种软件开发方案,特别适用全球化公司的软件开发,称之为联合开发FTD(federatedtechnologydevelopment:联合技术开发)。应用软件集成仅仅是FTD发挥作用的领域之一。FTD方法不仅适用于信息技术和业务处理,而且适应软硬件开发和产品开发。

FTD是优化业务产出的方法之一。采取这种方法,一是本地组织可以自主作出决定,不同组织之间是平等关系而不是联盟。二是要有一个中心机构负责工作协调,每一个分支都能够在统一的命令和安排之下开展工作。

我们知道管理大公司要远远比管理小得公司复杂得多。但是,由于许多公司都是从小及大,习惯于集中管理。比如,公司的预算要由最高领导层管理,再如,地区办事处必须得到最高领导的批准,而且任何主要项目上的花费都需要授权等等。

大的公司往往需要通过外部采购的方式开展业务。比如,公司的数据中心采用统一的运作方式可能会达到最好的效果。由于美国的劳动成本较高,在数据中心设计中,可以通过外部采购的运作方式使成本降至最小。如果在外部采购安排上采取统一的合同规则,那么外部采购人员采用FTD方式采购,可以在地理位置不同的地方执行采购任务,会达到较低的资本投入和实施成本,达到具有竞争力利益的采购效果。

实际上,可以采取多种方法实现项目规划。如集中化的方法,由一个独立的机构负责全球范围内的开发工作;或者分散化的方法,开发机构分散在世界各地,他们之间无需沟通、也难以沟通。对于全球化的公司来说,这两个极端的方式都不是最好的,都不能达到最佳的业务效果。我们常常希望有个恰当的中间地带――不是全部集中化,也不是全部分散化,即联合方式的技术开发-FTD。

采取FTD方法分析公司业务,就会自然而然地综合考虑业务产出的最大化。在具体业务工作的过程上,分布式方法能够提高一致性水平。比如,在满足目标的时间、在缩短意外事故系统恢复的时间、或在重新设计后系统恢复的时间等要求上,就能够较快地实施,提高业务的灵活性。再之,已经高度优化的模块一般是比较成熟的。因此优先重用已有的模块,对缩短系统开发周期十分关键。如果正在开发中的系统已在公司的业务中使用了一段时间,最好通过重用已有的模块来压缩开发周期。

任何产品的开发都需要经过业务和技术两条线。从某个方面来看,开发基于技术的产品,在研发、概念考证、工程实施等环节上都需要制定详细的工作步骤。而业务开发过程通常由分散的元素组成。对于采用FTD方法来说,每个步骤的详细描述都是不重要的,重要的是每个步骤都要和前后阶段的过程相衔接。清晰的接口是要通过经验才能达到的,而且接口还要遵从已经存在的开放标准,如XML标准等。

在两个不同的地理位置上,并行的开发流程可以完全独立,或在相似的或相同的业务过程之间,多个衔接点同步工作。多个衔接点同步非常适合公司内的辅助部门并行实施开发任务。比如,市场或广告活动的同步就是衔接点的最好范例。并行开发虽然并不能缩短首批产品上市的时间,但是,那些面向国际销售的定购产品可以通过这种方式更早地投入市场。如果业务安排需要的话,甚至可以比在本地还早投入市场。

总之,采用FTD方法分解业务开发流程,可以保证本地开发适用于本地需求。这种方法尤其适合全球布局、集中设计的公司。FTD方法还尤其鼓励内部的讨论,各个分支机构能够明确地决定自治水平,这有利于现实的业务环境,有利于不同地区分支机构相互合作,共同实现全球业务目标。

一般而言,要在完全集中化还是完全分散化的之间选择如何更好地管理技术开发过程的方法。不是在客观分析的基础上而明确地做出的决策,项目开发计划实施最终达到的目标将不是最优的。FTD就是在这两个极端方法之间的最好交点。

我们列举两个采用FTD方法技术开发的例子:一个是操作系统,一个是网格计算,来说明FTD方法的神奇效果。在Unix操作系统的开发过程中两次采用了FTD模式:第一次是初始开发阶段;第二次是开源软件的革命,即Linux开发阶段。网格计算技术则是FTD产生奇效的另一个例子。该技术不是由一个公司发起的,而是由许多“玩家”通过“标准开发组”共同开发的。在网格计算技术发展的过程中,采用FTD动态协议,多个组织将这些协议转化为详细而明确的战略计划。

1、Unix操作系统

1969年贝尔实验室的KenThompson和其他几位研究员开发了Unix操作系统。为了反对技术垄断,他们免费提供Unix操作系统的源码给大学和研究机构使用。Unix操作系统源码的规模相对较小,能够安装在多种机器上运行。正是由于这个因素,许多和学者研究生针对Unix操作系统发表了许多研究文章和博士论文。每项研究都可以被认为就是一个FTD的例子。

代码简洁是Unix操作系统具有竞争力优势的根源。Unix操作系统的成功还归功于免费提供给大学的使用,这无形之中推动了FTD。参与这些项目的学生毕业、工作或创建新的计算机公司(如,Apollo,SunMicrosystems,Multiflow,Convex,Alliant,NeXT,Apple以及其他许多公司)时,Unix操作系统便成为首选。由此,Unix操作系统的历史地位得到了确认。

1991年,LinusTorvalds开发了一个类似Unix操作系统的内核,即Linux。发生了同样的现象。从FTD的角度来看,这是由单个人而不是一个公司发起的。开源软件Linux推动了FTD的发展。随着Linux系统的不断开发,被成千上万的公司、组织和个人参与、承认,并被广泛采用。

2、Grid网格技术

从FTD的角度来看,网格计算技术的发展仅仅是兴趣所至。从传统意义上来看它不是产品,你不能够到商店去购买一套网格。每个网格都是唯一的,不是被嵌入一个产品中。其中每一台参与计算的计算机就是一个“节点”,而整个计算是由成千上万个“节点”组成的“一张网格”。每一台计算机就像摆放在围棋棋盘上的棋子一样,而棋盘上纵横交错的线条对应于现实世界的网络,在网格上做计算,就像下围棋一样,不是单个棋子完成的,而是所有棋子互相配合形成合力完成的。随着网格技术的发展,企业界达成了这样的共识:业务和支撑业务的信息技术驱动了网格技术的应用。一旦这项技术得到应用,将使产品和技术开发达到最优组合。

实现大范围的不同群体能够“一起而又独立地”工作,通过协商一致的标准进行合作,网格计算技术将会有较大的发展前景。这正是FTD的精髓所在。


版权所有:UML软件工程组织