《软件体系结构建模》PPT课件.ppt_第1页
《软件体系结构建模》PPT课件.ppt_第2页
《软件体系结构建模》PPT课件.ppt_第3页
《软件体系结构建模》PPT课件.ppt_第4页
《软件体系结构建模》PPT课件.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 软件体系结构建模,本章内容,2.1软件体系结构建模概述 2.2软件体系结构模型 2.3软件体系结构的形式化描述 2.4软件体系结构的生命周期 2.5软件体系结构的建模语言 2.6基于软件体系结构的开发,2.1软件体系结构建模概述,模型是对现实问题的逻辑抽象,能够从某些侧面来显示系统的重要性质,忽略其相关细节 软件体系结构建模,就是建立软件体系结构模型的方法和过程 软件体系结构模型以具体的形式来表现系统的框架结构 软件体系结构模型能够帮助人们从全局的角度来把握整个系统的框架结构,2.2软件体系结构模型,不同的风险承担者有着不同的软件质量属性需求,他们所关注的问题是不相同的 不同的人从框架

2、结构中所获取的信息也是不相同的,所以,软件体系结构模型应该是多维的,而不是一种单一的结构 软件体系结构模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型,2.2软件体系结构模型,结构模型:以构件、连接件及其之间的关联关系为基础来刻画系统的框架结构,力图通过结构来反映系统的语义 框架模型:框架模型与结构模型很类似,但是,它不太侧重框架的细节,而是更多地考虑了系统的整体结构 动态模型:动态模型是对结构模型和框架模型的补充,描述系统的“大颗粒”行为特性,例如:系统的重新配置和重新演化,2.2软件体系结构模型,过程模型:说明构造系统的步骤和过程,过程模型以某种过程脚本的形式来体现 功能模型

3、:该模型认为体系结构是由一组功能构件按层次组成的,下层构件向上层构件提供服务,可以看作是一种特殊的框架模型 5种模型各有所长,只有将5种模型有机地结合起来,才能形成一个完整的模型来刻画软件的框架结构,2.2软件体系结构模型,“4+1”视图模型,2.2软件体系结构模型,逻辑视图,也称概念视图,主要是支持系统功能需求的抽象描述,即系统最终将提供给用户什么样的服务,逻辑视图描述了系统的功能需求及其之间的相互关系 开发视图,也称模块视图,主要侧重于描述系统的组织,与逻辑视图密切相关,都描述了系统的静态结构 过程视图,主要侧重于描述系统的动态行为,即系统运行时所表现出来的相关特性,着重解决系统的可靠性、

4、吞吐量、并发性、分布性和容错性,2.2软件体系结构模型,物理视图,描述如何把系统软件元素映射到硬件上,通常要考虑系统的性能、规模和容错等问题,展示了软件在生命周期的不同阶段中所需要的物理环境、硬件配置和分布状况 场景视图,场景是用户需求和系统功能实例的抽象,设计者通过分析如何满足每个场景所要求的约束来分析软件的体系结构 逻辑视图定义了系统的目标,开发视图和过程视图提供了详细的系统设计实现方案,物理视图解决了系统的拓扑结构、安装和通信问题,场景反映了完成上述任务的组织结构,2.2软件体系结构模型,“4+1”视图模型的不足: “4+1”视图不能体现体系结构的构造是多层次抽象的过程,不能充分表达系统

5、的体系结构风格 数据作为系统的重要组成部分,在“4+1”视图中没有得到充分地体现 “4+1”视图不能充分地反映系统要素之间的联系,例如:构件、功能和角色之间的关联 在实现体系结构模型时,缺乏构造视图和建立视图之间关系的指导信息,2.2软件体系结构模型,软件体系结构模型分解为三类视图:模块视图、组件-连接件视图和分配视图 模块视图描述的是每个模块的功能和模块之间的相互关系,在模块视图下,又包括:分解视图、使用视图、分层视图和类视图等多个子视图 分配视图反映了软件元素在创建环境和执行环境中的分配关系,在分配视图下,又包括:部署视图、实现视图和工作分配视图等多个子视图,2.2软件体系结构模型,在组件

