wkd软件体系结构描述第四章.ppt_第1页
wkd软件体系结构描述第四章.ppt_第2页
wkd软件体系结构描述第四章.ppt_第3页
wkd软件体系结构描述第四章.ppt_第4页
wkd软件体系结构描述第四章.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,软件体系结构 Software Architecture 教师:王凯东 副教授,硕士导师 (欢迎同学报考或报送研究生) Email:第4章 软件体系结构描述,本 章 内 容,4.1 软件体系结构描述方法 4.2 软件体系结构描述语言 4.3 典型的软件体系结构描述语言 4.4 可扩展标记语言 (补充课件 已学) 4.5 基于XML的软件体系结构描述语言(自学) 4.6使用UML描述软件体系结构 (补充课件 已学) 4. 本章小结,抽象认识事物本质的惯用法,抽象是人类对实际事物在针对某一特定观点下的简化 突出我们希望认识的各个元素 允许我们对关注的结构和行为进行辨识和

2、分析 在构建新的实例时可以作为蓝图,补充,抽象实例:动力系统,补充,抽象实例:动力系统,忽略了施力者和受力者的实体 忽略了次要的环境作用,如地面、空气 忽略了传力媒介 突出了力和运动状态之间的关系,补充,形式化的抽象,实际事物,形式化方法,补充,软件体系结构的描述,软件体系结构和软件体系结构描述不同的两个概念 软件体系结构是附属于系统之中。只要存在系统,体系结构就存在 如:每个石头都会有重量 软件体系结构描述是将体系结构可视化的手段和产物 如:表示一个石头的重量,补充,如何理解体系结构描述,补充,体系结构描述方式,使用不同的策略和方法可对同一软件体系结构作不同的理解和描述 如:描述一块石头的重

3、量 比较轻 比另一块重一些 大约2公斤 四斤六两 2.32Kg 5.114751207磅 ,精确程度不同 单位不同 测量基准不同,描述方式不同,补充,体系结构描述方式,体系结构描述方式标准 语义丰富性 语义精确性 形式化程度 主要描述方式 图形表达工具 UML 模块接口语言MIL ADL,Richness,Preciseness,Formalization,O,补充,描述方法的种类,第4章 软件体系结构描述,4.1 软件体系结构描述方法,图形表达工具 模块内连接语言 基于软构件的系统描述语言 软件体系结构描述语言,图形表达工具,用由矩形框和有向线段组合而成的图形表达工具。其中,矩形框代表抽象构

4、件,有向线段代表辅助各构件进行通讯、控制或关联的连接件。 特点 语义丰富 语义极不精确 没有形式化基础 用途 商业展示 设计草图,第4章 软件体系结构描述,4.1 软件体系结构描述方法,图41 某软件辅助理解和测试工具部分体系结构描述,软件体系结构的图形表达工具表示具有如下优点: 直观形象 简单易用,第4章 软件体系结构描述,4.1 软件体系结构描述方法,图形表达工具,软件体系结构的图形表达工具表示具有如下缺点: 由于其术语和表达语义上存在着一些不规范和不精确,从而使得以矩形为基础的传统图形表达方法在不同系统和不同文档之间存在着许多不一致甚至矛盾。,第4章 软件体系结构描述,4.1 软件体系结

5、构描述方法,图形表达工具,模块内连接语言,第4章 软件体系结构描述,4.1 软件体系结构描述方法,采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言。由于程序设计语言和模块内连接语言具有严格的语义基础,因此它们能支持对较大的软件单元进行描述。例如,Ada语言采用use实现包的重用,Pascal语言采用过程(函数)模块的交互等。 Procedurea;forward; Procedureb; begin . end; Procedurea; 像上面的代码一样,只要在模块B前面加一个Procedurea;forward;就可以让B模块调A,而A本来就可以调用B模块。这样就实现了两个模块

6、相互调用。,第4章 软件体系结构描述,4.1 软件体系结构描述方法,特点 语义比较丰富,但局限在实现级别,层次较低 语义精确,有编译器作保证 没有或极少有形式化基础 实例 Microsoft COM IDL OMG CORBA IDL,模块内连接语言,MIL的缺点 这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,限制了它们处理和描述比程序设计语言元素更为抽象的高层次软件构架元素的能力。,第4章 软件体系结构描述,4.1 软件体系结构描述方法,模块内连接语言,基于软构件的系统描述语言,第4章 软件体系结构描述,4.1 软件体系结构描述方法,基于软构件的系统描述语言将软件系统描述成一种是

7、由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。 例如,Darwin最初用作设计和构造复杂分布式系统的配置说明语言,因具有动态特性,也可用来描述动态体系结构。,第4章 软件体系结构描述,4.1 软件体系结构描述方法,这种表达和描述方式虽然也是较好的一种以构件为单位的软件系统描述方法,但是他们所面向和针对的系统元素仍然是一些层次较低的以程序设计为基础的通信协作软件实体单元,而且这些语言所描述和表达的系统一般而言都是面向特定应用的特殊系统,这些特性使得基于软构件的系统描述仍然不是十分适合软件体系结构的描述和表达。,基于软构件的系统描述语言,软件体系结构描述语言,第4章 软件体系结构描述

8、,4.1 软件体系结构描述方法,软件体系结构的第四种描述和表达方法是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言。 由于ADL是在吸收了传统程序设计中的语义严格精确的特点基础上,针对软件体系结构的整体性和抽象性特点,定义和确定适合于软件体系结构表达与描述的有关抽象元素,因此,ADL是当前软件开发和设计方法学中一种发展很快的软件体系结构描述方法,目前,已经有几十种常见的ADL。,软件体系结构描述框架标准-IEEE P1471,第4章 软件体系结构描述,IEEE P1471于2000年9月21日通过IEEE-SA标准委员会评审。 IEE

9、E P1471适用于软件密集的系统,其目标在于:便于体系结构的表达与交流,并通过体系结构要素及其实践标准化,奠定质量与成本的基础。 IEEE P1471详细介绍了一套体系结构描述的概念框架,并给出建立框架的思路。但如何描述以及具体的描述技术等方面缺乏更进一步的指导。,4.1 软件体系结构描述方法,软件体系结构描述规格说明-Rational,第4章 软件体系结构描述,Rational起草了可重用的软件资产规格说明,专门讨论了体系结构描述的规格说明,提出了一套易于重用的体系结构描述规范。 基于RUP(Rational United Process)、采用UML模型描述软件的体系结构,认为体系结构描

10、述的关键是定义视点、视图以及建模元素之间的映射关系。可以从四个视点出发描述体系结构:需求视点、设计视点、实现视点、测试视点。在此基础上提出了7个体系结构视图:用例视图、域视图、非功能需求视图、逻辑视图、实现视图、过程视图、部署视图。,4.1 软件体系结构描述方法,第4章 软件体系结构描述,与IEEE P1471相比,该建议标准的体系结构描述方案涉及面比较窄,所注重的层次比较低,因而更具体。由于将体系结构的描述限于UML和RUP,具有一定的局限性,但该建议标准结合了业界已经广泛采用的建模语言和开发过程,因而易于推广,可以有效实现在跨组织之间重用体系结构描述结果。,Rational,4.1 软件体

11、系结构描述方法,尽管人们已经提出了大量的ADL和相应的工具,在研究界对于什么是ADL、以及ADL应该在哪些方面进行建模,仍未形成共识。特别是在ADL应该向开发人员提供什么层次的支持,也有争议.,补充,简单观点:SA描述所承担的角色是辅助软件系统的理解和交流,所以ADL必须简单、可理解。并采用图形化的语法,不必追求形式化定义的语义。还应该具有支持对SA的可视化和简单分析的工具。 形式化观点:将精力主要放在形式化的ADL语法和语义上,并着重开发分析工具、模型检测工具、语法分析工具、编译器、代码合成工具、运行时支撑工具等。,补充,何谓形式化方法,形式化方法: 借助抽象的方法将软件系统转化为数学模型

12、如何抽象取决于关注点,补充,软件体系结构的形式化描述,为什么需要形式化描述 需要严格、精确无歧异的描述,以便在系统众多的涉众中进行交流 需要演算的能力,使得在判断系统质量的时候可以由计算得出,而不是仅仅凭借经验推测 需要进行体系结构分析自动化,补充,软件体系结构形式化基础,形式化方法: 一阶谓词逻辑(First Order Predicate Logic) 集合论 属性文法(Attribute Grammar) 进程代数 (Process Algebra) 通讯顺序进程(CSP,Communicating Sequential Processes) -演算(-Calculus) Petri网

13、状态机(State Machine) ,补充,形式化方法过程,软件系统,体系结构 形式化模型1,体系结构 形式化模型2,补充,形式化方法的进化ADL,纯形式化方法的不足 形式化方法不能直接支持软件的各种概念,因此难以在实践中应用 体系结构描述语言ADL (Architecture Description Language) 应用通用的形式化方法对体系结构和风格进行建模和分析,在体系结构的抽象级上提供一个精确的语义。 提供了强有力的分析能力、抽象和与实现的细节无关性。 为体系结构元素定义了一系列符号,可以应用于实际的复杂系统的描述。,补充,ADL应当有什么功能,定义和描述结构概念(Capture

14、) 描述一个系统是如何被构件建立起来的(Construction) 描述如何通过现有的构件生成新的系统(Composition) 指导从多个不同的设计和实现中挑选最优方案(Selection) 检验一个设计是否能够满足需求(Verification) 检测一个需求对系统的隐含影响(Analysis) 根据需求自动化构建系统(Automation),补充,33,ADL分类,根据结构分类 隐式配置语言(Implicit Configuration Languages) 嵌入式配置语言(Inline Configuration Languages) 显式配置语言(Explicit Configura

15、tion Languages),前两者不能被认为是真正意义上的ADL,补充,ADL分类(续),根据研究范围分类 研究体系结构配置结构的描述语言 如Darwin、CHAM(Chemical Abstract Machine) 研究体系结构实例的描述语言 如Rapide、UniCon 研究体系结构风格的描述语言 如WRIGHT、Aesop 根据与实现细节的关系的描述语言 实现无关语言(Implementation Independent Languages) 实现相关语言(Implementation Constraining Languages),补充,第4章 软件体系结构描述,4.2 软件体系

16、结构描述语言,ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。其三个基本元素是:构件、连接件、体系结构配置。 构件:计算或数据存储单元 连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则 体系结构配置:描述体系结构的构件与连接件的连接图。,构件:接口、类型、语义、约束、演化、非功能属性,补充,连接件:接口、类型、语义、约束、演化、非功能属性,补充,体系结构配置:体系结构配置称为体系结构拓扑,是构件和连接件组成的连接图。这些信息用于确定构件之间是否合适、接口是否匹配、连

17、接件能否正常通讯、构件和连接件在组合后是否满足能够取得所期望的语义结果。结合构件和连接件模型,对配置的描述使得对SA的并发和分布方面进行评估成为可能。,补充,ADL的构成要素:,构件 连接件 SA配置,第4章 软件体系结构描述,4.2 软件体系结构描述语言,第4章 软件体系结构描述,4.2 软件体系结构描述语言,构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统; 抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节; 重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;,ADL与其

18、他语言的比较(1),第4章 软件体系结构描述,4.2 软件体系结构描述语言,组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合; 异构能力:ADL允许多个不同的体系结构描述关联存在; 分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。,ADL与其他语言的比较(2),第4章 软件体系结构描述,4.2 软件体系结构描述语言,表41 典型元素含义比较,第4章 软件体系结构描述,4.2 软件体系结构描述语言,表42 常见的软件体系结构元素,主要ADL的特点,ACME:支持各ADL之间的转换 Uni

19、Con:支持异构的构件和连接件类型 Wright:提供SA构件之间交互的说明和分析 Darwin:支持并发应用 Aesop:支持体系结构风格的应用 MetaH:提供实时系统的设计指导 C2:支持消息传递风格的系统描述 SADL:提供层次加细的形式化描述,第4章 软件体系结构描述,4.3 典型的软件体系结构描述语言,第4章 软件体系结构描述,Rapide:一种事件驱动的ADL,它以体系结构定义作为开发框架,支持基于构件的开发。该语言提供了建模、分析、仿真和代码生成的能力,但是没有将连接子显式地表示为一阶实体。,4.3 典型的软件体系结构描述语言,第4章 软件体系结构描述,Wright:其主要特点

20、是将CSP 用于软件体系结构的描述,从而完成对体系结构描述的某些形式化推理(包括相容性检查和死锁检查等)。但它仅仅是一个设计规约语言,只能用于描述,无法支持系统生成,同时CSP 的使用也是比较困难的事情。 ACME:支持ADL 之间的映射及工具集成的体系结构互交换语言。其目标是作为体系结构设计的一个共同的互交换格式,以便将现有的各种ADL 在这个框架下统一起来;它不是真正意义上的ADL。,4.3 典型的软件体系结构描述语言,第4章 软件体系结构描述,xArch:一种基于XML 的ADL。它使用XML 定义了描述体系结构的核心元素,可以用来简单的描述软件体系结构,也可以作为设计其它ADL的基础,

