******架构是什么?
这是个好问题,关于架构的许多定义请朋友们自行google或者是baidu。我可以肯定的说你会看到非常抽象晦涩的理论,并且感觉像是在看玄幻小说。本人乃是彻底的无理论者,基本接近于无神论者。我总试图在晦涩的理论和具体实践中找到切合的地方,然后提升自己的理论水平。
所以有可能我阐述自己对架构的理解和您对架构的理解不同,ok,不要认为我是错的,或者是您是错的,因为在应用程序开发这个层面上,几乎不能肯定的说什么就是一定对,什么就是一定错,这也是应用程序开发的奇妙之处;我们经常遇到这个情况,几个所谓的高手在一起讨论一个内容的实现,讨论的不亦乐乎,争吵的面红耳赤,却谁也说服不了谁,就是因为没有绝对的对错,所以项目开发要有一个强有力的执行者,能够拍板,能够承担责任。
扯远了,接着说我对架构的理解,我个人认为,软件架构应该具备以下的几个要素:方法论、过程工具、技术框架,最后还有执行者。
方法论:从需求获得到设计到编码测试的全面的方法及过程控制理论。
过程工具:辅助开发各生命周期控制,并且能够贯穿全程的协同开发工具。
技术框架:实现架构的技术手段及元素设计。
基于上述的理解,我对SOA架构思想的理解也是上述三个方面:
方法论:拿需求来说:如何去面向服务的获取需求、需求分析,包括怎样从需求中抽取服务。如何面向服务设计开发、怎么保证SOA实现以及测试。更多内容可能过于抽象,而本人理论水平也确实有限,感兴趣的朋友还请自行google。
过程工具:能够将从需求到系统分析到编码测试等人的工作有机结合,全生命周期控制,包括开发工具,设计工具、测试工具等等。
技术框架:实现架构的技术手段。这个就是和程序员结合的比较紧密了。
实际上一个理想的架构应该可以是这样的:需求人员得到第一手需求后,分析员在工具的帮助下进行需求分析和设计,正确的抽取出服务和业务对象;然后工具生成一定的代码框架;设计师简单搞搞代码框架后指导程序员在开发平台上搞开发;之后工具协助测试及部署。整个流程在同一的平台下流转,所有文档、代码都是全生命周期。
而且,其实这个想一想有些太理想化了,几乎是不可能完成的计划。虽然有些老大已经搞出了这种成体系的平台,但是国内有多少公司在用呢?首先,买的起么;买得起(或者用盗版)又会使用么;就算你会使用,你的整个团队能用起来么?所以,如果你想使用这种平台来作开发,首先要买工具,然后还有要请老大们来帮助你实施。
实际上能够有能力在上述几个方面SOA的,除了业内的几个老大,别人都不具备这个能力。虽然我一直在为国内前30强的软件公司服务,但我也不认为国内能够真正出现完整的SOA的解决架构(甚至按照我的标准,国内就没有商品化的软件架构),其中主要原因应该是国内几乎找不到这样一个公司:肯为一个概念整体的投入一群人,来搞一个盈利水平未知的东西。
那我一个小小的个体又能做什么呢,又怎么敢号称要搞有中国特色的SOA呢?
-----------未完·待续