开发平台的进化理论

2 篇文章 0 订阅
2 篇文章 0 订阅

软件结构

        说到软件开发方法,我们都会想起软件工程,软件工程是源自建筑工程,因为软件开发和建筑是有很多相似之处。我们知道在人类社会初期,为了遮风挡雨,一个人用木枝和茅草就可能堆成一个简单的茅草房,后来进入农业社会,在食物得到满足的时候,大家都会想着住上更坚实和美观的房子,所以就有了木混结构的房子,再后来有了砖混结构房子。社会发展到今天,砖混也不行了,城市里人口越来越多,土地不足的情况下就得将房子盖成楼房,楼层低些的用砖和水泥也可以搭建,但楼层太高砖就承受不了巨大的压力,所以现在高层都是框架结构,先用承力更强的钢筋混凝土浇注高楼的整体结构,再在框架间用砖和其他材料做隔墙,最后在这个基础上填门加窗,内部装修之后就可以入住了。

        想像一下,软件的开发与建筑何其相似,计算机诞生的初期都没有软件可言,工程师都是手动操作电路的开关来控制计算机运行逻辑。在冯·诺依曼提出经典的计算机结构后,计算机才有了运算单元、存储单元、输入输出单元之分,此时计算机程序才有了居身之所(存储器)和运行之处(处理器),也可以方便的通过键盘和屏幕来输入和查看运行结果。之后人们发明了编程语言来更方便的指挥计算机运行,开发技术也从面向机器、面向过程发展到了面向对象,相关的软件工程和方法更是层出不穷,所有的编程人员都在想尽办法来提高软件开发效率和软件质量。

        但是软件工程的方法都在改造开发人员,指导开发人员如何做事,如果一个技术要通过改造人达成目的,这就不是一个最好的技术,最好的技术应该是给人新的能力,按人类最直观理解的方式去做事才是最好的技术。软件工程现在还停留在“砖混”时代,软件规模越大,风险就越大。其实这中间的原因和盖房子一样,是结构不对,软件也需要更强结构的框架来承载更复杂的软件功能,在这种思路的前提下,我们重新思考和总结了软件的结构组成。

        从面向机器时代的代码来看,软件就是线性排列的指令,一条条顺序执行,直到出错中断或最终完运行输出结果;面向过程的代码可以将软件视为一个个过程和过程之间的调用,这种结构可以将子功能组织到对应的子过程中,初步实现了代码的复用,但总体结构来说也是顺序执行;面向对象时代软件可以简单的认为是一个个的类,类与类之间有继承、接口和调用关系,这种结构将功能以及功能操作的数据同时组织在一个类中,这种代码组织结构在更高一个抽象层实现了代码复用,也达成了高内聚,低耦合的目标,初步的实现了对现实事物的模拟能力;到面向对象时代大家才感觉到编程其实就是建模,而不只是计算了,是用代码来模拟现实中的各种对象和业务,所以在这种情况下,自然而然的进入到了面向模型时代。模型驱动的方法认为软件的基本结构不再是一行行的代码了,而是实体、界面、功能等粒度更大的对象,面向模型时代自然就可以认为,软件就是一个个模型,模型之间互相传递消息和数据。按照国际面向对象组织提出的模型驱动架构理论,用模型描述现实世界,然后利用工具将模型转化为代码后运行,因为模型语言的简单性和模型转换的复杂性,直到现在没有人实现模型到代码的完全转换,最后模型只是用作人和人交流的文档,而不是人和机器交流的符号,只能做为辅助开发工具而存在。

新的软件开发技术

         另一种方法是业务基础平台,将底层的技术框架事先组织起来,第三方开发者在这些基础框架上组合自己功能,开发自己的软件,以这种方式来加快软件开发速度。大多数开发方法都没有能够从建筑工程中领会到经验,还停留在更高级的“砖混”时代,以为业务平台就是框架,而没有找到软件中真正的“框架”,其实在模型驱动的世界里,业务平台不是“软件高楼”的框架,只是开发经验的技术框架,真正支撑“软件大厦”的“框架”是“基本模型”,也是组成软件主要结构的部件,包括业务对象、实体、界面等,起到支撑作用。而大厦的隔墙和内部装修是“插件模型”,也就是附着在基本模型上的一些功能组件,其目的就是对基本模型的进一步修饰和增强。

        利用“基本模型+插件模型”设计出来的软件开发平台是对模型驱动架构这种思想的最佳实践。将模型分为基本模型和插件模型,以基本模型为框架,插件模型依附在基本模型之上,最后再使用引擎运行模型。这里的基本模型包括对象、实体、界面等这些是组成软件的基本要素,其结构比较固定,可以用可视化工具维护。而这里的插件不同于一般意义上的插件,它是一种拥有属性并可以进一步扩展基本模型功能的可复用的软件组件。插件附着基本模型对象上(也就是插件的主体对象),让主体对象实现一定的业务规则或者完成一定的功能,通过自动响应主体对象的消息完成相关操作。

         开发平台包括建模工具和模型引擎二部分,建模工具用于设计和维护基本模型和插件模型,引擎用于装载和执行模型。引擎只需要将插件的实现类根据插件模型的属性创建起来,由插件的实现代码完成插件的具体功能。

         这种基于模型的“基本模型+插件模型的软件结构和建筑上的“框架结构、计算机硬件上的“主板+插件”结构类似。好处就是可以扩充,局部变动不影响全局结构。基本模型很容易修改,插件模型很容易实现。不同角色的开发者可以同时在开发平台进行分工协同开发,平台可以在运行态修改模型、调整插件并可以直接看到运行的效果。开发、运行、维护完全以模型为中心。软件开发人员通过基础建模和插件的选择组装,实现复杂的业务逻辑和丰富的界面表现。开发过程由非常复杂的代码实现转变为可视化的配置组装。设计人员以自己可以理解的方式构造软件。

“基本模型+插件模型”

         由此,我们可以得出这样的结论:下一代软件的结构是基于模型描述的,模型应该有主次之分,基本模型表现了软件的基本要素,插件模型组成了软件的特殊需求。“基本模型+插件模型”模式将会成为构成软件的最佳结构。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值