软件架构设计---软件架构视图

 软件架构视图

   从软件架构本身的特点出发讨论了架构建模及与特定应用领域密切相关的架构风格。本节将从对架构编档的角度对软件架构视图及其风格进行讨论。

1 软件视图的分类 

    现代软件系统非常复杂,通常在某个具体的时间内只需将注意力集中在某几个结构上(就像看病时,医生只是将注意力集中在某方面的人体结构上,骨科医生与心血管科医生关心不同的结构),结构是元素本身的集合,而视图则是捕获和表达结构(文档描述),虽然它们有区别,但在实际使用时则不严格区分,即从系统体系的角度说是结构,从文档角度说是视图,因此,本节将不再区分结构和视图术语。

    软件架构是一种无法以简单的一维方式进行说明的复杂实体,从不同侧面的描述就是视图。架构的优势也在于使用视图:每个视图强调系统的某一个方面,同时忽视系统的其他方面,以便有助于处理或理解当前问题,描述完整的系统架构必须具备完整的视图集, “4+1”方法就是一类完备视图集。

    软件视图通常分为三种类型:

    (1)模块视图类型:为系统的主要模块实现单元编档。

    (2)构件和连接件视图类型:为系统的构件和连接件执行单元编档。

    (3)分配视图类型:为软件的开发和执行环境之间的关系编档。每一视图类型中,又有一些常用的形态,可以把这些形态归纳成架构风格(简称风格),

    大量的架构风格供架构设计师选用,例如客户机/服务器是一种常见的架构风格,它是构件和连接件视图类型中的一员。架构风格是对元素和关系类型的特化,它还包括如何使用这些元素和关系类型的一组限制条件。架构结构/视图分类如表 9-10 所示。下面各小节中再分别对这三种类型及其风格从元素、关系及特征方面做进一步总结。

 

2 模块视图类型及其风格

    模块将遵循某种方式将软件系统分解成可管理的功能单元。架构模块视图是通过文档来枚举系统的主要实现单元或模块,及这些单元之间的关系。

    任务完整的架构文档必须包含有模块视图,它为源代码提供蓝图。该类型如表 9-11 所示。

    下面对模块视图的四种风格进行总结。

    (1)分解风格能展示向模块分配责任的方式。该风格总结如表 9-12 所示。

    (2)使用风格能展示模块相互依赖的方式。该风格总结如表 9-13 所示。

 

    (3)分层风格能将系统分割成一组虚拟机,通过“允许使用”关系相互关联,分层风格能帮助实现可移植性和可修改性。该风格总结如表 9-14 所示。

    (4)泛化风格能展示一个模块如何成为另一个模块的泛化或特化,从而使模块之间产生关联。它广泛应用于面向对象的系统,能展示继承性,并能用来使用模块之间的共性。该风格总结如表 9-15 所示。

 

3   C&C视图类型及其风格

    C&C 视图能定义由具有某种运行时存在的元素模型,这些元素包括进程、对象、客户机、服务器及数据存储器等。此外,它还包含作为元素的交互路径,如通信链路和协议、信息流及共享存储器访问。通常,可利用复杂的基础结构(如中间件框架、分布式通信信道和进程调度)来执行这些交互操作。该类型总结如表 9-16 所示。

    C&C 视图风格是 C&C视图类型的特化,C&C 视图风格为数不少,下面对 C&C 视图的几种风格进行总结。

    (1)管道和过滤器风格中的交互模式表现出数据流连续变换的特征。数据抵达过滤器并经过转换后由管理传送给下一个过滤器。该风格总结如表 9-17 所示。

    (2)共享数据风格通过保留持久数据来支配交互模式,持久数据由多个数据存取器和至少一个储存库保留。该风格总结如表 9-18 所示。

 

    (3)发布-订阅风格用于向一组未知接受者发送事件和消息。可在不修改生产者的情况下添加新的接受者(订阅者)。在发布-订阅风格中,构件通过事件发布进行交互。构件可订阅一组事件。该风格总结如表 9-19 所示。

    (4)客户机-服务器风格能展示构件通过请求其他构件的服务进行交互的过程,将功能划分成客户机和服务器后即可基于运行时准则把它们单独分配给各个级。该风格总结如表 9-20 所示。

    (5)对等连接系统能通过构件之间的直接交换支持服务交换。它是一种调用/返回风格。该风格总结如表 9-21 所示。

    (6)通信-进程风格的特征表现在通过各种连接件机制并发执行构件的交互,如通过同步、消息传递、数据交换、启动和停止等进行交互。该风格总结如表 9-22 所示。

 

4  分配视图类型及其风格

    硬件、文件系统和团队结构都会与软件架构进行交互,将软件架构映射到其环境的一般形式称为“分配视图类型”。该类型总结如表 9-23 所示。

    分配视图类型的三种常见风格为:

  • 部置风格:能描述构件和连接件对硬件的映射,硬件是软件执行的场所。

  • 实现风格:能描述模块对包含它们的文件系统的映射。

  • 工作任务风格:能描述模块对承担模块开发任务的人员、团队或小组的映射。

    (1)部置风格体现为 C&C 风格(如通信-进程风格)的元素被分配到执行平台。该风格总结如表 9-24 所示。

    (2)实现风格能将模块视图类型中的模块映射到开发基础结构。实现一个模块总会产生许多独立文件,必须对这些文件进行组织,以免失去对系统的控制及系统的完整性。通常利用配置管理技术进行文件管理。该风格总结如表 9-25 所示。

    (3)软件项目的时间和预算估计取决于工作分解结构(WBS),而工作分解结构则取决于软件架构。工作任务风格将软件架构映射到由人组成的团队之中,实现这一项目管理的目的。该风格总结如表 9-26 所示。

    工作任务风格与模块分解风格关系密切,它能将模块分解风格用作其分配映射的基础。这种风格能通过添加与开发工具、测试工具和配置管理系统等对应的模块分解进行扩展。工作任务风格还通常与其他风格联合使用,例如,团队工作任务可以是模块分解风格中的模块,可以是分层图中的层,也可以是多进程系统中的任务或进程。

 

5  各视图类型间的映射关系 

    为了完整地描述一个架构,必须使用多个视图,这些视图必须遵守一定的映射关系。

    (1)模块视图类型中的视图通常会映射到构件和连接件视图类型中的视图。模块实现单元将映射到运行时构件。

    (2)系统的构件和连接件视图和模块视图之间的关系可能会非常复杂。同样的代码模块可由C&C 视图的许多元素执行。反之,C&C 视图的单一构件可执行由许多模块定义的代码。同样,C&C 构件可能会拥有许多与环境进行交互的点,每个交互点由同一模块接口定义。

    (3)分配视图类型是为有效地实现软件架构的辅助性视图,它将其他视图类型中的软件元素映射到软件环境中,即反映其他视图与软件环境之间的关系。

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值