21、或者用作体系结构描述描述语言的互交换机制。 xADL2.0:以xArch 为基础的基于XML 的ADL。除了xArch 的核心元素,xADL2.0 还提供了对系统运行时刻和设计时刻的元素的建模支持,类似版本、选项和变量等更高级的配置管理观念,以及对产品家族的体系结构的建模支持。此外,xADL2.0还利用XML 的可扩展性简化了新的ADL的设计及其相应工具的开发过程。,4.3 典型的软件体系结构描述语言,4.3.1 UniCon UniCon-UNIversal CONnection 是一种围绕着构件和连接件两个基本概念组织的体系结构描述语言 主要目的: 提供对大量构件和连接件的统一访问; 区分

22、不同类型的构件和连接件以便对体系结构配置进行检查; 支持不同的表示方式和不同开发人员的分析工具; 支持对现有构件的使用。,第4章 软件体系结构描述,4.3 典型的软件体系结构描述语言,UniCon中,定义构件的语法如下: := COMPONENT END 接口:构件类型(category:类属 或 type:类型) 属性 参与者 构件类型表达了设计者所认为的构件所承担的功能种类,刻画了构件的行为语义、他所实现的功能、他与其他构件交互时可能采用的风格。构件类型对可以定义的参与者的数目、类型和规格说明作出了约束。 属性是对构件整体 信息进行补充说明,以“特性-值”形式成对出现。更进一步的说明定义。

23、 参与者是构件中可视的语义单元,它起到类似挂钩的作用,构件通过它与其他构件实现交互,第4章 软件体系结构描述,4.3 典型的软件体系结构描述语言,UniCon中,定义连接件的语法如下: := CONNECTOR END 协议:连接件类型 属性 角色定义 连接件类型表达了设计者所认为的连接件所承担的构件交互种类,并为这些交互提供保障。连接件类型对可以定义的角色的数目、类型和规格说明作出了约束。 属性是对连接件整体信息进行补充说明,以“特性-值”形式成出现,体现了协议所承担的交互任务。 角色是连接件中可视的语义单元,连接件通过决策在构件之间进行中介。当系统的构件和连接件由交互时,构件的参与者和连接

24、件的角色被关联起来。角色定义了连接件对参与者的需求和职责。 实现方式:是UniCon语言内建的,提供了专门的实现方式,但不提供任何的机制用于支持用户自定义的连接件实现。,第4章 软件体系结构描述,4.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 sorte

25、r.input TO p2.sink, 示例,第4章 软件体系结构描述,4.3 典型的软件体系结构描述语言,示例,第4章 软件体系结构描述,4.3 典型的软件体系结构描述语言,第4章 软件体系结构描述,4.3 典型软件体系结构描述语言,C2和其提供的设计环境(Argo)支持采用基于时间的风格来描述用户界面系统,并支持使用可替换、可重用的构件开发GUI的体系结构。 在C2中,连接件负责构件之间消息的传递,而构件维持状态、执行操作并通过两个名字分别为“top”和“bottom”的端口和其它的构件交换信息。 每个接口包含一种可发送的消息和一组可接收的消息。构件之间的消息要么是请求其它构件执行某个操作

26、的请求消息,要么是通知其他构件自身执行了某个操作或状态发生改变的通知消息。,C2概述(1),第4章 软件体系结构描述,4.3 典型软件体系结构描述语言,构件之间的消息交换不能直接进行,而只能通过连接件来完成。每个构件接口最多只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连。 请求消息只能向上层传送而通知消息只能向下层传送。 通知消息的传递只对应于构件内部的操作,而和接收消息的构件的需求无关。 C2对构件和连接件的实现语言、实现构件的线程控制、构件的部署以及连接件使用的通讯协议等都不加限制。,C2概述(2),第四章 软件体系结构描述,4.3 典型软件体系结构描述语言, C2对构件的

27、描述,第四章 软件体系结构描述,4.3 典型软件体系结构描述语言, C2对构件接口的描述,component_message_interface := top_domain_interface bottom_domain_interface top_domain_interface := top_domain is out interface_requests in interface_notifications bottom_domain_interface := bottom_domain is out interface_notifications in interface_reques

28、ts,第四章 软件体系结构描述,4.3 典型软件体系结构描述语言, C2对构件接口的描述,interface_requests := request; | null; interface_notifications := notification; | null; request := message_name(request_parameters) request_parameters := to component_nameparameter_list notification := message_nameparameter_list,第四章 软件体系结构描述,4.3 典型软件体系结构描

