组件级设计概述

组件级设计概述


1 什么是组件(Componnent)? #

通常来讲,组件是计算机软件中的一个模块化的构造块。

OMG 统一建模语言规范是这样定义组件的:系统中模块化的、可部署的和可替换的部件,该部件封装了实现并对外提供一组接口。

对于术语 “组件”的实际意义,有不同的观点

  • 面向对象的观点
  • 传统的观点
  • 过程相关的观点

下面从“什么是组件以及在设计建模中如何使用组件”两个角度来对比。

1.1 面向对象的观点 #

在面向对象软件工程环境中,一个组件包括一个协作类集合

  • 组件中的每个类都得到详细阐述,以包括所有属性和与其实现相关的操作。
  • 作为设计细化的一部份,必须定义所有与其他设计类相互通信协作的接口。
  • 为此,设计师需要从分析模型开始,详细描述分析类(对于组件而言,该类与问题域相关)和基础设施类(对于组件而言,该类为问题域提供支持性服务)。

对于架构设计组成部分的每个组件都要实施细化。一旦细化完成,要对每个属性、每个操作和每个接口进行更进一步的细化

  • 对适合每个属性的数据结构必须予以详细说明。
  • 另外还要说明实现与操作相关的处理逻辑的算法细节。
  • 最后是实现接口所需机制的设计。
  • 对于面向对象软件,还包含对实现系统内部对象间消息通信机制的描述。

1.2 传统的观点 #

在传统软件工程环境中,一个组件就是程序的一个功能要素,程序由处理逻辑、实现处理逻辑所需的内部数据结构以及能够保证组件被调用和实现数据传递的接口构成。传统组件也称为模块,作为软件架构的一部份,它扮演如下3个重要角色之一:

  1. 控制组件,协调问题域中所有其他组件的调用;
  2. 问题域组件,完成客户需要的全部功能或部分功能
  3. 基础设施组件,负责完成问题域中所需的支持处理的功能。

与面向对象的组件类似,传统的软件组件也来自分析模型。不同的是,在这种情况下,是以分析模型中的组件细化作为导出组件的基础。组件层次结构上的每个组件都被映射为某一层次上的模块。一般来讲:

  • 控制组件(模块)位于层次结构(架构)顶层附近;
  • 而问题域组件则往往位于层次结构的底层

为了获得有效的模块化,在组件细化的过程中采用了功能独立性的设计概念在组件级设计中,每个模块都要被细化

  • 需要明确定义模块的接口,即每个经过接口的数据或控制对象都需要被明确说明;接口被表示为一组输入和输出的数据对象或者数据项的集合;
  • 还需要定义模块内部使用的数据结构;
  • 采用逐步求精方法设计完成模块中相关功能的算法;
  • 有时候需要用状态图表示模块行为;
  • 设计细化的过程一直进行下去,直到能够提供指导组件构造的足够细节为止。但是,不要忘记必须容纳组件的架构以及服务于多个组件的全局数据结构。

1.3 过程相关的观点 #

关于组件级设计的面向对象观点和传统观点,都假定从头开始设计组件。也就是说,设计者必须根据从需求模型中导出的规格说明创建新组件。在过去的40年间,软件工程已经开始强调使用已有组件或设计模式来构造系统的必要性。

  • 软件工程师在设计过程中,可以使用已经验证过的设计或代码级组件目录;
  • 当设计完软件架构后,软件工程师就可以从目录中选出组件或者设计模式,并用这些组件或设计模式来组装架构;
  • 由于这些组件是根据复用思想来创建的,因此其接口的完整描述、要实现的功能和需要的通信与协作等对于设计者来说都是可以得到的。

参考资料 #

  • 《软件工程 - 实践者的研究方法》
© 2024 lyremelody.cn All Rights Reserved
访问量: