系统架构设计师培训软件架构设计与生命周期

系统架构设计师 责任编辑:wbnmyt 2013-12-26

添加老师微信

备考咨询

加我微信

摘要:需求阶段的SA研究还处于起步阶段。在本质上,需求和SA设计面临的是不同的 对象:一个是问题空间;另一个是解空间。保持二者的可追踪性和转换,一直是软件工程领域追求的目标。从软件需求模型向SA模型的转换主要关注两个问题:

5.1.2软件架构设计与生命周期

1.需求分析阶段

需求阶段的SA研究还处于起步阶段。在本质上,需求和SA设计面临的是不同的 对象:一个是问题空间;另一个是解空间。保持二者的可追踪性和转换,一直是软件工程领域追求的目标。从软件需求模型向SA模型的转换主要关注两个问题:

如何根据需求模型构建SA模型。

如何保证模型转换的可追踪性。

针对这两个问题的解决方案,随着所采用的需求模型的不同而各异。在采用Use Case 图描述需求的方法中,从Use Case图向SA模型(包括类图等)的转换一般经过词性分 析和一些经验规则来完成,而可追踪性则可通过表格或者Use Case Map等来维护。

从软件复用的角度看,SA影响需求工程也有其自然性和必然性,已有系统的SA模 型对新系统的需求工程能够起到很好的借鉴作用。在需求阶段研究SA,有助于将SA的 概念贯穿整个软件生命周期,从而保证了软件开发过程的概念完整性,有利于各阶段参 与者的交流,也易于维护各阶段的可追踪性。

2.设计阶段

设计阶段是SA研究关注的最早和最多的阶段,这一阶段的SA研究主要包括:SA模 型的描述、SA模型的设计与分析方法,以及对SA设计经验的总结与复用等。有关SA 模型描述的研究分为三个层次:

SA的基本概念,即SA模型由哪些元素组成,这些组成元素之间按照何种原则 组织。传统的设计概念只包括构件(软件系统中相对独立的有机组成部分,最初称为模 块)以及一些基本的模块互联机制。随着研究的深入,构件间的互联机制逐渐独立出来, 成为与构件同等级别的实体,称为连接子。现阶段的SA描述方法是构件和连接子的建 模。近年来,也有学者认为应当把Aspect等引入SA模型。

体系结构描述语言(ArchitectureDescription Language. ADL),支持构件、连 接子及其配置的描述语言就是如今所说的体系结构描述语言。ADL对连接子的重视成为 区分ADL和其他建模语言的重要特征之一。典型的ADL包括UniCon、Rapide、Darwin、 Wright、C2SADL、Acme, xADL、XYZ/ADL 和 ABC/ADL 等。

SA模型的多视图表示,从不同的视角描述特定系统的体系结构,从而得到多 个视图,并将这些视图组织起来以描述整体的SA模型。多视图作为一种描述SA的重 要途径,也是近年来SA研究领域的重要方向之一。系统的每一个不同侧面的视图反映 了一组系统相关人员所关注的系统的特定方面,多视图体现了关注点分离的思想。

把体系结构描述语言和多视图结合起来描述系统的体系结构,能使系统更易于理 解,方便系统相关人员之间进行交流,并且有利于系统的一致性检测以及系统质量属性 的评估。学术界己经提出若干多视图的方案,典型的包括4+1模型(逻辑视图、进程视 图、开发视图、物理视图,加上统一的场景)、Hofinesiter的4视图模型(概念视图、模 块视图、执行视图、代码视图)、CMU-SEI的Views and Beyond模型(模块视图、构件 和连接子视图、分配视图)等。此外,工业界也提出了若干多视图描述SA模型的标准, 如IEEE标准1471-2000 (软件密集型系统体系结构描述推荐实践)、开放分布式处理参 考模型(RM-ODP)、统一建模语言(UML)以及IBM公司推出的Zachman框架等。需 要说明的是,现阶段的ADL大多没有显式地支持多视图,并且上述多视图并不一定只 描述设计阶段的模型。