6、-连接件视图中,组件是计算的主要单元,连接件是组件之间相互通信的工具,组件根据其接口定义其所提供和需要的操作,而连接件则封装了两个或多个组件之间的互连协议,在组件-连接件视图下,又包括:进程视图、并发视图和共享数据视图等多个子视图 各种视图为软件质量属性的实现提供了依据,同时,软件质量属性的实现最终也要在各个视图中得以体现,各种视图构成了一个有机的整体,从不同的侧面来描述软件体系结构模型,2.3软件体系结构的形式化描述,软件体系结构,又被称为架构,指可预制和可重构的软件框架结构 构件是可预制和可重用的软件元素,是组成体系结构的基本计算单元和数据存储单元 连接件也是可预制和可重用的软件元素,是构

7、件之间的连接单元 构件和连接件之间的关系用约束来表示,2.3软件体系结构的形式化描述,软件体系结构核心模型(Software Architecture Core Model)=构件(Components)+连接件(Connectors)+约束(Constraints) 构件作为一个封装的实体,仅通过其接口与外部环境进行交互,而构件的接口是由一组端口组成的,每个端口表示构件与外部环境之间的交互点,2.3软件体系结构的形式化描述,连接件作为软件体系结构建模的主要实体,同样也有接口,连接件的接口是由一组角色构成的,每个角色定义了该连接所表示交互的参与者 软件体系结构:=软件体系结构核心模型|软件体系

8、结构风格 软件体系结构核心模型:=(构件,连接件,约束) 构件:=端口1,端口2,端口N,2.3软件体系结构的形式化描述,连接件:=角色1,角色2,角色M 约束:=(端口i,角色j), 软件体系结构风格:=管道-过滤器,客户/服务器,仓库,,2.3软件体系结构的形式化描述,软件体系结构的形式化描述,2.3软件体系结构的形式化描述,构件是具有一定功能和可明确辩识的软件单位 构件应该具备以下特点:语义完整性、语法正确性和可重用性 在结构上,构件是语义描述、通信接口和实现代码的复合体,是计算和数据存储单元,是计算与状态存在的场所 典型的构件包括:客户(Client)构件、服务器(Server)构件、

9、过滤器(Filter)构件和数据库(Database)构件等,2.3软件体系结构的形式化描述,构件可以小到只有一个过程,也可以大到包含一个应用程序,可以包含函数、对象、进程、二进制对象、类库和数据包等 构件之间是相互独立的,构件隐藏了其具体实现细节,通过接口来提供服务 构件内部包含多种属性,例如:端口、类型、语义、约束、演化和非功能属性等,2.3软件体系结构的形式化描述,构件组合应该遵循以下三个原则: 使参与组合的构件保持自身的独立性,从而有利于构件和所形成的复合构件具有更强的复用能力和演化能力 构件之间的组合应该由构件以外的实体来实施,例如:连接件,实质上,构件组合就是构件之间的交互,而不是

10、构件服务的简单罗列 构件组合与单个构件分开,意味着构件的交互与计算分离,降低了构件之间的耦合,有利于构件和交互模式的复用,2.3软件体系结构的形式化描述,构件组合应有助于根据参与组合的构件的行为和性质来推导复合构件的行为和性质,从而有助于基于可复用构件的应用系统的开发 在软件体系结构中,连接件是用来建立构件之间交互和支配这些交互规则的构造模块 构件之间的交互包括消息和信号量的传递,功能和方法的调用,数据的传送和转换,以及构件之间的同步关系和依赖关系等,2.3软件体系结构的形式化描述,常见的连接件有:管道-过滤器体系结构风格中的管道(pipe)、客户/服务器体系结构风格中的通信协议和通信机制、以

