软件体系结构描述.ppt
109页1第4章 软件体系结构描述 2本 章 内 容4.1 软件体系结构描述方法4.2 软件体系结构描述语言 4.3 典型的软件体系结构描述语言 4.4 可扩展标记语言 4.5 基于XML的软件体系结构描述语言4.6 使用“4+1”模型描述软件体系结构4.7 使用UML描述软件体系结构 4.8 本章小结 3抽象——认识事物本质的惯用法•抽象是人类对实际事物在针对某一特定观点下的简化–突出我们希望认识的各个元素–允许我们对关注的结构和行为进行辨识和分析–在构建新的实例时可以作为蓝图补充补充 4抽象实例:运动系统补充补充 5抽象实例:动力系统•忽略了施力者和受力者的实体•忽略了次要的环境作用,如地面、空气•忽略了传力媒介•突出了力和运动状态之间的关系补充补充 6形式化的抽象实际事物实际事物形式化方法形式化方法形式化描述形式化描述•精精确确描描述述•分分析析与与评评估估•计计算算和和预预测测补充补充 7软件体系结构的描述•软件体系结构和软件体系结构描述不同的两个概念–软件体系结构是附属于系统之中。
只要存在系统,体系结构就存在•如:每个石头都会有重量–软件体系结构描述是将体系结构可视化的手段和产物•如:表示一个石头的重量补充补充 8如何理解体系结构描述软件体系结构软件体系结构软件体系结构软件体系结构描述描述补充补充 9体系结构描述方式•使用不同的策略和方法可对同一软件体系结构作不同的理解和描述–如:描述一块石头的重量•比较轻•比另一块重一些•大约2公斤•四斤六两•2.32Kg•5.114751207磅•……•精确程度不同精确程度不同•单位不同单位不同•测量基准不同测量基准不同补充补充 10体系结构描述方式•体系结构描述方式标准–语义丰富性–语义精确性–形式化程度•主要描述方式– 图形表达工具–UML–模块接口语言MIL–ADLRichnessPrecisenessFormalizationO补充补充 11| 描述方法的种类描述方法的种类 第第4 4章章 软件体系结构描述软件体系结构描述4.1 4.1 软件体系结构描述方法软件体系结构描述方法l 图形表达工具图形表达工具l 模块内连接语言模块内连接语言 l 基于软构件的系统描述语言基于软构件的系统描述语言l 软件体系结构描述语言软件体系结构描述语言 12•图形表达工具–用由矩形框和有向线段组合而成的图形表达工具。
其中,矩形框代表抽象构件,有向线段代表辅助各构件进行通讯、控制或关联的连接件 •特点–语义丰富–语义极不精确–没有形式化基础•用途–商业展示–设计草图第第4 4章章 软件体系结构描述软件体系结构描述4.1 4.1 软件体系结构描述方法软件体系结构描述方法图4-1 某软件辅助理解和测试工具部分体系结构描述 13•软件体系结构的图形表达工具表示具有如下优点:n直观形象n简单易用第第4 4章章 软件体系结构描述软件体系结构描述4.1 4.1 软件体系结构描述方法软件体系结构描述方法•图形表达工具 14•软件体系结构的图形表达工具表示具有如下缺点:–由于其术语和表达语义上存在着一些不规范和不精确,从而使得以矩形为基础的传统图形表达方法在不同系统和不同文档之间存在着许多不一致甚至矛盾。
第第4 4章章 软件体系结构描述软件体系结构描述4.1 4.1 软件体系结构描述方法软件体系结构描述方法•图形表达工具 15实例Enterprise Java Beans Architecture 16Microsoft .Net Framework Architecture 17| 模块内连接语言 第4章 软件体系结构描述4.1 软件体系结构描述方法l 采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言。
由于程序设计语言和模块内连接语言具有严格的语义基础,因此它们能支持对较大的软件单元进行描述例如,Pascal语言采用过程(函数)模块的交互等• 特点语义比较丰富,但局限在实现级别,层次较低语义精确,有编译器作保证没有或极少有形式化基础• 实例Microsoft COM IDLOMG CORBA IDL 18| 模块内连接语言 第4章 软件体系结构描述4.1 软件体系结构描述方法l 早在1975年,DeRemer和Kron就设计了模块连接语言用于描述结构化的基于模块的程序在MIL中,模块可能需要导入/导出各种资源所谓的“资源”就是命名元素,例如类型定义、常量、变量、函数等MIL的编译器通过进行模块间的类型检查来保证系统的完整性,常见的检查包括:某个模块要使用的资源是否已经被其它模块提供了,资源的类型是否匹配,一个模块的实现是否确实提供了其规约中声明的资源,一个模块是否有权访问它要使用的资源等。
19第4章 软件体系结构描述4.1 软件体系结构描述方法• MIL的优点:− 具有严格的语义基础,能够支持对较大的软 件 单 元 进 行 诸 如 : 定 义 /使 用( Definition/Use) 、 接 口 定 义( Interface Definition) 和 导 入 /导 出(Import/Export)等操作− 一般来讲,MIL与实际的实现语言无关,只关注构件的对外表现协议以及构件之间的通讯关系| 模块内连接语言 20•MIL的缺点–这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,限制了它们处理和描述比程序设计语言元素更为抽象的高层次软件构架元素的能力 第4章 软件体系结构描述4.1 软件体系结构描述方法| 模块内连接语言 21| 基于软构件的系统描述语言 第4章 软件体系结构描述4.1 软件体系结构描述方法l 基于软构件的系统描述语言将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。
l 例如,一种多变配置语言就可以用来在一个较高的抽象层次上对系统的体系结构建模,Darwin最初用作设计和构造复杂分布式系统的配置说明语言,因具有动态特性,也可用来描述动态体系结构 22第4章 软件体系结构描述4.1 软件体系结构描述方法l 这种表达和描述方式虽然也是较好的一种以构件为单位的软件系统描述方法,但是他们所面向和针对的系统元素仍然是一些层次较低的以程序设计为基础的通信协作软件实体单元,而且这些语言所描述和表达的系统一般而言都是面向特定应用的特殊系统,这些特性使得基于软构件的系统描述仍然不是十分适合软件体系结构的描述和表达 基于软构件的系统描述语言 23| 软件体系结构描述语言 第4章 软件体系结构描述4.1 软件体系结构描述方法l 软件体系结构的第四种描述和表达方法是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言。
l 由于ADL是在吸收了传统程序设计中的语义严格精确的特点基础上,针对软件体系结构的整体性和抽象性特点,定义和确定适合于软件体系结构表达与描述的有关抽象元素,因此,ADL是当前软件开发和设计方法学中一种发展很快的软件体系结构描述方法,目前,已经有几十种常见的ADL 24| 软件体系结构描述框架标准------IEEE P1471 第4章 软件体系结构描述l IEEE P1471于2000年9月21日通过IEEE-SA标准委员会评审l IEEE P1471适用于软件密集的系统,其目标在于:便于体系结构的表达与交流,并通过体系结构要素及其实践标准化,奠定质量与成本的基础l IEEE P1471详细介绍了一套体系结构描述的概念框架,并给出建立框架的思路但如何描述以及具体的描述技术等方面缺乏更进一步的指导 4.1 软件体系结构描述方法 25| 软件体系结构描述规格说明-------Rational 第4章 软件体系结构描述l Rational起草了可重用的软件资产规格说明,专门讨论了体系结构描述的规格说明,提出了一套易于重用的体系结构描述规范。
l 基于RUP(Rational United Process)、采用UML模型描述软件的体系结构,认为体系结构描述的关键是定义视点、视图以及建模元素之间的映射关系可以从四个视点出发描述体系结构:需求视点、设计视点、实现视点、测试视点在此基础上提出了7个体系结构视图:用例视图、域视图、非功能需求视图、逻辑视图、实现视图、过程视图、部署视图4.1 软件体系结构描述方法 26第4章 软件体系结构描述l 与IEEE P1471相比,该建议标准的体系结构描述方案涉及面比较窄,所注重的层次比较低,因而更具体由于将体系结构的描述限于UML和RUP,具有一定的局限性,但该建议标准结合了业界已经广泛采用的建模语言和开发过程,因而易于推广,可以有效实现在跨组织之间重用体系结构描述结果 Rational 4.1 软件体系结构描述方法 27 尽管人们已经提出了大量的ADL和相应的工具,在研究界对于什么是ADL、以及ADL应该在哪些方面进行建模,仍未形成共识。
特别是在ADL应该向开发人员提供什么层次的支持,也有争议.补充补充 28]简单观点:SA描述所承担的角色是辅助软件系统的理解和交流,所以ADL必须简单、可理解并采用图形化的语法,不必追求形式化定义的语义还应该具有支持对SA的可视化和简单分析的工具]形式化观点:将精力主要放在形式化的ADL语法和语义上,并着重开发分析工具、模型检测工具、语法分析工具、编译器、代码合成工具、运行时支撑工具等补充补充 29软件体系结构的形式化描述•为什么需要形式化描述–需要严格、精确无歧异的描述,以便在系统众多的涉众中进行交流–需要演算的能力,使得在判断系统质量的时候可以由计算得出,而不是仅仅凭借经验推测–需要进行体系结构分析自动化补充补充 30何谓形式化方法•形式化方法:–借助抽象的方法将软件系统转化为数学模型–如何抽象取决于关注点补充补充 31形式化方法: ] Z标记语言] 通讯顺序进程CSP] 化学抽象机] ∏演算补充补充 32形式化方法过程软件系统软件系统关注结构和关注结构和约束约束体系结构体系结构形式化模型形式化模型1集合论、谓词集合论、谓词逻辑逻辑关注行为关注行为体系结构体系结构形式化模型形式化模型2进程代数进程代数补充补充 33软件体系结构形式化基础•一阶谓词逻辑(First Order Predicate Logic)•集合论•属性文法(Attribute Grammar)•进程代数 (Process Algebra)–通讯顺序进程(CSP,Communicating Sequential Processes)–π-演算(π-Calculus)•Petri网•状态机(State Machine)•……补充补充 34形式化方法的进化——ADL•纯形式化方法的不足–形式化方法不能直接支持软件的各种概念,因此难以在实践中应用•体系结构描述语言ADL (Architecture Description Language)–应用通用的形式化方法对体系结构和风格进行建模和分析,在体系结构的抽象级上提供一个精确的语义。
–提供了强有力的分析能力、抽象和与实现的细节无关性 –为体系结构元素定义了一系列符号,可以应用于实际的复杂系统的描述 补充补充 35ADL应当有什么功能•定义和描述结构概念(Capture)•描述一个系统是如何被构件建立起来的(Construction)•描述如何通过现有的构件生成新的系统(Composition)•指导从多个不同的设计和实现中挑选最优方案(Selection)•检验一个设计是否能够满足需求(Verification)•检测一个需求对系统的隐含影响(Analysis)•根据需求自动化构建系统(Automation)补充补充 3636ADL分类•根据结构分类–隐式配置语言(Implicit Configuration Languages) –嵌入式配置语言(Inline Configuration Languages)–显式配置语言(Explicit Configuration Languages)前两者不能被认为是真正意义上的ADL补充补充 37ADL分类(续)•根据研究范围分类–研究体系结构配置结构的描述语言•如Darwin、CHAM(Chemical Abstract Machine)–研究体系结构实例的描述语言•如Rapide、UniCon–研究体系结构风格的描述语言•如WRIGHT、Aesop•根据与实现细节的关系的描述语言–实现无关语言(Implementation Independent Languages)–实现相关语言(Implementation Constraining Languages)补充补充 38第4章 软件体系结构描述4.2 软件体系结构描述语言 ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。
基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持其三个基本元素是:构件、连接件、体系结构配置 构件:计算或数据存储单元 连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则 体系结构配置:描述体系结构的构件与连接件的连接图 39]构件:接口、类型、语义、约束、演化、非功能属性:接口、类型、语义、约束、演化、非功能属性与外部世界互操作点的集合一个构件类型可在某个SA中可以被多次实例化,也可以在多个SA中被复用更进一步,构件类型还能以参数化的方法复用清楚地对构件类型建模还有助于对SA的理解语义是构件行为的高层模型,增强SA的约束约束是系统或其某一部分的属性或断言如果约束不能被满足,则导致某些需求不能被实现构件的演化可非正式地定义为构件属性的修改,诸如接口、行为和实现等诸如安全性、性能和可移植性等一般情况下,一个构件的非功能属性不能从它的行为中推理得出。
补充补充 40]连接件:接口、类型、语义、约束、演化、非功能属性:接口、类型、语义、约束、演化、非功能属性与构件或其它连接件之间互操作点的集合类型是封装了构件通讯、协作和中间决策的抽象类型支撑在SA内部或SA之间的复用语义是连接件行为的高层模型构件的语义表达应用层的功能,连接件的语义承担交互协议的规格说明确保连接件与交互协议的意图的一致并增强了边界条件演化可非正式地定义为连接件属性的修改,诸如接口、语义和约束的变化等完全是从它的语义规格说明派生出来的对连接件的非功能属性建模使得设计者可以对系统运行时的行为进行仿真补充补充 41]体系结构配置:体系结构配置称为体系结构拓扑,是构件和连接件组成的连接图这些信息用于确定构件之间是否合适、接口是否匹配、连接件能否正常通讯、构件和连接件在组合后是否满足能够取得所期望的语义结果。
结合构件和连接件模型,对配置的描述使得对SA的并发和分布方面进行评估成为可能补充补充 42]ADL的构成要素:1.构件2.连接件3.SA配置SA构件构件配置配置连接件连接件端口端口(port)角色角色(role)1:n1:n1:n如:消息传递中角色sender和receiver拓扑逻辑和约束一组端口构成一个接口第4章 软件体系结构描述4.2 软件体系结构描述语言 43第4章 软件体系结构描述4.2 软件体系结构描述语言l 构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统;l 抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节;l 重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;| ADL与其他语言的比较(1) 44第4章 软件体系结构描述4.2 软件体系结构描述语言l 组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合;l 异构能力:ADL允许多个不同的体系结构描述关联存在;l 分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。
ADL与其他语言的比较(2) 45第4章 软件体系结构描述4.2 软件体系结构描述语言表4-1 典型元素含义比较 46第4章 软件体系结构描述4.2 软件体系结构描述语言表4-2 常见的软件体系结构元素 47]主要ADL的特点]ACME:支持各ADL之间的转换]UniCon:支持异构的构件和连接件类型]Wright:提供SA构件之间交互的说明和分析]Darwin:支持并发应用]Aesop:支持体系结构风格的应用]MetaH:提供实时系统的设计指导]C2:支持消息传递风格的系统描述]SADL:提供层次加细的形式化描述第4章 软件体系结构描述4.3 典型的软件体系结构描述语言 48第4章 软件体系结构描述 Rapide:一种事件驱动的ADL,它以体系结构定义作为开发框架,支持基于构件的开发。
该语言提供了建模、分析、仿真和代码生成的能力,但是没有将连接子显式地表示为一阶实体 4.3 典型的软件体系结构描述语言 49第4章 软件体系结构描述 Wright:其主要特点是将CSP 用于软件体系结构的描述,从而完成对体系结构描述的某些形式化推理(包括相容性检查和死锁检查等)但它仅仅是一个设计规约语言,只能用于描述,无法支持系统生成,同时CSP 的使用也是比较困难的事情 ACME:支持ADL 之间的映射及工具集成的体系结构互交换语言其目标是作为体系结构设计的一个共同的互交换格式,以便将现有的各种ADL 在这个框架下统一起来;它不是真正意义上的ADL 4.3 典型的软件体系结构描述语言 50第4章 软件体系结构描述 xArch:一种基于XML 的ADL。
它使用XML 定义了描述体系结构的核心元素,可以用来简单的描述软件体系结构,也可以作为设计其它ADL的基础,或者用作体系结构描述描述语言的互交换机制 xADL2.0:以xArch 为基础的基于XML 的ADL除了xArch 的核心元素,xADL2.0 还提供了对系统运行时刻和设计时刻的元素的建模支持,类似版本、选项和变量等更高级的配置管理观念,以及对产品家族的体系结构的建模支持此外,xADL2.0还利用XML 的可扩展性简化了新的ADL的设计及其相应工具的开发过程4.3 典型的软件体系结构描述语言 51•4.3.1 UniCon UniCon-UNIversal CONnection 是一种围绕着构件和连接件两个基本概念组织的体系结构描述语言 主要目的:•提供对大量构件和连接件的统一访问;•区分不同类型的构件和连接件以便对体系结构配置进行检查;•支持不同的表示方式和不同开发人员的分析工具;•支持对现有构件的使用。
第4章 软件体系结构描述4.3 典型的软件体系结构描述语言 52UniCon中,定义构件的语法如下:
更进一步的说明定义 参与者是构件中可视的语义单元,它起到类似挂钩的作用,构件通过它与其他构件实现交互第4章 软件体系结构描述4.3 典型的软件体系结构描述语言 53UniCon中,定义连接件的语法如下:
角色是连接件中可视的语义单元,连接件通过决策在构件之间进行中介当系统的构件和连接件由交互时,构件的参与者和连接件的角色被关联起来角色定义了连接件对参与者的需求和职责实现方式:是UniCon语言内建的,提供了专门的实现方式,但不提供任何的机制用于支持用户自定义的连接件实现第4章 软件体系结构描述4.3 典型的软件体系结构描述语言 54◎ Unicon◎ Unicon描述管道描述管道USES p1 PROTOCOL Unix-pipeUSES p1 PROTOCOL Unix-pipeUSES sorter INTERFACE Sort-filterUSES sorter INTERFACE Sort-filterCONNECT sorter.output TO p1.sourceCONNECT sorter.output TO p1.sourceUSES p2 PROTOCOL Unix-pipeUSES p2 PROTOCOL Unix-pipeUSES printer INTERFACE Print-filterUSES printer INTERFACE Print-filterCONNECT sorter.input TO p2.sinkCONNECT sorter.input TO p2.sink◇ ◇ 示例示例第4章 软件体系结构描述4.3 典型的软件体系结构描述语言 55示例第4章 软件体系结构描述4.3 典型的软件体系结构描述语言 56第4章 软件体系结构描述4.3 典型软件体系结构描述语言l C2和其提供的设计环境(Argo)支持采用基于时间的风格来描述用户界面系统,并支持使用可替换、可重用的构件开发GUI的体系结构。
l 在C2中,连接件负责构件之间消息的传递,而构件维持状 态 、 执 行 操 作 并 通 过 两 个 名 字 分 别 为 “top”和“bottom”的端口和其它的构件交换信息l 每个接口包含一种可发送的消息和一组可接收的消息构件之间的消息要么是请求其它构件执行某个操作的请求消息,要么是通知其他构件自身执行了某个操作或状态发生改变的通知消息 C2概述(1) 57第4章 软件体系结构描述4.3 典型软件体系结构描述语言l 构件之间的消息交换不能直接进行,而只能通过连接件来完成每个构件接口最多只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连l 请求消息只能向上层传送而通知消息只能向下层传送l 通知消息的传递只对应于构件内部的操作,而和接收消息的构件的需求无关l C2对构件和连接件的实现语言、实现构件的线程控制、构件的部署以及连接件使用的通讯协议等都不加限制 | C2概述(2) 58第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言◇ C2对构件的描述 59第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言◇ C2对构件接口的描述 component_message_interface ::=component_message_interface ::= top_domain_interface top_domain_interface bottom_domain_interface bottom_domain_interface top_domain_interface ::=top_domain_interface ::= top_domain is top_domain is out interface_requests out interface_requests in interface_notifications in interface_notifications bottom_domain_interface ::=bottom_domain_interface ::= bottom_domain is bottom_domain is out interface_notifications out interface_notifications in interface_requests in interface_requests 60第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言◇ C2对构件接口的描述 interface_requests ::=interface_requests ::= {request {request;;} | null} | null;; interface_notifications ::=interface_notifications ::= {notification {notification;;} | null} | null;; request ::=request ::= message_name(request_parameters) message_name(request_parameters) request_parameters ::=request_parameters ::= [to component_name][parameter_list] [to component_name][parameter_list] notification ::=notification ::= message_name[parameter_list] message_name[parameter_list] 61第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言◇ 会议安排系统的C2风格 62第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言◇ C2对体系结构的描述architecture MeetingScheduler isarchitecture MeetingScheduler is conceptual_components conceptual_components Attendee Attendee;;ImportantAttendeeImportantAttendee;;MeetingInitiatorMeetingInitiator;; connectorsconnectors connector MainConn is message_filter no_filtering connector MainConn is message_filter no_filtering;; connector AttConn is message_filter no_filteringconnector AttConn is message_filter no_filtering;; connector ImportantAttConn is message_filter no_filteringconnector ImportantAttConn is message_filter no_filtering;; architectural_topologyarchitectural_topology connector AttConn connections connector AttConn connections top_ports Attendee top_ports Attendee;; bottom_ports MainConnbottom_ports MainConn;; connector ImportantAttConn connectionsconnector ImportantAttConn connections top_ports ImportantAttendee top_ports ImportantAttendee;; bottom_ports MainConnbottom_ports MainConn;; connector MainConn connectionsconnector MainConn connections top_ports AttConn top_ports AttConn;;ImportantAttConnImportantAttConn;; bottom_ports MeetingInitiatorbottom_ports MeetingInitiator;;end MeetingSchedulerend MeetingScheduler;; 63第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言◇ C2对会议安排系统的描述 system MeetingScheduler_1 issystem MeetingScheduler_1 is architecture MeetingScheduler with architecture MeetingScheduler with Attendee instance Att_1 Attendee instance Att_1,,Att_2Att_2,,Att_3Att_3;; ImportantAttendee instance ImpAtt_1ImportantAttendee instance ImpAtt_1,,ImpAtt_2ImpAtt_2;; MeetingInitiator instance MtgInit_1MeetingInitiator instance MtgInit_1;;end MeetingScheduler_1end MeetingScheduler_1;; 64• Wright•CMU : Robert Allen & David Garlanhttp://www-2.cs.cmu.edu/~able/wright/•支持对构件之间交互的形式化分析;将连接件定义为明确的语义实体;•连接件通过协议来定义,协议刻画了与连接件相连的构件的行为;对连接件角色的描述表明了对参与交互的构件的“期望”以及实际的交互进行过程;•构件通过其端口和行为来定义,表明了端口之间是如何通过构件的行为而具有相关性的;•构件和连接件的实例被声明后,系统组合可以通过构件的端口和连接件的角色之间的连接来完成。
第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言 65介绍用wright描述一个简单的客户服务器体系的体系结构:System SimpleExample component Server= port provide [provide protocol] spec[Server specification] component Client= port request[request protocol] spec[Client specification] Connector C-S-connector= role client[client protocol] role server[server protocol] Instances s:Server c:Client cs:C-S-connector Attachements s.provide as cs.server c.request as cs.cleintend SimpleExample三部分:1 、定义了构件和连接件类型:构件类型用port component-spec来说明2、构件和连接件实例的一个集合。
这些实例定义了体系结构实际出现的实体3、通过描述那个构件端口被连接到那个连接件角色上,定义了构件和连接件实例被组合在一起的方式如客户request端口和服务器provide端口作为连接件clinet角色和server角色被连接在一起第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言 66• Wright(续)•特点:对体系结构和抽象行为的精确描述、定义体系结构风格的能力和一组对体系结构描述进行一致性和完整性的检查;•体系结构通过构件、连接件以及它们之间的组合来描述,抽象行为通过构件的行为和连接件的胶水来描述;•Wright提供一致性和完整性检查有:端口-行为一致性、连接件死锁、角色死锁、端口-角色相容性、风格约束满足以及胶水完整性等第四章第四章 软件体系结构描述软件体系结构描述4.3 典型软件体系结构描述语言典型软件体系结构描述语言 67Classification (Application)ACMEC2 SADELArchwareADMLKoalaGestaltDarwinProduct LinesEvolution Distributed systemsInterchange languageGeneral purposeWrightMaexADL 2.0MenageDynamic behaviourRapidexArchMeta-HResolveSADLUniconxACME 68第4章 软件体系结构描述4.3 软件体系结构描述语言 这些ADL强调了体系结构不同的侧面,对体系结构的研究和应用起到了重要的作用,但也有负面的影响。
每一种ADL都以独立的形式存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使设计人员很难选择一种合适的ADL,若设计特定领域的软件体系结构又需要从头开始描述 69]ACME概述]SA设计元素]属性]设计约束]类型和风格]ACME的特点 70第4章 软件体系结构描述4.4 典型软件体系结构描述语言 ACME不是一种真正意义上的ADL,是一种体系结构变换语言,它提供了一种在不同ADL的体系结构规范描述之间实现变换的机制 ACME从四个方面对软件体系结构进行描述:结构、属性、约束、类型和风格 ACME 71结构 ACME定义了七种体系结构实体:构件、连接件、系统、端口、角色、表述、表述映射。
ACME第4章 软件体系结构描述4.4 典型软件体系结构描述语言 72ACME提供7种实体:构件、连接件、系统(构件和连接件的配置构件和连接件的配置)、端口、角色、表述(representations)和和表述映射(map)上图只体现了5种实体,后两种见下)]SA设计元素系统构件构件连接件角色端口第4章 软件体系结构描述4.4 典型软件体系结构描述语言 73表述为SA提供分级描述的能力,每个构件或连接件能用一个或多个更详细、更底层的描述来表示表述映射定义了被表述的内部系统和所表述的构件或连接件的外部接口之间存在何种相关性 (对连接件而言是内部角色和外部角色之间)表述表述(representations)和表述映射和表述映射(map)ClientServer连接管理安全管理数据库带有表述的C/S结构]SA设计元素(续)表述表述第4章 软件体系结构描述4.4 典型软件体系结构描述语言 74表述用来进一步描述元素的结构,为元素提供更深入的分解::(1)使用表述封装子系统。
父元素可以看作是将元素暴露给外界父元素可以看作是将元素暴露给外界的接口的标识符号,而表述是对接口的具体实现的接口的标识符号,而表述是对接口的具体实现2)表述作为视图表述可以用来表达系统的其它视图,一个简表述可以用来表达系统的其它视图,一个简单的应用就是去掉系统某些特性后定义的一个简化的视图单的应用就是去掉系统某些特性后定义的一个简化的视图可是,可是,ACME并没有提供不同视图之间关系的机制并没有提供不同视图之间关系的机制3)表述的其它应用表达文档消息表达文档消息在ACME中,中,ACME只被用只被用来定义逻辑边界,如对构件和连接件的封装来定义逻辑边界,如对构件和连接件的封装对表述的进一步描述:]SA设计元素(续)第4章 软件体系结构描述4.4 典型软件体系结构描述语言 75ACME实例---C/S结构的描述:System simple_CS = { Component client={ Port sendRequest } Component Server={Port receiveRequest } Connector rpc={Roles{caller,callee} } Attachments { client.sendRequest to rpc.caller server.receiverRequest to rpc.callee }}]SA设计元素(续)第4章 软件体系结构描述4.4 典型软件体系结构描述语言 76]属性]ACME使用任意的属性列表对SA的结构进行注释]每个属性有名称、可选类型和值]ACME定义了诸如整数、字符串和布尔等简单类型ClientServer形状=矩形宽度=100高度=50可视化说明…While(data)Read(reponse)…源代码MAX速度:5KbpsMAX连接数:10性能数据属性属性第4章 软件体系结构描述4.4 典型软件体系结构描述语言 77带属性的带属性的ACME描述实例描述实例System simple_CS = { Component client={ Port sendRequest Properties {requestRate:float=17.0; sourceCode:externalFile=“client.c”} } Component Server={ Port receiveRequest; Properties {macConcurrentClients:integer=1; multithreaded:Boolean=false; sourceCode:externalFile=“server.c } } Connector rpc={Roles{caller,callee} Properties{synchronous:boolean=true; maxRoles:integer=2;} } Attachments { client.sendRequest to rpc.caller server.receiverRequest to rpc.callee } }]属性(续)第4章 软件体系结构描述4.4 典型软件体系结构描述语言 78]设计约束决定了体系结构设计如何演化的在ACME中采用一阶谓词逻辑的约束语言来描述设计约束约束可和任何设计元素相关联。
约束有范围,如与一个系统关联,则可引用系统中的任何设计元素如:Connected(c1,c2)---如果c1和c2之间至少有一个连接件,则取true;否则falseReachable(c1,c2)---如果c2处于Connected(c1,*)的路径上,则取true,否则falseHasProperty(elt,propName)---如果元素elt有一个属性,取名为propName第4章 软件体系结构描述4.4 典型软件体系结构描述语言 79•约束通过两种方式附加到设计元素,分别是invariant和heuristic,其中invariant约束当做是不可违反的规则看待,heuristic约束当做应该遵循的规则看待第4章 软件体系结构描述4.4 典型软件体系结构描述语言 80第第4 4章章 软件体系结构描述软件体系结构描述4.4 典型软件体系结构描述语言典型软件体系结构描述语言类型和风格类型和风格 体体系系结结构构描描述述的的一一个个重重要要的的能能力力就就是是能能够够定定义义系系统统的的风风格格或或族族。
风风格格允允许许定定义义领领域域特特定定或或应应用用特特定定的的设设计计词词汇汇,,以以及如何使用这些词汇的约束及如何使用这些词汇的约束 在在ACMEACME中中定定义义风风格格的的基基本本构构造造块块是是一一个个类型系统设设计计师可以定义师可以定义三种三种类型:属性类型、结构类型、风格类型:属性类型、结构类型、风格 81]类型和风格(1) 类型包括属性类型、结构类型和风格 属性类型:属性类型:属性的类型(参见属性部分) 结构类型:结构类型:即构造实体的类型,如:Component Type Client={ //定义构件类型 Port Request={Property protocol:CSPprotocolT}; Property request-rate:Float; Invariant size(self.Ports)<=5; Invariant request-rate>=0; Heuristic request-rate<100; }第4章 软件体系结构描述4.4 典型软件体系结构描述语言 82]类型和风格(续)族(family)(风格):如同结构类型代表一组结构元素一样,族代表一组系统。
通过三个方面来定义:一组结构元素和属性、一组约束、默认结构其中(1) 类型ü结构元素和属性(属性类型和结构类型)为family提供了设计词汇;ü约束定义了模型描述的合法性规则,决定了如何使用这些类型的实例;ü默认结构描述了使用family的任何系统实例的最小集合第4章 软件体系结构描述4.4 典型软件体系结构描述语言 83第第4 4章章 软件体系结构描述软件体系结构描述4.4 典型软件体系结构描述语言典型软件体系结构描述语言 我我们们可可以以看看出出::这这些些ADL共共同同的的目目的的都都是是以以构构件件和和连连接接件件的的方方式式描描述述软软件件体体系系结结构构,,不不同同的的只只是是底底层层的的语语法法和和语语义义为为了了更更好好的的使使用用ADL,,通通常常需需要要一一个个配配套套的的开开发发环环境境,,应该提供以下的工具:应该提供以下的工具: 创创建建和和浏浏览览设设计计的的图图形形化化编编辑辑器器、、体体系系结结构构一一致致性性检检查、代码生成器、模式仓库等。
查、代码生成器、模式仓库等 84下载ACME相关的软件并安装使用: 该工具是耐基梅隆大学计算机学院的ABLE(Architecture Based Language and Environments)项目组开发的通过对该工具的使用,认识:(1) AcmeStudio的环境构成包括用户界面和执行的基本任务等(2) 对SA设计和分析的支持包括对特定SA风格的定制等(3) 开发定制的基于ACME的应用包括使用Acmelib提供的通用的API或自定义的接口类集合第4章 软件体系结构描述4.4 典型软件体系结构描述语言 85•4.4 可扩展标记语言•4.5 基于XML的软件体系结构描述语言 自学第4章 软件体系结构描述 86Ø “4十1”模型 •Rational公司的Philippe Kruchten在1995年提出了用于体系结构描述的“4十l”模型。
该模型建立在体系结构的Perry&Wolf定义和Berry Boehm定义的基础上•该模型采用多视图模型的方法描述软件体系结构为了最终能够处理富于挑战性的、大规模的软件系统,该模型由5个视图构成–逻辑视图 当采用面向对象的设计方法时,逻辑视图即是对象模型–过程(进程)视图 描述系统的并发和同步方面的设计–物理视图 描述软件到硬件之间的映射关系,反映系统在分布方面的设计–开发视图 描述软件在开发环境下的静态组织第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 87对体系结构进行的描述是围绕着以上4个视图展开的然后,通过选择出的一些用例对体系结构加以说明这些用例被称作场景(scenarios),它们构成了第5个视图实际上,体系结构在某种程度上是由场景演化而来的 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 88体系结构的概念在每个视图里面都可以独立应用。
这就是说,可以在每个视图里面定义体系结构的各种组成元素,如构件、连接件等对于不同的视图,还可以选择不同的体系结构风格,因此在同一个系统结构中可以使用多种风格此外,在每一种视图里,我们使用该视图特定的符号这避免了符号用法和意义的混乱4十1”视图模型是一个十分通用的模型:可以便用其他的符号表示法,也可以使用其他的设计方法,尤其是逻辑视图和过程视图的分解 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 89“4十1”模型实际上使得有不同需求的人员能够得到他们对于软件体系结构想要了解的东西系统工程师先从物理视图,然后从过程视图靠近体系结构最终使用者、客户、数据专家从逻辑视图看体系结构;项目经理、软件配置人员从开发视图看体系结构 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 90要指出的是,不是所有的软件体系结构都需要完整的“4十1”视图。
没有用的视图在体系结构描述中可以被省略,例如对于非常小的系统,逻辑视图和开发视图有可能非常相似以至于没有必要把它们分开描述场景视图在各种环境下都是有用的 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 91逻辑视图的体系结构:面向对象的分解 •逻辑视图主要支持功能需求——系统应当向用户提供什么样的服务从问题域出发,采用面向对象的方法,按照抽象、封装、继承的原则,进行分解,得到代表着系统的关键抽象表示的集合这些抽象表示的具体形式就是对象和对象的类这种分级不仅是为了功能分析,而且担负着在系统的各部分中确定公共机制和设计元素的作用•使用Rational/Booch方法,通过类图(class diagram)和类模板(class template)来表示逻辑体系结构类图显示了类的集合和它们的逻辑关系:关联(association)、组合 (composition)、使用(usage)、继承(inheritance)等。
类模板则着眼于每个类的个体,强调类的主要操作,并确定对象的关键特征当十分需要定义一个对象的内部行为时,要使用状态转换图(state transition diagram),或者是状态表(state chart)相关类的集合可以归到一起,称作类的种属(class category) 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 92 逻辑视图的符号表示法 逻逻辑辑体体系系结结构构的的符符号号表表示示法法( (见见图图) ),,是是从从BoochBooch方方法法派派生生而而来来的的它它被被极极大大地地简简化化了了,,尤尤其其大大量量简简化化了了在在这这个个设设计计阶阶段段作作用用不不大大的的各各种种修修饰饰,,只只考考虑虑对对于于体体系系结结构构有有重重要要意意义义的的元元素素在在设设计计工工具具上上,,可可以以使使用用Rational Rational RoseRose等等UMLUML建建模模工工具具。
公公共共的的机机制制和和服服务务在在类类设施设施 (class utilities)(class utilities)中定义 构件构件实例实例继承继承使用使用包含,聚集包含,聚集关联关联类层次类层次参数化类参数化类类服务类服务类类连接件连接件第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 93 逻辑视图的风格逻辑视图也可以采用面向对象的风格逻辑视图设计的主要准则是,要设法在整个系统中保持一个单一的、连贯的对象模型,避免类和相关机制出现按照场地或处理器过早的分化 逻辑视图的例子的例子 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 94过程视图的体系结构:过程分解 •过程体系结构考虑的是一些非功能性的需求,诸如性能、可用性等。
它所要面对的问题有并发,分布,系统的完整性,容错能力等它还要考虑怎样把过程体系结构与逻辑视图体系结构的要点相适应——对某个对象的某个操作实际上是在哪个控制线程上发生的•可以把过程体系结构分为几个抽象层次来描述,每个层次考虑不同的方面在最高层次上,过程体系结构可以被视为是一个逻辑网络的集合每个独立执行的逻辑网络都是由通信程序(即“过程”)构成的这些逻辑网络分布在一个通过LAN或WAN连接起来的硬件资源集合上多个逻辑网络可能同时存在,并共享同样的物理资源第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 95 过程视图的体系结构:过程分解 •软件被分为独立的任务的集合每个任务是一个独立的控制线程,可以在一个处理节点上独立单独调度因此可以将任务分为主任务和辅任务主任务是需要单独解决的体系结构元素辅任务是由于实现原因而在本地加入的附加任务(缓冲,超时,等等),例如可以将它们实现为轻量级的线程。
主任务通过一套完善定义的任务间通信机制进行通信:同步的或异步的基于消息的通信服务、远程过程调用、时间广播等不应当假设通信中的主任务处于同一个过程中或处在同一个处理节点上辅任务的通信可以采用共享内存的方式或其他双方约定的方式 •基于过程体系结构设计图,可以估计出消息流和过程负荷 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 96 过程视图的符号表示法 在 辅 助 工 具 的 选 择 上 , 可 以 考 虑 使 用 TRW提 供 的UNAS(Universal Network Architecture Services)产品它可用于把各种过程和任务构建并实现为过程的逻辑网络UNAS里面包含的一个工具SALE(Software Architecture Lifecycle Environment)支持这样的符号表示法SALE允许过程体系结构的图形化描述,包括对可能的任务间通信路径的规格说明。
然后,从这种规格说明可以自动生成相应的Ada或C十十语言源代码 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 97 过程视图的风格 有多种风格适合过程体系结构例如管道和过滤器、客户/服务器及其变体(多客户/单服务器,多客户/多服务器)等第第4 4章章 软件体系结构描述软件体系结构描述过程视图例子4.6 使用“4+1”模型描述软件体系结构 98开发视图的体系结构:子系统分解 1)开发视图,关注的是在软件开发环境中软件模块的实际组织软件被打包成可以由单个或少量程序员开发的各种小的部分:程序库或子系统子系统被组织成层次化的体系,每一层为上一层提供一个严密的、明确定义的接口。
2)系统的开发体系结构用模块图和子系统图来表示,在图中可以显示出“导入”和“导出”关系完整的开发体系结构只有在软件系统的所有元素被识别出来之后才能被描述控制开发体系结构的原则是:分割、编组、可视3)开发体系结构主要考虑的是内部需求,这些需求目的是要使开发相关的活动更易于进行,如软件管理、软件复用、开发工具集所造成的约束、编程语言等开发体系结构是许多开发话动的基础,包括需求配置、团队组织和工作分配、成本估算和成本规划、项目进度监控、软件可重用性和可移植性分析、软件安全分析等它是建立软件产品线的基础 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 99开发视图的符号表示法与前面类似,开发视图的符号表示法采用Booch表示法的变体,并且只考虑对于体系结构有重要意义的元素,如图所示在Rationnal Rose中,可以绘制模块层和子系统层的开发体系结构图,还可以在反向工程中从已经开发的源代码(Ada或C十十)得出系统的开发体系结构图。
第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 100开发视图的风格 对于开发视图,我们建议采用分层风格,定义4—6层的子系统每一层都有明确责任设计规则是,某一层的子系统只能依赖于本层或其下层的子系统这样做的目模块间相互依赖而构成的复杂网络最小化,并使得系统可以采用逐层的策略完成释放第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 101开发视图的例子 下图用5个层次表示了航空交通管制系统产品线的开发组织第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 102物理视图的体系结构:从软件到硬件的映射 物理体系结构主要考虑的是非功能性的系统需求,如系统的可用性、可靠性(容错性)、性能(信息吞吐量)和可扩展性。
软件系统在计算机网络的各个处理节点上运行各种被确定出的元素——网络、过程、任务和对象——需要映射到各种节点上去将用到不同的物理配置有些用于开发和测试,有些用于不同场所或不同用户因此从软件到处理节点的映射需要高度灵活,并且最小限度地影响其本身的源代码 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 103物理视图的符号表示法 TRW TRW公司的公司的UNASUNAS允许使用者采用数据驱动的方式将过程允许使用者采用数据驱动的方式将过程体系结构映射到物理体系结构,并允许在不修改源代码的体系结构映射到物理体系结构,并允许在不修改源代码的情况下对这种映射做出多种改动情况下对这种映射做出多种改动 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 104•ACS系统的物理视图第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 105–具有进程分配的小型ACS系统的物理视图第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 106场景视图的体系结构:汇总 通过使用一些重要场景,4个视图中的元素可以协调地共同工作。
尽管这些场景是一个小集合,但是它们很重要场景(scenario)是更通用的概念——用例(use case)的实例从某种意义上讲,场景是最重要的需求的抽象场景的设计使用对象场景图(object scenario dlagram)和对象交互图来表示相对于其他的4个视图,这个视图是多余出来的(所以称为“4十l”),但是它承担着两个目的:● 在下面要讲到的体系结构设计中,将以此视图为驱动来发现体系结构元素● 在体系结构设计结束后,此视图承担验证和描述的角色它不仅用于书面记录,并且是体系结构原型测试的起始点 第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 107场景视图的符号表示法 场景视图的符号表示法中,构件的表示与逻辑视图非常相似,但是连接件的表示使用过程视图中的方法注意,对象的实例用细实线表示在工具的使用方面,和在逻辑体系结构类似,可以使用Rational Rose绘制和管理对象场景图。
第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 108场景视图的例子① Joe的的控制器检测到并证实了从挂起到取下的状态转变,并且发送了消息来唤醒相关的终端对象② 终端分配一些资源,并告诉控制器发出拨号音③ 控制器受到数字并将它们发送给终端④ 终端使用号码规划来分析数字流⑤ 当一个有效序列的输入完成,终端打开一个对话图 场景的雏形—本地呼叫选择阶段第第4 4章章 软件体系结构描述软件体系结构描述4.6 使用“4+1”模型描述软件体系结构 109 谢 谢 !!。





