软件体系结构描述语言 C2
软件体系结构期末大题

软件体系结构期末大题1.基于构件的软件开发的优势是什么?基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。
Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。
每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
3.在希赛公司的一个财务管理系统,财务部要客户提供…………4.不同的体系结构风格具有各自的特点、优劣和用途。
试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。
P52-56(1)管道和过滤器特点:@使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;@允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;@支持软件重用。
只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;@系统维护和增强系统性能简单。
新的过滤器能够添加到现有系统中来;旧的能够被改进的过滤器替换掉;@允许对一些如吞吐量、死锁等属性的分析;@支持并行执行。
每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行缺点:①一般导致进程成为批处理的结构。
②不适合处理交互的应用。
③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
(2)。
软件体系结构风格研究

软件体系结构风格研究[摘要] 本文对几种经典的软件体系结构风格进行了具体的阐述,分析了各种风格的特点、优缺点,最后重点介绍了三层C/S软件体系结构。
[关键词] 软件体系结构软件体系结构风格三层C/S软件体系结构20世纪60年代中期的软件危机使得人们开始重视软件工程的研究。
起初,人们把软件设计的重点放在数据结构和算法的选择上。
随着软件系统规模越来越大、越来越复杂,整个系统的结构显得越来越重要。
一、软件体系结构风格分析最初的软件体系结构是Mainframe结构客户、数据和程序都被集中在主机上,通常只有少量的GUI界面,对远程数据库的访问比较困难。
随着PC的广泛应用,该结构逐渐被淘汰。
在20世纪80年代中期出现了Client/Server分布式计算结构,应用程序的处理在客户机和服务器之间分担。
随着大型软件系统的开发,这种结构在系统的部署和扩展性方面暴漏出不足。
随着Internet的发展,一个更灵活的体系结构“三层/多层计算”体系结构应运而生。
Garlan和Shaw将通用软件体系结构风格总结为以下几类:1.数据流风格:批处理序列;管道/过滤器。
2.调用/返回风格:主程序/子程序;面向对象风格;层次结构。
3.独立构件风格:进程通讯;事件系统。
4.虚拟机风格:解释器;基于规则的系统。
5.仓库风格:数据库系统;超文本系统;黑板系统。
下面将介绍几种主要和经典的体系结构风格和它们的优缺点。
1.C2风格。
C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。
图1中构件与连接件之间的连接体现了C2风格中构建系统的规则。
C2风格是最常用的一种软件体系结构风格。
从C2风格的组织规则和结构图中,我们可以得出,C2风格具有以下特点:(1)系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;(2)所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;(3)构件相对独立,构件之间依赖性较少。
软件体系结构-期末大题

1.基于构件的软件开发的优势是什么?基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。
Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。
每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
3.在希赛公司的一个财务管理系统,财务部要客户提供…………4.不同的体系结构风格具有各自的特点、优劣和用途。
试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。
P52-56(1)管道和过滤器特点:@使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;@允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;@支持软件重用。
只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;@系统维护和增强系统性能简单。
新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;@允许对一些如吞吐量、死锁等属性的分析;@支持并行执行。
每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行缺点:①通常导致进程成为批处理的结构。
②不适合处理交互的应用。
③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
(2)(3)分层系统体系结构有以下优点:第一,支持基于抽象程度递增的系统设计。
这允许设计者可以将一个复杂系统设计按递增的步骤进行分解。
第二,支持功能增强。
因为每层至多和与之相邻的上层和下层交互,所以,改变某层的功能最多只会影响与之相邻的其它两层。
第三,支持重用。
与抽象数据类型一样,只要对相邻层提供同样的接口,每层可以有很多不同的可相互替代的实现方法。
C2 软件体系结构建模

好的体系结构描述的必要元素(1) 好的体系结构描述的必要元素
需求陈述
商业环境、产品的背景、 商业环境、产品的背景、领域
描述环境
必须和什么系统交互、 必须和什么系统交互、外部接口
使用体系结构图
用恰当的线框 简洁的说明
2011-6-18 8
好的体系结构描述的必要元素(2) 好的体系结构描述的必要元素
2011-6-18 13
第2章 软件体系结构建模 章 ◇ 软件体系结构建模的种类
◎ 结构模型
2.1 软件体系结构建模概述
这是一个最直观、最普遍的建模方法。 这是一个最直观、最普遍的建模方法。这种方法以 体系结构的构件、连接件和其他概念来刻画结构, 体系结构的构件、连接件和其他概念来刻画结构,并 力图通过结构来反映系统的重要语义内容, 力图通过结构来反映系统的重要语义内容,包括系统 的配置、约束、隐含的假设条件、风格、性质等。 的配置、约束、隐含的假设条件、风格、性质等。 研究结构模型的核心是体系结构描述语言。 研究结构模型的核心是体系结构描述语言。
2011-6-18
15
第2章 软件体系结构建模 章 ◇ 软件体系结构建模的种类
◎ 动态模型
2.1 软件体系结构建模概述
动态模型是对结构或框架模型的补充,研究系统的 动态模型是对结构或框架模型的补充, 大颗粒”的行为性质。例如, “大颗粒”的行为性质。例如,描述系统的重新配置 或演化。动态可以指系统总体结构的配置、 或演化。动态可以指系统总体结构的配置、建立或拆 除通信通道或计算的过程。 除通信通道或计算的过程。
管理问题
暗含开发团队的组织结构 体系结构评审情况
其他设计问题
代码重用、标准的运用 代码重用、 风险分析 运作、 运作、管理和维护
软件体系结构描述 (1)可编辑全文

第4章 软件体系结构描述
4.2 软件体系结构描述框架标准
IEEE P1471详细介绍了一套体系 结构描述的概念框架,并给出建立框 架的思路,但如何描述以及具体的描 述技术等方面缺乏更进一步的指导。
第4章 软件体系结构描述 ◇ Rational
4.2 软件体系结构描述框架标准
基于IEEE P1471推荐的体系结构描述的概 念框架,Rational起草了可重用的软件资产规 格说明,提出了一套易于重用的体系结构描述 规范。
第4章 软件体系结构描述
4.2 软件体系结构描述框架标准
◇ IEEE P1471 软件体系结构描述的标准
◎ 体系结构设计的标识、版本、总体信息。
◎ 系统参与者的标识、以及在体系结构中他们所关注 方面的标识。
◎ 组织体系结构表示所选择的视点的规格说明,以及 这种选择的基本原理。 ◎ 一个或多个体系结构视图。 ◎ 体系结构描述所需的成分之间不一致的记录。 ◎ 体系结构选择的基本原理。
本元素是:构件、连接件、体系结构配置。
主 要 的 体 系 结 构 描 述 语 言 有 Aesop 、 MetaH 、 C2 、 Rapide 、 SADL、Unicon和Wright等,尽管它们都描述软件体系结构,却有 不同的特点。
这些ADL强调了体系结构不同的侧面,对体系结构的研究和应 用起到了重要的作用,但也有负面的影响。每一种ADL都以独立的 形式存在,描述语法不同且互不兼容,同时又有许多共同的特征, 这使设计人员很难选择一种合适的ADL,若设计特定领域的软件体 系结构又需要从头开始描述。
4.3 软件体系结构描述语言
◎ 构造能力:ADL能够使用较小的独立体系结 构元素来建造大型软件系统;
◎ 抽象能力:ADL使得软件体系结构中的构件 和连接件描述可以只关注它们的抽象特性,而 不管其具体的实现细节;
软件体系结构描述语言

ADL实例 — Rapide
• 该层次的非形式化是严重的问题吗?
体系结构描述语言的必要性
• 体系结构是降低开发成本的关键
– 开发焦点转移到粗粒度系统成分
• 形式化的体系结构模型是需要的 • 体系结构描述语言(ADLs)作为一种可能的解决方 案被提出
ACME Aesop ArTek C2 Darwin LILEANNA MetaH Rapide SADL UniCon Weaves Wright
END input
UniCon的语法 (3)
• UniCon配置
USES p1 PROTOCOL Unix-pipe USES sorter INTERFACE Sort-filter CONNECT sorter.output TO p1.source USES p2 PROTOCOL Unix-pipe USES printer INTERFACE Print-filter CONNECT sorter.input TO p2.sink
• 实现 (implementation)
– 连接件类型
• 协议 (protocol)
– 预定义的角色和属性集合 – 为每个角色预定义的属性集合
• 实现 (implementation)
– 构件类型和连接件类型的实例化 (uses) – 实例的配置 (connect)
UniCon的语法 (2)
• UniCon构件演员
对以下成分进行显式规约构件components?接口连接件connectors配置configurations?期望的特性构件连接件和配置的特定方面工具支持区分adls?模型化配置的方法隐式的配置implicitconfiguration内嵌的配置inlineconfiguration显式的配置explicitconfiguration?关联体系结构和实现的方法实现约束implementationconstraining实现无关implementationindependent?相关符号体系高层设计符号体系模块连接语言mil面向对象符号体系编程语言形式化规约语言adl构件?定义构件是计算或数据存储单元构件是计算和状态的场所?所有的adls支持构件建模?不同的术语构件component接口interface进程process构件分类范畴?接口interfaces模型化要求的required和提供的provided服务?类型types相同的功能能被复用和多重实例化multipleinstances?语义semantics方便分析强制约束体系结构不同层次细化的映射?约束constraints确保符合预期的构件使用使用边界和构件之间的依赖?演化evolution作为设计元素的构件演化通过子类型化和细化进行支持?非功能属性nonfunctionalproperties使能运行时行为的模拟分析约束处理器规约和项目管理adls比较
C2_软件体系结构建模解析

