当前位置:文档之家› 软件体系结构描述语言(ADL)

软件体系结构描述语言(ADL)

软件体系结构描述语言(ADL)
软件体系结构描述语言(ADL)

2011-5-28

大作业参考资料:

1.试就一种常用软件体系结构说明其概念、结构模型与应用领域,并结合该体系结构的应用,用一种ADL来描述该体系结构。

2.结合某一应用,编写一个XML文档,并将其与一个XML Scheme对应起来,最后用一种方法来解析该XML文件。

3.登录Oracle网站,学习Java FX 的使用方法,编写一个小型Java FX应用。(选作)

4.通过网络学习Flex,用Flex编写一个应用程序。(选作)

5.给出三种常用的Java 设计模式,并用Java语言给出其实现的实例。电子稿文件名格式:学号+姓名+软件体系结构期末作业.DOC

软件体系结构描述语言(ADL)

要点浏览

本章将对学术界常见的体系结构描述语言进行介绍.由于研究流派不同,各种ADL的设计和能力也不尽相同.本章选取五种比较典型的ADL作为代表,希望能让读者了解主流ADL的基本能力,主要功能和应用范围.为了让读者对各种ADL 有一个更为清晰的认识,本章最后还对这五种典型的ADL进行了比较全面的比较. 通过本章的学习,您将能:

了解主流ADL的语法和语义

掌握主流ADL的特点

区分主流ADL的不同

总体介绍

任何一个软件系统都有结构,在系统开发过程中的分析设计阶段,通过考察系统的结构,可以对系统的开发和实现提供良好的基础.系统的结构往往体现为系统的各个部分之间的配置.对于描述软件系统配置的表示法的研究由来已久.早在1975年,DeRemer和Kron就设计了模块互连语言(Module Interconnection Language,MIL)用于描述结构化的基于模块的程序.在MIL中,模块可能需要导入/导出各种资源.所谓的"资源"就是命名元素,例如类型定义,常量,变量,函数等.MIL 的编译器通过进行模块间的类型检查来保证系统的完整性,常见的检查包括:某个模块要使用的资源是否已经被其它模块提供了,资源的类型是否匹配,一个模块的实现是否确实提供了其规约中声明的资源,一个模块是否有权访问它要使用的资源等.

早期的MIL要求不同模块的开发人员在开发前先达成很多一致.例如:能够根据简单的名字匹配来发现模块之间的交互,所有的模块都是用同一种语言开发的,所有的模块在组装系统时都可用,模块的接口描述了与之进行交互的其它模块……进一步的研究逐步弱化了这些限制.例如Darwin允许模块在运行时动态的实例化并进行绑定;Polygen允许不同的模块用不同的编程语言进行开发.各种软件配置的表示法逐渐成熟,它们既能描述静态也能描述动态的结构化的分布式系统. MIL的关注点是模块及其之间的互连.随着系统复杂度的提高,人们发现模块之间的交互逐步变得复杂.研究人员对模块之间交互的重视导致了"连接子

"(connector)这个概念的诞生,它主要用于描述软件系统的各个组成部分(component)即构件之间的交互关系.从而软件系统的结构可以自然的用构件,连接子及其之间的配置进行描述.将连接子作为与构件同等重要的一阶实体进行处理,是因为如果不将构件之间的交互显式的进行描述,将会带来一些问题,包括: 难以将构件之间的交互信息局部化,从而导致难以识别系统中的连接,并且难以复用连接机制

构件之间的关系难以进行抽象,从而阻碍对整个系统结构的理解

由于构件的实现和交互信息绑定在一起,对不同构件的使用往往会因为交互机制的不兼容而产生严重的集成问题.

支持构件,连接子及其配置的描述语言就是如今所说的体系结构描述语言(Architecture Description Language,ADL).UniCon就是最早出现的一种体系结构描述语言.此外,典型的ADL还包括:

Rapide:一种事件驱动的ADL,它以体系结构定义作为开发框架,支持基于构件的开发.该语言提供了建模,分析,仿真和代码生成的能力,但是没有将连接子显式地表示为一阶实体.

Wright:其主要特点是将CSP 用于软件体系结构的描述,从而完成对体系结构描述的某些形式化推理(包括相容性检查和死锁检查等).但它仅仅是一个设计规约语言,只能用于描述,无法支持系统生成,同时CSP 的使用也是比较困难的事情. Acme:支持ADL之间的映射及工具集成的体系结构互交换语言.其目标是作为体系结构设计的一个共同的互交换格式,以便将现有的各种ADL在这个框架下统一起来;而它本身也可以看作是一种ADL.

xArch:一种基于XML 的ADL.它使用XML 定义了描述体系结构的核心元素,可

以用来简单的描述软件体系结构,也可以作为设计其它ADL的基础,或者用作体系结构描述描述语言的互交换机制.

xADL2.0:以xArch 为基础的基于XML 的ADL.除了xArch 的核心元

素,xADL2.0 还提供了对系统运行时刻和设计时刻的元素的建模支持,类似版本,选项和变量等更高级的配置管理观念,以及对产品家族的体系结构的建模支持.此外,xADL2.0还利用XML 的可扩展性简化了新的ADL的设计及其相应工具的开发过程.

各种ADL的出现为描述软件系统的结构提供了一种形式化的描述方法,而不是容易引起歧异的线框图.这种精确的描述也使得设计人员能够在系统开发的早期阶段对系统结构进行高层的分析和验证,从而有助于提高软件开发质量,降低开发成本.

以下我们将着重介绍五种ADL:UniCon,Darwin,C2 SADL,Acme和xADL.

常见的体系结构描述语言

UniCon (Universal Connector)

UniCon简介

UniCon是由CMU和SEI设计的一个体系结构描述语言.该语言关注软件体系结构的结构化特性,将系统(本身也是一个复合构件)描述为构件和连接子的配置,其中构件表示计算或者数据,而连接子表示构件之间的交互.每个构件的接口都对外提供一些演员(player).构件通过这些演员与外界发生交互.与构件类似,一个连接子的协议对外提供一些角色(role),连接子通过这些角色来调解构件之间的交互.图- 1是用UniCon的图形化编辑器生成的示意图.

UniCon概念的示意图

图- 1中有两个构件,构件A和构件B,它们都是Unix中的过滤器.这两个构件都有三个演员,用三角形表示.左边的演员表示输入流"standard in",右边的演员是输出流"standard our"和"standard error".两个构件之间是一个连接子,它是Unix下的管道.这个连接子有两个角色:悬垂在左边的表示管道的入口(source),右边的表示管道的出口(sink).

在上图中,构件和连接子之间还没有交互.为了在构件之间建立连接,演员必须和某个角色关联起来.如图- 2所示.

在UniCon建立连接

通过演员与角色的关联,最终就可以建立整个系统各个部分之间的配置.最新版本的UniCon不仅支持类似于上例的管道-过滤器系统,还支持使用过程调用和共享数据的模块交互系统,基于RPC调用的分布式系统,根据各种实时要求共享处理器的进程以及基于SQL命令的数据库访问.

UniCon的提出是为了达到如下目的:

解决系统描述和组装的实际问题,为实际工具提供一个原型;

为各种连接机制提供一个一致的访问方式

帮助软件设计师区分不同的构件类型和连接子类型并验证构件和连接子配置的正确性

支持图形化和文本化符号以及二者之间的互换

兼容现存的用常见的编程语言编写的构件(这些构件并不需要特定于UniCon) 尽可能的将运行时开销降到最低

以下将具体介绍UniCon中构件和连接子的定义.

UniCon中的构件

UniCon中的构件定义包括规约部分和实现部分.

构件的规约称为构件的接口(interface).接口定义了构件所能进行的计算以及使用构件必须遵循的约束.构件的接口包含三类信息:

构件类型:构件类型表示构件提供的功能的类型,它限制了该构件所能定义的演员的数量,类型和规约.

特性:由属性和值组成的二元组,用于指定与构件整体相关的附加信息,例如断言,约束等.

演员:从构件外部可见的语义单元,构件通过演员与其它构件发生交互.

其语法如下:

构件的实现有两种形式:

原子(primitive)实现:原子实现是一个指向存在于UniCon语言外部的文档链接,该文档包含了相应的构件实现.它可能是某种编程语言的源代码(目前UniCon工具集仅仅支持C语言的源代码),也可以是目标码,或者是包含目标码的Unix档案库文件,或者是二进制可执行文件,shell脚本,数据文件,C语言的include文件等复合(composite)实现:某个UniCon构件的复合实现是对其它已定义的构件和连接子的配置的描述,该实现包含三类信息:

片段(piece):用于构造某个配置的构件和连接子实例

配置信息:描述构件和连接子的关联

抽象信息:描述该构件的接口如何由其复合实现中的构件接口实现.

构件实现的语法如下:

UniCon中的连接子

连接子的定义也包含规约和实现两个部分,其中规约部分通过协议(protocol)进

行描述.连接子的协议定义了构件之间允许产生的交互,并确保这些交互能够顺利进行.连接子的协议包含三类信息:

连接子类型:连接子类型表示连接子所能调解的构件之间的交互类型,它限制了连接子的角色的数量,类型和规约.

特性:由属性和值组成的二元组,用于指定和连接子整体相关的附加信息,例如断言,约束等(例如和时间和顺序相关的规则)

角色:从连接子外部可见的语义单元,通过角色连接子对构件的交互进行调解.角色通过与演员发生关联,从而形成系统的连接,它定义了参与连接的演员的需求与责任.

连接子的实现是UniCon内置的,即UniCon只支持连接子的原子实现,它本身不提供用户自定义连接子实现的机制.

连接子的定义的语法如下(从中也可以看出UniCon目前支持的连接子实现的类型):

UniCon是最早的体系结构描述语言之一.从上述介绍可以看出,UniCon强调将系统划分为构件后,用适当的连接子将其组装起来构成一个完整的系统.构件和连接子之间是松耦合关系.UniCon备受诟病的一点是它只支持预定义的连接子,并且不支持复合连接子.为了解决这个问题,相关研究人员在UniCon的基础上对其进行了增强.增强后的UniCon称为UniCon-2.UniCon-2提供了一个比较灵活的类型系统,并且引入了责任(duty)这个概念用于描述演员,角色等与属性的关系.某个系统配置的责任还可以用于描述体系结构风格.由于UniCon-2允许用户引入新类型,为了便于对与新类型相关的约束进行检查,UniCon-2采用了一种开放的编译器结构以便于增加相应的检测方法.

Darwin

Darwin简介

Darwin最初是一个分布式系统配置语言,引入软件体系结构研究后,Darwin成为一个体系结构描述语言.作为一个ADL,Darwin对软件系统的静态结构的描述和UniCon非常相似,不过Darwin中引入了一些特有的构造(construct)使之便于描述系统的动态特性.此外,Darwin使用π演算作为其形式化基础,因此使用Darwin描述的体系结构模型能够进行一些高层的模型检测,例如是否存在死锁等.

Darwin的建模能力和特点

使用Darwin描述的软件系统配置主要由构件及构件之间的绑定(binding)组成. Darwin中的构件是用服务(service)进行定义的,一个构件既能对外提供一些服务,也能请求外部的服务.所有的服务名的作用范围仅限于定义这些服务的构件,亦即构件的定义本身并不需要了解全局的服务名.因此Darwin中的构件是上下文独立的(context independent),这有助于构件的复用,并能简化维护阶段对构件的替换工作.构件的服务由服务类型进行区分,但是Darwin本身并不解释服务类型信息.服务类型信息要么由低层的形式化行为规约进行解释,要么用于表示底层分布式平台所支持的通信机制(例如在Regis系统中,类型信息就可以直接用于选择正确的通信代码).图- 3是一个过滤器构件的定义,其中服务的类型信息就是尖括号内的内容.

Darwin中的构件

Darwin中的绑定就是构件的provide服务和require服务之间的链接.只有provide服务类型和require服务类型相互匹配,相应的绑定才是合法的.由于

Darwin本身只管理服务类型,并不对其进行解释,因此必须由提供服务类型的系统来判断服务是否匹配(不过在Darwin目前的工具集中,仅仅简单的通过名字是否相同来判断服务是否匹配).为了灵活的对构件进行绑定,Darwin中提供了一些特有的关键字,例如forall,when等.下述代码是图- 4例子的Darwin描述,其中流水线的长度是由其参数动态决定的,forall,when等也体现了Darwin这种ADL 对动态性的支持.

Darwin对动态结构的支持主要来自于延迟实例化(lazy instantiation)和直接动态实例化(direct dynamic instantiation)这两种技术.延迟实例化是指只有当用户试图访问某个服务时,提供该服务的构件才被实例化.将延迟实例化与递归结合起来就能描述几乎不受限制的结构,其局限性是不能描述循环绑定的结构.直接动态实例化则允许系统结构随意的发生演化,这需要底层π演算的相关支持.具体细节以及与π演算相关的内容请参看相关文献.

可变长度的流水线(Pipeline)

用Darwin 描述的客户服务期系统

使用构件和绑定就能定义Darwin中的复合构件以及一个系统.事实上,Darwin描述的系统就是一个层次式结构化的复合构件.下述代码就是图- 5所示的客户服务器系统的Darwin描述.注意:其中的System构件就是最终的系统.

Darwin的设计面向的是分布式软件,因此它对系统动态性的支持可以说是天生的.从抽象的角度来看,Darwin中的构件及其之间的绑定其实独立于具体的构件交互机制,因此理论上Darwin也能用于描述传统的程序结构.

虽然Darwin能很好的描述系统的动态特性,但是Darwin中并没有显式的连接子概念,因此使用Darwin进行复杂系统设计时关注的主要还是构件;当然这似乎并

不会削弱其表达能力.

C2 SADL

C2 SADL是UCI设计的一种基于消息传递的体系结构描述语言,主要用于描述符合C2风格的软件系统的体系结构.

C2风格

C2风格是一种基于构件和消息的体系结构风格,主要是应用于带有图形用户接口(GUI)的应用系统,但也能用于其它类型的应用.这种风格要求构件之间通过消息交换进行通信.因此每个C2构件和C2连接子都有一个top接口和一个bottom接口,其中top接口定义了该构件所能接收的应答消息和向上发出的请求消息,而bottom接口定义了该构件能够进行应答的请求消息及其向下发出的应答.所有消息都以连接子为桥梁在构件之间进行传递.这种风格的体系结构将系统中的构件用连接子划分为不同层次,如图- 4所示.

C2风格的体系结构:可视化堆栈(Stack)

C2概念的图例

C2风格的核心在于构件之间的"有限可见性",即处于系统中某个层次的构件只能"看到"上层的构件,而不清楚下层到底是什么构件在与之进行通信.具体表现在如下所述的构件之间的通信规则(即系统的组装规则):

构件的top接口只可能与某一个连接子的bottom接口相连

构件的bottom接口只可能与某一个连接子的top接口相连

与连接子相连的构件或者连接子没有数量限制

两个连接子相连时,只能是其中一个的bottom接口与另一个的top接口相连C2 SADL

C2 SADL目前还只是一个原型语言,其相应的支撑工具还在开发中.该语言包含三个部分:

接口定义符号(IDN, interface definition notation):是C2中的构件接口的规约.如下所示是一个堆栈(Stack)构件的C2 IDN.

体系结构描述符号(ADN,architecture description notation):是C2体系结构的声明性规约.例如图- 4所示例子的相应描述如下:

体系结构构造符号(ACN,architecture construction notation):主要用于表达体系结构的动态变化,例如如果要在运行时删除堆栈的一种可视化表示方式,可以用ACN进行如下描述:

C2 SADL中的连接子本质上是一种消息总线,复合这种结构的应用系统往往具有比较良好的灵活性和可扩展性.不过由于C2 SADL还没有针对大型实际系统进行建模和使用,因此对使用该结构所可能导致的性能问题还不是很明确.

Acme

Acme简介

Acme是CMU的Acme项目的产物.该项目始于1995年,目的是为了研究一个公共的语言,使之能在不同的体系结构设计工具之间作为体系结构描述信息互换的桥梁.目前Acme及其开发工具包AcmeLib提供了一个通用的,可扩展的基础框架用于描述,表示,生成以及分析系统的软件体系结构.而作为桥梁作用的Acme,由于必须具备大多数ADL共有的概念,因此它本身也是一个ADL,并且是一个相对而言比较简单的通用的ADL.

Acme的建模元素和特点

Acme的主要特点表现为:

采用七个基本的体系结构设计元素作为体系结构的本体(architectural ontology),如图- 6,图- 7所示.

采用灵活的标注机制支持使用外部语言定义的非结构化信息

使用类型机制对常见的可复用的软件体系结构俗语和风格进行抽象描述

使用开放的语义框架对体系结构描述进行推理

Acme的设计元素

Acme的设计元素

以下对Acme所采用的设计元素进行简要介绍.这七个设计元素是:

构件(components):系统中的计算元素和数据存储.直观的说,就是线框图中的框.典型的构件有:客户端,服务器,数据库,黑板,过滤器等.

连接子(connectors):构件之间的交互.直观的说,就是线框图中的线.典型的连接子有:过程调用,事件广播,客户和服务器之间的协议等.

系统(systems):构件和连接子的配置.

端口(ports):构件通过端口与外界发生交互.一个构件可以有多个不同类型的端口,每个端口都是一个接口的集合,例如一系列需要以特定顺序调用的过程.

角色(roles):连接子通过角色与外界发生交互.角色定义了构件之间交互的参与者. 表示(representations):构件或者连接子内部结构的描述.通过"表示"这个概念,系统的体系结构就具有了层次结构.同时,"表示"这个概念可以用于描述体系结构实体的多个视图(但是Acme本身并不处理视图之间的对应关系),如图- 7所示. 表示的映射(rep-maps):将构件或者连接子的内部"表示"与外部接口进行映射. 简单的客户端-服务器系统

以下是一个简单的客户端-服务器系统(图- 8)的Acme描述.

Acme本质上是一些ADL的建模元素的"最大公约数",因此它能作为不同ADL 及其支撑工具之间用于信息交换的语言.这是Acme的最大作用,当然这也使得它只能成为一个建模能力一般的ADL,例如Acme中就没有相应的机制用于对构件或者系统行为进行描述或者规约.相关研究者正在考虑在Acme中引入类似于Wright中使用的CSP的形式化语言来解决这个问题.当然,作为一个通用的交换语言,Acme的能力及其可扩展性也不是无限的.例如Acme的扩展仅限于在七个基本设计元素的基础上进行,并且Acme中缺乏用于描述属性及其数据格式的元语言.无论如何,Acme是第一个ADL之间的互交换语言,它的出现使得不同的ADL支持工具之间有可能进行体系结构描述信息的交流.

xADL

xADL简介

xADL是UCI设计的一个基于xml的ADL,最新版本是xADL2.0.其建模元素都是使用xml schema进行定义的.xADL除了提供ADL中常见的建模元素外,还对产品家族的描述提供了一些支持,例如体系结构版本等.这是xADL的一个独特之处.此外,xADL本身设计成一个模块化语言,因此具有良好的可扩展性.

xADL建模元素和特点

作为一个ADL,xADL也定义了常见ADL中的建模元素,包括构件,连接子,构件的接口,配置等,其中构件和连接子都具有内部结构.由于xADL的模块化特性,使得用xADL描述的体系结构看起来就像是一些相互独立的结构的集合.例如下述代码就是用xADL描述的一个客户-服务器结构(图- 11)(由于空间有限,下述简写代码没有遵循xml的格式!)

用xADL 描述的客户-服务器系统

除了上述常见的体系结构建模元素,xADL还提供了一些特有的建模元素用于支持产品家族的建模,这些元素包括:

选项(Option):允许体系结构描述中的一些构件或者连接子在某些情况下是可选的,即不一定存在.

变体(Variant):类似于编程语言中的联合(Union).将某些构件或者连接子指定为变体,意味着这些元素在某些情况下可以被实例化为不同类型的元素.

版本(Version):用于描述构件,连接子和接口的版本树.这样就可以在同一个体系结构模型中使用同一类型元素的不同版本.

结构差异(Structural Differing):用于描述两个xADL结构的差异.

产品线体系结构差异(Product-Line Architecture Differing):用于描述产品线中两个体系结构的差异.

上述建模元素在xADL中根据抽象层次分为两类,一类是运行时概念,包括构件实例,连接子实例,接口实例,链接实例等;还有一类是运行时概念,包括构件,连接子,接口,链接等(这些都是类型的概念)

xADL的另一个特点在于其灵活的可扩展性.其可扩展性本质上来源于xml以及schema的可扩展性,例如可以通过schema的include机制来实现继承等.

当然,从上述介绍中也可以看出,xADL也提供了体系结构建模的基本元素,并且用于定义xADL的xml schema是独立于其它ADL的,因此xADL也可以用于ADL 之间的转换.已有研究人员已经给出了从C2,Acme等ADL到xADL的映射规则. xADL相比UniCon等ADL来说属于第二代的ADL.其xml基础使其具有良好的可扩展性,并且由于xml格式文本的易交换性使得xADL能比较容易的集成不同的支持工具.但是由于xml格式的冗长,因此对xADL的使用需要有一定的工具

支持.

体系结构描述语言分类框架

根据对ADL的研究,Medvidovic 和Taylor 于2000年提出了一个用于对ADL进行分类和比较的一般框架,如表1所示.该框架认为一个ADL必须明确的对构件,连接子和它们的配置进行建模;为了保证体系结构描述有明确的语义还必须对构件的接口进行建模.此外,为了保证可用性和有用性,它也必须为基于体系结构的开发和演化提供工具支持.除了上述必需的建模元素外,不同的方法由于关注点的不同,可能会关注不同的体系结构特性,比如系统组装的风格,某个应用领域的特征以及分布,并发,安全和吞吐量等属性.

体系结构描述语言

体系结构建模特性

构件

接口,类型,语义,约束,演化,非功能属性

连接子

接口,类型,语义,约束,演化,非功能属性

体系结构配置

易理解性,组装性,精化和追踪性,异构性,可量测性,演化,动态性,约束,非功能属性工具支持

主动规约,多视图,分析,精化,实现生成,动态性

ADL的分类与比较框架,黑体字表示必须建模的元素

如上所述,构成体系结构描述的三要素是:构件,连接子和体系结构配置.因此,一个ADL应该提供至少这三种元素的显式描述.是否同时描述了这三种元素,也可以

作为判断一个描述语言是否是一个体系结构描述语言的依据.为了能够对体系结构的一些信息进行推理,也要求ADL能够对构成体系结构的构件的接口进行建模,如果没有接口的描述,体系结构描述就和线框图没有什么本质区别.关于构件,连接子,配置的其它一些相关方面的描述,如果有则更好,但是如果没有提供,也不表示这个语言不是ADL,也即这些方面不是判断一个语言是否ADL的关键标准. 以下分别就该分类框架中对三要素和工具支持方面的要求进行详细介绍,最后我们给出使用该分类框架对ADL进行分类和比较的结果.

对构件进行建模

在体系结构中,构件是系统中的功能单元或数据存储单元.构件可以小到一个函数,大到整个系统.一个构件即可以要求自己拥有独立的数据或运行空间,也可以和其它构件共享.ADL用来描述构件的特征如下:接口;类型;语义;约束;演化;非功能属性.下面分别做一些讨论.

接口.构件的接口是构件和外界环境进行交互的交互点的集合,指定了一个构件向外界提供的服务(消息,操作和变量).为了协助构件和包含该构件的体系结构进行推理,ADL还应该提供描述构件需求的能力,即该构件向外界提供功能的同时,需要外界对它提供那些服务.这样,接口就区分成为两种,一种是构件的对外接口,一种是构件需求外界提供服务的接口.简单地说,接口定义了计算的合约和使用服务的约束.

类型.构件类型是封装了可复用功能的抽象.一个构件类型可以多次实例化,在一个体系结构中多次使用或跨越不同的体系结构使用.构件类型可以参数化,使得其具有更强的可复用性.因为构件类型刻画了其所有实例所共有的属性和特征,因此可以协助体系结构的理解和分析.

语义.构件的语义是指其行为的高层模型.这样的模型可以用来进行分析,加强体系结构约束和保证体系结构从一个抽象层次向另一个抽象层次映射时的一致性. 约束.约束是指关于系统或系统的一部分的属性或断言,对该属性或断言的违背将使得系统不可接受或至少降低了其满意度.为了使得构件的使用达到预期的效果,限制构件使用的范围以及建立构件内部成分之间依赖,对构件的约束必须被指定. 演化.作为体系建构的重要部分,构件在进行着不断地演化.构件的演化可以简单地认为是对构件某些特征,如接口,行为或实现,的修改.ADL可以通过采用子类型化或精化等手段来使得构件的演化以一种系统化的方式进行.

非功能属性.一个构件的非功能属性(如安全,性能,易移植性等)不能从其行为中直接导出.这些属性的早期指定(在体系结构层次),是使得运行时刻行为的模拟,性能分析,加强约束,构件实现到处理器的映射以及协助项目管理所必须的.

对连接子进行建模

连接子是体系结构中对构件之间的交互和管理这些交互的规则进行建模的重要元素.与构件不同,连接子在实现系统中可能并没有实现体与之对应,它们可能被实现为消息路由,但是也可能仅仅是共享变量,数据库表项,缓冲,对连接器的指定,动态数据结构,初始参数,客户服务器协议,内嵌在代码中的过程调用序列等等.刻画连接子的特征有:接口;类型;语义;约束;演化;非功能属性.

接口.连接子的接口是连接子和与之连接的构件或其它连接子进行交互的交互点集合.连接子本身不提供任何特定应用的计算,它只是将与之连接的构件的功能导出给其它构件.连接子的接口使得构件之间能够正确连接和交互,从而,对于体系结构配置的推理起到重要的辅助作用.

