大家好,我又来了。今天给大家带来的是关于Model Driven Development 的故事。
本次将要和大家讨论的内容为
-
Modeling
-
Model Driven Engineering
- The Model Driven Architecture
有人肯定会问我,为什么要写这么难的内容呢?又没有几个人会看,或者说没有多少人能看懂?
答案么?必需是要体现我本人强!无敌!好吗!

其实对于发微博来说,技术贴和生活贴本来就没啥差别,反正大多数人都看不太明白。
举个例子,比如说微博上天天有人分享“每天5分钟,练就一身强健肌肉”,事实上大多数人也都是看了以后赞叹一下,然后该干嘛干嘛去了。
为什么会这样呢?就是因为如果你真的可以像博文里描述的那样,那么,发微博的人就应该是你自己了。

首先说说这个Modeling,其实吧,软件开发听起来很玄乎,其实很多内容都能和其它职业,或者说日常生活中常见到的东西联系在一起,好比说小说和电影总说的一句话,“灵感来源于生活,但是要高于生活”。
而尝尝大家碰到的情况是,现实中遇到的事情会更狗血。软件开发亦是如此,本来看似很简单的东西,实现起来总是困难重重,这并不是能力问题,而是在考虑软件本身的时候,缺乏了对软件本身所涉及问题的详细规划。
嗯。。。这段话写的优点严肃了,其实就是说,本来你啃着鸡腿,抠着脚都可以上对方高地,到了才发现结果是,冲动20s,观战2分钟。

呵呵,Modeling 这个概念就是在这种情况下提出来的,这里说的模型其实就是对于一个软件系统的抽象,当然它还要包括相关系统的细节描述。其实模型这个概念在中世纪就已经有了,为啥说中世纪呢?这里大焰还是要装个bi~,因为我的老师就是这么讲的。。

![[偷笑] [偷笑]](https://i-blog.csdnimg.cn/blog_migrate/ced44184a736f2884388ee3f78d85608.gif)
好了,继续,那么对于模型来说呢,我们通常会见到两种模型,分别是Descriptive models和Prescriptive models。
“怎么?又是术语?”
嗯嗯。。就是术语,其实很好理解,第一个叫描述性模型,比如大家见到的地图。

第二种模型呢,其实就是我们常说的透视性模型。
这里的透视不是用来用来当赌神的透视隐形眼镜那个透视。
“呦呦呦,懂的还不少?”
那必须,没吃过赌神,还没看过电影么~
这种透视性的模型在建筑领域里面又叫做blueprint 即蓝图。

那么对于软件开发来说,我们为什么需要模型呢?
主要就是为了解决程序猿由于在开发前盲目乐观,导致在deadline来临之时通宵熬夜!!!
嗯。。上面那句话其实是大焰真正的一本正经的胡说八道。

关于Model Driven Engineering:
其实模型的出现主要是用来应对一个问题,就是我们需要用简单的方式去描述一个复杂的系统。而模型这种东西可以很好的完成这个任务。大家想一想,小时候玩的四驱车和现在开的真车都能跑,原理也相近,但是不是组装一辆四驱车所话费的时间要远远少于组装一辆真正的汽车呢?

很抱歉,这个话我没法接。。。
这幅图是精髓呀,不过只有学了面向对象软件编程的朋友们可以看的明白些。

简单来说就是风水轮流转,即将有新的浪潮来拍打岸边啦。
更新换代,是目前很多行业最in的风尚!请跟读:“你是我天边最美的云彩,我想用心把你留下来!嘿!留下来!”
“大焰能不能解释一下这幅图呀?”
明确告诉你!不能!不能!不能!重要的不能说三遍!

“对象?我就一单身狗,没对象!”。
程序猿是不可能没有对象的。。你要是没有,那说明。。。。
安静的让我把下面的内容编完。。。。
嗯。。该写什么了?哦对,对比传统的编程方式,使用模型驱动开发可以让你的团队快速得道一个系统模型,然后进行迭代,这样的话,就可以克服又一个世界级软件开发难题,
就是客户需求不停的变,程序猿不停的写。

嗯。。听起来很玄,但确实在一定程度上解决这个问题,注意是一!定!程!度!
还有一个重要的点没提到就是,在使用模型驱动开发的时候,软件开发团队可以提高效率的原因是许多软件系统的部分功能都是相通或者相似的,所以在初代模型上面使用不同的需求进行迭代,这样就可以快速产生新的软件系统。
关于The Model Driven Architecture

m2这一层就是说我们要用有一定规则的描述性的语言或者语义来描述出来你心目中的系统。
m1这一层的话就需要用具体的编程语言去实现具体的代码了
m0这一层的话其实就是指真实的应用程序或者web系统是什么了。
当然,大焰在这里的解读可能不是很精确,如果有说的不完善的地方,希望大家指正!

在The Model Driven Architecture这个领域里面通常会涉及到三个术语,分别是
PIM.(Platform Independent Model) 这个意思就是平台无关模型,其实就是一个程序的原型。比如你要做菜,这就是颗白菜。
PSM.(Platform Specific Model) 这个东东是关于某个平台的具体实现,这个东东通常是通过具体实现PIM后形成的模型。嗯,到了这里这个白菜就是看你要怎么用,放在中餐里通常就是被炒了的白菜,而放到西餐里就变成沙拉了。![[偷笑] [偷笑]](https://i-blog.csdnimg.cn/blog_migrate/ced44184a736f2884388ee3f78d85608.gif)
![[偷笑] [偷笑]](https://i-blog.csdnimg.cn/blog_migrate/ced44184a736f2884388ee3f78d85608.gif)
CM.(Code Model)这里就是指具体写代码行程的东西了。就是之前只是说如何做白菜,到这里就已经是做好的了。
嗯。。今天的内容已然差不多了。。。最后我在总结下Model Driven Development的优点吧。
第一个就是写一次代码,运行在多端。建一次模型,可生成到各种平台。
第二个就是可以逆向,还能保证代码质量。
总结一下就是:
XX汽车遍天下,图纸就是那一张。出了问题还能改,质量仍旧有(wu)保障!

别着急,下一篇,大焰就会开始跟大家讨论如何使用UML建立模型。
好啦今天的全部内容就是这样,谢谢大家耐心收看。
如果有不明白的地方可以和大焰一起讨论。
如果大家看着感觉还像是真事,就请大家给我点个赞吧~
如果。。
算了,没有如果!散会!