这是一个最直观、最普遍的建模方法。这种方法以 体系结构的构件、连接件和其他概念来刻画结构,并 力图通过结构来反映系统的重要语义内容,包括系统 的配置、约束、隐含的假设条件、风格、性质等。 研究结构模型的核心是体系结构描述语言。
2018/10/15
4
第3章 软件体系结构建模 ◇ 软件体系结构建模的种类
2018/10/15
编程人员:软件管理 开发视图
物理视图 系统工程人员:系统 拓扑、安装、通信等
10
第3章 软件体系结构建模 ◇ 软件架构视图
3.2 “4+1”视图模型
Kruchten在其著作《Rational统一过程引论》中写道: 一个架构视图是对于从某一视角或某一点上看到的系 统所做的简化描述,描述中涵盖了系统的某一特定方面, 而省略了与此方面无关的实体。 软件架构的每个视图分别关注不同的方面,针对不同 的目标和用途。
最终用户:功能需求 逻辑视图 场景
编程人员:软件管理 开发视图
进程视图 系统集成人员:性能 可扩充性、吞吐量等
物理视图 系统工程人员:系统 拓扑、安装、通信等
u逻辑视图 当采用面向对象的设计方法时,逻辑视图即 是对象模型。
u进程视图 描述系统的并发和同步方面的设计。 u物理视图 描述软件到硬件之间的映射关系,反映系统 在分布方面的设计。
◎ 框架模型
3.1 软件体系结构建模概述
框架模型与结构模型类似,但它不太侧重描述结构 的细节而更侧重于整体的结构。 框架模型主要以一些特殊的问题为目标建立只针对 和适应该问题的结构。
2018/10/15
5
第3章 软件体系结构建模 ◇ 软件体系结构建模的种类
◎ 动态模型
3.1 软件体系结构建模概述
【软件体系结构】 复习

第一章1. 体系结构发现、演化、重用体系结构发现解决如何从已经存在的系统中提取软件的体系结构,属于逆向工程范畴。
由于系统需求、技术、环境、分布等因素的变化而最终导致软件体系结构的变动,称之为软件体系结构演化。
体系结构重用属于设计重用,比代码重用更抽象。
由于软件体系结构是系统的高层抽象,反映了系统的主要组成元素及其交互关系,因而较算法更稳定,更适合于重用。
2.基于软件体系结构的软件开发方法:问题定义—>软件需求—>软件体系结构—>软件设计—>软件实现3.评价软件体系结构的方法权衡分析方法(ATAM方法),软件体系结构分析方法(SAAM方法),中间设计的积极评审(ARID方法)第二章1. 建模结构模型:研究结构模型的核心是体系结构描述语言。
以体系结构的构件,连接件和其他概念来刻画结构。
并力图通过结构来反映系统的重要语义内容。
框架模型:与结构模型类似,但不太侧重细节,而侧重于整体结构。
动态模型:是对结构和框架模型的补充,研究系统大颗粒的行为性质。
过程模型:研究构造系统的步骤和过程,结构是遵循某些过程脚本的结果。
功能模型:认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
功能模型可以看作是一种特殊的框架模型。
4+1视图模型:逻辑视图、进程视图、物理视图、开发视图和场景视图逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。
在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。
这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。
在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图开发视图通过系统输入输出关系的模型图和子系统图来描述。
进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。
物理视图主要考虑如何把软件映射到硬件上。
逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。
实验 C2风格在ArchStudio的架构

软件体系结构设计实验报告实验2 软件体系结构描述语言——C2风格1、实验目的了解各种软件体系结构描述语言的特征,熟练掌握各种语言所适用的情况. 2、实验内容及要求选择其中一种常见的软件体系结构描述语言,通过查找各渠道的资料,完成对这种软件体系结构描述语言全面介绍和其相关工具的适用。
3、实验设备(环境)及要求硬件:支持 Intel Pentium Ⅱ及其以上 CPU ,内存 128MB 以上、硬盘 1GB 以上容量的微机。
软件:配有 Windows98/2000/XP 操作系统,。
4、实验结果:第一步在Eclipse中安装ArchStudio(1)点击菜单栏的Help点击Install New Software。
.(2)在Work with栏输入ArchStudio的下载安装地址/projects/archstudio-5/updatesite-4。
2(3)在item selected的框中勾选ArchStudio.点击Next。
(4)点击next。
等待ArchStudio的安装完成。
待安装完成,将Eclipse的perspective 从默认Java转换到ArchStudio.第二步:新建工程(5)在Navigatior导航栏中新建一个Project。
选中General的Project.点Next。
输入Project的名字。
点finish。
(6)右键点击在Navigator新建好的工程New————>Project。
选中ArchStudio 的ArchStudio Architecture Description。
点next。
(7)输入新创建的架构描述名称。
点Finish。
(8)将C2.xml拖入ArchStudio Launcher窗口中的archipelago。
则在outline显示出新创建的C2。
xml。
右键点击structures,点击New Structure。
(9)在C2.xml - Archipelago窗口中新建连接件、构件,对架构图进行设计。
软件体系结构描述语言ADL综述_bycs