类型.连接子类型是封装了构件通信,协调和仲裁策略的抽象.体系结构层次的交

互可能是很复杂的协议,使得这些复杂的协议能够在体系结构中或跨体系结构复用,需要ADL提供将连接子描述为类型的能力.这通常可以使用两种方式实现,一是作为可扩展的类型系统,按照交互协议来定义,二是作为内嵌的枚举类型,基于特殊的实现机制.

语义.与构件的语义相类似,连接子的语义是连接子行为的高层模型.但是与构件也有区别.构件的语义表达了特定应用的功能,而连接子语义则承担了对(与计算无关的)交互协议的规约.ADL应该支持连接子语义的建模,因为这样可以使得能够对构件的交互进行分析,保证不同抽象层次的体系结构的精化的一致性,还可以强化连接和通信的约束.

约束.连接子约束保证了交互协议的使用达到了预期的目的,建立了连接子内部的依赖关系,并强化了使用界限.一个即简单又能说明约束问题的例子是,限制能够和一个连接子建立连接并通过该连接子进行交互的构件的数量.要保证复杂的连接子约束(如最小吞吐量),可能需要该连接子外部的信息,如与该连接子连接的构件的动态语义的模型.

演化.与构件的演化相类似,连接的演化是指对连接子的特征,如接口,语义或约束的修改.体系结构中构件的交互往往是使用的复杂并且会发生变化和扩展的协议,而构件和配置也在不断的演化中.ADL应该能够包容这些演化,通过对已有连接子进行修改或精化,修改或精化可以采用诸如增量信息过滤技术,子类型化和精化等技术.

非功能属性.连接子的非功能属性不能完全从它的语义规约中得到.非功能属性是指连接子正确实现所必须满足的(额外)需求.对连接子的非功能属性进行建模,可以在设计阶段对连接子的运行时刻行为做模拟,对连接子进行分析,加强约束,以

及便于从产品化连接子(如消息总线)的正确挑选.

对配置进行建模

体系结构配置,或称拓扑结构,是由描述系统结构的构件和连接子连接而成的图.体系结构配置信息具有重要的意义,它可以确定构件是否被正确地连接,它们的接口是否匹配,连接这些构件的连接子是否实现了正确的通信,构件和连接子组合在一起的语义是否符合所希望的行为等.和构件和连接子模型一起,配置的描述使得可以对体系结构的并发和分布方面的性质进行评估,如评估是否存在死锁,性能,可靠性,安全性如何等等.配置的描述也为分析一个体系结构是否符合设计理念(如构件的直接连接将降低体系结构的演化能力)和是否满足体系结构风格约束(如构件之间的直接通信连接是被禁止的)提供帮助.

体系结构配置的特征可以分为以下的三个类别:

配置描述的性质,包括易理解性,可组装性,可精化和追踪性以及异构性.

被描述系统的性质,包括异构性,伸缩性,演化性和动态性.

被描述系统的特性,包括动态性,约束和非功能属性.

上述的三个类别并不是正交的,异构性和动态性出现在两个类别中.异构性可能在配置描述中采用的多种形式化和在系统实现中采用的多种程序语言中表现出来.可以预知的动态性是系统的一个属性,这个属性指的是系统通过特殊的体系结构设计来包容这些(可预测)的动态变化;不可预知的动态性是系统的一个性质,即系统面对动态变化所展现出的适应能力.

易理解性.软件体系结构的一个重要角色就是作为项目中不同人员之间进行交流的媒介,使得在一个高的抽象层次上的系统(或系统家族)的理解更容易.这样,就要求ADL必须以一种简单且易于理解的语法来对结构(或拓扑)信息进行建模.并且,

理想的情况是,不需要对构件和连接子的模型规约进行仔细研究,就可以比较清楚地理解体系结构的配置规约.

可组装性.可组装性,或称层次化组装,是允许体系结构以不同的细节层次描述软件系统的机制.如,复杂的结构或行为可以显式地表示出来,也可以将它们抽象为一个简单构件或连接子;一个完整的体系结构可以成为另外一个更大的体系结构中某个构件的内部结构.这种抽象机制应该作为ADL建模能力的一部分.

可精化和追踪性.除了为架构师提供丰富语义精致的设施来指定体系结构外,ADL 还必须提供能够让体系结构正确地精化为可运行系统,并且能够在不同层次的体系结构精化之间保持追踪性的能力.这正是ADL能够出现并得以发展的一个重要原因:在非形式化的"线框图"和程序语言之间建立桥梁,因为程序语言对于设计来说,抽象层次太低了.

异构性.体系结构的一个目标便于大型系统的开发,更可取的是利用已有的不同粒度,可能使用不同的形式语言定义,使用不同的编程语言实现,拥有不同的操作系统需求,支持不同的通信协议的构件和连接子来设计.这要求ADL必须是开放的,也就是说,ADL应该提供一些设计和机制,使得能够使用异构的构件和连接子来进行体系结构的规约和开发.也就是要求ADL支持异构的构件和连接子可以在一个体系结构中共同完成系统的设计.

伸缩性.体系结构的目的就是能够为开发者提供用来解决系统的复杂性和大规模问题的.从而,ADL必须能够直接支持大型系统的规约和开发,并且这样的系统有可能变得更大.

演化性.一个新的软件系统不可能将所有不可预测的功能也包含进去,而是采用某种演化方式.一个体系结构的演化反映了一个软件系统家族的演化,也使得这种演

软件体系结构总结

第一章:1、软件体系结构的定义 国内普遍看法: 体系结构=构件+连接件+约束 2、软件体系结构涉及哪几种结构: 1、模块结构(Module) 系统如何被构造为一组代码或数据单元的决策 2、构件和连接件结构(Component-And-Connector,C&C) 系统如何被设计为一组具有运行时行为(构件)和交互(连接件)的元素 3、分配结构(Allocation) 展示如何将来自于模块结构或C&C结构的单元映射到非软件结构(硬件、开发组和文件系统) 3、视图视点模型 视点(View point) ISO/IEC 42010:2007 (IEEE-Std-1471-2000)中规定:视点是一个有关单个视图的规格说明。 视图是基于某一视点对整个系统的一种表达。一个视图可由一个或多个架构模型组成 架构模型 架构意义上的图及其文字描述(如软件架构结构图) 视图模型 一个视图是关于整个系统某一方面的表达,一个视图模型则是指一组用来构建 4、软件体系结构核心原模型 1、构件是具有某种功能的可复用的软件结构单元,表示了系统中主要的计算元素和数据存储。 2.连接件(Connector):表示构件之间的交互并实现构件

之间的连接 特性:1)方向性2)角色3)激发性4)响应特征 第二章 1、软件功能需求、质量属性需求、约束分别对软件架构产生的影响 功能性需求:系统必须实现的功能,以及系统在运行时接收外部激励时所做出的行为或响应。 质量属性需求:这些需求对功能或整个产品的质量描述。 约束:一种零度自由的设计决策,如使用特定的编程语言。 质量原意是指好的程度,与目标吻合的程度,在软件工程领域,目标自然就是需求。 对任何系统而言,能按照功能需求正确执行应是对其最基本的要求。 正确性是指软件按照需求正确执行任务的能力,这无疑是第一重要的软件质量属性。质量属性的优劣程度反映了设计是否成功以及软件系统的整体质量。 系统或软件架构的相关视图的集合,这样一组从不同视角表达系统的视图组合在一起构成对系统比较完整的表达

软件体系结构设计说明书

软件体系结构设计说明书 编者说明: 随着OO方法论地日臻成熟,其思想也从编程(OOP)到了设计(OOD)和分析(OOA),而软件体系结构则是从设计的最高层进行设计与规划的技术,本文档模板就是用来帮助你从用例视图、逻辑视图、进程视图、部署视图等方面对系统进行总体描述。 1.文档简介 [本节主要是描述软件体系结构设计说明书的目的、范围、相关术语、参考资料和本文档的摘要性介绍。软件体系结构设计属于高层设计文档,是符合现代软件工程要求的概要设计。] 1.1 目的 [软件体系结构设计说明书,将从设计的角度对系统进行综合的描述,使用不同的视图来描述其不同方面。在本小节中,将对该文档的结构进行简要的说明,明确该文档针对的读者群,指导他们正确的地使用该文档。] 1.2 范围 [说明该文档所涉及的内容范围,以及将影响的内容。] 1.3 定义、首字母缩写词和缩略语 [与其它文档一样,该文档也需要将本文档中所涉及的所有术语、缩略语进行详细的定义。还有一种可简明的做法,就是维护在一个项目词汇表中,这样就可以避免在每个文档中都重复很多内容。] 1.4参考资料 [在这一小节中,应完整地列出该文档引用的所有文档。对于每个引用的文档都应该给出标题、标识号、日期以及来源,为阅读者查找这些文档提供足够详细的信息。] 1.5 概述 [在本小节中,主要是说明软件体系结构设计说明书各个部分所包含的主要内容,就像一个文章摘要一样。同时也应该对文档的组织方式进行解释。]

