提高数学模型在软件开发的重要性--由MDD引发的联想

     前一阵看到了关于MDD的一则新闻 ,这个东西早就不是什么新奇的概念了,以前组态软件的思想就是这种思想,只不过他这个更先进。这家伙这回我算是看出来了,程序员们大部分都是直脾气,对这个东西这顿臭骂,别紧张,兄弟们!他这个东西会和UML一样,正如UML很快被敏捷开发所取代一样,强调建模详细的UML不如敏捷开发极限编程这些东西更受软件工程人员欢迎,现实已经多次证明,商业上概念的炒作,总是经不起事实的检验。但是最近这两年,有一个明显的趋势,就是对模型越来越重视了,无论是统一建模语言(UML),还是MDD(模型驱动开发),其实还有另外几个概念,叫做MID(可完整性模型开发,Model-Integrated Development),老外2003年就提出来了,还有就是MIC(可搭建模型计算),不用晕,本质上都在说一个事情,就是模型的地位以后在软件开发的过程当中越来越重要。这个你可以用GOOGLE学术搜索,搜Model-Integrated development of Embedded Software这篇文献,我感觉讲的比较好,放在床头一个多月了,一直想把它翻译出来帖上来,但是最近晚上正在看组合数学,实在是没有时间,大家可以自己看,我个人的体会是软件开发过程当中,有一个基本的事实被我们忽略了,就是数学模型在软件开发过程的重要性,它处在开发流程上的位置没有被单独提出来,我翻了一下我过去所有的技术总结,我发现我几乎都没有提到数学模型这个东西,并不是模型不重要而是被算法和框架这两个东西给冲淡了。

      以运动控制软件为例,我们过去所谈论的只有两样东西,一个是框架一个是算法,和下位人员交流的时候,他们会说工艺是怎么样怎么样的,那么我现在想请问:“什么是工艺?”,它在程序当中是如何体现的。首先要说这个工艺其实很笼统,工艺其实分两部分,一个是工艺参数,一个是工艺流程,其他软件行业其实也是这样的。框架和算法包含的其实只是工艺流程,我为什么要这样说,因为框架是由模块构成的,模块是框架的支点,算法是模块的主体,模块通过接口和框架进行交互,而算法是面向工艺流程的,模型在哪呢?或者直接说工艺参数跑哪去了,无论是框架还是算法,都体现不出来工艺数学模型,模型被我们忽略了。为什么会忽略,因为框架,模块,算法出来了之后模型自然就出来了,工艺参数被我们散放到各个模块当中去了,框架的作用是什么,是控制数据的流向,从而控制各个模块的参数状态,这个参数状态很大一部分是工艺参数,所以好像模型变得不重要了,因为它太不显眼了,只有块分的好,模型自然就出来了。

      为什么有些人就做不好框架,有些人说层或者块分的不合理,为什么不合理啊,其实是工艺模型没有认识透,所以说问题就回到本质上来了,模型是最重要的,但是正如我上一段所说,模型往往最后才能体现出来,既框架设计好了,模块分好了,算法也写好了,这个时候整体的工艺模型才出来,这个时候你才能发现你的模型是否体现了实际工艺,就是这种开发方式是后之后觉的,这就是为什么框架人员那么重要,还要懂工艺还要懂程序,其实是对一种行业需要的整体把握,是对业界知识的熟练,而不单单需要他软件工程方面的知识,就是他的建模能力能贯穿整个开发的始终。但是本身来说这种开发方式给我们带来了风险,风险就是我们必须把所有的东西都代码化以后,才能知道我们的模型到底对不对?!如果不对,哪怕是微小的偏差,其结果也可能是灾难的,因为模型是根本啊,模型都错了,啥框架也白扯啊。怎么回避这种风险啊,其实MDD,MIC这些东西就是在探索这方面的事情,既在设计完成以后,把建模的过程提到软件开发的最前面,而不是最后。最重要的是行业专家能参与进来,而现在的开发方式,行业专家进不来,因为模型要通过程序去表示,表示出来以后,行业专家往往是通过画面和功能判断这是不是他需要的。但是如果能事前建模的话,即在实际的开发过程当中,让模型最先建立起来,之后再做框架和模块就能达到目的了。

      所以以后的开发,模型肯定会被越来越多的提起,因为软件工程其实就是这样,往效率高的地方走。

      而我为什么说大家不要急,模型只是我们软件开发的一部分,过去被忽略只是现在被单独提出来了,框架和算法依然会是软件当中不可回避的问题,工艺模型只要需求不变它是死的,正如我上面所说框架和算法是活的,如果模型代表的是系统当中静的信息的话,框架和算法就是系统当中动的信息,它们组合控制着工艺参数(模型)状态,系统性能的提高往往是通过改变框架或者算法来实现的,而模型在这个过程当中几乎不变。所以这也是为什么这个被网上那么多人骂的原因,并且事实上从使用的反馈信息看,也不是很理想。这个东西最可恨之处是,你MDD就MDD贝,偏偏说那个东西的形,既拖拖拽拽就能在后台自动生成高级语言代码,只说方便,而不直接说那其实就是个建模工具。

      至于模型另外一层的重要性,我不能说,因为我已经在公司的年终总结当中写了,我现在知道了,其实程序员不用分那么多层,我知道的有这么几层,我自身体会:

        1层:研究语言,算法,设计模式,硬件编程,数据库,网络等等

         2层:框架,当然专业知识要够

        3层:模型

        4层:状态机,虚拟机,人工智能类似的东西(只对运动控制行业)

      以上是我说着玩的,别当真,也别较真啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值