11、及数据库和应用程序之间的SQL连接等 连接件的接口是其所关联构件的一组交互点,这些交互点被称为角色 角色代表了参与连接的构件的作用和地位,体现了连接所具有的方向性 角色有主动和被动、请求和响应之分,2.3软件体系结构的形式化描述,连接件的主要特性是:可扩展性、互操作性、动态连接性和请求响应性 连接件的可扩展性是指:连接件允许动态地改变被关联的构件集合和交互关系 互操作性是指:被连接的构件通过连接件对其它构件进行直接或间接操作 动态连接性是指:对连接的动态约束,连接件对所关联的构件可以实施不同的动态处理 请求响应性是指响应的并发性和时序性,2.3软件体系结构的形式化描述,对于构件而言,连接件是粘

12、合剂,是构件交互的实现 连接件和构件之间的区别主要在于它们在软件体系结构中承担着不同的作用 连接件也是一组对象,把不同的构件连接起来,形成体系结构的一部分 约束(Constraint)是构件与其关系之间所必须满足的条件和限制,描述了系统的配置关系和拓扑结构,确定了体系结构调整的构件和连接件的关联关系,2.3软件体系结构的形式化描述,约束是基于规则和参数进行描述的 体系结构约束提供了相关限制,以确定构件是否正确、连接接口是否匹配、以及连接件的通信是否正确,同时,说明了实现要求行为的语义组合 约束将软件体系结构与系统需求紧密地联系起来,在体系结构约束中,要求构件端口和连接件角色之间是显示连接的,2

13、.4软件体系结构的生命周期,软件体系结构工程=形式化模型+软件技术+软件工程 其中,形式化模型指软件体系结构模型 软件体系结构生命周期是指:软件体系结构在整个生存期间所经历的阶段和步骤 软件体系结构的非形式化描述,经常用于软件体系结构产生的初期,其思想通常是非常简单的,常常由软件工程人员使用自然语言来表示它的概念和原则,2.4软件体系结构的生命周期,软件体系结构的规范化描述和分析,通过使用合适的数学理论模型对非形式化描述进行规范,得到了软件体系结构的形式化定义,使软件体系结构的描述精确、无歧义 软件体系结构的求精与验证,大型系统的体系结构总是从抽象到具体,逐步求精而得到的 软件体系结构的实施,

14、将求精后的软件体系结构应用于系统设计过程中,将构件和连接件有机地组织在一起,形成系统的设计框架,2.4软件体系结构的生命周期,软件体系结构的演化和扩展,系统需求的变化会引起体系结构的扩展和改动,这就是软件体系结构的演化 软件体系结构的评价和度量,以体系结构为基础,开展系统的设计与实现工作,根据系统的运行情况,对体系结构进行定性的评价和定量的度量,为体系结构重用提供依据,并从中取得经验教训 软件体系结构的终结,如果一个系统的体系结构经过了多次演化和修改,其框架结构已经变得难以理解,更重要的是不能满足软件设计要求,2.4软件体系结构的生命周期,软件体系结构的生命周期,2.5软件体系结构的建模语言,

15、在描述软件的框架结构时,常用的方法主要有两种: 实践派风格,使用通用的建模符号,将软件体系结构设计与描述同传统的系统建模视为一体 学院派风格,使用了体系结构描述语言(Architecture Description Language,ADL) ,侧重于软件体系结构形式化理论的研究,2.5软件体系结构的建模语言,实践派风格包括:图形表示方法、模块内连接语言、基于构件的系统描述语言和UML描述方法 图形表示方法,使用矩形来代表系统的过程、模块和子系统,利用有向线段来描述它们之间的关系,这样,就形成了所谓的线框图 模块内连接语言,采用一种或几种程序设计语言的模块连接起来的模块内连接语言,具有程序设计