2. 体系结构表示方式 [本节说明软件体系结构在当前系统中的作用及其表示方式。它将列举其所必需的用例视图、逻辑视图、进程视图、部署视图或实施视图,并分别说明这些视图包含哪些类型的模型元素。] 3. 软件体系结构的目标和约束 [本节说明对软件体系结构具有某种重要影响的软件需求和用户目标,例如,系统安全性、保密性、第三方组件的使用、可移植性、发布和重新使用。它还要记录可能适用的特殊约束:设计与实施策略、开发工具、团队结构、时间表、遗留系统等。]

软件体系结构期末大题

软件体系结构-期末大题

————————————————————————————————作者:————————————————————————————————日期: ?

1.基于构件的软件开发的优势是什么? 基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。 Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。

3.在希赛公司的一个财务管理系统,财务部要客户提供………… 4.不同的体系结构风格具有各自的特点、优劣和用途。试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。P52-56 (1)管道和过滤器 特点: @使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; @允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;

@支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来; @系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉; @允许对一些如吞吐量、死锁等属性的分析; @支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行?缺点:①通常导致进程成为批处理的结构。 ②不适合处理交互的应用。 ③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。 (2)

软件体系结构

课程名称:软件体系结构 课程编号:C304 课程学分:2 适用学科:计算机应用技术 软件体系结构 Software Architecture 教学大纲 一、课程性质 本课程是为计算机应用专业研究生开设选修课。软件体系结构是软件开发设计的高级课程,对培养计算机应用专业研究生今后从事大型软件开发工作有重大意义。 二、课程教学目的 学生通过本课程的学习后,在概念上建立从体系结构看待软件系统的观念,理解体系结构设计的优劣对软件系统质量的影响;掌握软件体系结构的建模、评价与检测的方法,能够应用上述方法评价软件体系结构的质量。 三、课程教学基本内容及基本要求 第一章绪论(2学时) 1、软件体系结构概述 2、研究内容与方法 第二章软件体系结构建模理论(2学时) 1、软件体系结构描述语言ADL简介 2、时序逻辑描述语言LOTOS简介 3、实例研究:流媒体信道调度模型及描述

第三章软件体系结构一致性检测(2学时) 1、软件体系结构一致性 2、软件体系结构一致性测试算法 3、实例研究1-三层C/S结构一致性检测 第四章软件体系结构评价(4学时) 1、软件体系结构评价模型 2、软件体系结构性能评价 3、软件体系结构可靠性评价 4、实例研究基于C/S结构的视频点播系统性能研究 第五章软件体系结构案例分析(16学时) 1、COBAR体系结构简介 2、P2P体系结构简介 3、网格体系结构简介 四、本课程与其它课程的联系与分工 本课程的先修课程为《面向对象程序》及《分布式数据库》,通过上述课程的学习,使学生能够体会大型软件开发的基本过程,体会到软件开发中体系结构的重要性。 五、实践环节教学内容的安排与要求 结合本研究室的研究课题,评价软件体系结构的性能。 六、本课程课外练习的要求 结合自己的研究课题,建立软件体系结构的性能模型和可靠性模型,以实际系统为被背景评价软件体系的性能。

软件体系结构考试要点

考试题型 一、填空(每题1分,共10分) 二、名词解释(每题2分,共20分) 1、B/S 2、C/S 3、HMB 4、DSSA 5、ADL 6、XML 7、ATAM 8、Web Service 9、MTTF10、SOAP 11、WSDL 12、UDDI 13、SAAM 14、MVC 15、Artifact-Driven 16、Use-Case-Driven 17、Domain-Driven 18、Pattern-Driven 19、构件20、连接件21.、MTBF 22、敏感点23、权衡点24、直接场景25、间接场景26、质量属性效用树27、XML Schema 三、问答题(40分) 1、构件描述模型有哪几种? 2、理解并比较构件分类的三种方法:关键字分类法、刻面分类法和超文本组织方法, 它们是如何组织的?如何在其中检索构件?每种方法各有什么优缺点? 3、了解软件体系结构的四个发展阶段。 4、根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成? 5、至少掌握三种经典软件体系结构风格。 6、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。 7、请对MVC风格体系结构进行介绍,并说明该风格的优缺点。 8、在正交软件体系结构中,什么是完全正交结构?在实际使用时是不是必须严格遵 守结构正交?使用正交软件体系结构有什么优点? 9、层次系统结构和基于消息的层次系统结构有什么区别? 10、体系结构描述语言与程序设计语言有什么区别? 11、ACME中定义了哪七种体系结构实体?ACME中的表述和表述映射,类型和风格是什么含义?

12、了解基于XML的软件体系结构描述语言。 13、简要介绍Krutchten的“4+1”视图模型。 14、设计模式的基本成分有哪几个?请简单介绍其各个基本成分。 15、为什么要评估软件体系结构?从哪些方面评估软件体系结构? 16、软件体系结构评估的主要方法有哪三种?请简单解释每种方法。 17、SAAM和ATAM评估方法的基本步骤分别是什么? 18、Web服务有哪些核心技术,这些技术是如何在Web服务中发挥作用的。 四、看图答题(30分) 1、请根据P38图3-5介绍黑板系统的组成。 2、请根据P59图3-26解释HMB风格的构件模型。 3、请根据P60图3-27解释消息总线的属性和服务。 4、请根据P147图5-2介绍体系结构设计方法的元模型。 5、请根据P167图6-1简要介绍基于体系结构的软件开发过程的各个步骤。并说明各个步骤的必要性何在?或者说,它们在软件生命周期中都起到了什么作用? 6、请根据P207图8-1分析服务提供者、服务请求者和服务注册中心三者的作用,以及它们之间的工作流程。 7、请根据P229图8-11介绍UDDI的具体工作步骤。

软件架构设计文档模板

Software Architecture Document Version <1.0> Revision History Date Version Description Author < yyyy-mm-dd >

目录 1.文档简介4 1.1文档目的4 1.2文档范围4 1.3定义、缩写词和缩略语4 1.4参考资料4 2.架构描述方式4 2.1架构视图阅读指南4 2.2图表与模型阅读指南4 3.架构设计目标5 3.1关键功能5 3.2关键质量属性5 3.3业务需求和约束因素5 4.架构设计原则6 4.1架构设计原则6 4.2备选架构设计方案及被否原因6 4.3架构设计对后续工作的限制(详设,部署等)6 5.逻辑架构视图6 5.1职责划分与职责确定7 5.2接口设计与协作机制8 5.3重要设计包10 6.开发架构视图11 6.1Project划分11 6.2Project 1 11 6.2.1Project目录结构指导11 6.2.2程序单元组织12 6.2.3框架与应用之间的关系(可选)12 6.3Project 2 (13) 6.4Project n (13) 7.运行架构视图13 7.1控制流组织13 7.2控制流的创建、销毁、通信13 7.3加锁设计14 8.物理架构视图14 8.1物理拓扑14 8.2软件到硬件的映射15 8.3优化部署15

9.数据架构视图16 9.1持久化机制的选择16 9.2持久化存储方案16 9.3数据同步与复制策略16 10.关键质量属性的设计原理17

《软件体系结构》教学大纲

《软件体系结构》教学大纲 一、课程概述 《软件体系结构》是根植于软件工程发展起来的一门新兴学科,目前已经成为软件工程研究和实践的主要领域。体系结构在软件开发中为不同的人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作为相同设计的抽象,为实现框架和构件的重用、基于体系结构的软件开发提供了有力的支持。 作为计算机科学与技术专业软件工程方向的重要专业课程,本课程主要系统地介绍软件体系结构的基本原理、方法和实践,全面反映软件体系结构研究和应用的最新进展。既讨论软件体系结构的基本理论知识,又介绍软件体系结构的设计和工业界应用实例,强调理论与实践相结合。 本课程的先修课程为“软件工程”。 二、课程目标 1.知道《软件体系结构》这门学科的性质、地位、研究范围、学科进展和未来方向等。2.理解该门学科的主要概念、基本原理和策略等。 3.掌握软件体系结构的建模方法、描述方法,通过对不同软件体系结构风格的掌握,能够采用正确的基于体系结构的软件开发。 4.能够把所学的原理应用到具体的实践中去,培养学生发现、分析和解决问题的能力等。 三、课程内容与教学要求 这门学科的知识与技能要求分为知道、理解、掌握、学会四个层次。这四个层次的一般涵义表述如下: 知道———是指对这门学科和教学现象的认知。 理解———是指对这门学科涉及到的概念、原理、策略与技术的说明和解释,能提示所涉及到的教学现象演变过程的特征、形成原因以及教学要素之间的相互关系。 掌握———是指运用已理解的教学概念和原理说明、解释、类推同类教学事件和现象。

