📜  基于组件的体系结构

📅  最后修改于: 2020-12-14 04:03:00             🧑  作者: Mango


基于组件的体系结构专注于将设计分解为各个功能或逻辑组件,这些功能或逻辑组件代表定义明确的包含方法,事件和属性的通信接口。它提供了更高级别的抽象,并将问题分为子问题,每个子问题都与组件分区相关联。

基于组件的体系结构的主要目标是确保组件的可重用性。组件将软件元素的功能和行为封装到可重用和可自我部署的二进制单元中。有许多标准组件框架,例如COM / DCOM,JavaBean,EJB,CORBA,.NET,Web服务和网格服务。这些技术已广泛用于本地桌面GUI应用程序设计中,例如图形JavaBean组件,MS ActiveX组件和COM组件,可以通过简单的拖放操作来重复使用这些技术。

相对于传统的面向对象方法,面向组件的软件设计具有许多优势,例如-

  • 通过重复使用现有组件,缩短了上市时间并降低了开发成本。

  • 重用现有组件可提高可靠性。

什么是组件?

组件是模块化的,可移植的,可替换的和可重用的一组明确定义的功能,这些功能封装了其实现并将其导出为更高级别的接口。

组件是一种软件对象,旨在与其他组件进行交互,封装某些功能或一组功能。它具有明显定义的接口,并符合体系结构中所有组件共有的建议行为。

可以将软件组件定义为仅具有合同规定的接口和显式上下文相关性的组合单元。即,软件组件可以独立部署,并由第三方来组成。

组件的视图

组件可以具有三个不同的视图-面向对象的视图,常规视图和与过程相关的视图。

面向对象的观点

组件被视为一组一个或多个协作类。每个问题域类(分析)和基础结构类(设计)都进行了解释,以标识适用于其实现的所有属性和操作。它还涉及定义使类能够进行通信和协作的接口。

传统观点

它被视为集成了处理逻辑,实现处理逻辑所需的内部数据结构以及使组件能够被调用并向其传递数据的接口的功能元素或程序模块。

与过程相关的视图

在此视图中,系统不是从头开始创建每个组件,而是从库中维护的现有组件构建。在制定软件体系结构时,将从库中选择组件,并将其用于填充体系结构。

  • 用户界面(UI)组件包括网格,称为控件的按钮,以及实用程序组件公开了其他组件中使用的特定功能子集。

  • 其他常见类型的组件是那些资源密集型,不经常访问的组件,必须使用即时(JIT)方法激活。

  • 许多组件是不可见的,它们分布在企业业务应用程序和Internet Web应用程序中,例如Enterprise JavaBean(EJB)、. NET组件和CORBA组件。

元件特性

  • 可重用性–组件通常设计为在不同情况下在不同应用程序中可重用。但是,某些组件可能被设计用于特定任务。

  • 可替换的-组件可以用其他类似组件自由替换。

  • 不是特定上下文的-组件被设计为在不同的环境和上下文中运行。

  • 可扩展-组件可以从现有组件扩展以提供新的行为。

  • 封装-AA组件描述了接口,这些接口允许调用者使用其功能,并且不公开内部过程的详细信息或任何内部变量或状态。

  • 独立-组件被设计为对其他组件的依赖性最小。

基于组件的设计原理

组件级设计可以通过使用一些可以转换为源代码的中间表示(例如,图形,表格或基于文本)来表示。数据结构,接口和算法的设计应符合公认的准则,以帮助我们避免引入错误。

  • 该软件系统被分解为可重用,内聚和封装的组件单元。

  • 每个组件都有其自己的接口,该接口指定所需的端口和提供的端口。每个组件都隐藏了其详细的实现。

  • 应该扩展组件,而无需对组件的现有部分进行内部代码或设计修改。

  • 依赖抽象组件不依赖于其他具体组件,这增加了可扩展性的难度。

  • 连接器连接组件,指定并确定组件之间的交互。交互类型由组件的接口指定。

  • 组件交互可以采取方法调用,异步调用,广播,消息驱动的交互,数据流通信以及其他协议特定的交互的形式。

  • 对于服务器类,应创建专门的接口来服务主要类别的客户端。在界面中仅应指定与特定类别的客户相关的那些操作。

  • 一个组件可以扩展到其他组件,并且仍然提供自己的扩展点。它是基于插件的体系结构的概念。这允许插件提供另一个插件API。

基于组件的设计原理

组件级设计准则

为作为架构模型的一部分指定的组件创建命名约定,然后对作为组件级模型的一部分进行细化或细化。

  • 从问题域中获取架构组件名称,并确保它们对于查看架构模型的所有涉众都有意义。

  • 提取可以独立存在而不依赖于其他实体的业务流程实体。

  • 识别并发现这些独立实体为新组件。

  • 使用反映其特定于实现的含义的基础结构组件名称。

  • 从左到右建模任何依赖关系,并从顶部(基类)到底部(派生类)建模继承。

  • 将任何组件依赖关系建模为接口,而不是将它们表示为直接的组件到组件依赖关系。

进行组件级设计

识别与分析模型和体系结构模型中定义的问题域相对应的所有设计类。

  • 识别与基础结构域相对应的所有设计类。

  • 描述未被获取为可重用组件的所有设计类,并指定消息详细信息。

  • 为每个组件标识适当的接口,并详细说明属性,并定义实现它们所需的数据类型和数据结构。

  • 通过伪代码或UML活动图详细描述每个操作内的处理流程。

  • 描述持久性数据源(数据库和文件),并标识管理它们所需的类。

  • 开发并详细说明类或组件的行为表示。这可以通过详细说明为分析模型创建的UML状态图,以及检查与设计类相关的所有用例来完成。

  • 详细说明部署图以提供其他实现细节。

  • 通过使用类实例并指定特定的硬件和操作系统环境,演示关键软件包或组件类在系统中的位置。

  • 可以通过使用既定的设计原则和指南来做出最终决定。经验丰富的设计师在确定最终设计模型之前会考虑所有(或大多数)替代设计解决方案。

好处

  • 易于部署-随着新的兼容版本的推出,替换现有版本变得更加容易,而不会影响其他组件或整个系统。

  • 降低成本-第三方组件的使用使您可以分散开发和维护的成本。

  • 易于开发-组件实现了众所周知的接口以提供已定义的功能,从而可以在不影响系统其他部分的情况下进行开发。

  • 可重用-可重用组件的使用意味着它们可用于在多个应用程序或系统之间分配开发和维护成本。

  • 技术复杂性的修改-组件通过使用组件容器及其服务来修改复杂性。

  • 可靠性-整个系统的可靠性得到提高,因为每个单独组件的可靠性都通过重用提高了整个系统的可靠性。

  • 系统维护和发展-易于更改和更新实施,而不会影响系统的其余部分。

  • 独立-组件的独立性和灵活的连接性。由不同的组并行开发独立的组件。软件开发和未来软件开发的生产力。