五十年的计算之路写满了这样的事实,那就是人所需要考虑的计算的层面越来越抽象,越来越集中于业务逻辑而非在计算平台上的实现细节,从另一方面来说,借用《应用MDA》一书的观点:计算渐渐地从打孔机和汇编时代的以机器为中心转移到现在的以人为中心。
抽象的根本原因是软件越来越复杂,复杂到人脑已经不能同时把握原有抽象层面上所有的细节,而软件的复杂性根源于软件所解决的问题的复杂性,而且随着计算机越来越多地应用,这种问题也将越来越复杂,因此软件的复杂化是计算机的自然趋势,抽象也渐渐成为不可逆转的方向,甚至连停滞都不可能,五十年的计算之路就是这样走过来的,MDA思想只是迈出了新的一步而已。
就MDA本身来说,虽然MDA正朝气蓬勃地走来,但是冷静的人们还是会很快看出它所存在的问题。MDA最大的好处就是业务模型的持久价值,但是付出的代价是增加了抽象层,而目前看来,层之间的转换并不是我们所期待的那样顺畅,至少,从PIM到PSM,从PSM到代码,这个实现的过程要远比从3GL生成机器代码来得困难,我们要面对比指令集复杂得多得东西,而MDA的终极梦想--可直接执行模型的虚拟机,虽然已有厂商号称推出了可执行UML模型的平台,但是实际上看来炒作的成分居多。在建模技术方面,UML正在暴露其固有的缺陷,它需要扩展更多的机制来支持精确建模和分析模型,虽然目前OCL为精确建模提供了一定的支持,但是这种支持离可执行模型的理想还很遥远。此外,不得不考虑的是性能问题,每当我们工作的抽象层级提高的同时,必然要求硬件技术的巨大进步,这样才能保证增加抽象层所带来的更复杂的计算的顺利执行,而现在的硬件速度能保证执行模型的虚拟机所需要的开销么?Java虚拟机已经足以搞砸目前的主流配置的机器,更惶论UML虚拟机。
但是站在历史的高度看来,MDA所面临的问题,或许只应该被称为"成长的烦恼"罢了。对于程序员来说,新的思想意味着新的机遇,新的思想也意味着新的挑战。MDA将帮助新一代的程序员摆脱编码的桎梏,多少年来的软件理想已经近在眼前。对于IT厂商,为中间件市场的硝烟都还没有熄灭,一个新的战场已经出现在地平线了,不管是否有人觉得残酷,新一轮征战都是不可避免的,从中将会站起下一个二十年的巨人。
跃马扬鞭
数风流人物,还看今朝!
MDA预示着下一个软件开发黄金时代的到来,传统的手工代码将如同现今的汇编语言一样,只是在极少数特别场合才有其用武之地,模型驱动架构会遍及从客户端到服务器端的每一个角落。大浪淘沙,如同以前的每一次变革,MDA带来的全新的机遇将会造就一批新的领袖,今天跟随人后亦步亦趋的毛头小伙,也许就将在未来二十年里引领潮流。而你,是不是准备好了呢?
工业进步的历史就是机器代替人工的历史,机械重复的工作是计算机的擅长,而人的最重要在于其创造性的活动。MDA将威胁那些只会将设计模型翻译为代码的Coder,下一个黄金时代的IT人,只有从事创造性工作的那一部分才不会被淘汰。
在MDA开创的时代,代码将被认为是重复而机械的工件,各种各样的模型翻译工具将会层出不穷,它们可以在极短的时间内产生大量的代码。在即将过去的3GL的时代,年轻的Coder们快速穿梭于层出不穷的各种平台和语言当中,他们得意洋洋地在"老家伙"面前宣称自己又掌握了多少种语言,又在项目中使用了多少个新出现的框架,然而Coder的盛世即将就此终结--代码生成器的成本将比Coder便宜万倍,市场将根本上抛弃Coder。曾经尘嚣日上的"软件蓝领论",在MDA面前自然而然地成为了无稽之谈。
至此你是否找到了你的方向呢?
你可以努力成为一名领域专家。深入学习某一个领域的业务知识,牢固地掌握业务分析方法,你也许不需要设计太多的程序,但是模型设计者会从你的工作成果中获益。
你可以深入钻研系统分析和建模技术,在当前计算机理论框架下,现实中的系统不可能无偏差地实现在计算机系统上,通过对系统的分析,在计算机上建立其运行模型是用计算机来解决问题的一个必不可少的步骤。建立标准形式的系统模型之后,代码生成器可以从你的模型中生成代码,虚拟机甚至可以直接执行你的模型。
你也许还可以看出,MDA技术本身并不是编码工作的终结者,它的架构中包含了PIM(平台独立模型)和PSM(平台相关模型)两个重要的部分,对于实际的应用来说,从PIM生成PSM的工作是必不可少的,因此你可以致力于平台技术,制定其转换规则,顺便还可以继续享受一点编码的乐趣。
也许最后你还可以尝试一下另类的职业--"传教士"。MDA提升了软件开发的抽象层次,软件工业的最终产品将不再是代码,而是独立于计算平台的模型。产品的变化必然带来工程化方法的变化,你可以努力尝试新的开发方法和流程,你的成果将会影响其它人的工作,因为你就是新方法论的"传教士"。
但是无论如何,最根本的一点就是:机遇只垂青于有准备的人!
大时代
你以为MDA本身就是终极之道么?
本文的前面就说过,MDA只不过是已经延续了50年之久的计算之路上的一小步而已,它只是战场上的一声冲锋号,远不是出鞘的军刀、前进的马蹄和冷兵器的碰撞。它开创了一个时代,在这个令人激动的时代里,人们关注分析胜过关注编码,关注模型胜过关注实现,关注业务胜过关注平台,关注模型转换胜过关注平台迁移。借用敏捷联盟的宣言,"虽然后者也具有价值,但是我们认为前者更有价值"。
"这是最好的时代,这是最坏的时代,我们就要上天堂了,我们就要下地狱了!"
大作家狄根斯的这句话用来描述MDA所开创的时代是最合适不过了。MDA带来了新的变革,而MDA远远不是变革的终点,它开创了一个新时代,却还无法摆脱旧时代的影子。MDA最重要的意义是向人们昭示了这样一个方向,沿着这个方向走下去,就是软件工业的伊甸园。
大幕已经拉开,或为舞者,或为看客,身为程序员的你会怎么办呢?
文章来源于领测软件测试网 https://www.ltesting.net/