学会———是指能模仿或在教师指导下独立地完成某些教学知识和技能的操作任务,或能识别操作中的一般差错。 教学内容和要求表中的“√”号表示教学知识和技能的教学要求层次。 本标准中打“*”号的内容可作为自学,教师可根据实际情况确定要求或不布置要求。 教学内容及教学要求表

软件体系结构考试参考试题

壹 . 名词解释(参考斯佳分享的名词解释文档) 1.ADL(Architecture Description Language) 体系结构描述语言 2. SOA(Service-Oriented Architecture) 面向服务架构 3. DSSA (Domain Specific Software Architecture) 特定领域软件体系结构 4.CORBA(Common Object Request Broker Architecture) 公共对象请求代理体系结构 5. UML(Unified Modeling Language) 统一建模语言 6.XML(Extensible Markup Language ) 可扩展标记语言 7.B/S(Browser/Server) 浏览器/服务器C/S(Client/Server) 客户端/服务器 8.HMB(Hierarchical [?ha??'rɑ:k?kl] message bus) 层次消息总线 9.SA (Software Architecture) 软件体系结构 10.OMG(Object Management Group) 对象管理组织 11.SOAP(Simple Object Access Protocol) 简单对象访问协议 12.WSDL(Web Services Description Language) web服务描述语言 13.SOAD(Service Oriented Analysis And Design) 面向服务的分析与设计 14.DCOM(Distributed Component Object Model) 分布式对象组件模型 https://www.doczj.com/doc/c54559508.html, (Module Interconnection Language) 模块内连接语言 贰 . 判断题 1、软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。答案:√ 依据页码:P4 2、软件体系结构充当一个理解系统构件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。 答案:√ 依据页码:P28 5、构件可以由其他复合构建和原子构件通过连接而成。() 答案:√ 依据页码:P37 6、体系的核心模型由5种元素组成:构件、连接体、配置、端口和角色() 答案:√ 依据页码:P37 7、软件体系结构的核心由5种元素组成:构件、连接件、配置端口和角色。其中,构件、连接件和配置是最基本的元素() 答案:√ 依据页码:P37 8、开发视图主要支持系统的功能需求,即系统提供给最终用户的服务() 答案:X 依据页码:P32、33 9、构件、连接件以及配置是体系结构的核心模型最基本的元素() 答案:√ 根据页码:P37

编写软件架构文档说明,第1部分什么是软件架构,为什

编写软件架构文档说明,第 1 部分: 什么是软件架构,为什么为软件架构编写文档说明非常重要 2008 年 10 月 16 日Tilak Mitra 认证高级 IT 架构师 IBM Global Services 软件架构对于复杂实时系统的开发已日益变得更加重要。在这个新的系列中,了解为什么以及应该如何编写软件架构文档说明。您将了解为任何中大型软件开发项目编写文档说明的五个不同视图或方面。这是本系列中的第一篇文章,其中将介绍软件架构和文档说明的重要性。您还将概略了解将在后续文章中介绍的体系结构视图。 引言 软件架构是一门学科,开始于 20 世纪 70 年代。面对不断增加的复杂性和开发复杂实时系统的压力,作为主流系统工程和软件开发的基本构造,软件架构应运而生。 与任何其他久经考验的学科一样,软件架构在诞生之初也面临许多挑战。软件架构表示系统的结构和行为方面。在早期为软件架构编写文档说明时,所使用的文本和图解表达常常不足或者不够精确。所需的是某种一致并得到充分理解的伪(或元)语言,以便将对软件架构进行表示和编写文档说明的不同方式统一起来。在学术研究的推动下,在用于开发有效软件架构文档说明的最佳实践和指导原则方面,工程和计算机科学领域已取得了长足的发展。 在本系列中,您将了解如何编写软件架构文档说明。了解编写文档说明的不同方面:系统上下文、体系结构概述、功能体系结构、操作体系结构和体系结构决策。 在这第一篇文章中,了解软件架构是什么,以及为该学科的不同方面编写文档说明的重要性。软件架构 不同的研究人员已解释了软件架构是什么,并且他们对有关如何最好地表示软件系统的体系结构具有不同的观点。其中没有哪一种解释是错误的;每种解释都具有自己的价值。Bass L 等人抓住了软件架构的本质: “程序或计算系统的软件架构是该系统的结构,包括软件组件、那些组件的外部可见的 属性,以及那些组件之间的关系” 。 此定义重点关注由粗粒度的构造(软件组件)所构成的体系结构,可以将这些构造看作是体系结构的构建块。每个软件组件或体系结构构建块具有某些外部可见的属性,这是它向其他体系结构构建

软件体系结构课后作业及答案

1、就项目管理方面而言,软件重用项目与非重用项目有哪些不同之处。 答:使用软件重用技术可减少重复工作,提高软件生产率, 缩短开发周期。同时,由于软构建大多经过严格的质量认证,因此有助于改善软件质量,大量使用构建,软件的灵活性和标准化程度可得到提高。 2、实际参与/组织一个软件重用项目的开发,然后总结你是如何组织该项目的开发的 答:参加了一个网页管理系统的开发,该项目重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。在过程中使用了代码的复用、设计结果的复用、分析结果的复用、测试信息的复用等。 3、为什么要研究软件体系结构? 答:1.软件体系结构是系统开发中不同参与者进行交流和信息传播的媒介。 2.软件体系结构代表了早期的设计决策成果。 3.软件体系结构可以作为一种可变换的模型。 4、根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成? 答:构件(component)可以是一组代码,如程序的模块;也可以是一个独立的程序(如数据库的SQL服务器); 连接件(connector)是关系的抽象,用以表示构件之间的相互作用。如过程调用、管道、远程过程调用等; 限制(constrain):用于对构件和连接件的语义说明。 5、在软件体系结构的研究和应用中,你认为还有哪些不足之处? 答:(1)缺乏同意的软件体系结构的概念,导致体系结构的研究范畴模糊。 (2)ADL繁多,缺乏同意的ADL的支持。 (3)软件体系结构研究缺乏统一的理论模型支持。 (4)在体系结构描述方便,尽管出现了多种标准规范或建议标准,但仍很难操作。 (5)有关软件体系结构性质的研究尚不充分,不能明确给出一个良体系结构的属性或判定标准,没有给出良体系结构的设计指导原则,因而对于软件开发实践缺乏有力的促进作用。 (6)缺乏有效的支持环境软件体系结构理论研究与环境支持不同步,缺乏有效的体系结构分析、设计、方针和验证工具支持,导致体系结构应用上的困难。 (7)缺乏有效的体系结构复用方案。 (8)体系结构发现方法研究相对欠缺。 1、选择一个规模合适的系统,为其建立“4+1”模型。 逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。 过程视图(Process View),捕捉设计的并发和同步特征。 物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。 开发视图(Development View),描述了在开发环境中软件的静态组织结构。 架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例(use cases)或场景(scenarios)来说明,从而形成了第五个视图。

软件架构

软件架构 软件架构 软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。 软件体系结构是构建计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。 软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难。特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征。 在"软件构架简介"中,David GArlan和Mary Shaw认为软件构架是有关如下问题的设计层次:"在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。"[GS93] 但构架不仅是结构;IEEE Working Group on Architecture把其定义为"系统在其环境中的最高层概念"[IEEE98]。构架还包括"符合"系统完整性、经济约束条件、审美需求和样式。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。 在Rational Unified ProcESs中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互。

软件体系结构作业完整版

第一章: 1.根据自己的经验,谈谈对软件危机的看法。 软件危机是指软件生产方式无法满足迅速增长的计算机需求,开发和维护过程出现的一系列问题。 以下几个原因导致:(1)软件自身特点 (2)开发人员的弱点 (3)用户需求不明 (4)缺乏正确理论指导 (5)开发规模越来越大 (6)开发复杂度越来越高 可以通过软件生命周期的模型和软件工具的使用来缓解危机,通过程序自动化和软件工业化生产的方法实现软件标准化的目标,进一步缓解软件危机带来的影响。 软件危机有利有弊,除了带来许多麻烦,也给我们带来许多挑战,克服危机的过程,我们在技术上和创新上都有了一个提升,也算是间接为软件产业的发展做了贡献。 2.什么是软件重用,软件重用的层次可以分为哪几个级别? 软件重用:是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。可以分为三个层次: (1)代码重用(2)设计结果重用(3)分析结果重用 3.什么是可重用构件?相对于普通的软件产品,对可重用构件有何特殊要求? 可充用构件表示软件重用过程中,可重用的软件构件元素。 可重用构件的特殊要求: (1)可重用构件应该具有功能上的独立性与完整性; (2)可重用构件应该具有较高的通用性; (3)可重用构件应该具有较高的灵活; (4)可重用构件应该具有严格的质量保证; (5)可重用构件应该具有较高的标准化程。 4.基于构件的软件开发的优势是什么?基于构件的软件开发面临哪些挑战和困难? 优势:基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用困难和挑战:没有可依据的参考,可用资源和环境缺乏,开发难度高,而各方面需求增长速度与日剧增,更新和升级的跟进是一个不小的挑战.此外,在同一系统采用多个开发商提供的构件,它 们之间的兼容性可能是开发过程中所要面对的一个严峻的问题 挑战和困难: (1)在同一系统采用多个开发商提供的构件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题; (2)采用随处可以购买到的构件可能会使开发出来的软件产品丧失技术上的独创性和市场上的竞争力;(3)第三方的构件开发商可能歇业,这会使购买的构件失去维护服务。这些都是在购买第三方构件进行软件开发时无法回避的问题,因此需要对这些风险进行充分的估计。 5.简述3种应用最为广泛的构件技术规范COM、CORBA和EJB的各自特点。CORBA的特点: (1)实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程以及具体位置。 (2)应用程序间的统一接口。

软件体系结构(考试习题集含答案)

1.面向对象的方法优势体现在(ABD ) A.简化软件开发过程 B.支持软件复用 C.提高软件运行效率 D.改善软件结构 2.用户界面设计中的三条“黄金规则”是(ABC ) A.使系统处于用户控制之中 B.减少用户的记忆负担 C.保持界面的一致性 D.保证用户的易学性 3.用户界面的分析和设计过程是迭代的,其中包括的活动是 (ABCD ) A.用户、任务以及环境的分析和建模 B.界面设计 C.界面实现 D.界面确认 4.界面确认需要注意三个方面(ABC ) A.界面正确完成了用户的任务,适应用户的任务变化 B.易学性和易用程度 C.用户的接受程度 D.用户的习惯 5.用户界面分析时通常采用的信息获取方式包括(ABCD ) A.用户会谈 B.销售人员信息采集 C.市场分析 D.用户支持人员信息收集 6.(C )把完成一个特定功能的动作序列抽象为一个过程名和参数表 A.数据抽象 B.动作抽象 C.过程抽象 D.类型抽象 7.(A)把一个数据对象的定义抽象为一个数据类型名 A.数据抽象 B.动作抽象 C.过程抽象 D.类型抽象 8.软件体系结构设计需要考虑以下(ABCD )

A.适用性 B.结构稳定性 C.可扩展性 D.可复用性 9.模块设计时应该考虑(AB ) A.模块功能独立 B.模块信息的隐藏 C.模块接口的简单 D.模块实现简单 10.一个完整的软件设计的主要活动包括有(ABCD ) A.体系结构设计 B.界面设计 C.模块/子系统设计、 D.数据模型、过程/算法设计等 11.模块化是指把一个复杂的问题分割成若干个可管理的小问题后,更易 于理解,模块化正是以此为依据的,在划分模块的过程中应该考虑到(ABC ) A.模块的可分解性、可组装型 B.模块的可理解性、连续性、 C.模块保护 D.尽可能低分割模块,使得问题的难度降到最 1.什么是软件工程?构成软件工程的要素是什么? 软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,对所选方法的研究。软件工程的要素由方法、工具和过程组成。方法支撑过程和工具,而过程和工具促进方法学的研究。 2.什么是软件生存周期?软件开发过程模型与软件生存周期之间是何关 系? 软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程叫软件生存周期。软件开发过程模型表示软件开发中各个活动的安排方式,出来软件开发各个活动之间关系,是软件开发过程的概括,是软件工程的重要内容,其为软件管理提供里程碑和进度表,为

软件体系结构期末复习题

软件体系结构期末 复习题

《软件体系结构》期末复习题 简答题: 1、软件体系结构建模的种类有: 结构模型、框架模型、动态模型、过程模型、功能模型。 2、“4+1”视图模型从5个不同的视角包括: 逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。 3、构件:是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。 连接件:表示构件之间的交互。 配置:表示构件和连接件的拓扑逻辑和约束。 端口:表示构件和外部环境的交互点。 角色:定义了该连接交互的参与者。 4、画出“4+1”视图模型图,分析各部分的原理和功能。 5、软件体系结构风格: 是描述某一特定应用领域中系统组织方式的惯用模式。

6、软件体系结构 (Software Architecture) 软件体系结构以组件和组件交互的方式定义系统,说明需求与成品系统之间的对应关系,描述系统级别的可伸缩性、能力、吞吐量、一致性和兼容性等属性。软件体系结构由组件、连接件和属性组成。 7、分层系统的优点有: 1)支持基于抽象程度递增的系统设计,使设计者能够把一个复杂系统按递增的步骤进行分解; 2)支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层; 3)支持重用。只要提供的服务接口定义不变,同一层的不同实现能够交换使用。这样,就能够定义一组标准的接口,而允许各种不同的实现方法。 8、分层系统的缺点有: 1)并不是每个系统都能够很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来; 2)很难找到一个合适的、正确的层次抽象方法。 9、 B/S体系结构的优点有什么? 答:1)基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。

