我曾经把关于业务开发平台与SOA统一论的观点发到中,但是遭到了现在很多正在研究SOA+ESB+BPEL众人的群殴:“神仙大师,你能不能从云中下凡一下,给我们讲讲怎么做才能不把SOA做死。别神叨未来,我们正靠ESB开发吃饭呢,未来爱谁谁,那是上帝都控制不了的,但是眼下开发SOA,偶是要做出来拿工资的。”。
嗯,一下子给大家扔了一个共产主义,还得给大家说叨说叨SOA处于中国特色的社会主义阶段该怎么办?
因为,有些朋友已经用SOA框架开发了。我在这里也就不给大家普及为啥世界上呼哧呼哧的都要SOA组件模型,为啥WebService不行。关于这个普及大家可以看我以前的文章。一句话:你为什么用面向对象。那么你也就能理解为啥不用webService而改用SOA模型体系。
既然SOA只是一个组件模型体系,那么就好对比了。想必很多朋友都用EJB或者COM+开发过。大家可以扪心自问:我们开发的这些组件,真的在现实客户落地时候带来了灵活、快捷么?真的如我们想象N个小球,让我们来串一串,串一个幸运草串一个同心圆?
我想,很多朋友们都摇头。
根源就在于我们听客户说的,客户的描述是是用嘴一句句话说出来的,这是天然的流状。人的思维也是天然的流状。而项目经理从客户需求直接照搬映射到了软件功能。但软件内部设计谁在做?
注意,软件内部设计,不是指软件业务功能设计,也不是指数据库建什么表什么字段,也不是指代码结构怎么个设计模式怎么个泛型。我说的软件内部设计,简单来说就是A+B。A是谁,B是谁,+号是谁?A+B就等于项目经理所说的软件业务功能设计。
这里就有差异着,就不是客户需求直观影射到软件业务功能。这是一个思维重组。横看成岭侧成峰,就是这种力度。这个软件内部设计的人,就既要看到业务功能这个岭,也要看到A+B这个峰。就如同,鸟巢在我们眼里是一个奇怪艺术的大体育场馆,而在建筑工程师的眼里,就是物理学、工程学、建筑学,眼及鸟巢,心想的是水泥钢筋结构。
我昨天也说过一种思路,就是有人看世间各行业务,都是组织结构、岗位权限职责、过程表单、查询列表、统计报表。于是,按照这种思维哲学设计出来的就是这样的业务开发平台。我们常见的就是这类哲学。
我昨天还说过一种思路,就是业务流BPM、工作流WORKFLOW、业务程序控制流BPEL三流合一。但这个方法论的统一,我现在也没有想清楚。个人觉得应该是一件事物的三个层次或三个面,但这个统一的哲学,现在还没有出现。N多人想试试,但就是在产品中统一不起来,这都是方法论体系没有,产品根本无法统一落地。
另外我说的一种另辟蹊径的就是,索性这些都别想了,facebook插件方式就能达到目标。反正都是为了解决同样的问题目标,所以用什么手段是自由的,干吗非要在一个方法论上钻牛角尖。作坊出来的人都这个思考方式,像李云龙。而IBM巨头之类,肯定是奔着方法论去了。企业级和草根,JAVA、.NET、PHP,就是三个不同世界观形成的产品特征和产品发展策略。
但今天咱们扔开业务开发平台、扔开BPM、扔开facebook插件,咱们再回到根上想问题。
过去我曾经说过,从大流水代码到函数、从函数到面向对象,从面向对象到面向组件、从组件进化到SOA组件模型。
所以,核心还是SOA组件是关键。这就是我们要的小球,这就是DNA,于是才有道生一、一生二、二生三、三生千千万。
客户絮絮叨叨说出来的需求,被项目经理映射成了输入表单、查询、输出统计报表、权限、处理流程。而我们要的是DNA,而表单、统计报表、流程,都不是DNA。因为他们一个上面都集成了多类DNA。实在不能这样看问题。所以昨天我也说,这样想都错了。
我们需要从客户口中叙述的流状信息中把输入表单、查询、输出统计报表、权限、处理流程中间的DNA提取出来。有人曾经告诉过我一个土方法,就是把需求中的名词挑出来,这就是实体。把动词挑出来,这就是实体的操作。然后把客户描述的处理流程当作连词,就是为了把各个名词和依附于名词的动词串联在一起。
我们的函数能一层层嵌套,那么我们的组件粒度也可以层层嵌套,粗,粗到一定级别,大家都有常识,很多人说把握不了组件的粒度,我说你就照你能想到的粒度设计,如果觉得太麻烦了,说明设计细了,需要包装一层。如果觉得还需要嵌套才能描述清楚,说明设计太粗了。就如同我们不会贴到电视屏幕前看电视,我们也不会离电视1公里,我们自己去设计的时候都有一个感官。软件开发本来就是一个艺术与技术结合的工作,没有定论,是随着团队的能力而变化的。不过,有一个小窍门。如果每个函数行数不能大于一个屏幕(不能滚屏),而一个业务处理需要嵌套超过三层了,就说明这个设计需要分解一下。三是个奇妙的数字,这是个常人在脑中掌控和理解信息能力的一个阀值。所以我们就这样做个土办法。有时候,从常规理解得出的方法,往往比科学家左算右算这模型那算法出来的更实用和直接,就好像前段时间我看的那个临时工和博士对处理肥皂厂空盒子问题的处理笑话一样。
这个方法很山寨。但你仔细想想UML的用例图、包图、类图、交互图、序列图,也很有神似。UML是软件设计阶段的表现方法论。从软件设计这个岗位,用各种图来看用户业务(用例图),看整体结构(结构图)、看实现方法(包图、类图、对象图、交互图、序列图),看具体实现(活动图、状态图),看具体部署(部署图)。
MDA,模型驱动架构。IBM、HP这些带头大哥,在N年前就推动的MOF、UML、ECLIPSE、JAVA、CORBA、RUP,就是希望从业务理解哲学、软件设计哲学、软件实现哲学、软件运行哲学、软件开发管理哲学统一。但至今磕磕碰碰。想创造完美世界,恰恰是一种不完美。就如同人类想建造通天塔一般。
我也一直在用山寨路线思考着自己的业务哲学、软件分析与设计哲学、软件实现哲学、软件运行哲学、软件开发过程管理哲学。希望能浑然一体。我也在不断抬头看着远处的圣峰(MOF、UML、CORBA、RUP),对比着行进路线的差异和方向感。
有中国特色的社会主义,我们确实需要这样特色的经过。
山寨方法,可能会消失在历史的尘埃中,但中国软件业自己的行进方法,从无到有,从有到精,确实需要这个“有”字。
我们现在要么大量IT企业什么都没有,要么极个别IT企业借助政府和资本的力量直接上了圣峰。这个“有”字确实珍贵。
这段话,也是我对《走出软件作坊》这本书的一个心愿。那天,看《程序员》最新调查统计:71.8%的中国IT公司的研发团队处于20人以下,5人以下的研发团队占总量24.3%,10人以下的开发团队占总量25.8%。也就是说,50%的中国IT公司研发人员不足10人。
如何让中国71.8%的IT企业建立一个最起码的山寨研发过程管理方法,量变发生质变,而不至于一直延续什么都没有的乌合之众。《走出软件作坊》一本薄薄的30块钱小书能做到如此,已是值得一辈子纪念的里程碑。
《走出软件作坊》网上订购:
互动网: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(面向服务的架构)软件架构白皮书由中国智能网联汽车产业创新联盟基础软件工作组于2022年8月发布,旨在探讨和规范车载智能计算平台在SOA架构下的设计与实施。SOA是一种软件设计方法,强调将...
- **促进IT与业务紧密结合**:通过分析SOA解决方案如何对业务驱动力产生正面影响,从而确定从当前IT状况过渡到愿景架构的具体路径。 - **协助企业文化转变**:推动企业向重用、团队协作和资源共享的方向转变,通过...
【架构设计师与SOA】全解析 架构设计师在IT领域中扮演着至关重要的角色,尤其在面对SOA(Service-Oriented Architecture,面向服务的架构)这一概念时,他们的职责和挑战更为显著。SOA是一种现代的系统设计方法,...
通过对胶凝砂砾石坝施工质量监控系统的需求分析和设计,我们选择了面向服务的、基于 SOA 的企业应用集成,实现了资源共享和系统间的互操作性,提高了系统的灵活性。 一、服务提供者 服务提供者主要完成服务的设计...
SOA(Service-Oriented Architecture,面向服务的架构)是一种设计方法论,旨在创建灵活、可重用的服务,以提升企业的IT资产利用率和业务响应速度。然而,在实践中,SOA的设计常常面临一些常见的误区,这些误区可能...
### 架构设计师与SOA:深度解析与实践探索 #### 一、SOA与架构设计的融合 **SOA**(Service-Oriented Architecture,面向服务的架构),近年来成为了IT行业的热点话题,其核心思想在于通过服务化的视角重新审视...
【SOA架构详解】 SOA,即面向服务的架构,是一种设计原则,旨在构建模块化、松耦合的系统,...SOA架构设计师的角色关键在于理解和实现这种灵活性,同时平衡技术与业务的需求,以构建适应不断变化的企业环境的系统。
2. **面向服务的分析与设计**:这一过程包括理解业务需求,并将其转化为服务模型和技术解决方案。 3. **面向服务的建模与架构(SOMA)**:这是一种具体的方法论,用于指导如何将传统的IT资产转化为面向服务的组件。 ...
【SOA架构与规划的理解】 服务导向架构(Service Oriented Architecture,简称SOA)是现代IT领域的核心概念,被IT行业分析公司Gartner视为主导软件创建和交付的主要框架。SOA的重要性在于它能够帮助企业构建灵活且...
在设计SOA架构的过程中,需要关注的关键点包括业务分析、服务模型设计、企业架构、软件架构、服务组件设计、资源组合以及集成开发等。 在IBM的SOA开发方法论中,设计SOA架构被视为第二步,而第一步通常是业务分析,...
面向服务的架构(Service-Oriented Architecture,简称SOA)是一种设计和构建软件系统的方法,它强调将功能封装成独立的服务,这些服务可以被不同应用重复使用,促进系统的灵活性、可扩展性和互操作性。SOA的核心...
面向服务架构(SOA,Service-Oriented Architecture)是一种软件设计和架构的策略,它强调构建独立、松散耦合的服务,以便于不同系统之间能够高效地互操作和重用。这种架构方式起源于对传统紧耦合、封闭式企业应用...
"SOA架构方法与实践" SOA架构方法与实践是 software architecture 的一个重要方向,旨在为企业提供更好的业务解决方案。SOA架构方法是指在软件开发中使用服务oriented的架构风格,以提高系统的灵活性、可扩展性和可...
【SOA与微服务架构对比分析】 面向服务的架构(Service-Oriented Architecture,简称SOA)和微服务架构是两种不同的服务化解决方案,它们在应对复杂系统设计时提供了不同的思路。SOA作为一种架构范式,旨在打破系统...
通过将WebSphere Process Server与SOA架构相结合,企业能够构建更加灵活、高效且响应迅速的业务流程,从而提升整体运营效率和市场竞争力。对于任何希望利用现代信息技术改进其业务模式的企业而言,掌握并实施SOA与...