工程管理
会员登陆可自行发布信息
首页资讯供应求购招商招聘展会社区
长期信息合作请联系:QQ66821730
机电之家工程首页 ---->工程管理工程技术工程案例工程论文 工程招聘 ┊ 行业培训资料下载
应急预案
我 要 找
标题 内容 作者
工程管理技术资料订阅工程管理资料信息
电工技术资料 您的位置: 机电之家-->工程管理资料栏目首页-> 工程论文 -> 软件工程论文 --> 面向组件的大规模软件架构
阅读工程管理资料相关资料
面向组件的大规模软件架构
本文作者 未知 摘自 机电之家

在中小规模的软件中,对象和对象之间的协作关系就能够满足需要。但是当软件规模扩大,复杂度上升的时候,面向对象技术强调的协作却表现出另一个极端的特点-耦合度太高导致的复杂度。这时候就需要有一种新的方法来弥补面向对象技术的弱点。


 
>大规模软件的特点

大规模软件主要特点是复杂度。比较典型的例子是集成性的项目。软件系统需要将各种各样的硬件、遗留系统、外部接口整合起来。其间可能遇到不同的硬件接口,不同的操作系统,不同的语言,不同的平台,不同的数据库,不同的消息中间件,不同的网络介质。这些都使得系统变得非常的复杂.

面向对象技术的特点是通过对象之间的职责分工和高度协作来完成任务。这样的好处是代码量较少,系统布局合理,重用程度高。但是当对象的个数大量增加的时候,对象之间的高度耦合的关系将会使得系统变得复杂,难以理解。

以前对于这个问题的方法是采用包(请参考拙作面向对象软件开发中对包的相关讨论)作为容器来组织对象,对象之间的依赖性将转化为包之间的依赖性。这种方法听起来有道理,但是在实际中仍会出现难以解决的问题。

包仅仅只是容器。这意味着对对象的组织可以是任意的,而包之间依赖关系的设计则还是取决于对象的依赖。此外,包的设计和对象一样,缺乏一个统一的风格。而统一的风格正是大规模软件设计所必须的,因为这样可以有效改进系统的可理解性,这一点非常重要。

面向组件编程

面向组件编程的缩写是COP。COP是对OOP的补充,帮助实现更加优秀的软件结构。组件的粒度可大可小,需要取决于具体的应用。

在COP中有几个重要的概念:服务,服务(Service)是一组接口,供客户端程序使用。例如,验证和授权服务,任务调度服务。服务是系统中各个部件相互调用的接口;组件,组件(Component)实现了一组服务,此外,组件必须符合容器订立的规范,例如,初始化,配置、销毁。

COP 是对一种组织代码的思路,尤其是服务和组件两个概念。在下文会提到Spring框架中,就采用了COP的思路,将系统看作一个个的组件,通过定义组件之间的协作关系(通过服务)来完成系统的构建。这样做的好处是能够隔离变化,合理的划分系统。而框架的意义就在于定义一个组织组件的方式。

理解组件

组件不是一个新的概念,Java中的javaBean规范和EJB规范都是典型的组件。组件的特点在于他定义了一种通用的处理方式。例如,JavaBean 拥有内视的特性,这样就可以通过工具来实现JavaBean的可视化。而EJB规范定义了企业服务中的一些特性,使得EJB容器能够为符合EJB规范的代码增添企业计算所需要的能力,例如事务、持久化、池等。

所以,组件比起对象来的进步就在于通用的规范的引入。通用规范往往能够为组件添加新的能力(就像上面所讨论的),但也给组件添加了限制,例如你需要实现EJB的一些接口。以下我们将讨论组件的一些相关问题:

组件的粒度

组件的粒度是和系统的架构息息相关的。组件的粒度确定了,系统的架构也就确定了。在小规模的软件中,可能组件的粒度很小,仅相当于普通的对象,但是对于大规模的系统来说,一个组件可能包括几十,甚至上百个对象。因此,对使用COP技术的系统来说,需要正确的定义组件的粒度。较好的定义粒度的方法是对核心流程进行分析。

