[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术

前言:

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第1张图片

第9节 构件与中间件技术

9.1 定义

构件是系统中实际存在的可更换部分。它实现特定的功能,符合一套接口标准并能实现一组接口。

构件代表系统中的一部分物理实施,包括软件代码(源代码、二进制代码或可执行代码)或其等价物(如脚本或命令文件)。在图型中,构件表示为一个带有标签的矩形。

9.1.1 机械领域中的构件

机器中每一个独立的运动单元体称为一个构件。

[structural member]∶机构的组成单个元,它是一个和某相邻构件有相对运动的刚体。

桥梁构架;抗压构件的设计。

[component part]∶组成部(分)。

在机构学中组成机构的、彼此间具有确定的相对运动关系的基本单元,如曲柄滑块机构中的曲柄、连杆、滑块和机架,凸轮机构中的凸轮、从动杆和机架。在结构学中则指结构物中的计算或制造单元,它们是固定在一起的,彼此间除由于应变有微量位移外,没有相对运动,如梁、柱、拉杆等。

在工程实际操纵中,各种机械与结构得到广泛应用。组成机械与结构的零件、构件,在工程力学中统称为构件。

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第2张图片

9.1.2 软件工程中的构件

构件是面向软件体系架构可复用软件模块

构件(component)是可复用的软件组成成份,可被用来构造其他软件。

它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。

1995年,Ian Graham给出的构件定义如下:构件(Component)是指一个对象(接口规范、或二进制代码),它被用于复用,接口被明确定义。构件是作为一个逻辑紧密的程序代码包的形式出现的,有着良好的接口。像Ada的Package、Smalltalk-80和C++的class和数据类型都可属于构件范畴。但是,操作集合、过程、函数即使可以复用也不能成为一个构件。

开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。软件构件技术是软件复用的关键因素,也是软件复用技术研究的重点。

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第3张图片

9.1.3 什么是中间件MiddleWare(中间构件)

中间件是介于应用系统系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第4张图片

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第5张图片
[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第6张图片

中间件并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件(中间件)在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统才能叫中间件,同时也把它与支撑软件和应用软件区分开来。

Hardware:硬件

Software:软件

Middleware:中间件

Dataware:数据件

备注:

  • 基站嵌入式软件系统内部就是一个分布式系统,包括系统板、基带板、RF板,每个板都有自己独立的硬件、操作系统和各自的应用程序,因此,要把他们的应用程序有机的、无缝的连接起来,组成一个内部网络,就需要中间件软件来弥合。

  • 用户空间的硬件抽象层:也属于构建,它是对系统硬件驱动的封装,为应用程序提供访问硬件的服务。

  • 如果,一个单机版、一体化的的嵌入式设备,不是分布式系统,而仅仅是一个操作系统的单机系统,那么,中间件就是比较轻量级的软件层、这一层的软件就比较薄,单机版的中间件解决同一个操作系统内部不同进程、线程之间的计算资源、存储资源的共享以及相互通信的诉求。而分布式系统的中间件,要解决的是不同操作系统之间的进程、线程之间的计算资源、存储资源的共享以及相互通信的诉求。

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第7张图片

9.2 软件构件的特征

9.2.1 软件构件应具备以下属性

(1)有用性(Usefulness):构件必须提供有用的功能;

(2)可用性(Usability):构件必须易于理解和使用;

(3)质量(Quality):构件及其变形必须能正确工作;

(4)适应性(Adaptability):构件应该易于通过参数化等方式在不同语境中进行配置;

(5)可移植性(Portability):构件应能在不同的硬件运行平台和软件环境中工作。

日历、工作流构件、订单构件、用户界面控制等等都可以是构件。

(6)可重复性/可复用性

(7)可标准化

(8)可入库化

9.2.2 软件构件的外在特征

(1)自描述:构件必须能够识别其属性、存取方法和事件,这些信息可以使开发环境将第三方软件构件无缝地结合起来;

(2)可定制:允许提供一个典型的图形方式环境,软件构件的属性只能通过控制面板来设置;

(3)可集成:构件必须可以被编程语言直接控制。构件也可以和脚本语言或者与从代码级访问构件的环境连接,这个特点使得软件构件可以在非可视化开发项目中使用;

(4)连接机制:构件必须能产生事件或者具有让程序员从语义上实现相互连接的其他机制。

采用构件软件不需要重新编译,也不需要源代码并且不局限于某一种编程语言。该过程叫做二进制复用(Binary Reuse),因为它是建立在接口不是源代码级别的复用之上的。虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自由的。因此,可以用过程语言和面向对象语言创建构件。

9.3 软件构件与软件对象的联系与区别

由于构件技术是由基于面向对象技术而发展起来的,与面向对象的设计中的对象相类似,它们都是针对软件复用,都是被封装的代码,但它们之间仍存在很大差异。

(1)在纯面向对象的设计中,对象(类)封装继承三者缺一不可,但对构件可以没有继承性,只要实现封装即可;

(2)从构件和对象的生成方式上,对象生成属于实例化的过程,比较单一,而生成构件的方式较多;

(3)构件是设计的概念,与具体编程语言无关,不像对象属于编程中的概念,要依赖于具体的编程语言;

(4)在对构件操作时不允许直接操作构件中的数据,数据真正被封装了。而对象的操作通过公共接口部分,这样数据是可能被访问操作的;

(5)对象对软件复用是通过继承实现的,构件对软件复用不仅可以通过继承还可以通过组装时的引用来实现。

因此,构件不是对象,只是与对象类似,构件可以是多个对象的有机组合。

9.4 软件构件在软件管理中的位置

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第8张图片
  • 领域工程:管理业务领域的需求、模型

  • 应用工程:管理各种应用程序分析、设计、实现、测试、发布、部署等。

  • 构建工程:管理各种可复用的模型、模块、代码

其中,架构模型与构建库会在三大工程(领域、构建、应用)中传递软件系统的架构信息。

9.5 基于构件的软件开发

构件库的来源:

  • 开源代码:提供了各种开源的中间件

  • 软件集成开发环境提供的各种库,如QT的控件,Python提供了大量的库

  • 组织内部:组织自己开发的中间件软件

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第9张图片
[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第10张图片
[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第11张图片
[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第12张图片

9.6 中间件的优点

中间件把应用程序从计算机底层中剥离出来,把自己的主要精力放在业务领域!!!

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第13张图片

设计与实现分离的原则:设计的是接口、实现的功能。

9.7 常见的中间件

9.7.1 Corba(公共对象请求代理)

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第14张图片

[架构之路-116]-《软考-系统架构设计师》-软架构设计-9-构件与中间件技术_第15张图片

你可能感兴趣的:(架构之路,架构,中间件)