系统架构设计师学习之路(22)

第5章 软件架构设计

5.1 软件架构概念

5.1.1 软件架构的定义
一个程序和计算系统软件体系结构是指系统的一个或者多个结构。
结构中包括软件的构件,构件的外部可见属性,以及它们之间的相互关系。
体系结构并非可运行软件。它是一种表达:

  • 分析设计在满足规定需求方面的有效性;
  • 在设计变更相对容易的阶段,考虑体系结构可能的选择方案;
  • 降低与软件构造相关联的风险。

软件架构可以简单到程序模块或者面向对象的类,也可以扩充到包含数据库和能够完成客户与服务器网络配置的“中间件”。
软件体系结构的设计通常考虑了设计金字塔中的两个层次——数据设计和体系结构设计。数据设计使我们表示出传统系统中体系结构的数据构件的结构、属性和交互作用。
建立体系结构层的“内聚的、良好设计的表示”所需的方法,其目标是提供一种导出体系结构设计的系统化方法,而体系结构设计是构建软件的初始蓝图。
5.1.2 软件架构设计与生命周期
1.需求分析阶段
需求和SA设计面临的是不同的对象:一个是问题空间;另一个是解空间。
保持二者的可追踪性和转换,一直是软件工程领域追求的目标。从软件需求模型向SA模型的转换主要关注两个问题:
(1)如何根据需求模型构建SA模型;
(2)如何保证模型转换的可追踪性。
针对这了两个问题的解决方案,随着所采用的需求模型的不同而各异。在采用Use Case图描述需求的方法中,从Use Case图向SA模型(包括类图等)的转换过程一般经过词性分析和一些经验规则来完成,从而追踪性则可通过表格或者Use Case Map等来维护。
从软件复用的角度看,SA影响需求工程也有其自然性和必然性,已有系统的SA模型对新系统的需求工程能够起到很好的借鉴作用。在需求研究阶段研究SA,有助于将SA的概念贯穿于整个软件生命周期,从而保证软件开发过程概念的完整性,有利于各阶段参与者的交流,也利于维护各阶段的可追踪性。
2.设计阶段
这一阶段SA研究的主要内容:SA模型的描述、SA模型的设计与分析方法,以及对SA设计经验的总结与复用等。
有关SA模型描述的研究分为三个层次:
(1)SA的基本概念
即SA模型由哪些元素组成,这些组成元素之间按照何种原则组织。传统的设计概念只包括构件(软件系统中相对独立的有机组成部分,最初称为模块)以及一些基本的模块互联机制。随着研究的深入,构件间的互连机制逐渐独立出来,成为与构件同等级别的实体,称为连接子。现阶段的SA描述方法是构件和连接子的建模。
(2)体系结构描述语言(ADL)
支持构件、连接子及其配置的描述语言就是如今的体系结构描述语言。ADL对连接子的重视成为区分ADL和其他建模语言的重要特征之一。典型的ADL包括UniCon、Rapide、Darwin、Wright、C2 SADL、Acme、xADL 、XYZ/ADL和ABC/ADL等。
(3)SA模型的多视图表示
从不同的视角描述特定系统的体系结构,从而得到多个视图,并将这些视图组织起来以描述整体的SA模型。多视图作为一种描述SA模型的重要途径,也是近年来SQ研究领域的重要方向之一。系统的每一个不同侧面的视图反映了一组系统相关人员所关注的系统的特定方面,多视图体现了关注点分离的思想。

把体系结构描述语言和多视图结合起来描述系统的体系结构,能使系统易于理解,方便系统相关人员进行交流,并且有利于系统的一致性检测以及系统质量属性的评估。
3.实现阶段
(1)研究基于SA的开发过程支持,如项目组织结构、配置管理等;
(2)寻求从SA向实现过渡的途径,如将程序设计语言元素引入SA阶段、模型映射、构件组装、复用中间件平台等。
(3)研究基于SA的测试技术。
SA提供了待生成系统的蓝图,根据该蓝图实现系统需要较好的开发组织结构和过程管理技术。以体系结构为中心的软件项目管理方法,开发团队的组织结构应该和体系结构模型有一定的对应关系,从而提高软件开发的效率和质量。
为了填补高层SA模型和底层之间的鸿沟,通过封装底层的实现细节,模型转换、精化等手段缩小概念之间的差距。典型的方法如下:
(1)在SA模型引入实现阶段的概念,如引入程序设计语言元素等。
(2)通过模型转换技术,将高层的SA模型逐步精化成能够支持实现的模型。
(3)封装底层的实现细节,使之成为较大粒度构件,在SA指导下通过构件组装的方式实现系统,这往往需要底层中间件平台的支持。
4.构件组装阶段
(1)如何支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供支持。
(2)在组装过程中,如何检测并消除体系结构失配问题。
对设计阶段连接子的支持:不少ADL支持在实现阶段将连接子转换到具体的程序代码或系统实现,如UniCon定义Pipe、FileIO、ProcedureCall等多种内建的连接子类型,它们在设计阶段被实例化,并可以在实现阶段在工具的支持下转化成为具体的实现机制,如过程调试、操作系统数据访问、Unix管道与文件、远程过程调用等。支持从SA模型生成代码的体系结构描述语言,如C2 SADL、Rapide等,也都提供了一定的机制生成连接子的代码。
中间件遵循特定的构建标准,为构件互联提供支持,并提供相应的公共服务,如安全服务、命名服务等。中间件支持的连接子实现有如下优势:
(1)中间件提供了构件之间跨平台交互的能力,且遵循特定的工业标准,如CORBA、J2EE、COM等,可以有效地保证构件之间的通信完整性。
(2)产品化的中间件可以提供强大的公共服务能力,这样能够更好地保证最终系统的质量属性。
在构件组装阶段失配问题主要包括:
(1)由构件引起的失配,包括由于系统对构件基础设施、构建控制模型和构件数据模型的假设存在冲突引起的失配。
(2)由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配。
(3)由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题。
5.部署阶段
随着网络与分布式软件的发展,软件部署逐渐从软件开发过程中独立出来,成为软件生命周期中一个独立的阶段。SA对软件部署的作用:
(1)一共高层的体系结构视图描述部署阶段的软硬件模型。
(2)基于SA模型可以分析部署方案的质量属性,从而选择合理的部署方案。
6.后开发阶段
这一阶段的SA主要围绕维护、演化、复用等方面来进行。
典型的研究方向:
(1)动态软件体系结构
1)体系结构设计阶段的支持。主要包括变化的描述、根据变化如何生成修改策略、描述修改过程、在高抽象层次保证修改的可行性以及分析、推理修改所带来的影响等。
2)运行时刻基础设施的支持。主要包括系统体系结构的维护、保证体系结构修改在约束范围内、提供系统的运行时刻信息、分析修改后的体系结构符合指定的属性、正确映射体系结构构造元素的变化到实现模块、保证系统的重要子系统的连续执行并保持状态、分析和测试运行系统等。
(2)体系结构恢复与重建
SA重建是指从已实现的系统中获取体系结构的过程。一般重建的输出是一组体系结构视图。现有的重建方法:
1)手工体系结构重建;
2)工具支持的手工重建;
3)通过查询语言来自动建立聚集;
4)使用其他技术,比如数据挖掘等。
5.1.3 软件架构的重要性
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。
1.架构设计能够满足系统的品质
2.架构设计使受益人达成一致的目标
3.架构设计能够支持计划编制过程
4.架构设计对系统开发的指导性
5.架构设计能够有效地管理复杂性
6.架构设计为复用奠定了基础
7.架构设计能够降低维护费用
8.架构设计能够支持冲突分析

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值