29、述语言, 会议安排系统的C2风格,第4章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对MeetgingInitiator构件的描述(1),component MeetingInitiator is interface top_domain is out GetPrefSet(); GetExclSet(); GetEquipReqts(); GetLocPrefs(); RemoveExclSet(); RequestWithdrawal(to Attendee); RequestWithdrawal(to ImportantAttendee); AddPrefDates();

30、 MarkMtg(d:date;l:lov_type);,第4章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对MeetgingInitiator构件的描述(2),in PrefSet(p:date_mg); ExclSet(e:data_mg); EquipReqts(eq:equip_type); LocPref(l:loc_type); behavior startup always_generate GetPrefSet, GetExclSet, GetEquipReqts, GetLocPrefs; received_messages PrefSet may_gener

31、ate RemoveExclSet xor RequestWithdrawal xor MarkMtg; received_messages ExclSet may_generate AddPrefDates xor RemoveExclSet xor RequestWithdrawal xor MarkMtg; received_messages EquipReqts may_generate AddPrefDates xor RemoveExclSet xor RequestWithdrawal xor MarkMtg; received_messages LocPref always_g

32、enerate null; end MeetingInitiator;,第4章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对Attendee构件的描述(1),component Attendee is interface bottom_domain is out PrefSet(p:date_mg); ExclSet(e:date_mg); EquipReqts(eq:equip_type); in GetPrefSet(); GetExclSet(); GetEquipReqts(); RemoveExclSet(); RequestWithdrawal(); AddPref

33、Dates(); MarkMtg(d:date;l:loc_type);,第4章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对Attendee构件的描述(2),behavior received_messages GetPrefSet always_generate PrefSet; received_messages AddPrefDates always_generate PrefSet; received_messages GetExclSet always_generate ExclSet; received_messages GetEqipReqts always_g

34、enerate EqipReqts; received_messages RemoveExclSet always_generate ExclSet; received_messages ReuestWithdrawal always_generate null; received_messages MarkMtg always_generate null; end Attendee;,第4章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对ImportantAttendee构件的描述,component ImportantAttendee is subtype Attendee(

35、in and beh) interface bottom_domain is out LocPrefs(l:loc_type); ExclSet(e:date_mg); EquipReqts(eq:equip_type); in GetLocPrefs(); behavior received_messages GetLocPrefs always_generate LocPrefs; end ImportantAttendee;,第四章 软件体系结构描述,4.3 典型软件体系结构描述语言, C2对体系结构的描述,architecture MeetingScheduler is concept

36、ual_components Attendee;ImportantAttendee;MeetingInitiator; connectors connector MainConn is message_filter no_filtering; connector AttConn is message_filter no_filtering; connector ImportantAttConn is message_filter no_filtering; architectural_topology connector AttConn connections top_ports Attend

37、ee; bottom_ports MainConn; connector ImportantAttConn connections top_ports ImportantAttendee; bottom_ports MainConn; connector MainConn connections top_ports AttConn;ImportantAttConn; bottom_ports MeetingInitiator; end MeetingScheduler;,第四章 软件体系结构描述,4.3 典型软件体系结构描述语言, C2对会议安排系统的描述,system MeetingSche

38、duler_1 is architecture MeetingScheduler with Attendee instance Att_1,Att_2,Att_3; ImportantAttendee instance ImpAtt_1,ImpAtt_2; MeetingInitiator instance MtgInit_1; end MeetingScheduler_1;,Wright,CMU : Robert Allen sourceCode:externalFile=“client.c” Component Server= Port receiveRequest; Properties

39、 macConcurrentClients:integer=1; multithreaded:Boolean=false; sourceCode:externalFile=“server.c Connector rpc=Rolescaller,callee Propertiessynchronous:boolean=true; maxRoles:integer=2; Attachments client.sendRequest to rpc.caller server.receiverRequest to rpc.callee ,属性(续),第4章 软件体系结构描述,4.4 典型软件体系结构描

40、述语言,设计约束,决定了体系结构设计如何演化的 在ACME中采用一阶谓词逻辑的约束语言来描述设计约束 约束可和任何设计元素相关联。约束有范围,如与一个系统关联,则可引用系统中的任何设计元素,如: Connected(c1,c2)-如果c1和c2之间至少有一个连接件,则取 true;否则false Reachable(c1,c2)-如果c2处于Connected(c1,*)的路径上,则 取true,否则false HasProperty(elt,propName)-如果元素elt有一个属性,取名为 propName,第4章 软件体系结构描述,4.4 典型软件体系结构描述语言,约束通过两种方式附加到设计元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论