16、语言的严格语义基础,但是,在开发层次上过于依赖程序设计语言,限制了处理和描述高层次软件体系结构元素的能力,2.5软件体系结构的建模语言,基于构件的系统描述语言,将软件描述成由许多特定形式、相互作用的特殊实体所形成的组织或系统,一般而言,这种描述方法都是针对特定领域的特殊问题,不太适合描述和表达一般意义上的软件体系结构 UML描述方法,可以将Kruchten的“4+1”模型映射到UML图上,逻辑视图利用类图来表示,过程视图映射成活动图,开发视图使用构件图来描述,物理视图映射为配置图,场景用顺序图和协作图来表示,2.5软件体系结构的建模语言,在学院派风格中,倡导使用体系结构描述语言来刻画软件的框架

17、结构 ADL是使用语言学方法对体系结构进行形式化描述的一种有效手段,可以解决非形式化描述的不足和缺陷 在设计ADL的构件描述规范时,应该考虑以下几个方面的内容:,2.5软件体系结构的建模语言,接口:构件通过接口与外界进行交互,接口定义了构件所提供的属性、服务、消息和操作,为了对构件和包含该构件的体系结构进行分析,ADL应能描述构件对外界环境的需求 类型:构件类型将构件功能抽象为可复用的模块,一个构件类型在一个体系结构中可以被多次实例化,一个构件类型也可以在多个体系结构中被使用,针对这一特性,ADL应该提供相应的支持,2.5软件体系结构的建模语言,语义:构件语义是关于构件行为的高层描述,可用于分

18、析软件体系结构、判断约束是否满足以及保证不同层次体系结构之间的一致性,ADL应该提供相应的实现机制 约束:约束是系统及其组成部分的某种属性描述,破坏约束将导致不可接受的错误,ADL应该提供相应的描述方法 演化:构件演化是指对接口、行为和实现的修改,ADL应该保证这种修改以系统化的方式来进行,2.5软件体系结构的建模语言,非功能特性:构件的非功能特性包括安全性、可移植性和稳定性等,通常无法用行为规范来进行描述,因此,ADL应该提供描述非功能特性的相关手段 配置关系描述了构件和连接件之间的关联关系 配置关系的描述可以使我们对系统的分布性、并发性、可靠性、安全性和稳定性有更加清楚的认识,2.5软件体

19、系结构的建模语言,在设计ADL的配置关系描述规范时,应该考虑以下几个方面的内容: 可理解性:在使用ADL描述配置关系时,应该使所有的参与者都能够得到明确的系统结构信息 组合能力:ADL应该能够提供层次化的抽象机制,在不同的层次上对软件体系结构进行描述,这将有利于构件的复用 对异构的支持:ADL应该具有开放性,能够集成异构的构件和连接件,2.5软件体系结构的建模语言,可伸缩能力:ADL应该能够对将来可能扩大规模的软件系统规范和开发提供直接的支持 进化能力:在配置关系上,ADL应该提供进化的描述手段,例如:对配置进行增、删、替换和重连接的说明 动态支持:在系统执行时,对体系结构能够进行修改,在某些

20、情况下,ADL应该提供相应的支持 基于UML的软件体系结构描述 UML模型由多种视图组成,每种视图从不同的角度和侧面来描述应用系统,2.5软件体系结构的建模语言,用例图是从用户的角度来描述系统功能,指出各功能的操作者,用于捕获业务需求 类图描述了系统中类的静态结构,定义了类的内部结构以及类之间的关联关系 包图描述了系统的层次结构,用于捕获系统的逻辑结构 活动图描述了满足用例要求所要进行的活动以及活动之间的约束关系 合作图描述对象之间的协作,显示对象之间的动态合作关系,2.5软件体系结构的建模语言,顺序图描述对象之间的动态合作关系,强调对象之间的消息发送顺序,显示对象之间的交互关系 状态图描述了