针对接口

接口和实现分离是COP的基础,没有接口和实现的分离,就没有COP。接口的高度抽象特性使得各个组件能够被独立的抽取出来,而不影响到系统的其它部分。

接口和实现分离有以下几个好处:

1.在模块/组件/对象之间解耦。
2.轻松的抽换实现,而不用修改客户端。
3.用户只需要了解接口,而不需要了解实现细节。
4.增加了重用的可能性。

IOC

IOC 是Inversion of Control的简称。它的原理是基于OO设计原则的好莱坞原则(The Hollywood Principle):不要访问我,我们将访问你。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。

IOC有几种实现的类型,包括基于方法参数调用的Method-based (M) IoC,它把组件传递给每个方法调用;基于接口的Interface-based (I) IoC(通常称为类型1),它使用接口来声明组件之间的依赖性,例如,Serviceable, Configurable;基于Setter方法的Setter-based (S) IoC(通常称为类型2),它使用setter方法来设置组件之间的依赖性;基于构造函数的Constructor-based (C) IoC(通常称为类型3)。

Martin Fowler将IOC模式称为Dependency Injection模式。

IOC是框架开发的一个基本原理。在开源软件中,不少的容器类框架都采用了IOC的思路。

组件污染

在IOC 的第一类型中,由于组件需要实现一些特定的接口,或是从某个类集成。这将使得组件受到一些约束(称为Invasive),例如组件移植不便。另一种情况是组件需要依赖于一个特定的容器,最为典型的就是EJB,组件无法脱离容器单独存在,这也使得组件受到约束。这两种情况都属于组件污染。

最理想的组件是只专注于自身工作的组件,它没有其它额外的逻辑。不过按照这种标准,目前大部分的代码都是不符合的。因此,目前在开源软件界出现了一些轻量级的容器框架,典型的如上文提到的PicoContainer和spring。他们的定位就是提供一个对组件管理的统一模式,而组件可以单独的使用,也可以放在另一个容器 量级的容器框架,典型的如上文提到的PicoContainer和spring。他们的定位就是提供一个对组件管理的统一模式,而组件可以单独的使用,也可以放在另一个容器中,容器仅仅只是为组件提供了一些额外的功能,和组件本身没有直接的依赖。
为什么我们说接口比继承好,很重要的一个原因就是接口更加灵活,组件的依赖性更弱,同样的,目前另一种做法则是采用一些标记性的语言来实现比接口更大的灵活度。例如基于xml的配置文件,以及J2SE1.5中将要引入的属性。

组件的测试

组件和容器的依赖脱离为组件测试提供了一个很好的环境。我们在测试一节中讨论过容器内测试往往是比较麻烦的,其原因就是在于上面所说的组件污染问题。例如在 spring框架中,组件是一个标准的JavaBean,你可以直接编写代码来设置组件的属性和定义组件之间的依赖关系(适用于自动化测试),也可以把这项工作交给spring容器(适用于开发和部署)。

组件测试在测试的分类中属于集成测试。

理解服务

在讨论组件时我们谈论了组件粒度的问题。当组件的粒度不仅仅限于单个对象的时候。在构成组件的多个对象中,有些对象处于组件内部,不和其它的组件交互,有些对象需要和外部组件进行交互。后一种对象起的就是服务的作用。在设计模式中,这种设计被称为Facade模式。而在OO语言中,他们相当于接口的概念。不管如何比喻,服务订立了组件和组件之间的契约。这种契约是稳定的(如果业务需求是稳定的),不会随着组件内部的变化而发生变化。

[本文共有 2 页,当前是第 1 页] <<上一页 下一页>>

