4.8 基于构件体系结构:引言-CSDN博客
共用基础模块(Common Building Blocks, CBB)
基于组件的开发(Component-Based Development,CBD)
组件化系统是一种将软件系统拆解成独立可替换的组件进行开发的架构方式,具有易于维护、缺陷隔离、语言独立、易于开发和可复用的优势。
组件化系统具有以下引人注目的优势:
这些优势源于组件本身的特点:
组件与其他对象的区别在于:
组件化应用与传统应用结构不同:
组件化架构模式旨在解决以下问题:
图4-20展示了组件化架构模式的结构。
组件化架构模式定义了几个关键角色,用于描述组件之间的协作和管理:
1. 客户端接口 (Client Interface):
2. 协作 (Collaboration):
3. 组件 (Component):
4. 组件框架 (Component Framework):
5. 组件加载器 (Component Loader):
6. 组件管理器 (Component Manager):
7. 组件存储库 (Component Repository):
8. 管理接口 (Management Interface):
组件化架构模式通过定义清晰的协作角色,实现了组件间的解耦和互操作,提高了系统的可扩展性和可维护性。
采用组件化架构模式会带来一系列影响,总体而言之,主要优势是可复用性和易于构建,主要劣势是潜在的性能开销和资源冗余。
优势:
劣势:
总结:
组件化架构模式提供了构建可复用、易于维护的软件系统的有效途径,但同时也需要考虑潜在的性能开销和资源冗余问题。在实际应用中,需要权衡利弊,选择适合项目需求的架构模式。
组件化设计 (CBD) 是一种流行的构建大型复杂系统的方法。 为了快速实现 CBD,通常会采用框架的方式,其中组件扮演着明确的角色。
在嵌入式领域,常用的组件化框架包括:
组件化架构模式有很多变体,本文介绍了一种支持动态加载和卸载组件的实现方式。 组件可以是静态的(静态链接,因此它们存在于应用程序的加载映像中),也可以是动态的(按需加载,例如按需加载)。
组件本身可以主要包含数据(例如配置表和数据库),也可以主要包含行为(例如数学库),或者两者兼而有之(例如 GUI 组件,例如窗口小部件)。
使用现成组件 (COTS) 可以进一步发挥组件的优势:系统使用已经标准化的组件架构,会有大量可用的组件。 创建自己的组件架构时应参考现有成熟的组件架构,避免多走弯路。
为了在嵌入式系统中实现基于组件的设计(CBD),当编写或集成组件时,必须遵循严格的接口和服务约定。在定制或选择嵌入式CBD框架时,可能需要开发一套独特的规范来匹配特定的硬件和软件需求。无论是采用现有的框架还是自行构建一套新的体系,下列功能对组件的成功集成至关重要:
在嵌入式领域中,所有这些需求必须在尊重硬件资源极限的基础上实现。这通常意味着必须对CBD框架进行定制,以期在功能性和资源利用之间找到合理的平衡。
由于组件应该具有与编程语言无关的指定和使用接口的方法,因此一些组件架构提供了一种接口描述语言 (IDL) 来指定接口。不同的 IDL 编译器将 IDL 描述的接口映射到目标编程语言(组件开发者或组件用户使用的编程语言)。
在大型 CBD 系统中,我们通常根据组件所提供的服务类型对其进行归类。这种分类可以促使我们将其他设计模式与组件相结合。例如,我们经常将组件模式与分层架构模式结合起来,使用组件来构建分层架构中的各个层次。
组件可以与任何其他结构架构模式结合使用。组件化的优势显而易见,以至于本章所有其他模式都存在与组件结合运用的例子。例如,组件化架构模式和分层模式的混合使用非常常见。
需求文档
系统名称:Control System.exe
版本:1.0
日期:2024-01-28
需求说明
1. 系统概述
Control System.exe 是一个组件化应用程序,用于控制传感器数据。该系统由三个子系统组成:显示子系统、数据采集子系统和数据管理子系统。
2. 显示子系统
显示子系统用于显示传感器数据。该子系统包含两个与讨论相关的显示对象:波形对象和直方图对象。
波形对象用于显示波形数据。直方图对象用于显示直方图数据。
3. 数据采集子系统
数据采集子系统用于从传感器硬件采集数据。该子系统包含一个驱动程序组件,用于与传感器硬件进行通信。
4. 数据管理子系统
数据管理子系统用于存储采集到的传感器数据。该子系统包含一个数据库组件,用于存储数据。
5. 组件框架
组件框架用于管理系统中的组件。该框架包含一个组件加载器和一个组件存储库。
组件加载器用于加载组件。组件存储库用于存储组件。
6. 需求
显示子系统
- 能够显示波形数据。
- 能够显示直方图数据。
数据采集子系统
- 能够从传感器硬件采集数据。
- 能够将采集到的数据存储到数据管理子系统中。
数据管理子系统
- 能够存储采集到的传感器数据。
- 能够为显示子系统提供数据。
组件框架
- 能够加载组件。
- 能够存储组件。
7. 非功能需求
- 性能:系统应具有良好的性能,能够实时显示传感器数据。
- 可靠性:系统应具有良好的可靠性,能够在恶劣的环境下正常运行。
- 安全性:系统应具有良好的安全性,防止数据泄露。
8. 后续需求
- 添加新的显示对象,例如曲线对象和图表对象。
- 添加新的数据采集功能,例如支持多种传感器类型。
- 添加新的数据管理功能,例如支持数据分析和报表生成。
需求文档
系统名称:Control System.exe
版本:1.0
日期:2024-01-28
需求说明
1. 系统概述
Control System.exe 是一个组件化应用程序,用于控制传感器数据。该系统由三个子系统组成:显示子系统、数据采集子系统和数据管理子系统。
2. 显示子系统
显示子系统用于显示传感器数据。该子系统包含两个与讨论相关的显示对象:波形对象和直方图对象。
波形对象用于显示波形数据。直方图对象用于显示直方图数据。
3. 数据采集子系统
数据采集子系统用于从传感器硬件采集数据。该子系统包含一个驱动程序组件,用于与传感器硬件进行通信。
4. 数据管理子系统
数据管理子系统用于存储采集到的传感器数据。该子系统包含一个数据库组件,用于存储数据。
5. 组件框架
组件框架用于管理系统中的组件。该框架包含一个组件加载器和一个组件存储库。
组件加载器用于加载组件。组件存储库用于存储组件。
6. 需求
显示子系统
- 能够显示波形数据。
- 能够显示直方图数据。
数据采集子系统
- 能够从传感器硬件采集数据。
- 能够将采集到的数据存储到数据管理子系统中。
数据管理子系统
- 能够存储采集到的传感器数据。
- 能够为显示子系统提供数据。
组件框架
- 能够加载组件。
- 能够存储组件。
7. 非功能需求
- 性能:系统应具有良好的性能,能够实时显示传感器数据。
- 可靠性:系统应具有良好的可靠性,能够在恶劣的环境下正常运行。
- 安全性:系统应具有良好的安全性,防止数据泄露。
8. 后续需求
- 添加新的显示对象,例如曲线对象和图表对象。
- 添加新的数据采集功能,例如支持多种传感器类型。
- 添加新的数据管理功能,例如支持数据分析和报表生成。
图 4-21 展示了一个名为 Control System.exe 的组件化应用程序示例。该系统由三个子系统组成:
显示子系统
波形子系统
直方图子系统
矢量图形组件
数据采集子系统
数据管理子系统
组件框架