软件体系结构试题库试题和答案

1、软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。答案:√ 依据页码:P4 2、可重用技术对构件库组织方法要求不仅要支持精确匹配,还要支持相似构件的查找。答案:√依据页码:P7 3、超文本组织方法与基于数据库系统的构件库组织方法不同,它基于全文检索技术。 4、答案:√依据页码:p8 5、软件体系结构充当一个理解系统构件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。 答案:√ 依据页码:P28 5、构件可以由其他复合构建和原子构件通过连接而成。() 答案:√ 依据页码:P37 6、体系的核心模型由5种元素组成:构建、连接体、配置、端口和角色() 答案:√ 依据页码:P37 7、软件体系结构的核心由5种元素组成:构件、连接件、配置端口和角色。其中,构件、连接件和配置是最基本的元素() 答案:√ 依据页码:P37 8、开发视图主要支持系统的功能需求,即系统提供给最终用户的服务() 答案:X 依据页码:P32、33 9、构件、连接件以及配置是体系结构的核心模型最基本的元素() 答案:√

10、HMB风格不支持系统系统自顶向下的层次化分解,因为它的构件比较简单。 答案:× 依据页码:P81 11、正交软件体系结构由组织层和线索的构件构成。 答案:√ 依据页码:P70 12、基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。 答案:√ 依据页码:P53 13、线索是子系统的特例,它由完成不同层次功能的构建组成,每一条线索完成整个系统中相对独立的一部分功能。() 答案:√ 依据页码:P70 14、层次系统中支持抽象程度递增的系统设计是设计师可以把一个复杂系统按照递增的步骤进行分解,同时支持功能增强,但是不支持重用。 答案:× 参考页码:P55 15、相交关系R是一个等价关系。 答案:√ 16、在软件设计中占据着主导地位的软件体系结构描述方法是图形表达工具。答案:√ 依据页码:104 17、Rapide是一种可执行的ADL,其目的在于通过定义并模拟基于事件的行为对分布式同步系统建模。 答案:×

软件体系结构描述语言ADL综述_bycs

软件体系结构描述语言ADL综述 Advancement of Architecture Description Language (ADL) 引言 60年代的软件危机使得人们重新开始重视软件工程的研究。最初人们选择了“算法+数据结构=程序”的设计模式。但随着软件系统的规模和复杂性越来越大,传统的设计模式已经不能适应要求。同时为了保证软件质量,提高软件的可靠性、可重用行和可维护性,软件设计的核心逐渐转向对系统的总体结构即软件体系结构(Software Architecture)的设计和规范。这类方法主要着眼于软件系统的全局组织形式,在更高层次上把握系统各组件之间的内在联系。并从全局的,整体的角度去理解和分析整个系统的行为和特性,有助于解决当前开发复杂的大型软件所存在的困难。 研究软件体系结构的首要问题是如何描述软件体系结构。目前已有很多表现形式和方法表法、模块连接语言、软构件描述法和体系结构描述语言ADL等。而其中ADL作为形式化的表示软件体系结构的工具呈现出强大的生命力。它提供了规范化的体系结构描述,同时是对软件体系结构进行求精、验证、演化和分析的前提与基础。目前已经成为软件体系结构方向的研究热点。实践工作者将这些ADL应用于实践中,获得了成功。同时,我们应注意到不同的ADL所支持的抽象能力及其提供的分析能力变化很大,学术领域目前对ADL的定义尚未取得一致。 一、软件体系结构的概述 由于对软件体系结构的研究和应用刚刚兴起,许多专家学者从不同的角度和侧面对软件体系结构进行刻画,因此,目前软件体系结构还没有一个标准定义。这里给出一个目前学术领域广泛接受的定义。(D.Garlan&M Shaw,1993)软件体系结构是软件设计过程中的一个层次,在计算过程中的算法设计和数据结构之上,处理总体系统结构设计和描述方面的一些问题。包括总体组织与全局控制结构、通讯协议、同步、数据存取、设计元素的功能分配,物理分布,设计元素的复台,设计方案的选择、评估和实现等。 二、软件体系结构描述语言ADL的概述 2.1对ADL的不同理解 当前在学术界对ADL 的定义尚未取得一致下面的定义大多来源于自身对某种ADL语言的开发所得到的体会。尽管它们不免有以偏概全之赚,但还是为我们了解ADL提供了有价值的信息。 (1)在文[1]中,Tracz定义一个ADL包含4“C”:组件(components) , 连接子(connectors),配置(configurations),约束(constraint s)。 (2)根据其UniCon的经历,Shaw 与同事列出了ADI 应该展示的属

