软件体系结构描述语言ADL综述_bycs
动态软件体系结构描述方法
学号 1206年级 2012级动态软件体系结构描述D-ADL方法理解与研究专业班级计算机(2)班姓名联系方式 15任课教师周2015年5月中国南京摘要D-ADL是一种刻画软件的动态行为的描述方法,该方法是由我国学者李长云提出的。
在D—ADL中,组件、连接件和体系结构风格定义为抽象类型,系统行为被模型化为进程,构件和连接件的交互点则被模型化为通道,它将动态行为从计算行为中分离出来,其结果能够被预先推导。
关键词:动态软件体系结构;D-ADL根据软件体系结构在运行时的演化方式,可以分为静态软件体系结构和动态软件体系结构。
软件体系结构的动态演化包括组件或连接件的创建或删除、组件的更新、调整负载平衡等几种情况。
D-ADL便是一种为动态体系结构建模提供支持的方法。
D-ADL遵循Wright等给出的SA描述框架,并且D-ADL将高阶多型π演算作为行为语义基础,凭借高阶π演算描述动态系统的特征,D-ADL允许构件、连接件和配置产生变更,并使得对SA的自动化分析成为可能。
D-ADL将类型与实例区分开来,构件类型是实现构件重用的手段。
构件具有三个基本组成部分:接口部分、行为部分和属性部分。
构件分有原子构件和复合构件两种。
原子构件是指不具备内部结构的构件。
为了进一步促进原子构件的重用,构件可以参数化,通过输入不同的参数,来提高构件的灵活性。
复合构件是由多个构件实例和连接件实例组装而成的,它在规约层次上表达了成员之间的组合。
与原子构件类似,复合构件也可进行参数化,从而提高构件的可重用性。
连接件是一种特殊的构件,同样地,连接件也分为原子连接件和复合连接件两类。
原子连接件语法规约类似于原子构件,仅仅是计算行为描述换成了路由行为。
通过结构化组合,多个连接件和构件也能形成复合连接件。
在D-ADL中,动态行为规约是通过choreographer来处理的.动态行为本质上是对体系结构的动态重配置,涉及到如下的体系结构变动:(1)动态创建新的构件实例和连接件实例以及新的端口和通道;(2)动态删除构件实例和连接件实例以及端口和通道;(3)体系结构元素之间连接的改变。
ADL的软件体系结构描述及精化研究的开题报告
基于UML和XYZ/ADL的软件体系结构描述及精化研究的开题报告一、选题背景和意义随着软件系统规模的不断扩大和复杂度的不断增加,软件体系结构设计变得越来越重要。
软件体系结构是指软件系统的模块化结构化表示,将软件系统分为各个模块,模块之间通过特定的接口进行协作和通信。
软件体系结构设计可以帮助软件开发人员管理软件系统的复杂度,提高软件系统的可维护性、可扩展性和可重用性。
在软件体系结构设计过程中,需使用一种描述语言来描述软件系统的体系结构。
目前常用的描述语言有UML(Unified Modeling Language)和XYZ/ADL(eXtensible Architecture Description Language/Architecture Description Language)。
UML是一种面向对象的建模语言,它提供了一组图形符号来描述软件系统的不同方面。
XYZ/ADL是一种面向组件的体系结构描述语言,可以用来描述软件系统的组件及其之间的关系。
本研究将基于UML和XYZ/ADL,对软件体系结构设计进行描述和精化研究,以提高软件体系结构设计的可靠性和精确性。
本研究将主要探讨以下问题:1. 如何使用UML和XYZ/ADL描述软件体系结构?2. 如何使用模型检查技术对软件体系结构进行验证和精化?3. 如何结合实际应用场景,设计出满足需求的软件体系结构?二、研究内容和目标本研究的主要内容和目标如下:1. 探讨UML和XYZ/ADL的基本使用方法,分析它们的优缺点和适用场景。
2. 设计针对UML和XYZ/ADL的模型检查技术,对软件体系结构进行验证和精化。
3. 结合实际应用场景,对软件系统的体系结构进行设计和优化,提高软件系统的可维护性、可扩展性和可重用性。
4. 实现针对UML和XYZ/ADL的软件体系结构建模工具,并进行测试和评估。
三、研究方法和步骤本研究将主要采用以下方法和步骤:1. 研究UML和XYZ/ADL的基本概念和使用方法,分析它们的优缺点和适用场景。
软件体系结构总结
1、软件危机:软件开发维护过程中的遇到一系列严重问题表现:软件成本日益增长,开发进度难以控制,软件质量差,软件维护困难,原因;用户需求不明确,缺乏正确的理论指导,软件规模越来越大,软件复杂度越来越高,软件工程是用工程科学和数学的原则和方法研制,维护计算机软件的有关技术及管理方法软件工程三要素,方法,工具,过程解决方法:管理,采用工程化的开发方法,加大软件重用,采用先进的开放工具2、软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
特点:从高层抽象了软件系统结构、行为、属性。
软件体系结构的意义:体系结构是风险担保者进行交流的手段是早期设计决策的体现是可传递和可重用的模型3、构件是语义完整,语法正确和有可重用价值的单位软件是软件重用过程中可以明确辨识的系统,构件模型是对构件本质特征的抽象描述分类:参考模型,描述模型,实现模型构件分类方法:关键字分类法,刻面分类法,超文本分类法4、软件体系结构模型:结构模型,动态模型,框架模型,过程模型,功能模型5、4+1 视图模型从五个不同的视角包括逻辑视图,开发视图,进程视图,物理视图和场景逻辑视图:主要支持系统功能需求:即系统提供给最终用户的服务开发视图:主要侧重于软件模块的组织和管理进程视图:系统的运行特征,主要关注与一些非功能性的需求物理视图:主要考虑如何把软件映射到硬件上,他通常考虑系统性能,规模,可靠性,解决系统拓扑结构,系统安装,通讯等问题场景:可以看作是那些重要系统活动的抽象,它使四个视图有机联系在一起,6、软件体系结构的核心模型:构件,连接件,配置,端口,和角色7、软件体系风格:是描述某一特定应用领域中系统组织方式的惯用模式最关键的四要素内容:一个词汇表,定义一套配置规则,定义一套语义解释原则定义对基于这种风格的系统所进行的分析经典体系结构风格:数据流风格,调用/返回风格,独立构件风格,虚拟机风格,仓库风格几种软件风格8,为什么使用异构风格不同的结构有不同的处理能力的强项和弱项关于软件包,框架,通信以及其他一些体系结构上的问题一些遗留下来的代码9,体系结构描述方法:图形表达工具有矩形和有向线段组合而成的图形表达工具模块连接语言:采用一种或几种传统程序设计语言的模块连接起来的内连接语言MIL基于软构件的系统描述语言软件体系结构描述语言:ADL 在底层语义模块的支持下,为软件系统的概念体系结构提供了具体的语法和概念框架,基于底层语义的工具为体系结构表示分析演化分化设计构成提供支持三个基本元素构件连接件体系结构配置优点缺点UML :统一建模语言是一个通用的可视化建模语言,用于对软件精星描述,可视化处理,构造,和建立软件体系的文档,A、状态图B、用例图C、时序图D、配置图E、协作图F、类图。
软件体系结构描述方法
前端语言:通过选择与模型匹配的语言描述,它可以转化为概念 模型的标准语言,使用时要考虑转换机制产生的中间制品。
精选课件
13
软件体系结构描述框架标准
IEEE P1471 Rational
系统的扩展非常容易。
它的程序也能在客户端电脑上进行部分处理,从而大大
的减轻了服务器的负担;并增加了交互性,能进行局部实时刷
新。
精选课件
18
网上商城网站系统设计
B/S架构特点
维护和升级方式简单。 成本降低,选择更多。 应用服务器运行数据负荷较重。
精选课件
19
网上商城网站系统设计
系统简介:
运用spring MVC框架,利用MyBatis进行定制化 SQL、存储过程 以及高级映射,使用Redis Key-Value存储系统进行数据缓存处理,利 用Security进行密码加密以及用户安全访问控制,运用maven进行依 赖管理。使用MQ进行站内通信。service处理模型有关操作, controller负责视图的填充,而jsp页面负责页面的展示。前端使用 bootstrap框架进行jsp页面的编写。使用github进行版本控制。
精选课件
11
ADL分类
根据描述属性分类:
结构ADL:针对处理器及其互联的硬件单元。 行为ADL:主要关注处理器指令集语义功能。 混合ADL:兼有上述两者属性,提供他们之间的交互描述。
精选课件
12
ADL分类
根据ADL和编程语言的关系分类:
标准语言:其优点是可扩展已有的工具以适应新框架的特性,并 且易于掌握;缺点是,不能很好地支持建模语言结构,损失了语言 描一建模语言UML
架构描述语言
架构描述语⾔ADL,即架构描述语⾔(Architecture Description Language)。
⽬前,两个重要的团体在使⽤架构描述语⾔术语。
它们是:软件⼯程团体企业建模和⼯程团体。
Architecture Description Language⽬录1简介2特征3架构与设计4架构解决⽅案简介在软件⼯程团体,架构描述语⾔(ADL)是⼀种计算机语⾔,⽤来描述软件或系统架构。
这意味着如果是技术性架构,该架构必须被清楚的传达给软件开发者。
功能架构下,该软件架构必须被清楚的传达给利益相关者和企业⼯程师。
⼀些软件⼯程团体开发了若⼲ADL,如ACME(CMU开发),AADL(SAE标准化),C2(UCI开发),Darwin(英国伦敦帝国学院开发)和Wright(CMU开发)。
企业建模和⼯程团体也开发了企业级的架构描述语⾔。
例⼦包括ArchiMate(现在是The Open Group发布的标准),DEMO 等。
这些语⾔并不需要参照软件构件等。
但他们⼤多数认为应⽤架构应该能清楚的传达给软件⼯程师。
如有标准标记(ADL)表现架构,下列⽅⾯将会更好:相互沟通体现早期设计决策系统抽象可转换过去的架构主要是通过画⽅块和线表述。
图中通常定义下列内容:构件的⾃然特性构件属性语义连接整个系统⾏为ADL起源于正式表现架构的语⾔学⽅法,因此也表明了其缺点。
复杂的ADL允许架构设计决策的早期分析和可⾏性测试。
[1]特征有许多种ADL,或由学术机构开发或由⼯业组织开发。
有些语⾔不试图成为⼀个ADL,但事实证明它们适合表现和分析架构。
ADL原则上的不同之处:需求语⾔,因为ADL植根于解决⽅案,⽽需要说明问题。
编程语⾔,因为ADL不能绑定架构抽象到具体解决⽅案建模语⾔,因为ADL往往侧重于表现构件⽽不是整体⾏为。
然⽽,有重点表现构件的特定域建模语⾔(DSML)。
下⾯列表是ADL语⾔最基本的要求。
必须:适合架构表达给所有有关⽅⾯⽀持架构创建,完善和验证任务提供⼀个进⼀步实现的基础,因此它必须能够给ADL规范添加信息,使最终的系统规范派⽣⾃ADL提供表现通⽤类型架构的能⼒⽀持分析能⼒或提供快速⽣成原型的实现ADL的共同点:图形语法,带有通常是⽂字形式并正式定义的语法和语义分布式系统建模的特性不⽀持捕捉设计信息,除⾮使⽤通⽤注释机制能够表现细节层次,包括通过实例模板创建⼦结构ADL的不同能⼒:在架构层次,处理实时构造,如期限和任务优先次序,⽀持不同风格架构的规范。
第4章软件体系结构描述04293-精品文档
本章结构
4.1 软件体系结构描述方法 4.2 软件体系结构描述框架标准 4.3 体系结构描述语言 4.4 典型的软件体系结构描述语言(C2) 4.5 软件体系结构与UML 4.6 可扩展标记语言 4.7 基于XML的软件体系结构描述语言 4.8 软件体系结构的设计
引言
◎ IEEE P1471详细介绍了一套体系结构描述的概念框 架,并给出建立框架的思路。但如何描述以及具体的描 述技术等方面缺乏更进一步的指导。
第四章 软件体系结构描述 4.2 软件体系结构描述框架标准
◇ Rational
◎ Rational起草了可重用的软件资产规格说明,专门讨论了体 系结构描述的规格说明,提出了一套易于重用的体系结构描述规 范。该建议草案已经提交OMG。
当前对软件体系结构的描述在很大程度上 还停留在非形式化的基础上,依赖于软件 设计师个人的经验和技巧。 非形式化的描述不易被开发人员理解,不 利于分析和开发的进行。 形式化的、规范化的体系结构描述对于体 系结构的设计和理解都是非常重要的。 由非形式化到形式化的过程。
第四章 软件体系结构描述
◇ 描述方法的种类
这些ADL强调了体系结构不同的侧面,对体系结构的研究和应 用起到了重要的作用,但也有负面的影响。每一种ADL都以独立的 形式存在,描述语法不同且互不兼容,同时又有许多共同的特征, 这使设计人员很难选择一种合适的ADL,若设计特定领域的软件体 系结构又需要从头开始描述。
第一章 软件体系结构概论 1.3 体系结构的兴起和发展
4.3 软件体系结构描述语言
3. 体系结构配置或拓扑: 描述体系结构的构件与连接件的连接图。
同时检查语法、说明语义。 多视图、多场景的体系结构说明方法。
软件体系结构描述语言(ADL)剖析
软件体系结构描述语言(ADL要点浏览本章将对学术界常见的体系结构描述语言进行介绍. 由于研究流派不同, 各种ADL 的设计和能力也不尽相同. 本章选取五种比较典型的ADL 作为代表, 希望能让读者了解主流ADL 的基本能力, 主要功能和应用范围. 为了让读者对各种ADL 有一个更为清晰的认识, 本章最后还对这五种典型的ADL 进行了比较全面的比较. 通过本章的学习, 您将能:了解主流ADL 的语法和语义掌握主流ADL 的特点区分主流ADL 的不同总体介绍任何一个软件系统都有结构, 在系统开发过程中的分析设计阶段, 通过考察系统的结构, 可以对系统的开发和实现提供良好的基础. 系统的结构往往体现为系统的各个部分之间的配置. 对于描述软件系统配置的表示法的研究由来已久. 早在1975年,DeRemer 和Kron 就设计了模块互连语言(Module InterconnectionLanguage,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 ConnectorUniCon 简介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风格的体系结构:可视化堆栈(StackC2概念的图例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 应该提供至少这三种元素的显式描述. 是否同时描述了这三种元素, 也可以作为判断一个描述语言是否是一个体系结构描述语言的依据. 为了能够对体系结构的一些信息进行推理, 也要求ADL 能够对构成体系结构的构件的接口进行建模, 如果没有接口的描述, 体系结构描述就和线框图没有什么本质区别. 关于构件, 连接子, 配置的其它一些相关方面的描述, 如果有则更好, 但是如果没有提供, 也不表示这个语言不是ADL , 也即这些方面不是判断一个语言是否ADL 的关键标准. 以下分别就该分类框架中对三要素和工具支持方面的要求进行详细介绍, 最后我们给出使用该分类框架对ADL 进行分类和比较的结果.对构件进行建模。
软件体系结构课件第4章软件体系结构描述
能上的多种推理分析。
第4章 软件体系结构描述 ADL与其他语言的比较
第4章 软件体系结构描述 ADL与其他语言的比较
➢ 每个接口包含一种可发送的消息和一组可接收的消息。构件之间的消息要么是请求 其它构件执行某个操作的请求消息,要么是通知其他构件自身执行了某个操作或状 态发生改变的通知消息。
➢ 构件之间的消息交换不能直接进行,而只能通过连接件来完成。每个构件接口最多 只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连。
第4章 软件体系结构描述
C2 – 概述
➢ C2和其提供的设计环境(Argo)支持采用基于时间的风格来描述用户界面系统,并 支持使用可替换、可重用的构件开发GUI的体系结构。
➢ 在C2中,连接件负责构件之间消息的传递,而构件维持状态、执行操作并通过两个 名字分别为“top”和“bottom”的端口和其它的构件交换信息。
bottom_domain_interface ::= bottom_domain is out interface_notifications in interface_requests
interface_requests ::= {request;} | null;
interface_notifications ::= {notification;} | null;
➢ MIL方式对模块化的程序设计和分段编译等程序设计与开发技术确实发挥了 很大的作用。但是由于这些语言处理和描述的软件设计开发层次过于依赖程 序设计语言,因此限制了它们处理和描述比程序设计语言元素更为抽象的高 层次软件体系结构元素的能力。
软件体系结构综述
软件体系结构综述计算机应用专业赵诚 070321169随着计算机应用的日益普及,人们对软件的需求量急剧增加。
起初,人们把软件设计的重点放在数据结构和算法的选择上。
随着软件系统规模越来越大,越来越复杂,新的问题也随之而来, 大量实践统计表明:系统软件开发中,70%的错误是由软件设计阶段引入的; 而且错误在系统中存在的时间越长则越难发现, 解决这些错误的代价也越高,于是整个系统的结构和规格说明逐渐占有了重要的位置,软件体系结构这一概念也应运而生。
它成为了沟通软件需求和软件设计的一座桥梁。
1、软件体系结构的定义对于软件体系结构的定义,至今还没有一个统一的、得到广泛认可的解释,很多软件体系结构学者都提出了各自对体系结构的概念与定义。
软件体系结构的最核心概念有构件、连接件、配置、端口和角色。
构件是具有某种功能可重用的软件基本单元,表示软件系统中主要的计算元素和数据存储单元。
连接件表示了构件之间的交互,是构件与构件之间建立和维持行为关联和消息传递的途径。
包括实现构件之间的交互机制和管理这些交互的原则(协议)。
配置表示了构件和连接件之间的拓扑结构和逻辑约束,它是构件和连接件的集合。
总之,软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅定义了系统的组织结构和拓扑结构,而且表示了系统的需求和构成系统的元素之间的对应关系提供了设计决策的基本原理和约束条件。
2、软件体系结构的风格软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
它反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统,按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构件系统的规则。
2.1数据流系统数据流是一种将数据从输入端显式的输送到输出端的体系结构风格。
数据流风格的构件是数据的处理单元,连接件是连接处理单元的通道。
软件体系结构描述语言ADL综述_bycs
软件体系结构描述语⾔ADL综述_bycs软件体系结构描述语⾔ADL综述Advancement of Architecture Description Language (ADL) 引⾔60年代的软件危机使得⼈们重新开始重视软件⼯程的研究。
最初⼈们选择了“算法+数据结构=程序”的设计模式。
但随着软件系统的规模和复杂性越来越⼤,传统的设计模式已经不能适应要求。
同时为了保证软件质量,提⾼软件的可靠性、可重⽤⾏和可维护性,软件设计的核⼼逐渐转向对系统的总体结构即软件体系结构(Software Architecture)的设计和规范。
这类⽅法主要着眼于软件系统的全局组织形式,在更⾼层次上把握系统各组件之间的内在联系。
并从全局的,整体的⾓度去理解和分析整个系统的⾏为和特性,有助于解决当前开发复杂的⼤型软件所存在的困难。
研究软件体系结构的⾸要问题是如何描述软件体系结构。
⽬前已有很多表现形式和⽅法表法、模块连接语⾔、软构件描述法和体系结构描述语⾔ADL等。
⽽其中ADL作为形式化的表⽰软件体系结构的⼯具呈现出强⼤的⽣命⼒。
它提供了规范化的体系结构描述,同时是对软件体系结构进⾏求精、验证、演化和分析的前提与基础。
⽬前已经成为软件体系结构⽅向的研究热点。
实践⼯作者将这些ADL应⽤于实践中,获得了成功。
同时,我们应注意到不同的ADL所⽀持的抽象能⼒及其提供的分析能⼒变化很⼤,学术领域⽬前对ADL的定义尚未取得⼀致。
⼀、软件体系结构的概述由于对软件体系结构的研究和应⽤刚刚兴起,许多专家学者从不同的⾓度和侧⾯对软件体系结构进⾏刻画,因此,⽬前软件体系结构还没有⼀个标准定义。
这⾥给出⼀个⽬前学术领域⼴泛接受的定义。
(D.Garlan&M Shaw,1993)软件体系结构是软件设计过程中的⼀个层次,在计算过程中的算法设计和数据结构之上,处理总体系统结构设计和描述⽅⾯的⼀些问题。
包括总体组织与全局控制结构、通讯协议、同步、数据存取、设计元素的功能分配,物理分布,设计元素的复台,设计⽅案的选择、评估和实现等。
软件体系结构(整理)
一:名词解释1.体系结构描述语言体系结构描述语言(ADL)是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。
基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。
其三个基本元素是:构件、连接件、体系结构配置。
2.软件体系结构Dewayne Perry和A1exander Wo1f软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。
Mary Shaw和David Garlan软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等。
Kruchten软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织3.体系结构演化4.软件风格软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
体系结构风格定义了一个系统家族,即定义一个词汇表和一组约束。
词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
5.软件重用体系结构重用属于设计重用,比代码重用更抽象。
由于软件体系结构是系统的高层抽象,反映了系统的主要组成元素及其交互关系,因而较算法更稳定,更适合于重用。
软件重用是指软件在环境和功能发生变化后,可通过局部修改和重组,保持整体稳定性,以适应新要求。
二:简答题:1. 什么是体系结构描述语言?它与程序语言以及UML有哪些区别与联系?ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。
基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。
软件工程6 软件体系结构
软件工程6 软件体系结构在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。
从智能手机上的各种应用程序,到企业内部复杂的业务系统,软件的质量和性能直接影响着用户的体验和业务的效率。
而软件体系结构作为软件工程中的一个重要领域,对于软件的成功开发和维护起着至关重要的作用。
那么,什么是软件体系结构呢?简单来说,软件体系结构就是软件系统的高层结构和组织方式。
它描述了软件系统中的组件、组件之间的关系以及它们如何协同工作来实现系统的功能。
就好比盖房子,软件体系结构就是房子的设计蓝图,决定了房子的布局、结构和各个部分的连接方式。
一个好的软件体系结构具有许多重要的特性。
首先,它应该具有可扩展性。
随着业务的发展和用户需求的变化,软件系统需要能够方便地进行功能的增加和修改。
如果体系结构设计得不合理,可能会导致在添加新功能时牵一发而动全身,需要对整个系统进行大规模的重构,这不仅费时费力,还可能引入新的错误。
其次,软件体系结构应该具有高可靠性和容错性。
软件系统在运行过程中难免会遇到各种故障和错误,一个良好的体系结构能够确保系统在出现部分故障时仍能继续运行,或者能够快速地从错误中恢复,从而保证系统的稳定性和可用性。
再者,性能也是软件体系结构需要考虑的重要因素。
这包括系统的响应时间、吞吐量、资源利用率等方面。
通过合理的体系结构设计,可以优化系统的性能,提高系统的运行效率,满足用户对于系统速度和效率的要求。
软件体系结构的设计过程并不是一蹴而就的,它需要综合考虑多种因素。
首先,要对系统的需求进行深入的分析和理解。
这包括了解系统的功能需求、性能需求、安全需求等。
只有清楚地知道系统需要做什么,才能设计出合适的体系结构。
在需求分析的基础上,选择合适的体系结构风格也是非常关键的一步。
常见的体系结构风格有分层架构、客户端服务器架构、微服务架构等。
每种风格都有其特点和适用场景,例如分层架构将系统分为不同的层次,每层完成特定的功能,具有结构清晰、易于维护的优点;客户端服务器架构则适用于分布式环境下的系统,能够有效地实现资源共享和负载均衡;微服务架构则将系统拆分成多个独立的服务,每个服务可以独立开发、部署和扩展,提高了系统的灵活性和可扩展性。
软件体系结构
软件体系结构软件体系结构课件Software ArchitectureBy 王备战wangbz@ ***** ***-*****(O)软件体系结构课件从本质上讲,软件与硬件的设计和实现是相通的,是可以相互转换的。
软件体系结构课件Chapter One 概述体系结构是指整个系统构成的基本和主体形态。
C 体系结构成为建立和考察系统的总体指导或基本出发点 C 体系结构对一个应用系统的生命周期有着非常重要的影响C 软件的复杂性打破了以往硬件与软件的平衡,SA被提出了软件的复杂性打破了以往硬件与软件的平衡,SA被提出了软件体系结构是软件在设计构成上的基本、可供设计选择的形态和总体结构。
C C C C 软件设计中可供选择的结构形态每个结构概念都传达了一些信息有关领域愈是成熟和发展,人们对结构的认识也就愈加深刻SA概念的提出和应用,说明了软件设计技术在高层次上的发展并SA概念的提出和应用,说明了软件设计技术在高层次上的发展并走向成熟软件体系结构课件Chapter One 概述Contents: Contents:C §1.1 软件体系结构 C §1.2 当前的软件设计 C §1.3 软件设计的层次 C §1.4 体系结构与软件的工程设计 C §1.5 软件体系结构的知识体系软件体系结构课件Chapter One 概述§1.1 软件体系结构软件体系结构课件Chapter One 概述§1.1 软件体系结构SA发展SA发展C 1980’s 使用非正式的框图依靠专家的特定经验不规范、多样地使用体系结构模式和风格C 1990’s 认识到了体系结构的价值开发过程中要求体系结构文档,并开始体系结构评审产品化、商业化的体系结构标准和组件集成框架开始出现规范化体系结构设计中的词汇、符号和工具软件体系结构的书籍和课程C 20XX年’s ?软件体系结构课件Chapter One 概述§1.1 软件体系结构软件体系结构C 软件体系结构定义了软件的局部和总体计算部件的构成,以及这些部件之间的相互作用关系。
4 软件体系结构概念解析
SA={ elements, form, rational}
[4] Vestal:软件体系结构(SA)是一个三元组: SA={components, idioms/styles, common patterns of interaction} 、定义[3]和定义[4] 出于可用性的 考虑,通过强调体系结构风格和规则 等,精化了定义[1]和定义[2]。
、定义 [1] 和定义 [2] 都强调了体系结构是 由构件、连接件及其约束(或连接语义)组成 的。即从构造的角度,审视软件体系结构。
2018年10月12日4时31分
Mail:wyh_925@
16
根据上述各种体系结构的定义,可以发现:
[3] Perry & Wolf:软件体系结构(SA)是一个三元组:
机器语言 汇编语言 过程式高级语言 OO语言 SA描述语言
新一代计算语言的出现,均蕴涵着软件体系结构的研究!
体系结构技术的研究,使软件复用从代 码复用发展到设计复用和过程复用。
2018年10月12日4时31分
Mail:wyh_925@
7
纵观SA技术发展过程,大体上经历了四个阶段:
①无体系结构设计阶段:研究主题集中于计算模型与高 级语言的开发。其中遵循了冯诺依曼体系结构
19
P1-2、若干研究内容
目前,软件体系结构研究主要集中在如下几个领域展开:
1)软件体系结构描述语言ADL
2)体系结构构造 3)软件体系结构分析、设计、验证 4)软件体系结构发现、演化与复用 5)基于体系结构的软件开发方法研究 6)特定领域的体系结构DSSA 7)软件体系结构支持工具
2018年10月12日4时31分 Mail:wyh_925@ 20
限制(constrain):用于对构件和连接件的语义说明
第4章 软件体系结构描述
《软件体系结构》电子教案
14/121
4.3 软件体系结构描述内容框架
• 内容框架(Medvidovic的观点):
构件:接口、类型、语义、约束、演化、非功能属
性 连接:接口、类型、语义、约束、演化、非功能属 性 体系结构配臵:可理解性、可构成性、可改进性和 可追踪性、异质性、可扩展性、演化、动态机制、 约束、非功能属性 工具支持:主动规格说明、多视图、分析、改进、 实现生成、动态机制
• IEEE 于2000年9月21日通过了IEEE1471(SA描 述框架标准)
《软件体系结构》电子教案
11/121
4.2 软件体系结构描述框架标准
IEEE IEEE1471适应软件密集的系统; 在应用SA的IEEE1471标准时应遵循如下要求: • SA的存档要求 • 能识别人员及其点之间的一致性 • SA原理
该SA描述方案涉及面比较窄,注重层次比较低,因 而更具体。描述限于UML和RUP,具有一定的局限 性,但该建议标准结合了业界广泛采用的建模语言 和开发过程,易于推广。
《软件体系结构》电子教案
13/121
第4章 内容摘要
4.1 4.2 4.3 4.4 4.5 4.6 软件体系结构描述方法 体系结构描述框架标准 体系结构描述内容框架 体系结构描述语言 典型的软件体系结构描述语言 软件体系结构与UML
《软件体系结构》电子教案
8/121
4.1 软件体系结构描述方法
软件体系结构描述语言ADL (Architecture Description
Language)
• 参照传统程序设计语言的设计和开发经验,重新设计、 开发和使用针对软件体系结构特点的专门的软件体系结 构描述语言。 • 吸收高级语言语义精确+SA需要整体性和抽象性的特性。 定义和确定了适合SA表达和描述的有关抽象元素,因此, ADL是当前软件开发和设计方法学中一种发展很快的SA 描述方法,目前已经有十几种。
2019年第4章软件体系结构描述04293.ppt
第四章 软件体系结构描述
4.2 软件体系结构描述框架标准
◇ Rational
◎ Rational 起草了可重用的软件资产规格说明,专门讨论了体 系结构描述的规格说明,提出了一套易于重用的体系结构描述规 范。该建议草案已经提交OMG。
◎ 当两个连接件进行直接连接时,必须由其中一个的底部 到另一个的顶部。
◇ C2背景知识
C2 是一种用于用户界面密集的系统的软件体系结构风
格。
在C2风格的体系结构中,连接件在构件之间转发消息, 构件负责维护状态,进行操作,通过两个接口(顶端接口 和底端接口)和其他构件交换消息。 构件之间不能发送消息,必须通过连接件。构件之间 的通信只能通过消息传递来实现,不允许使用共享内存方 式通信。
1:N 配置 连接件
构件 1:N 1:N 端口 角色
体系结构的核心模型
第四章 软件体系结构描述 ◇ ADL的构成要素
4.3 软件体系结构描述语言
2. 连接件:用来建立构件间的交互以及支配这些交互规则 的体系结构构造模块。 连接件可以不与实现系统中的编译单元对应。 异构连接。
连接件包含的属性:角色。
第四章 软件体系结构描述
4.1 软件体系结构描述方法
◇ 基于软构件的系统描述语言
◎ 基于软构件的系统描述语言将软件系统描述成一种是由许多 以特定形式相互作用的特殊软件实体构造组成的组织或系统。
◎ 例如,一种多变配置语言就可以用来在一个较高的抽象层次 上对系统的体系结构建模,Darwin最初用作设计和构造复杂分布 式系统的配置说明语言,因具有动态特性,也可用来描述动态体 系结构。 ◎ 这种表达和描述方式虽然也是较好的一种以构件为单位的软 件系统描述方法,但是他们所面向和针对的系统元素仍然是一些 层次较低的以程序设计为基础的通信协作软件实体单元,而且这 些语言所描述和表达的系统一般而言都是面向特定应用的特殊系 统,这些特性使得基于软构件的系统描述仍然不是十分适合软件 体系结构的描述和表达。
第4章 软件体系结构描述
缓冲
最优/最劣时间 计算
布图算法
复杂度计算
带时间特性的 流程图
函数调用关系 图
程序复杂度
测试结果打印
第4章 软件体系结构描述 ◇ 模块内连接语言
4.1 软件体系结构描述方法
◎ 采用将一种或几种传统程序设计语言的模块连接起来的模块内 连接语言. 连接语言.由于程序设计语言和模块内连接语言具有严格的语义 基础,因此它们能支持对较大的软件单元进行描述,诸如定义/ 基础,因此它们能支持对较大的软件单元进行描述,诸如定义/使 用和扇入/ 扇出等操作. 例如, Ada语言采用 use实现包的重用 语言采用use 实现包的重用, 用和扇入 / 扇出等操作 . 例如 , Ada 语言采用 use 实现包的重用 , Pascal语言采用过程 函数)模块的交互等. 语言采用过程( Pascal语言采用过程(函数)模块的交互等. MIL方式对模块化的程序设计和分段编译等程序设计与开发技 ◎ MIL 方式对模块化的程序设计和分段编译等程序设计与开发技 术确实发挥了很大的作用. 术确实发挥了很大的作用 . 但是由于这些语言处理和描述的软件 设计开发层次过于依赖程序设计语言, 设计开发层次过于依赖程序设计语言 , 因此限制了它们处理和描 述比程序设计语言元素更为抽象的高层次软件体系结构元素的能 力.
第4章 软件体系结构描述 C2概述 概述(2) ◇ C2概述(2)
4.4 典型软件体系结构描述语言
构件之间的消息交换不能直接进行, ◎ 构件之间的消息交换不能直接进行 , 而只能通过连接 件来完成.每个构件接口最多只能和一个连接件相连, 件来完成.每个构件接口最多只能和一个连接件相连,而 连接件可以和任意数目的构件或连接件相连. 连接件可以和任意数目的构件或连接件相连. ◎ 请求消息只能向上层传送而通知消息只能向下层传送 . 请求消息只能向上层传送而通知消息只能向下层传送. 通知消息的传递只对应于构件内部的操作, ◎ 通知消息的传递只对应于构件内部的操作 , 而和接收 消息的构件的需求无关. 消息的构件的需求无关. 对构件和连接件的实现语言,实现构件的线程控制, ◎ C2 对构件和连接件的实现语言 , 实现构件的线程控制 , 构件的部署以及连接件使用的通讯协议等都不加限制. 构件的部署以及连接件使用的通讯协议等都不加限制.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件体系结构描述语言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 应该展示的属性如下:1)组件建模的能力,带属性断言、接口、实现;2)连接子建模的能力,带协议、属性断言与实现;3)抽象与封装;4)类型与类型检查;5)适应分析工具的能力(3)在文[2]中,将ADL划分为4个组成部分:组件,连接子,配置、支持工具。
其中,组件、连接子、配置构成了ADL的体系结构描述特性。
而支持工具则为软件体系结构设计者提供必要的帮助。
(4)在文[3]中,Luckham 与Vera在研究Rapide的基础上提出.ADL应该满足以下要求:1)组件抽象;2)通信抽象;3)通信完整性,要求在结果实现中,只有在一个体系结构中相联结的组件可以通信;4)动态体系结构建模的能力 5)分层复合;6)相关性.或者是行为与体系结构间关联(映射)的能力;7)组件建模的能力,带属性断言、接口、实现;8)连接子建模的能力,带协议、属性断言与实现;9)抽象与封装; 10)类型与类型检查;11)适应分析工具的能力。
2.2ADL的定义从上述一小节我们可以看出,学术领域对ADL的理解还存在着分歧。
我们认为:ADL是这样一种形式化语言,它在底层语义模型的支持下,为软件系统的概念体系结构建模提供了.具体语法与概念框架。
基于底层语义的工具为体系结构的表示、分析、进化、细化、设计过程等提供支持。
其三个基本构成元素是:1)组件——计算或数据存储单元;2)连接子——用于组件问交互建模的体系结构构造块及其支配这些交互的规则{3)体系结构配置——描述体系结构的组件与连接于的连接图。
2.3 ADL应具备的特点2.3.1为了精确描述软件体系结构,ADL首先应有一个形式化理论基础,如Pet“网、状态图、z、 CSP”等。
有了形式化理论基础,才能对所描述的系统进行分析和验证。
如Wright用CSP进行描述、Rapide采用偏序事件集合等。
2.3.2作为一种描述语言,ADL应具有严谨的语法和语义。
描述能力应足够强,至少应能描述的基本构件如组件、连接件及有关配置规范。
同时,为了更好的应用,一种ADL,应有相应的支持工具,支持工具的能力直接反映了该ADL的可使用程度和范围。
2.3.3 描述软件体系结构的一个很重要的目的是为了便于软件开发者的理解和交流,因此,ADL描述应简单易懂,最好有图表辅助理解。
对于同一个体系结构,不同的软件开发者需要从不同的抽象层次上理解,这就要求ADL能描述不同抽象程度的软件体系结构。
2.3.4分析作为软件体系结构求精、验证的基础,是一般ADL不可缺少的一种功能分析有静态分析和动态分析,如Wright基于CSP能对单个组件或连接件进行静态死锁分析、Rapide 基于偏序事件集合(partially ordered event sets)可进行动态分析。
2.3.5其他有关设计ADL应注意的问题,还有可扩展性、演化和重用等。
三、常见ADL的介绍与比较3.1常见ADL的介绍ADL是当前软件开发和设计方法学中一种发展很快的软件体系结构描述方法,目前,已经有几十种常见的AD L。
其中已经开发和使用的常见ADL有Wright、Unieon、C2、Aesop、Rapide、Darwin、SADL等。
这里我们对Unicon、C2 SADL、ACME、XADL四种给出介绍和比较。
3.1.1 UniconUniCon简介UniCon是由CMU和SEI设计的一个体系结构描述语言.该语言关注软件体系结构的结构化特性,将系统(本身也是一个复合构件)描述为构件和连接子的配置,其中构件表示计算或者数据,而连接子表示构件之间的交互.每个构件的接口都对外提供一些演员(player).构件通过这些演员与外界发生交互.与构件类似,一个连接子的协议对外提供一些角色(role),连接子通过这些角色来调解构件之间的交互.在UniCon建立连接通过演员与角色的关联,最终就可以建立整个系统各个部分之间的配置.最新版本的UniCon不仅支持类似于上例的管道-过滤器系统,还支持使用过程调用和共享数据的模块交互系统,基于RPC调用的分布式系统,根据各种实时要求共享处理器的进程以及基于SQL命令的数据库访问.UniCon的提出是为了达到如下目的:1.解决系统描述和组装的实际问题,为实际工具提供一个原型;2.为各种连接机制提供一个一致的访问方式;3.帮助软件设计师区分不同的构件类型和连接子类型并验证构件和连接子配置的正确性;4.支持图形化和文本化符号以及二者之间的互换;5.兼容现存的用常见的编程语言编写的构件(这些构件并不需要特定于UniCon);6.尽可能的将运行时开销降到最低;以下将具体介绍UniCon中构件和连接子的定义.UniCon中的构件UniCon中的构件定义包括规约部分和实现部分.构件的规约称为构件的接口(interface).接口定义了构件所能进行的计算以及使用构件必须遵循的约束.构件的接口包含三类信息:1.构件类型:构件类型表示构件提供的功能的类型,它限制了该构件所能定义的演员的数量,类型和规约.2.特性:由属性和值组成的二元组,用于指定与构件整体相关的附加信息,例如断言,约束等.3.演员:从构件外部可见的语义单元,构件通过演员与其它构件发生交互. 构件的实现有两种形式:1.原子(primitive)实现:原子实现是一个指向存在于UniCon语言外部的文档链接,该文档包含了相应的构件实现.它可能是某种编程语言的源代码(目前UniCon工具集仅仅支持C语言的源代码),也可以是目标码,或者是包含目标码的Unix档案库文件,或者是二进制可执行文件,shell脚本,数据文件,C 语言的include文件等2.复合(composite)实现:某个UniCon构件的复合实现是对其它已定义的构件和连接子的配置的描述,该实现包含三类信息:1.片段(piece):用于构造某个配置的构件和连接子实例2.配置信息:描述构件和连接子的关联3.抽象信息:描述该构件的接口如何由其复合实现中的构件接口实现.构件实现的语法如下:UniCon中的连接子连接子的定义也包含规约和实现两个部分,其中规约部分通过协议(protocol)进行描述.连接子的协议定义了构件之间允许产生的交互,并确保这些交互能够顺利进行.连接子的协议包含三类信息:1.连接子类型:连接子类型表示连接子所能调解的构件之间的交互类型,它限制了连接子的角色的数量,类型和规约.2.特性:由属性和值组成的二元组,用于指定和连接子整体相关的附加信息,例如断言,约束等(例如和时间和顺序相关的规则)3.角色:从连接子外部可见的语义单元,通过角色连接子对构件的交互进行调解.角色通过与演员发生关联,从而形成系统的连接,它定义了参与连接的演员的需求与责任.连接子的实现是UniCon内置的,即UniCon只支持连接子的原子实现,它本身不提供用户自定义连接子实现的机制.连接子的定义的语法如下(从中也可以看出UniCon目前支持的连接子实现的类型):UniCon是最早的体系结构描述语言之一.从上述介绍可以看出,UniCon强调将系统划分为构件后,用适当的连接子将其组装起来构成一个完整的系统.构件和连接子之间是松耦合关系.UniCon备受诟病的一点是它只支持预定义的连接子,并且不支持复合连接子.为了解决这个问题,相关研究人员在UniCon的基础上对其进行了增强.增强后的UniCon称为UniCon-2.UniCon-2提供了一个比较灵活的类型系统,并且引入了责任(duty)这个概念用于描述演员,角色等与属性的关系.某个系统配置的责任还可以用于描述体系结构风格.由于UniCon-2允许用户引入新类型,为了便于对与新类型相关的约束进行检查,UniCon-2采用了一种开放的编译器结构以便于增加相应的检测方法.3.1.2 C2 SADLC2 SADL是UCI设计的一种基于消息传递的体系结构描述语言,主要用于描述符合C2风格的软件系统的体系结构.C2风格C2风格是一种基于构件和消息的体系结构风格,主要是应用于带有图形用户接口(GUI)的应用系统,但也能用于其它类型的应用.这种风格要求构件之间通过消息交换进行通信.因此每个C2构件和C2连接子都有一个top接口和一个bottom接口,其中top接口定义了该构件所能接收的应答消息和向上发出的请求消息,而bottom接口定义了该构件能够进行应答的请求消息及其向下发出的应答.所有消息都以连接子为桥梁在构件之间进行传递.这种风格的体系结构将系统中的构件用连接子划分为不同层次,.C2风格的体系结构:可视化堆栈(Stack)C2风格的核心在于构件之间的"有限可见性",即处于系统中某个层次的构件只能"看到"上层的构件,而不清楚下层到底是什么构件在与之进行通信.具体表现在如下所述的构件之间的通信规则(即系统的组装规则):1.构件的top接口只可能与某一个连接子的bottom接口相连2.构件的bottom接口只可能与某一个连接子的top接口相连3.与连接子相连的构件或者连接子没有数量限制4.两个连接子相连时,只能是其中一个的bottom接口与另一个的top接口相连C2 SADLC2 SADL目前还只是一个原型语言,其相应的支撑工具还在开发中.该语言包含三个部分:接口定义符号(IDN, interface definition notation):是C2中的构件接口的规约.如下所示是一个堆栈(Stack)构件的C2 IDN.体系结构描述符号(ADN,architecture description notation):是C2体系结构的声明性规约.体系结构构造符号(ACN,architecture construction notation):主要用于表达体系结构的动态变化,例如如果要在运行时删除堆栈的一种可视化表示方式,可以用ACN进行如下描述:C2 SADL中的连接子本质上是一种消息总线,复合这种结构的应用系统往往具有比较良好的灵活性和可扩展性.不过由于C2 SADL还没有针对大型实际系统进行建模和使用,因此对使用该结构所可能导致的性能问题还不是很明确.3.1.3基于XML消息的体系结构描述语言XADL体系结构描述语言XADL的基础是一种基于消息的体系结构模型, 即构件通过端口接收请求消息和发送响应消息构件之间通过端口的连接进行消息交换, 从而组合为复合构件或应用系统因此, 中包含了对构件接口的描述和对系统组合的描述,第1.1节和1.2节分别介绍了这两部分内容, 第1.3节给出了完整的例子.3.1.3.1构件借口描述在XADL中构件通过端口接收和发送消息,端口,分为输入端口和输出端口,分别用来接收请求消息和发送响应消息。