3.实现阶段

最初的SA研究往往只关注较髙层次的系统设计、描述和验证。为了有效实现从SA 设计向实现的转换,实现阶段的体系结构研究在以下几个方面。

研究基于SA的开发过程支持,如项目组织结构、配置管理等。

寻求从SA向实现过渡的途径,如将程序设计语言元素引入SA阶段、模型映 射、构件组装、复用中间件平台等。

研究基于SA的测试技术。

SA提供了待生成系统的蓝图,根据该蓝图实现系统需要较好的开发组织结构和过 程管理技术。以体系结构为中心的软件项目管理方法,开发团队的组织结构应该和体系 结构模型有一定的对应关系,从而提髙软件开发的效率和质量。

对于大型软件系统而言,由于参与实现的人员较多,所以需要提供适当的配置管理 手段。SA引入能够有效扩充现有配置管理的能力,通过在SA描述中引入版本、^选择 项(options)等信息,可以分析和记录不同版本构件和连接子之间的演化,从而可用来 组织配置管理的相关活动。典型的例子包括支持给构件指定多种实现的UniCon、支持 给构件和连接子定义版本信息和可选信息的xADL等。

为了填补髙层SA模型和底层实现之间的鸿沟,通过封装底层的实现细节,模型转 换、精化等手段缩小概念之间的差距。典型的方法如下。

在SA模型中引入实现阶段的概念,如引入程序设计语言元素等。

通过模型转换技术,将高层的SA模型逐步精化成能够支持实现的模型。

封装底层的实现细节,使之成为较大粒度构件,在SA指导下通过构件组装的 方式实现系统,这往往需要底层中间件平台的支持。

4.构件组装阶段

在SA设计模型的指导下,可复用构件组装可以在较髙层次上实现系统,并能够提 高系统实现的效率。在构件组装的过程中,SA设计模型起到了系统蓝图的作用。研究 内容包括:

如何支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供 支持。

在组装过程中,如何检测并消除体系结构失配问题。

对设计阶段连接子的支持:不少ADL支持在实现阶段将连接子转换到具体的程序 代码或系统实现,如UniCon定义了 Pipe、FilelO、ProcedureCall等多种内建的连接子 类型,它们在设计阶段被实例化,并可以在实现阶段在工具的支持下转化成为具体的实 现机制,如过程调用、操作系统数据访问、Unix管道和文件、远程过程调用等。支持从 SA模型生成代码的体系结构描述语言,如C2SADL、Rapide等,也都提供了一定的机

制生成连接子的代码。

中间件遵循特定的构件标准,为构件互联提供支持,并提供相应的公共服务,如安 全服务、命名服务等。中间件支持的连接子实现有如下优势:

(1)中间件提供了构件之间跨平台交互的能力,且遵循特定的工业标准,如CORBA、 J2EE、COM等,可以有效地保证构件之间的通信完整性。

(2)产品化的中间件可以提供强大的公共服务能力,这样能够更好地保证最终系统 的质量属性。设计阶段连接子的规约可以用于中间件的选择,如消息通信连接子最好选 择提供消息通信机制的中间件平台。从某种意义上说,随着中间件技术的发展,也导致 一类新的SA风格,自P中间件导向的体系结构风格(middleware-induced architectural style) 的出现。

检测并消除体系结构失配:体系结构失配问题是由David Garlan等人在1995年提 出。失配是指在软件复用的过程中,由于待复用构件对最终系统的体系结构和环境的假 设(assumption)与实际状况不同而导致的冲突。在构件组装阶段失配问题主要包括:

由构件引起的失配,包括由于系统对构件基础设施、构件控制模型和构件数据 模型的假设存在冲突引起的失配。

由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设 存在冲突引起的失配。

由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题, 首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题。

5.部署阶段