软件体系结构描述语⾔ADL综述_bycs软件体系结构描述语⾔ADL综述Advancement of Architecture Description Language (ADL) 引⾔60年代的软件危机使得⼈们重新开始重视软件⼯程的研究。
最初⼈们选择了“算法+数据结构=程序”的设计模式。
但随着软件系统的规模和复杂性越来越⼤,传统的设计模式已经不能适应要求。
同时为了保证软件质量,提⾼软件的可靠性、可重⽤⾏和可维护性,软件设计的核⼼逐渐转向对系统的总体结构即软件体系结构(Software Architecture)的设计和规范。
这类⽅法主要着眼于软件系统的全局组织形式,在更⾼层次上把握系统各组件之间的内在联系。
并从全局的,整体的⾓度去理解和分析整个系统的⾏为和特性,有助于解决当前开发复杂的⼤型软件所存在的困难。
研究软件体系结构的⾸要问题是如何描述软件体系结构。
⽬前已有很多表现形式和⽅法表法、模块连接语⾔、软构件描述法和体系结构描述语⾔ADL等。
⽽其中ADL作为形式化的表⽰软件体系结构的⼯具呈现出强⼤的⽣命⼒。
它提供了规范化的体系结构描述,同时是对软件体系结构进⾏求精、验证、演化和分析的前提与基础。
⽬前已经成为软件体系结构⽅向的研究热点。
实践⼯作者将这些ADL应⽤于实践中,获得了成功。
同时,我们应注意到不同的ADL所⽀持的抽象能⼒及其提供的分析能⼒变化很⼤,学术领域⽬前对ADL的定义尚未取得⼀致。
⼀、软件体系结构的概述由于对软件体系结构的研究和应⽤刚刚兴起,许多专家学者从不同的⾓度和侧⾯对软件体系结构进⾏刻画,因此,⽬前软件体系结构还没有⼀个标准定义。
这⾥给出⼀个⽬前学术领域⼴泛接受的定义。
(D.Garlan&M Shaw,1993)软件体系结构是软件设计过程中的⼀个层次,在计算过程中的算法设计和数据结构之上,处理总体系统结构设计和描述⽅⾯的⼀些问题。
包括总体组织与全局控制结构、通讯协议、同步、数据存取、设计元素的功能分配,物理分布,设计元素的复台,设计⽅案的选择、评估和实现等。
软件体系结构描述语言(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采用了一种开放的编译器结构以便于增加相应的检测方法.DarwinDarwin简介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 SADLC2 SADL是UCI设计的一种基于消息传递的体系结构描述语言,主要用于描述符合C2风格的软件系统的体系结构.C2风格C2风格是一种基于构件和消息的体系结构风格,主要是应用于带有图形用户接口(GUI)的应用系统,但也能用于其它类型的应用.这种风格要求构件之间通过消息交换进行通信.因此每个C2构件和C2连接子都有一个top接口和一个bottom接口,其中top接口定义了该构件所能接收的应答消息和向上发出的请求消息,而bottom接口定义了该构件能够进行应答的请求消息及其向下发出的应答.所有消息都以连接子为桥梁在构件之间进行传递.这种风格的体系结构将系统中的构件用连接子划分为不同层次,如图- 4所示.C2风格的体系结构:可视化堆栈(Stack)C2概念的图例C2风格的核心在于构件之间的"有限可见性",即处于系统中某个层次的构件只能"看到"上层的构件,而不清楚下层到底是什么构件在与之进行通信.具体表现在如下所述的构件之间的通信规则(即系统的组装规则):构件的top接口只可能与某一个连接子的bottom接口相连构件的bottom接口只可能与某一个连接子的top接口相连与连接子相连的构件或者连接子没有数量限制两个连接子相连时,只能是其中一个的bottom接口与另一个的top接口相连C2 SADLC2 SADL目前还只是一个原型语言,其相应的支撑工具还在开发中.该语言包含三个部分:接口定义符号(IDN, interface definition notation):是C2中的构件接口的规约.如下所示是一个堆栈(Stack)构件的C2 IDN.体系结构描述符号(ADN,architecture description notation):是C2体系结构的声明性规约.例如图- 4所示例子的相应描述如下:体系结构构造符号(ACN,architecture construction notation):主要用于表达体系结构的动态变化,例如如果要在运行时删除堆栈的一种可视化表示方式,可以用ACN进行如下描述:C2 SADL中的连接子本质上是一种消息总线,复合这种结构的应用系统往往具有比较良好的灵活性和可扩展性.不过由于C2 SADL还没有针对大型实际系统进行建模和使用,因此对使用该结构所可能导致的性能问题还不是很明确.AcmeAcme简介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支持工具之间有可能进行体系结构描述信息的交流.xADLxADL简介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应该提供至少这三种元素的显式描述.是否同时描述了这三种元素,也可以。
软件体系结构试题库(软件工程)试题和答案

1、软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。
答案:√2、可重用技术对构件库组织方法要求不仅要支持精确匹配,还要支持相似构件的查找。
答案:√3、软件体系结构充当一个理解系统构件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。
答案:√5、构件可以由其他复合构建和原子构件通过连接而成。
()答案:√6、体系的核心模型由5种元素组成:构建、连接体、配置、端口和角色()答案:√7、软件体系结构的核心由5种元素组成:构件、连接件、配置端口和角色。
其中,构件、连接件和配置是最基本的元素()答案:√8、开发视图主要支持系统的功能需求,即系统提供给最终用户的服务()答案:X9、构件、连接件以及配置是体系结构的核心模型最基本的元素()答案:√10、HMB风格不支持系统系统自顶向下的层次化分解,因为它的构件比较简单。
答案:×11、正交软件体系结构由组织层和线索的构件构成。
13、线索是子系统的特例,它由完成不同层次功能的构建组成,每一条线索完成整个系统中相对独立的一部分功能。
()答案:√14、层次系统中支持抽象程度递增的系统设计是设计师可以把一个复杂系统按照递增的步骤进行分解,同时支持功能增强,但是不支持重用。
答案:×16、在软件设计中占据着主导地位的软件体系结构描述方法是图形表达工具。
答案:√18、体系结构设计是整个软件生命周期中关键的一环,一般在需求分析之后,软件设计之前进行。
答案:√19、基于软构件的系统描述语言是较好的一种以构件为单位的软件系统描述语言。
答案:√21、基于构件的动态系统结构模型分为三层,风别是应用层、中间层、和体系结构层。
答案:√23、基于构件的动态系统结构模型分为应用层,中间层和体系结构层。
答案:√29、一般的说,一个模式有一下4个基本成分,1.模式名称,2.问题,3.解决方案,4.效果,这句话是对的()答案:√30、设计模式的概念最早是由美国的一位计算机专家提出的。
软件体系结构试题库(软件工程)试题和答案

一、判断题1、软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。
答案:√2、可重用技术对构件库组织方法要求不仅要支持精确匹配,还要支持相似构件的查找。
答案:√3、超文本组织方法与基于数据库系统的构件库组织方法不同,它基于全文检索技术。
答案:√4、软件体系结构充当一个理解系统构件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。
答案:√5、构件可以由其他复合构建和原子构件通过连接而成。
()答案:√6、体系的核心模型由5种元素组成:构建、连接体、配置、端口和角色()答案:√7、软件体系结构的核心由5种元素组成:构件、连接件、配置端口和角色。
其中,构件、连接件和配置是最基本的元素()答案:√8、开发视图主要支持系统的功能需求,即系统提供给最终用户的服务()答案:X9、构件、连接件以及配置是体系结构的核心模型最基本的元素()答案:√10、HMB风格不支持系统系统自顶向下的层次化分解,因为它的构件比较简单。
答案:×11、正交软件体系结构由组织层和线索的构件构成。
答案:√12、基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。
答案:√13、线索是子系统的特例,它由完成不同层次功能的构建组成,每一条线索完成整个系统中相对独立的一部分功能。
()答案:√14、层次系统中支持抽象程度递增的系统设计是设计师可以把一个复杂系统按照递增的步骤进行分解,同时支持功能增强,但是不支持重用。
答案:×15、相交关系R是一个等价关系。
答案:√16、在软件设计中占据着主导地位的软件体系结构描述方法是图形表达工具。
答案:√17、Rapide是一种可执行的ADL,其目的在于通过定义并模拟基于事件的行为对分布式同步系统建模。
答案:×并发系统建模18、体系结构设计是整个软件生命周期中关键的一环,一般在需求分析之后,软件设计之前进行。
C2SADL详解

(5)体系结构和实现相分离:许多潜在的性能问题都可以通过体系结构和具体实现的分离来解决。
C2对于构件的描述
Component :: = Component component_name is Interface component_message_interface Parameters component_parameters Methods component_methods
4.两个连接子相连时,只能是其中一个的bottom接口与另一个的top接口相连
C2 SADL
C2 SADL目前还只是一个原型语言,其相应的支撑工具还在开发中.该语言包含三个部分: 接口定义符号(IDN, interface definition notation):是C2中的构件接口的规约.如下所示是一 个堆栈(Stack)构件的C2 IDN. 体系结构描述符号(ADN,architecture description notation):是C2体系结构的声明性规约.
[to component_name][parameter_list]
Notification ::= Message_name [parameter_liat]
实例
——简单ATM机取款
C2对User构件的描述
component user is interface behavior start_up always_generate Card ( Cnumber,Ccode ) , DrawRequset ( ) , BalanceRequset(); r e c e i v e d _ m e s s a g e G e t Balance ( ) may_generate BalanceRequset();
软件体系结构描述语言 C2ppt课件

13
C2对于构件接口的描述
Component :: = Component component_name is Interface component_message_interface Parameters component_parameters Methods component_methods [behavior component_behavior] [context component_context] End component_name;
4
C2风格的中心原则
C2风格的中心原则是有限可视原则,或者说是下层 独立的原则: 在C2风格的体系结构中,某一构件只能感知层次高 于自己的构件所提供的服务,而不能感知到层次比 自己更低的构件的服务。 这种单向的传递性,有利于系统的维护和扩展。
5
C2风格的通信规则
C2中,所有构件间的通信必须通过消息来实现,这 也是构件之间的唯一通信途径。每个构件都有一个 顶端域、一个底端域。构件的顶端域定义了构件可 以对哪些通知做出响应,以及可以发出哪些请求; 构件的底端域定义了可以向下层发送哪些通知,以 及可以响应下层的哪些请求。
软件体系结构描述语言 C2
小组成员:
1
引言
软件体系结构是根植于软件工程发展起来的新兴学科,目前已经成为软件工 程研究和实践的一个重要领域。软件体系结构设计的一个核心问题是能否使 用重复的体系结构模式,即能否达到体系结构级的软件重用。也就是说,能 否在不同的软件系统中,使用同一体系结构。
C2体系结构风格作为一种经典的体系结构风格,它就具有平衡开发费用与近 产品的共同性的特性。按照C2体系结构风格的规则,我们能够把各种粒度的 构件集成到一个系统结构中。可以说,C2体系结构风格对软件结构和软件构 件交互定义了一个良好的设计规范,同时还具有广泛的试验和工具。因而, 它就为软件设计开发者提供了一个有界面密集的系统的软件体系结构风格。 在C2风格的体系结构中,连接件在构件之间转发消息,构件
软件体系结构必考内容

C/S 优缺点C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。
◎服务器(1)数据库安全性的要求;(2)数据库访问并发性的控制;(3)数据库前端的客户应用程序的全局数据完整性规则;(4)数据库的备份与恢复。
◎客户应用程序(1)提供用户与数据库交互的界面;(2)向数据库服务器提交用户请求并接收来自数据库服务器的信息;(3)利用客户应用程序对存在于客户端的数据执行应用逻辑要求。
c/s优点:简单灵活,各司其职◎思想简单,易于理解:C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
◎灵活,系统可扩充性强:系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
◎系统功能构建分离:在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。
将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
C/S 缺点:费钱费力不讨好,又繁又旧难维护。
◎开发成本较高◎客户端程序设计复杂◎信息内容和形式单一◎用户界面风格不一,使用繁杂,不利于推广使用◎软件移植困难◎软件维护和升级困难◎新技术不能轻易应用两层C/S的局限服务器自我中心,难交朋友;客户机压力山大,没有安全感1、单一服务器且以局域网为中心,难以拓展到大型企业广域网或者Internet2、软硬件的组合和集成能力有限3、客户机负荷太重,难以管理大量的客户机,系统的性能容易变坏4、数据安全性不好。
三层C/S 的优势交个朋友,分担任务,增加应用服务器,客户机上是表示层,应用逻辑层留在应用服务器上,瘦客户机。
应用层分为表示层,功能层和数据层,数据层仍然放在数据库服务器上。
软件体系结构建模的种类

软件体系结构建模的种类: 结构模型, 框架模型, 动态模型, 过程模型,功能模型"4+1"视图模型:1.逻辑视图:逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。
2.开发视图:开发视图也称模块视图,主要侧重于软件模块的组织和管理。
3.进程视图:进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。
强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。
4.物理视图:物理视图主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。
5.场景:场景可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。
体系结构核心模型由5中元素组成:构件、连接件、配置、端口和角色。
经典的体系结构风格数据流风格:批处理序列;管道/过滤器。
◎调用/返回风格:主程序/子程序;面向对象风格;层次结构。
◎独立构件风格:进程通讯;事件系统。
◎虚拟机风格:解释器;基于规则的系统。
◎仓库风格:数据库系统;超文本系统;黑板系统。
◎其他(如适应性软件系统的体系结构风格、面向Agent的研究、网格计算、Web服务等)过滤器的活动可通过以下三种方式激活:后续构件从过滤器中取出数据;前序构件向过滤器推入数据;过滤器处于活跃状态,不断从前序构件取出、并向后续部件推入数据。
软件体系结构描述方法:图形表达工具、模块内连接语言、基于软构件的系统描述语言、软件体系结构描述语言软件体系结构描述语言ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。
基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。
其三个基本元素是:构件、连接件、体系结构配置。
主要的体系结构描述语言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wright等,尽管它们都描述软件体系结构,却有不同的特点。
软件体系结构描述语言 C2

C2架构风格
C2风格定义了两种类型的 消息:向上发送的请求消息 (Requests)和向下发送的通知 消息(Notifications)。 请求消 息只能向上层传送而通知消息 只能向下层传送。
通知消息的传递只对应于构 件内部的操作,而和接收消息 的构件的需求无关。
C2体系结构风格元素构成
构件: 分别有top和bottom端口 只能和1个连接件相连
RequestWithdrawal(); end Attendee;
C2对ImportantAttendee构件的描述
component ImportantAttendee is subtype Attendee(in and beh)
interface
bottom_domain is
end ImportantAttendee;
C2对体系结构的描述
architecture MeetingScheduler is
conceptual_components
Attendee;ImportantAttendee;MeetingInitiator;
connectors
C2体系结构风格作为一种经典的体系结构风格,它就具有平衡开发费用与近 产品的共同性的特性。按照C2体系结构风格的规则,我们能够把各种粒度的 构件集成到一个系统结构中。可以说,C2体系结构风格对软件结构和软件构 件交互定义了一个良好的设计规范,同时还具有广泛的试验和工具。因而, 它就为软件设计开发者提供了一个有效的软件重用环境。
ExclSet(e:data_mg);
EquipReqts(eq:equip_type);
LocPref(l:loc_type);
一种软件体系结构描述语言分类和比较方法

一种软件体系结构描述语言分类和比较方法[摘要] 软件架构转变了开发者从通信线路到粗粒度的体系结构元素和整体互连结构的代码的开发重点。
架构描述语言(ADLs)已被提议作为支持基于发展的软件体系建模符号。
但是,对什么是ADL、什么样的架构方面应以ADL 来建模和有哪几种可能的情形为最适合某个特定问题,很少达成研究界的共识。
此外,很少有对ADLs在某一方面或针对某一正式的规范就模块的连接,仿真、编程语言与其他方面做出区别。
本文提出了对ADLs定义和分类的框架,通过定义可以把ADLs与其他建模符号区别开来,通过框架可以区分和比较几种现有的ADLs并在这一过程中确定ADLs的关键特性。
[关键词] 软件体系结构;体系结构描述语言;构件;连接件;体系结构配置;定义;分类;比较1 引言软件体系结构的研究都是针对降低其发展的应用成本而增加有关产品族不同成员之间潜在的共性[1]。
基于公共体系结构风格的软件开发的焦点从代码转移到粗粒度的体系结构元素(软件构件和连接件)和它们的互连结构。
为了支持基于体系结构的开发,对体系结构的规格说明起作用的建模概念符号和分析开发工具是非常必要的。
架构描述语言(ADLs)及其工具集已经被提出。
ADLs最近已成为软件体系结构团体中的热门研究领域[2]。
针对体系建模已经提出了许多ADLs[3],它们都是在特定的领域中作为通用的体系结构建模语言,本文特别考虑通过以下语言作为ADLs的普遍参考:Aesop、ArTek、C2、Darwin、LILEANNA、MetaH、Rapide、SADL、UniCon、Weaves和Wright。
最近,针对体系结构交换语言ACME已做了大量的初始化工作,它旨在支持体系架构规格从一种ADL到另一种的映像,并因此使围绕ADLs 的一些支持工具的集成成为可能。
严格地说,ACME并不是一种ADL,但它包含了许多类似于ADL的特征。
此外,它对于比较和区别于其他的ADLs来突出ADL和交换语言之间的差异是非常有用的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通知消息的传递只对应于构件内部的 操作,而和接收消息的构件的需求无关。
C2连接件
连接件是负责构件之间消息的传 递可以连接任何数量的C2构件和 连接件。
连接件的主要职责是消息的路由 和广播,另一个次要职责是消息 的过滤。 (不过滤消息、通知消息过滤、 优先过滤策略、消息屏蔽)
C2架构风格
C2风格定义了两 种类型的消息:向上 发送的请求消息 (Requests)和向下发送 的通知消息 (Notifications)。 请求 消息只能向上层传送 而通知消息只能向下 层传送。
通知消息的传递 只对应于构件内部的 操作,而和接收消息
C2体系结构风格元素构成
构件: 分别有top和bottom端口 只能和1个连接件相连
定义
C2是一种用于用户界面密集的系统的软件体 系结构风格。
在C2风格的体系结构中,连接件在构件之间 转发消息,构件负责维护状态,进行操作, 通过两个接口(顶端接口和底端接口)和其 他构件交换消息。
构件之间的消息交换不能直接进行,而只能 通过连接件来完成。每个构件接口最多只能 和一个连接件相连,而连接件可以和任意数 目的构件或连接件相连。
对话:负责把接收到的 外部消息映射成内部对 象上的操作。
C2构件的作用
对构件上方的连接件发送过来的 通知消息提供响应;
对构件下方连接件产生的请求消 息执行相应的操作;
维护一些在对话框中定义好的约 束条件。
C2消息
C2风格定义了两种类型的消息:向上 发送的请求消息(Requests)和向下发送的通 知消息(Notifications)。
顶层域规定了该构件所能响应的 通知消息集,以及它能向上产生 的请求消息集
底层域规定了该构件所能向下产 生的通知消息集,以及它能响应 的来自于下层的请求消息集。
C2构件
C2构件包括4个内部成 分:
内部对象:存储构件状 态并实现构件所提供的 操作。
包装器:内部对象上的 包装器监控所有的操作 请求,并通过底端接口 发送通知。
C2体系结构风格作为一种经典的体系结构风格,它就具 有平衡开发费用与近产品的共同性的特性。按照C2体系 结构风格的规则,我们能够把各种粒度的构件集成到一 个系统结构中。可以说,C2体系结构风格对软件结构和 软件构件交互定义了一个良好的设计规范,同时还具有 广泛的试验和工具。因而,它就为软件设计开发者提供 了一个有效的软件重用环境。
(4)不共享地址空间:C2体系结构风格允许异构 构件的集合,它没有规定构件的实现语言,并 且,构件也有它自己的线程控制和内部对象。
(5)体系结构和实现相分离:许多潜在的性能问
C2对于构件接口的描述
Component :: = Component component_name is Interface component_message_interface Parameters component_parameters Methods component_methods [behavior component_behavior] [context component_context] End component_视原则,或者说是下 层独立的原则: 在C2风格的体系结构中,某一构件只能感知层次 高于自己的构件所提供的服务,而不能感知到层 次比自己更低的构件的服务。 这种单向的传递性,有利于系统的维护和扩展。
C2风格的通信规则
C2中,所有构件间的通信必须通过消 息来实现,这也是构件之间的唯一通 信途径。每个构件都有一个顶端域、 一个底端域。构件的顶端域定义了构 件可以对哪些通知做出响应,以及可 以发出哪些请求;构件的底端域定义 了可以向下层发送哪些通知,以及可 以响应下层的哪些请求。
C2对构件的描述
1
12
Component_mess Interface_requests :
age_interface ::= :=
2 Top_domain_inter face
13 {request; } | null;
3
14
Bottom_domain_i Interface_notificati
nterface
ons ::=
4
15 {notification; }
实例 ——会议
安排系统的C2风格
目前,大型企业的组织机构基本上都为树型结构,而且 各个机构可能位于不同的地区。随着企业内部信息交互 越来越频繁,分布式系统的应用越来越受到重视,且对 系统的可扩展性及可维护性的要求也越来越高。
背景
1995年, University of California Irvine的 Richard.N.Taylor等人在一篇题为“A
C2风格特点
(1)基底独立性:构件不需要知道它下面的构件 。一个反映构件内部对象状态改变的通知消息 对于构件的对话框是完全透明的。
(2)基于消息的通信:构件之间所有的通信只能 通过消息进行这种需求最常见的情况是在用户 接口系统中,应用需要异步处理的特性。
(3)多线程:这是另外一种异步处理的特性,它 可以简化对于多用户和并行式应用计算的建模 和编程。
软件体系结构描述 语言 C2
小组成员:张三 李四 王五
引言
软件体系结构是根植于软件工程发展起来的新兴学科, 目前已经成为软件工程研究和实践的一个重要领域。软 件体系结构设计的一个核心问题是能否使用重复的体系 结构模式,即能否达到体系结构级的软件重用。也就是 说,能否在不同的软件系统中,使用同一体系结构。
Component And Message-Based Architectural Style For GUI Software”的论 文中提出了一种新的体系结构风格,将 其称为“C2风格”。这种风格的设计是用 来支持图形化用户界面应用程序的需要 ,然而,很明显,它还具有支持其他类 型应用程序的潜力。如今,在JAVA平台 上有许多中间件可以支持C2风格的实现 。