雪宇军品
Google
·工程项目经理培训
·欧姆龙PLC编程维护培训
·杭州西门子PLC应用培训
·模具加工设计培训
·变频器维修培训
·安全员认证培训
·电工培训


·招聘项目管理人员
·首席技术执行官
·自控工程师
·数控编程学徒
·总工程师


项目竞标

最新商业情报

代理
[代理] 寻求地区代理
[代理] 电工产品诚招代理..
采购
[采购] 电动车控制器外壳
[采购] 高品质缓冲器
 面向组件的大规模软件架构 相关资料
  • 重庆轻轨盖梁锚箱支座施工技术
  • R=P×C法评价水下盾构隧道施工风险
  • 上海城市交通隧道盾构施工技术综述
  • M8线翔殷路车站大型端头井施工技术
  • 明珠线二期宜山路车站标准段基坑施工技术
  • 含氰基高性能聚芳醚材料的合成与表征
  • 型钢混凝土结构抗震性态水平和容许变形值的研究
  • 纳米CeO2/Zn金属基复合材料在锌镀层中的应用
  • 高级项目管理之量化管理
  • 浅谈项目管理过程中的水平沟通
  • ⊕这地方投资政策最优
    ⊕上千份机电行业研究报告
    ⊕机电项目招商啦
    ⊕谁把我买了?
    ⊕机电行业展会大全
    ⊕十万企业抢登行业网址大全
    机电之家会议开通
    ⊕每日最新求购信息
    ⊕电工技术资料为了谁?
    ⊕机电设备维修与管理
    机电之家(中国)工程管理技术资料中心资讯版权声明:
    1、凡注明“机电之家采编”字样的所有作品均系本网原创,版权归机电之家所有,任何媒体摘编或享用本作品,需注明文章来源。违反声明者,本网将追究其相关法律责任。
    2、凡本网注明“来源:XXX网(非本网)”的作品,均转载自其他媒体,目的在于传达更多资讯,本网不承担相关法律责任。

    3、如在资讯、广告等方面想与本网合作,请致电:0571-87774297。Email:donemi@hz.cn

    首页
    首页
    合作网站:
    | 中国机电网机电之家安全生产网 | 机电论文 | 机电论坛 | 机电设备贸易 | 机电网址大全 | 浙江机电网 | 陕西机电网 | 单片机技术网 |
    电工园地 | 工程管理网 |环球会展网机电产品网 | 机电人才网 | 中国工控网 | 五金工具网 | 安全生产网 | 商业情报站 | 图纸资料下载 |
    友情连接:
    | 中国机电网 |中国工控网 | 行业培训网 | 中国工程机械网 | 机电一体化网 | 行业下载网 | PLC技术网 | 变频器技术网 |
    关于我们 | 联系我们 | 广告联系 | 付款方式 | 使用帮助 | 工程管理网 | 会员助手 | 友情链接
    电话:0571-87774297(杭州) 传真:0571-87774298(杭州)点击这里给我发消息66821730(技术) 点击这里给我发消息58733127(审核)
    机电之家 工程管理网所共享的
    工程管理,合同与档案管理,质量与成本管理,进度管理,风险管理,施工与现场管理,工程监理,
    项目管理知识,竣工验收管理,工程技术,工程施工方案,施工工艺流程,施工技术方法,工程施工设计,工程案例,
    成功工程案例,失败工程案例,工程论文,软件工程论文,工程项目管理论文,工程造价论文,工程材料论文工程,
    监理论文,工业工程论文,等都是来自会员发表或 网上收集发表。如果有任何侵犯您权益的地方,
    请联系我们,我们将马上进行处理。
    企业登陆可自行免费发布资料,本站代发布邮箱为88ctv@163.com
    Copyright 2007 diangong.jdzj.com Inc All Rights Reserved.工程管理网
    技术支持:杭州滨兴科技有限公司 mailto:88ctv@163.com
    免费发布信息主办:浙江-杭州-工程管理网网络运营部安全生产