随着网络与分布式软件的发展,软件部署逐渐从软件开发过程中独立出来,成为软 件生命周期中一个独立的阶段。为了使分布式软件满足一定的质量属性要求,如性能、 可靠性等,部署需要考虑多方面的信息,如待部署软件构件的互联性、硬件的拓扑结构、 硬件资源占用(如CPU、内存)等。SA对软件部署作用如下。

提供高层的体系结构视图描述部署阶段的软硬件模型。

基于SA模型可以分析部署方案的质量属性,从而选择合理的部署方案。

现阶段,基于SA的软件部署研究更多地集中在组织和展示部署阶段的SA、评估分析部署方案等方面,部署方案的分析往往停留在定性的层面,并需要部署人员的参与。

  6.后开发阶段

后开发阶段是指软件部署安装之后的阶段。这一阶段的SA研究主要围绕维护、演 化、复用等方面来进行。典型的研究方向包括动态软件体系结构、体系结构恢复与重建等。

1)动态软件体系结构

传统的SA研究设想体系结构总是静态的,即软件的体系结构一旦建立,就不会在 运行时刻发生变动。但人们在实践中发现,现实中的软件往往具有动态性,即它们的体 系结构会在运行时发生改变。SA在运行时发生的变化包括两类。一类是软件内部执行 所导致的体系结构改变。比如,很多服务器端软件会在客户请求到达时创建新的构件来 响应用户的需求。某个自适应的软件系统可能根据不同的配置状况采用不同的连接子来 传送数据。另一类变化是软件系统外部的请求对软件进行的重配置。比如,有很多高安 全性的软件系统,这些系统在升级或进行其他修改时不能停机。因为修改是在运行时刻 进行的,体系结构也就动态地发生了变化。在高安全性系统之外也有很多软件需要进行 动态修改,比如很多操作系统期望能够在升级时无须重新启动系统,在运行过程中就完 成对体系结构的修改。

由于软件系统会在运行时刻发生动态变化,这就给体系结构的研究提出了很多新的 问题。如何在设计阶段捕获体系结构的这种动态性,并进一步指导软件系统在运行时刻 实施这些变化,从而达到系统的在线演化或自适应甚至自主计算,是动态体系结构所要 研究的内容。现阶段,动态软件体系结构研究可分为以下两个部分。

体系结构设计阶段的支持。主要包括变化的描述、根据变化如何生成修改策略、 描述修改过程、在高抽象层次保证修改的可行性以及分析、推理修改所带来的影响等。

运行时刻基础设施的支持。主要包括系统体系结构的维护、保证体系结构修改 在约束范围内、提供系统的运行时刻信息、分析修改后的体系结构符合指定的属性、正 确映射体系结构构造元素的变化到实现模块、保证系统的重要子系统的连续执行并保持 状态、分析和测试运行系统等。

2)体系结构恢复与重建

当前系统的开发很少是从头开始的,大量的软件开发任务是基于已有的遗产系统进 行升级、增强或移植。这些系统在开发的时候没有考虑SA,在将这些系统进行构件化 包装、复用的时候,会得不到体系结构的支持。因此,从这些系统中恢复或重构体系结 构楚有意义。的,也是必要的。

SA重建是指从己实现的系统中获取体系结构的过程。一般地,SA重建的输出是一 组体系结构视图。现有的体系结构重建方法可以分为4类:

(1)手工体系结构重建。

(2)工具支持的手工重建。通过工具对手工重建提供辅助支持,包括获得基本体系 结构单元、提供图形界面允许用户操作SA模型、支持分析SA模型等。如KLOCwork inSigfat工具(www.klocworlccom/products/insightasp)使用代码分析算法直接从源代码获得SA构件视图,用户可以通过操作图形化的SA设定体系结构规则,并可在工具的支持下实现对体系结构的理解、自动控制和管理。

(3)通过査询语言来自动建立聚集。这类方法适用于较大规模的系统,基本思路是: 在逆向工程工具的支持下分析程序源代码,然后将所得到的体系结构信息存入数据库, 并通过适当的查询语言得到有效的体系结构显示。

(4)使用其他技术,比如数据挖掘等。


更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!