21、一类对象所具有的可能状态及状态之间的转移关系 组件图描述了程序代码的物理结构 配置图定义了软、硬件的物理体系结构,用于捕获系统硬件资源和软件资源之间的映射关系,2.5软件体系结构的建模语言,2.5软件体系结构的建模语言,在使用UML描述体系结构时,主要存在着三种途径: 不改变UML的用法,将UML看作是一种软件体系结构描述语言,直接对体系结构进行建模 利用UML的扩展机制,约束UML元模型以支持体系结构建模需求 对UML元模型进行扩充,增加体系结构建模元素,这种方法是对UML的元模型进行扩展,使UML具有新的建模能力,2.5软件体系结构的建模语言,对于每种体系结构元素,在UML中几乎都能找到与

22、之相对应的元素: UML的用例、类、组件、结点、包和子系统与体系结构中的构件相对应 UML的关系支持体系结构中的连接件 UML的接口支持体系结构中的接口 UML中的规则相当于体系结构中的约束 软件体系结构的配置可以使用UML的包图、组件图和配置图来描述,2.5软件体系结构的建模语言,UML预定义及用户自己扩展的构造型,例如:精化和复制等,能够较好地表达体系结构的行为 逻辑视图可以采用UML用例图来实现 在开发视图中,使用UML的类图、对象图和构件图来表示模块,用包来表示子系统,利用连接表示模块或子系统之间的关联 过程视图可以采用UML的状态图、顺序图和活动图来实现,2.5软件体系结构的建模语言

23、,物理视图定义了功能单元的分布状况,描述用于执行用例和保存数据的业务地点,可以使用UML的配置图来实现 在选择UML来描述软件体系结构时,会有以下几方面的优点: UML是当前主流的面向对象开发语言,已经被越来越多的人所采用,容易被人们接受 UML是一个开发标准,具有良好的扩展机制,2.5软件体系结构的建模语言,UML引入了形式化定义(对象约束语言),是一种半形式化的建模语言 UML有丰富的支持工具,与程序设计语言和开发过程无关 UML支持多视图结构,能够从不同角度来刻画软件体系结构,可以有效地用于分析、设计和实现过程 UML提供了丰富的建模概念和表示符号,能够满足典型的软件开发过程 UML的语

24、义比较丰富,是一种通用和标准的建模语言,易于理解和交流,发展已经非常成熟,2.5软件体系结构的建模语言,在选择UML来描述软件体系结构时,也存在着一些问题: 对体系结构的构造性建模能力不强,具体来说,UML还缺乏对体系结构风格和显式连接件的直接支持 对体系结构的描述只能到达非形式化的层次,不能保证软件开发过程的可靠性,不能充分地表现软件体系结构的本质,2.5软件体系结构的建模语言,基于UML的软件体系结构(UML-Based Software Architecture,UBSA),是由一组互相协作的组件构成 通过组件及其之间的协作关系来定义软件系统的体系结构 在UBSA中,通过扩展点(Exte

25、nsion Points)来组装用户开发的组件,以适应用户需求领域的不断变化,2.5软件体系结构的建模语言,UBSA=Components, Connectors, Configurations, Interfaces, Roles, Ports, Extension Points,2.5软件体系结构的建模语言,基于ADL的软件体系结构描述语言 ACME、Unicon、Wright、Darwin、Aesop、SADL、MetaH、Rapide和C2 ACME ACME是一种体系结构互换语言,支持从一种ADL向另一种ADL的规格说明转换 ACME的核心概念包括7种类型实体:构件、连接件、系统、端

26、口、角色、表述和表述图,2.5软件体系结构的建模语言,2.5软件体系结构的建模语言,Unicon Unicon的设计紧紧围绕着构件和连接件这两个基本概念 构件代表系统的计算单元和数据存储场所,用于实现计算和数据存储的分离,将系统分解为多个独立的部分,每一部分都有完善的语义和行为 连接件是实现构件交互的类,在构件交互中起中介作用 在Unicon中,定义构件的语法如下:,2.5软件体系结构的建模语言,在Unicon中,定义连接件的语法如下: 使用Unicon来描述客户/服务器体系结构:,2.5软件体系结构的建模语言,Wright Wright的主要思想是把连接件定义为明确的语义实体,这些实体用协议