软件体系结构分析

三层C/S结构应用实例 ——连锁超市管理系统1.系统背景介绍 1.1任务概述 该连锁超市是具有一定规模的大型私有企业,其通用的管理系统是针对超市的运营特点以及对信息的存储方式而特别设计的,该系统的基本信息如下: ①信息量大,须存储类别众多的货物信息,人事管理信息等。其分布在十几个城市的各个分店的所有信息都需要进行统一管理。 ②单位众多,分布广,系统涵盖的单位达100多个,分布在各个中小型城市。 1.2用户特点 用户类型多,数量大,各类信息管理涉及行政管理(一级)、人事管理(二级)、基础管理(三级)等三级层次,各层次的业务职责不同,各层次的管理者对系统的查询功能和权限也不同。 1.3硬件条件 网络发展的环境各不相同,由于各地区的条件以及操作能力有限,某些中小型地区只有单机,需要陆续加入广域网。 1.4 设计目标 项目要求系统应具备较强的适应能力和演化能力,无论单机还是网络环境均能运行,并能保证数据的一致性,且能随着网络环境的改善和管理水平的提高,平稳的从单机向广域网过渡,从集中式数据库向分布式数据库方式,从独立的应用程序方式向适应Intranet环境演变。 1.5 需求规定

1.5.1 数据管理能力要求 系统的输入由程序设计而提示用户输入功能选择命令,当需要对系统中的数据库进行更新时,必须以完整的格式化的文件化的形式进行输入。以此保证数据库中的数据的一致性和完整性。同时系统支持不同地区的用户通过服务器同时对数据库中的数据进行访问。该系统为一个典型的分布式软件体系结构。 1.5.2 故障处理要求 系统在出现故障时,原始未出现错误的数据,任可以提供给用户访问,当用户要求访问的数据为故障数据时,提示用户系统正处于维护状态。为避免故障的产生对数据的影响,将数据备份在磁盘或者或者硬盘中,通过日志文件,将数据的操作更新至备份数据中。同时,要求系统具有极强的可维护性,和容错与纠错能力。在系统发生故障时,能对故障进行及时的处理。恢复之后的系统,较之于以前,更坚强与牢固。 2.系统分析与设计 三层C/S体系结构运用事务分离的原则将系统应用分为表示层、功能层、数据层三个层次,每一层次都有自己的特点,如表示层是图形化的、事务驱动的,功能层是过程化的,数据层则是结构化和非过程化的,难以用传统的结构化分析与设计技术统一表达这三个层次。面向对象的分析与设计技术则可以将这三个层次统一利用对象的概念进行表达。当前有很多面向对象的分析和设计方法,我们采用Coad和Yourdon的OOA(object-oriented analyzing,面向对象的分析)与OOD(object-oriented design,面向对象的设计)技术进行三层结构的分析与设计。 在该系统的三层结构中,中间的功能层是关键。运用该系统的应用程序的最基本的就是执行数千条定义业务如何运转的业务逻辑。一个业务处理过程就是一组业务处理规则的集合。中间层反应的是应用域模型,是该系统的核心内容。 Coad和Yourdon的OOA用于理解和掌握该系统应用域的业务运行框架,也就是应用域建模。OOA模型描述应用域中的对象,以及对象间

软件体系结构试题库软件工程试题和答案

软件体系结构试题库软件工程试题和 答案

一、判断题 1、软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。答案:√ 2、可重用技术对构件库组织方法要求不但要支持精确匹配,还要支持相似构件的查找。 答案:√ 3、软件体系结构充当一个理解系统构件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。 答案:√ 5、构件能够由其它复合构建和原子构件经过连接而成。() 答案:√ 6、体系的核心模型由5种元素组成:构建、连接体、配置、端口和角色() 答案:√ 7、软件体系结构的核心由5种元素组成:构件、连接件、配置端口和角色。其中,构件、连接件和配置是最基本的元素() 答案:√ 8、开发视图主要支持系统的功能需求,即系统提供给最终用户的服务() 答案:X 9、构件、连接件以及配置是体系结构的核心模型最基本的元素

() 答案:√ 10、HMB风格不支持系统系统自顶向下的层次化分解,因为它的构件比较简单。 答案:× 11、正交软件体系结构由组织层和线索的构件构成。 答案:√ 13、线索是子系统的特例,它由完成不同层次功能的构建组成,每一条线索完成整个系统中相对独立的一部分功能。() 答案:√ 14、层次系统中支持抽象程度递增的系统设计是设计师能够把一个复杂系统按照递增的步骤进行分解,同时支持功能增强,可是不支持重用。 答案:× 16、在软件设计中占据着主导地位的软件体系结构描述方法是图形表示工具。 答案:√ 18、体系结构设计是整个软件生命周期中关键的一环,一般在需求分析之后,软件设计之前进行。 答案:√ 19、基于软构件的系统描述语言是较好的一种以构件为单位的软件系统描述语言。

软件体系结构考试要点

一、填空(每题1分,共10分) 二、名词解释(每题2分,共20分) 1、B/S 2、C/S 3、HMB 4、DSSA 5、ADL 6、XML 7、ATAM 8、Web Service 9、MTTF10、SOAP 11、WSDL 12、UDDI 13、SAAM 14、MVC 15、Artifact-Driven 16、Use-Case-Driven 17、Domain-Driven 18、Pattern-Driven 19、构件20、连接件21.、MTBF 22、敏感点23、权衡点24、直接场景25、间接场景 26、质量属性效用树 三、问答题(40分) 1、构件描述模型有哪几种? 2、理解并比较构件分类的三种方法:关键字分类法、刻面分类法和超文本组织方法,它们 是如何组织的?如何在其中检索构件?每种方法各有什么优缺点? 3、了解软件体系结构的四个发展阶段。 4、根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成? 5、至少掌握三种经典软件体系结构风格。 6、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。 7、请对MVC风格体系结构进行介绍,并说明该风格的优缺点。 8、在正交软件体系结构中,什么是完全正交结构?在实际使用时是不是必须严格遵守结构 正交?使用正交软件体系结构有什么优点? 9、层次系统结构和基于消息的层次系统结构有什么区别? 10、体系结构描述语言与程序设计语言有什么区别? 11、ACME中定义了哪七种体系结构实体?ACME中的类型和风格是什么含义? 12、了解基于XML的软件体系结构描述语言。

13、简要介绍Krutchten的“4+1”视图模型。 14、设计模式的基本成分有哪几个?请简单介绍其各个基本成分。 15、为什么要评估软件体系结构?从哪些方面评估软件体系结构? 16、软件体系结构评估的主要方法有哪三种?请简单解释每种方法。 17、SAAM和ATAM评估方法的基本步骤分别是什么? 18、Web服务有哪些核心技术,这些技术是如何在Web服务中发挥作用的。 四、看图答题(30分) 1、请根据P38图3-5介绍黑板系统的组成。 2、请根据P59图3-26解释HMB风格的构件模型。 3、请根据P60图3-27解释消息总线的属性和服务。 4、请根据P147图5-2介绍体系结构设计方法的元模型。 5、请根据P167图6-1简要介绍基于体系结构的软件开发过程的各个步骤。并说明各个步骤的必要性何在?或者说,它们在软件生命周期中都起到了什么作用? 6、请根据P207图8-1分析服务提供者、服务请求者和服务注册中心三者的作用,以及它们之间的工作流程。 7、请根据P229图8-11介绍UDDI的具体工作步骤。

相关主题
文本预览
相关文档 最新文档