【编程素质】构件 基于构件的开发

       最近看了一篇论文:《ABC:于体系结构、面向构件的软件开发方》,梅宏等著。

       这篇文章主要讲了2点。

一, 什么是基于构件的软件开发(CBSD)。

二, 如何使用ABC方法来进行面向构件的软件开发。

       首先,基于构件的软件复用和开发被认为是提高软件开发效率和质量的有效途径。只要拥有完备的构件库,软件系统的开发就可以像堆积木一样,系统的开发重点从程序设计变成构件组装。举个例子:盖房子的时候,一砖一瓦慢慢垒起来。当最小建筑单位是墙,比如建造板房,放4个墙,加个顶就是房子了,相比之前的一砖一瓦,建筑粒度变大,开发效率和质量明显提高。

       ABC方法的根本思想是在构件组装的基础上,使用SA的理论来指导软件开发,以提高系统生成的效率和可靠性。连接子是重要的概念之一,它显式地描述了构件之间的交互关系或交互协议。如图一,引入中介层(中间件),避免了构件间复杂的交互。


图1.中介层的作用

 

       在此之前,我对构件的理解,是通过封装得到的可以复用的独立的程序,类似插件。其实不然,构件与插件还是有些微区别的。插件是为了扩充原软件功能或者性能,依附于原软件的软件,基于组件预留的接口来设计的。而构件,称为组件更为合适。

       那到底什么是构件?构件是一个几乎独立的、可替换的系统组成部分,它在定义完善的体系结构环境中实现某一清晰的功能。构件可以是一个函数,一个类,一个小控件,一个程序,一个系统(数据库系统、操作系统)。构件是通过封装得到完备的程序体,对于面向对象设计来说,封装最小也应该是一个类。函数虽然也可以封装并定义接口,但是粒度太小,不够完备。构件是对一组类的组合和封装,隐藏了具体的实现(黑盒),只用接口对外提供服务。

       这篇论文讲的是如何面向构件进行软件开发。我的感觉就像以WCF为代表的面向服务开发(SOP)一样,类似却又不同。SOP可以实现技术和业务的完全分离,做到敏捷的、不受限制的信息集成。构件起源于软件产业内部;而服务则源于用户的需求。

   

       程序员在开发过程中,总要根据实际需求来决定开发通用模块还是专用模块。同样,对于构件的开发,也需要考虑开发过程中是否需要多次使用该构件,才创建该构件。复用构件有利于改善软件质量,提高软件开发的灵活性和标准化程度。但是,过犹不及,过多热衷于复用来覆盖所有可能的情况或将来有可能出现的需求,就需要花费大量的时间来设计代码。这样会增加沟通成本、维护成本以及系统开销。大粒度的构件虽然使软件开发更为简单,但较高的废码率同样增加了硬件开销。故程序员需要通过自身经验来确定此构件是否为常用功能再进一步分离。但问题是现今依然没有一套系统的方法和标准来定义指导开发过程。

       另外,构件的销毁也很值得注意。构件可以分离并且升级,但是当牵扯众多系统的时候,构件的修改销毁也要注意多方的影响。比如销毁后,构件最好只是标记过期,提示最新的方法,但不完全删除。如图2,此法可对比java中的thread.stop();方法。弃用后,依然可以使用。

图2.弃用的方法 

2016、09、07

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值