27、的集合来表示,协议代表了交互的各个参与角色及其相互作用 Wright提供了显式和独立的连接件规约,同时支持复杂连接的定义 Wright定义连接件和构件的实例,在相应的端口和角色之间建立连接(Attachment),从而得到系统的配置关系,2.5软件体系结构的建模语言,在Wright语言中,体系结构描述分为三个部分: 第一部分定义了构件和连接件的类型,构件类型利用端口(ports)和构件规格(component-spec)来说明,每一个端口定义了该构件与其所处环境之间的逻辑交互点 第二部分是构件和连接件实例的集合 在第三部分中,通过描述构件的哪个端口与连接件的哪个角色相关联,来定义构件实例和连接

28、件实例的组合方式,2.5软件体系结构的建模语言,使用Wright语言描述的客户/服务器体系结构示例:,2.5软件体系结构的建模语言,Darwin Darwin使用接口来定义构件类型,接口包括提供服务接口和请求服务接口 系统配置定义了构件实例,给出了提供服务接口和请求服务接口之间的绑定关系 Darwin没有提供显式的连接件,在定义体系结构风格时,通常给出它的交互模型,把构件的定义留给体系结构设计师,2.5软件体系结构的建模语言,Aesop Aesop采用了产生式方法,将一组风格描述和一个普遍使用的共享工具包联系在一起 其目标是建立一个工具包,为特定领域的体系结构快速构建提供设计支持环境,2.5软

29、件体系结构的建模语言,SADL SADL语言明确区分了多种体系结构对象,例如:构件和连接件,明确了它们的使用目的和适用范围 SADL语言不仅定义了体系结构的功能,而且也定义了体系结构特定类的约束 SADL的一个独特方面是对体系结构层次的表示和推理,2.5软件体系结构的建模语言,MetaH MetaH主要支持实时、容错、安全、多处理和嵌入式软件系统的分析、验证以及开发 MetaH不仅能够使用文本方式的语法来表示体系结构,还能以图形方式来描述体系结构 在MetaH规格说明中,实体种类分为低层实体和高层实体,低层实体描述了源代码模块(例如:子程序和包)和硬件元素(诸如:内存和处理器),高层实体说明了

30、如何利用已定义的实体来组合形成新实体(例如:宏、系统和应用程序),2.5软件体系结构的建模语言,Rapide Rapide是一种可执行的ADL,其目的在于:通过定义模拟基于事件的行为,来对分布式并发系统进行建模 通过事件偏序集来刻画系统的行为 构件计算由构件接收的事件来触发,并进一步产生事件传送到其它构件,由此触发了其它计算 Rapide模型的执行结果是一个事件集合,其中的事件满足一定的因果和时序关系,2.5软件体系结构的建模语言,C2 在C2语言中,连接件负责构件之间的消息传递 构件维持状态,执行操作,通过top和bottom端口和其它构件进行信息交互 构件之间的消息交换不能直接进行,只能通过连接件来完成 每个构件端口最多只能和一个连接件相连,而连接件可以和任意数目的构件和连接件相连,2.5软件体系结构的建模语言,使用C2来描述会议安排系统,其体系结构如下所示:,2.5软件体系结构的建模语言,ADL的优点: 能为软件建立精确和无二义性的模型,有效地支持体系结构的求精和验证 ADL的缺点: 研究尚处于初级阶段,ADL自身所能提供的技术支持还很有限 没有统一可用的形式化描述规范和集成开发工具,还不能对软件工程生命周期的各个阶段提供全面的支持,2.5软件体系结构的建模语言,易用性比UML差,不利于开发人员的沟通和理解,作为新兴技术,发展比较缓慢 每种ADL都有各自的适用领域

温馨提示

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

评论

0/150

提交评论