哲人手指远方,目光深邃,说了一句:TMD。
于是SOA的话题扯来了。
数字应用的世界里应该都是一个个的小球,代表着一个个简单的功能,几个小球组合起来,就是一个超级无敌的变形金刚。我们程序员学设计模式、学架构、苦练抽象/接口/范型、搞平台,终究敌不过让人想拿棉花当板砖撞头的用户大帝。我们盼啊盼,盼了CORABA,盼来了EJB,盼来了COM+,如今我们又盼来了SOA,一个个设计精巧思考成熟的组件模型体系。但是,我们的胜利号角怎么还是没有吹响呢?我们怎么还处在石器时代照着石头磨刀呢?
让我们来仔细分析分析,用范师傅的话说就是捋捋,否则容易乱了。
用户往往会这样告诉我们,我要看到这样的数。
我们的项目经理一听,哦,你要的是一张报表。但报表的数据需要录入才能统计出报表啊。嗯,再调研录入什么。客户就会说我们平时手工是怎么计算这些数的,这些数的原始凭证是怎么产生的,是什么人填写的,说了一大串,项目经理猛记,这就成了流程,嗯,咱们软件也这样处理。再跟客户要一张空白的原始凭证样纸,就OK了。有输入,有统计,有业务处理流程,齐了。回家跟程序员说清楚,开发去啦。
嗯,没几天开发出来了,用户一用,嗯,不错,大致是想的那样子,但这里需要再改改,不好用。
没关系,没关系,这块好改。
一个项目就这样来回几次就验收了。
但我们并不想一次编程一次运行啊,怎么也得多卖几家,反正软件也开发出来了,不卖给其他客户也就在那儿搁着。于是四处借机给其他客户不断推荐、影响、报方案。客户一看,嗯,比较符合我们的需要,就买单了,但是需要这块那块修改一下。
修改一下?程序员头大了。这可不是一下的是,自己写的代码自己知道,自己怎么会在过去知道现在的事情呢?这个从来没有想过啊。但是客户的理由也很充足:“因为我们是这样这样的,所以我们的业务是那样那样的”。全程听完,嗯,也有道理。客户有不知道你过去的代码的来龙去脉,不就是多个查询么,不就是多显示个字段么,干吗说难呢,干吗说需要很长时间呢,干吗说改动很大呢?不理解。谁也理解不了,包括老板。
改呗。但是这个客户和过去的那个客户,在细节上有共性也有差异,怎么兼容这两家,毕竟以后还都要持续维护升级啊,如果维护两套,发现了BUG,这不得好多个版本进行修改和发布么?即使做成了DLL,代码也得改变,只不过不需要整个系统都编译更新罢了。没办法,增加配置参数,如果是1就那样处理如果是0就这样处理。
第三个客户又迎来了。完,絮絮叨叨说了一大堆,就是说,有个流程处理上和现有软件做法处理有矛盾。再增加配置参数呗。
代码中非常多的if..else,软件配置参数中非常多的配置参数,由于实施了客户多了,软件修改的多了,谁也记不起来为什么要这样修改,是应哪家客户的需求作的改动。尤其参数多了,而且不同的参数会影响多条业务处理流程,如果有9个参数,就如同有9个开关,这样开开关关就有很多种排列组合,最后软件走出来的业务流程连实施人员都不清楚该怎么配置才能适合当前这家客户。软件太难用了,咱们的软件太难用了。太难用了。
销售、实施、培训、支持,都在抱怨咱们的软件太烂了,根本卖不出去,卖一家就等于骗一家。
不行,这样做怎么能行呢,我们要重新完全开发一版,这次要设计的好好的,考虑的全全的,考虑全面了,我们这次开发出来的就一定很OK的。老板下了大令。
完全新开发的一版出炉了。给老客户升级,爽啊,很多流程通畅许多,到底是考虑全面了,这次有了很多的业务经验积累,都是过去咱们对客户业务理解不精深产生的问题。
欢喜啊。但没过多久,高兴不起来了。因为签到了新的客户,我们想塌脑子想出了99种各种业务情况,但是客户却属于第101种。见鬼了,怎么每个都是一个个案。是我们运气不好?我们可以说我们是全国最优秀的软件了,我的这个业务流程是聚集了全国几十家优秀成功案例客户经验开发而成,是最先进的最综合的。但客户说:“我这个需求能处理吗?”。一句话,干倒。
于是,新的一轮抱怨、压力、焦急、思考开始。有人半路跑路了,有人还在琢磨平台、设计模式、最先进的业务模式、最先进的盈利模式。
见鬼了。我们的小球哪里去了?我们讨论了大半天,我们的小球哪里去了?我们的SOA呢,我们的COM+呢,我们的MVC呢,我们的框架呢?我们为什么没有用SOA呢?我们为什么没有用EJB呢?我们为什么没有用COM+。
于是新一轮的完全版本开发又开始了,能有人走入这个循环的都已经是珍稀动物了,大量的人不会经历这么多完全重新开发,因为大量的IT公司被熬倒了。
我们这次不仅有101种业务场景,我们更有200种业务场景。这下大家该满意了吧。我们过去失败是由于我们没有平台没有SOA,现在我们用了,这下我们该成功了吧。这次我们可是下大血本啊。
于是,积累了数年上百家客户的200种业务场景被装进了SOA平台中,各种MVC、持久化、工作流、表单设计器,应用尽有。
见鬼,眼球掉地,第201种业务流程!需求这个大虫怎么打不死打不尽呢?
好不好改?回答曰:好改,我们都做活了,可以直接动态修改不需要编译就OK的。
NO,NO,NO。我要的是调整调整就OK的那种。回答曰:这个真的不行。
为什么呢?hang~~~。
一顿解释。无奈,继续重复轮回。(难道还要第四次完全重新开发?)
让我们回过头来,看看我们到底错在哪里了?我们什么都做了,怎么还是错?难道世间本无解?
我们再把开头的一段话放到这里:数字应用的世界里应该都是一个个的小球,代表着一个个简单的功能,几个小球组合起来,就是一个超级无敌的变形金刚。
我们总是走的太远,以致常常忘记了为什么要走。
大家再想想车(我们总是拿汽车做工业化流水开发最好的案例,我们这次就专门拿汽车做个好好的对比)。基本款的,基本款自动挡的,各种排量的,各种颜色的,自动挡或手自一体的,豪华款的,带GPS的,带六气囊的,带到车雷达的,等等等等。出一款车,往往能细分出多达十几种车型。就算你是个汽车改装爱好者,你想把这十几种车型每个优点都拿出来然后整一台总优秀的车,你都整不出来。很好理解,杨贵妃的眼睛西施的最貂蝉的鼻子昭君的眉,PS出来的肯定不是美女,而是一个四不像,怎么搞都变扭。
软件如车,也如PS。
真正的组件世界,大家好好看看facebook现在的插件思想,大家剖析一下facebook给这些插件提供了什么?
我们创造了无数的框架,为了解决一个又一个的问题。我们总是希望提供最高的灵活性来应对未来的未知。我们做的越多,反而我们限制的越多。我们为了做的最少,反而我们后来无从下手。
从统一论来看:SOA、业务开发平台、Open API、插件容器、javascript、URL、mashups,皆能合一。我历经架构、平台、中间件、组件、框架、各种重型设计模式与重型企业级大词,作为我个人,我仅仅只看到这一个观点。有时候,你负的重了,从反方向看,你会立马超然,原来风景还可以这样看。
谁是未来的架构哲学,谁是未来的盈利哲学,谁是未来的销售哲学,谁是未来的关系哲学?
哲人手指远方,目光深邃,说了一句:TMD。
2009年3月13 星期五
丁卯火(仲春)月 丁巳土娄满日
本日物候:仓庚鸣
岁煞东 蛇日冲(辛亥)猪
九星:九紫-天乙星(火)-吉神
宿名:西方娄金狗-吉 六曜:先負
值日:朱雀(黑道日) 五行:沙中土
彭祖百忌:[丁不剃头 巳不远行]
宜:祈福,祭祀,结亲,开市,交易
忌:服药,求医,栽种,动土,迁移
《走出软件作坊》网上订购:
互动网:http://www.china-pub.com/508874
卓越网:http://www.amazon.cn/mn/detailApp?prodid=bkbk812538&ref=GS_TS&uid=168-8093432-0389064
当当网:http://product.dangdang.com/product.aspx?product_id=20435119
分享到:
相关推荐
在此背景下,基于SOA方法论的中间件或平台产品应运而生,为解决企业需求调整、系统整合、业务梳理及功能优化等问题提供了新的思路与工具。 #### 业务驱动与敏捷应用:SOA视角下的企业信息化转型 相较于传统IT架构...
- **SOA与业务流程管理(BPM)**:BPM侧重于流程的协调与管理,而SOA则是一种架构方法。尽管二者关注点不同,但它们可以协同工作以实现更高效的企业运作。SOA提供了技术层面的支持,使得BPM能够更好地执行其任务,如...
UAP(Unified Application Platform,统一应用平台)是用友公司提供的一个企业级开发和运行平台,它支持SOA架构,并且提供了一系列工具和服务,帮助开发者快速构建和部署基于SOA的应用。UAP平台包含以下几个关键组成...
- **政府电子政务**:通过SOA实现业务流程的标准化和服务资源的统一管理,提高政府工作效率和服务质量。 - **电信行业**:电信运营商通过SOA整合现有IT系统,实现数据共享和集中管理,提高运营效率和服务水平。 -...
### SAP的SOA开发白皮书关键知识点解析 #### 一、引言 SAP的SOA(Service-Oriented Architecture)开发白皮书是一份综合性的指导手册,旨在为开发者提供一套完整的SOA开发流程指南。该文档基于客户及SAP的最佳实践...
很多时候,企业的业务需求与市场上现有的SOA平台产品之间存在一定的差距,这要求企业在实施SOA时需要进行大量的定制开发工作。 ##### (三) SOA 实施中的共性技术问题 在SOA实施过程中,还会遇到一些共性技术问题,...
企业架构(Enterprise Architecture,EA)和面向服务的架构(Service-...通过将业务架构、应用架构、信息架构和技术架构集成在一个统一的框架下,企业可以构建出更适应业务需求的IT系统,实现业务与技术的和谐共生。
### U9SOA开发流程体系知识点详解 #### 一、U9SOA概念与特点 ...通过上述知识点的详细介绍,我们可以看出U9SOA开发流程体系是一种高度模块化、服务化的开发方法论,它能够帮助企业构建灵活、可扩展的企业级应用系统。
总之,基于SOA的医院信息系统集成平台是解决医院信息化难题的有效途径,它为医院提供了一个灵活、可扩展的信息共享和业务协同平台。随着技术的不断发展,HSB将继续进化,为医疗行业的数字化转型提供更强大的支持。
不同平台、数据库和开发语言的系统使得信息共享和协作变得困难,部门间的沟通仍然依赖传统方式,集团与下属公司的协同也无法通过信息系统实现。 为解决这一问题,企业通常有两种策略:一是尽量选择同一供应商的产品...
《SOA专业人员指南》的第二部分围绕SOA参考架构的定义、方法论及其与企业SOA成熟度模型的关系进行了详尽阐述。 #### SOA基础 SOA的基础包括业务架构、基础架构、数据架构、信息架构以及SOA补充架构。这些基础元素...
- **解决方案**:采用SOA架构,通过将服务分为基础服务、数据服务、业务服务和管理服务等层次,实现系统的统一集成和灵活扩展。 - **基础服务**:提供底层软件环境和硬件资源的支持,如数据库、中间件等。 - **...
面向服务的方法论与传统的瀑布模型相比,具有更高的灵活性和可扩展性。在面向服务的方法中,重点在于服务的规划、设计和管理,而不是仅仅关注代码的编写。此外,SOA还特别强调服务的生命周期管理,包括服务的创建、...
SOA,即Service-Oriented Architecture(面向服务的架构),是一种设计复杂应用系统的方法论,其核心理念是将应用程序的不同功能单元通过通信协议联系起来,这些单元被称为服务。SOA强调的是服务之间的松耦合,使得...
### 面向业务的架构(SOA):一种数字校园设计的方法论 #### SOA的概念及背景 面向服务的架构(Service-Oriented Architecture,简称SOA)是一种设计复杂应用和服务的方式,它强调构建基于服务的应用程序。这些...
系统集成是指将不同来源、不同功能的企业内外系统进行有效的连接、管理和组合,使其作为一个统一的整体进行互联互通,从而支持业务流程的自动化。在进行系统集成时,需要考虑组织结构、角色分配、任务执行和业务流程...