软件体系结构描述.ppt

上传人:xian****812 文档编号:16057933 上传时间:2020-09-16 格式:PPT 页数:128 大小:965.56KB
收藏 版权申诉 举报 下载
软件体系结构描述.ppt_第1页
第1页 / 共128页
软件体系结构描述.ppt_第2页
第2页 / 共128页
软件体系结构描述.ppt_第3页
第3页 / 共128页
资源描述:

《软件体系结构描述.ppt》由会员分享,可在线阅读,更多相关《软件体系结构描述.ppt(128页珍藏版)》请在装配图网上搜索。

1、第4章 软件体系结构描述和设计,本章结构,4.1 软件体系结构描述方法 4.2 软件体系结构描述框架标准 4.3 体系结构描述语言 4.4 典型的软件体系结构描述语言(C2) 4.5 软件体系结构与UML 4.6 可扩展标记语言 4.7 基于XML的软件体系结构描述语言 4.8 软件体系结构的设计,引言,当前对软件体系结构的描述在很大程度上还停留在非形式化的基础上,依赖于软件设计师个人的经验和技巧。 非形式化的描述不易被开发人员理解,不利于分析和开发的进行。 形式化的、规范化的体系结构描述对于体系结构的设计和理解都是非常重要的。 由非形式化到形式化的过程。, 描述方法的种类,第四章 软件体系结

2、构描述,4.1 软件体系结构描述方法, 图形表达工具 模块内连接语言 基于软构件的系统描述语言 软件体系结构描述语言, 图形表达工具,第四章 软件体系结构描述,4.1 软件体系结构描述方法,简洁易懂 容易使用 使用广泛 不 规 范 不 精 确, 模块内连接语言,第四章 软件体系结构描述,4.1 软件体系结构描述方法, 采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言(MIL)。由于程序设计语言和模块内连接语言具有严格的语义基础,因此它们能支持对较大的软件单元进行描述,诸如定义/使用和扇入/扇出等操作。例如,Ada语言采用use实现包的重用,Pascal语言采用过程(函数)模块的交

3、互等。 MIL方式对模块化的程序设计和分段编译等程序设计与开发技术确实发挥了很大的作用。但是由于这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,因此限制了它们处理和描述比程序设计语言元素更为抽象的高层次软件体系结构元素的能力。, 基于软构件的系统描述语言,第四章 软件体系结构描述,4.1 软件体系结构描述方法, 基于软构件的系统描述语言将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。 例如,一种多变配置语言就可以用来在一个较高的抽象层次上对系统的体系结构建模,Darwin最初用作设计和构造复杂分布式系统的配置说明语言,因具有动态特性,也可用来描述动态

4、体系结构。 这种表达和描述方式虽然也是较好的一种以构件为单位的软件系统描述方法,但是他们所面向和针对的系统元素仍然是一些层次较低的以程序设计为基础的通信协作软件实体单元,而且这些语言所描述和表达的系统一般而言都是面向特定应用的特殊系统,这些特性使得基于软构件的系统描述仍然不是十分适合软件体系结构的描述和表达。, 软件体系结构描述语言,第四章 软件体系结构描述,4.1 软件体系结构描述方法, 软件体系结构的第四种描述和表达方法是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言ADL。 由于ADL是在吸收了传统程序设计中的语义严格精确的特点

5、基础上,针对软件体系结构的整体性和抽象性特点,定义和确定适合于软件体系结构表达与描述的有关抽象元素,因此,ADL是当前软件开发和设计方法学中一种发展很快的软件体系结构描述方法,目前,已经有几十种常见的ADL。, 软件体系结构的应用现状,第一章 软件体系结构概论,1.4 体系结构的应用现状, 软件体系结构描述语言 ADL(体系结构描述语言)提供了具体的语法与刻画体系结构的概念框架。ADL使得系统开发者能够很好地描述他们设计的体系结构,以便与他人交流,能够用提供的工具对许多实例进行分析。 对于ADL现在也是无统一认识。书上第四章有介绍。 请参阅软件体系结构理论与实践,冯冲 江贺 冯静芳 编著,人民

6、邮电出版社。 第2章 软件体系结构语言(ADL), IEEE P1471,第四章 软件体系结构描述,4.2 软件体系结构描述框架标准, IEEE P1471于2000年9月21日通过IEEE-SA标准委员会评审。 IEEE P1471适用于软件密集的系统,其目标在于:便于体系结构的表达与交流,并通过体系结构要素及其实践标准化,奠定质量与成本的基础。 IEEE P1471详细介绍了一套体系结构描述的概念框架,并给出建立框架的思路。但如何描述以及具体的描述技术等方面缺乏更进一步的指导。, Rational,第四章 软件体系结构描述,4.2 软件体系结构描述框架标准, Rational起草了可重用的

7、软件资产规格说明,专门讨论了体系结构描述的规格说明,提出了一套易于重用的体系结构描述规范。该建议草案已经提交OMG。 基于RUP(Rational United Process)、采用UML模型描述软件的体系结构,认为体系结构描述的关键是定义视点、视图以及建模元素之间的映射关系。(4个视点、7个体系结构视图) 与IEEE P1471相比,该建议标准的体系结构描述方案涉及面比较窄,所注重的层次比较低,因而更具体。由于将体系结构的描述限于UML和RUP,具有一定的局限性,但该建议标准结合了业界已经广泛采用的建模语言和开发过程,因而易于推广,可以有效实现在跨组织之间重用体系结构描述结果。,第四章 软

8、件体系结构描述,4.3 软件体系结构描述语言,ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。其三个基本元素是:构件、连接件、体系结构配置。 主要的体系结构描述语言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wright等,尽管它们都描述软件体系结构,却有不同的特点。 这些ADL强调了体系结构不同的侧面,对体系结构的研究和应用起到了重要的作用,但也有负面的影响。每一种ADL都以独立的形式存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使设计人员很难选

9、择一种合适的ADL,若设计特定领域的软件体系结构又需要从头开始描述。, 软件体系结构的定义,第一章 软件体系结构概论,1.3 体系结构的兴起和发展, Mary Shaw和David Garlan (1993年) 软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。 体系结构问题包括总体组织和全局控制,通讯协议,同步,数据存取,给设计元素分配特定功能,设计元素的组织、规模和性能,在各设计方案间进行选择等。 软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理

10、分布与合成,设计方案的选择、评估与实现等。,软件体系结构 构件,连接件,约束 ,第四章 软件体系结构描述,4.3 软件体系结构描述语言, 构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统; 抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节; 重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;, ADL与其他语言的比较(1),典型的ADL在充分继承和吸收传统程序设计语言的精确性和严格性特点的同时,还应具有:构造、抽象、重用、组合、异构、分析和推理等各种能力和特性。,第四章 软件

11、体系结构描述,4.3 软件体系结构描述语言, 组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合; 异构能力:ADL允许多个不同的体系结构描述关联存在; 分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。, ADL与其他语言的比较(2),第四章 软件体系结构描述,4.3 软件体系结构描述语言, ADL与需求语言的区别:后者描述的是问题空间,而前者扎根于解空间。 ADL与建模语言的区别:后者对整体行为的关注要大于对部分的关注,而ADL集中在构件的表示上。 ADL与传统的程序设计语言的构成元素

12、既有许多相同和相似之处,又各自有着很大的不同。, ADL与其他语言的比较(3),第四章 软件体系结构描述,4.3 软件体系结构描述语言, 典型元素含义比较,第四章 软件体系结构描述,4.3 软件体系结构描述语言, 常见的软件体系结构元素,第四章 软件体系结构描述,4.3 软件体系结构描述语言, ADL的构成要素,软件体系结构的基本构成要素: 构件、连接件、体系结构配置。 1. 构件:一个计算单元或数据存储;是计算与状态存在的场所。 构件包含的多种属性: 接口、类型、语义、约束、演化和非功能属性等。,体系结构的核心模型,第四章 软件体系结构描述,4.3 软件体系结构描述语言, ADL的构成要素,

13、2. 连接件:用来建立构件间的交互以及支配这些交互规则 的体系结构构造模块。 连接件可以不与实现系统中的编译单元对应。 异构连接。 连接件包含的属性:角色。,第四章 软件体系结构描述,4.3 软件体系结构描述语言, ADL的构成要素,3. 体系结构配置或拓扑: 描述体系结构的构件与连接件的连接图。 同时检查语法、说明语义。 多视图、多场景的体系结构说明方法。 在不同层次上描述软件系统;异构情况下的配置。,第四章 软件体系结构描述,4.3 软件体系结构描述语言, ADL的构成要素,软件体系结构的设计在需求分析之后,软件设计之前。描述好体系结构,做好承上启下的工作很重要。 一 方 面:体系结构描述

14、如何向其他文档转移; 另一方面:如何利用需求分析成果来直接生成系统的 体系结构说明。 现在的ADL大多与领域相关。目前还没有通用的体系结构描述语言。,当前常见的一些体系结构描述语言、方法: ACME Wright C2 UniCon Darwin AESOP Rapide Weaves SADL UML Gestalt Demeter FR ControlH & MetaH, C2风格,通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2风格中的系统组织规则如下: 系统中的构件和连接件都有一个顶部和一个底部; 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与

15、构件之间的直接连接是不允许的; 一个连接件可以和任意数目的其它构件和连接件连接; 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。, C2背景知识,C2是一种用于用户界面密集的系统的软件体系结构风格。 在C2风格的体系结构中,连接件在构件之间转发消息,构件负责维护状态,进行操作,通过两个接口(顶端接口和底端接口)和其他构件交换消息。 构件之间不能发送消息,必须通过连接件。构件之间的通信只能通过消息传递来实现,不允许使用共享内存方式通信。, C2风格的中心原则,C2风格的中心原则是有限可视原则,或者说是下层独立的原则: 在C2风格的体系结构中,某一构件只能感知层次高于自己的构件所

16、提供的服务,而不能感知到层次比自己更低的构件的服务。 这种单向的传递性,有利于系统的维护和扩展。, C2风格的通信规则,C2中,所有构件间的通信必须通过消息来实现,这也是构件之间的唯一通信途径。每个构件都有一个顶端域、一个底端域。构件的顶端域定义了构件可以对哪些通知做出响应,以及可以发出哪些请求;构件的底端域定义了可以向下层发送哪些通知,以及可以响应下层的哪些请求。, C2风格,第四章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2和其提供的设计环境(Argo)支持采用基于时间的风格来描述用户界面系统,并支持使用可替换、可重用的构件开发GUI的体系结构。 在C2中,连接件负责构件之

17、间消息的传递,而构件维持状态、执行操作并通过两个名字分别为“top”和“bottom”的端口和其它的构件交换信息。 每个接口包含一种可发送的消息和一组可接收的消息。构件之间的消息要么是请求其它构件执行某个操作的请求消息,要么是通知其他构件自身执行了某个操作或状态发生改变的通知消息。, C2概述(1),第四章 软件体系结构描述,4.4 典型软件体系结构描述语言, 构件之间的消息交换不能直接进行,而只能通过连接件来完成。每个构件接口最多只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连。 请求消息只能向上层传送而通知消息只能向下层传送。 通知消息的传递只对应于构件内部的操作,而和接收消

18、息的构件的需求无关。 C2对构件和连接件的实现语言、实现构件的线程控制、构件的部署以及连接件使用的通讯协议等都不加限制。, C2概述(2),第四章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对构件接口的描述,第四章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对构件的描述,interface_requests := request; | null; interface_notifications := notification; | null; request := message_name(request_parameters) request_paramete

19、rs := to component_nameparameter_list notification := message_nameparameter_list,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 interfa

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

21、tendee); RequestWithdrawal(to ImportantAttendee); AddPrefDates(); MarkMtg(d:date;l:lov_type);,第四章 软件体系结构描述,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

22、, GetEquipReqts, GetLocPrefs; received_messages PrefSet may_generate 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

23、RequestWithdrawal xor MarkMtg; received_messages LocPref always_generate null; end MeetingInitiator;,第四章 软件体系结构描述,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(

24、); GetEquipReqts(); RemoveExclSet(); RequestWithdrawal(); AddPrefDates(); MarkMtg(d:date;l:loc_type);,第四章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对Attendee构件的描述(2),behavior received_messages GetPrefSet always_generate PrefSet; received_messages AddPrefDates always_generate PrefSet; received_messages GetExclSet

25、 always_generate ExclSet; received_messages GetEqipReqts always_generate EqipReqts; received_messages RemoveExclSet always_generate ExclSet; received_messages ReuestWithdrawal always_generate null; received_messages MarkMtg always_generate null; end Attendee;,第四章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对Import

26、antAttendee构件的描述,component ImportantAttendee is subtype Attendee(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.4

27、典型软件体系结构描述语言, C2对体系结构的描述,architecture MeetingScheduler is conceptual_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; arch

28、itectural_topology connector AttConn connections top_ports Attendee; bottom_ports MainConn; connector ImportantAttConn connections top_ports ImportantAttendee; bottom_ports MainConn; connector MainConn connections top_ports AttConn;ImportantAttConn; bottom_ports MeetingInitiator; end MeetingSchedule

29、r;,第四章 软件体系结构描述,4.4 典型软件体系结构描述语言, C2对会议安排系统的描述,system MeetingScheduler_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;,第四章 软件体系结构描述,4.5 软件体系结构与UML, UML简介, UML(Unifi

30、ed Modeling Language)是下面这些最好的建模方法中最好部分的集成: 商务流程模型(Work Flow) 对象建模方法 软构件建模思想 UML是一种用可视化方法对软件系统进行描述、实施和说明的标准语言。 支持用不同实现技术进行的软件开发全过程。,第四章 软件体系结构描述,4.5 软件体系结构与UML, UML简介,第四章 软件体系结构描述,4.5 软件体系结构与UML, UML简介,第四章 软件体系结构描述,4.5 软件体系结构与UML, UML简介,第四章 软件体系结构描述,4.5 软件体系结构与UML, 用例图,用于显示若干角色以及这些角色与系统提供的用例之间的连接关系。用

31、例是系统提供的功能的描述。,第四章 软件体系结构描述,4.5 软件体系结构与UML, 类图,表示系统中的类和类与类之间的关系,它是对系统静态结构的描述。,第四章 软件体系结构描述,4.5 软件体系结构与UML, 顺序图,用来反映若干个对象之间的动态协作关系,也就是随着时间的推移,对象之间是如何交互的,第四章 软件体系结构描述,4.5 软件体系结构与UML, 协作图,描述对象间的协作关系,协作图跟顺序图相似,显示对象间的动态合作关系。 如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择协作图。这两种图合称为交互图。,第四章 软件体系结构描述,4.5 软件体系结构与UML, 状态图,描述

32、类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充,第四章 软件体系结构描述,4.5 软件体系结构与UML, 活动图,描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动,第四章 软件体系结构描述,4.5 软件体系结构与UML, 构件图,描述代码构件的物理结构及各构件之间的依赖关系,第四章 软件体系结构描述,4.5 软件体系结构与UML, 部署图,部署图定义系统中软硬件的物理体系结构,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模,UML的四层元模型体系结构。 元-元模型层定义了元模型层的规格说明语言; 元模型层为给定

33、的建模语言定义规格说明; 模型层用来定义特定软件系统的模型; 用户对象用来构建给定模型的特定实例。,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, 语义约束 由对象约束语言OCL表示,OCL基于一阶谓词逻辑,每一个OCL表达式都处于一些UML模型元素的背景下(由“self”引用),可使用该元素的属性和关系作为其项(term),同时OCL定义了在集合(sets)、袋(bags)等上的公共操作集和遍历建模元素间关系的构造,因此,其它建模元素的属性也可以作为它的项。,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, UML中的通用表示 (

34、1)字符串:表示有关模型的信息; (2)名字:表示模型元素; (3)标号:不同于编程语言中的标号,是用于表示或说明图形符号的字符串; (4)特殊字符串:表示某一模型元素的特性; (5)类型表达式:声明属性、变量及参数,含义同编程语言中的类型表达式; (6)实体类型:它是UML的扩充机制,运用实体类型可定义新类型的模型元素; (7)语义部分是对UML的准确表示,由三部分组成。,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, UML语义部分 通用元素:主要描述UML中各元素的语义。通用元素是UML中的基本构造单位,包括模型元素和视图元素,模型元素用来构造系统,视图元

35、素用来构成系统的表示成分; 通用机制:主要描述使UML保持简单和概念上一致的机制的语义。包括定制、标记值、注记、约束、依赖关系、类型-实例、类型-类的对应关系等机制; 通用类型:主要描述UML中各种类型的语义。这些类型包括布尔类型、表达式类型、列表类型、多重性类型、名字类型、坐标类型、字符串类型、时间类型、用户自定义类型等。 三部分不是相互独立的,而是相互交叉重叠、紧密相连,共同构成了UML的完整语义。,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, 会议安排系统的类图,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, 会议安排系统

36、类接口,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, C2连接件模型,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, 细化的类图,第四章 软件体系结构描述,4.5 软件体系结构与UML, 直接使用UML建模, 会议安排系统的协作图,第四章 软件体系结构描述,4.5 软件体系结构与UML, 使用UML扩展机制,自学,第四章 软件体系结构描述,4.6 可扩展标记语言, XML语言简介,XML(extensible markup language) 可扩展标记语言,XML结合了SGML和HTML的优点并消除了其缺点。 XML是用来描述

37、数据的;用户可以创建自己需要的标记,当需要时,告诉浏览器如何显示这些标记就可以了。另外,XML标记描述的是文档的结构和意义,不描述页面元素的格式化。文档本身只说明文档包括什么标记,而不是说明文档看起来是什么样的。,第四章 软件体系结构描述,4.6 可扩展标记语言, XML相关技术简介,XML主要是一种数据描述方法。XML相关的技术有很多,但主要有三个:Schema、XSL和XLL。, DTD与Schema CSS和XSL Xpath,Xpointer与Xlink XML名字空间 XML查询语句 资源描述框架 DOM、SAX和XML解析器,第四章 软件体系结构描述,4.8 软件体系结构的设计,

38、概述,当前,对软件体系结构设计的共识之一是,体系结构设计应当支持对软件系统质量的需求(非功能特性的需求)。这是因为,软件体系结构包括了早期的设计决定,体现了系统的全局结构,对于整个系统的质量有着决定性的影响。为了确保各种质量因素,大家都认为正确地对体系结构设计进行抽象很有必要。但是,正如软件体系结构的其他概念和方法一样,对于体系结构设计人们也没有形成统一的认识。,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则, 抽象 分而治之 封装和信息隐蔽 模块化 高内聚和低耦合 关注点分离 策略和实现的分离 接口和实现的分离,基本原则:,第四章 软件体系结构描述,4.8 软件体

39、系结构的设计, 体系结构设计的原则,抽象是人们用来处理复杂性问题的基本原理之一。抽象有几种形式,如数据抽象、对象抽象、实体抽象、行为抽象、过程抽象、虚拟机抽象等。数据、实体的抽象使得软件操作的对象和参数是针对逻辑结构,而非存储结构的。行为、过程的抽象使得操作的指派是依据标识而非地址,由此产生了操作的接口和动态约束描述。在处理系统复杂性方面,抽象起到了重要作用。减少部件耦合、接口与实现的分离等,都得益于抽象。,1.抽象,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,抽象的一个重要特性就是可替换性。对象的抽象把具有相同基类的导出类看作是同类,加上过程抽象带来的在过程名

40、称下的“偷梁换柱”,因此实现了动态约束,使面向抽象问题而不是实际结构的抽象程序设计得以实现。大量的结构模式和应用问题都是基于这个思想而得到实现的。,1.抽象,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,这条原理是众所周知的,它来自古时的政治,也来自诸如归并分类的组合算法。在软件体系结构中该原理得到大量应用。例如,自上而下设计将一个任务或部件分成可以独立设计的更小的部分。该原理经常被用来作为实现注意点分离的方法。,2.分而治之,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,封装是将构成抽象的属性和行为结合在一起,并区分不同抽象的方法。

41、封装为不同抽象之间提供了明确的界限。封装有利于非功能特性实现,例如可变性和可重用性。 封装包括内部构成和操作服务两个方面。例如,通过对象、模块设计和访问接口设计分别提供了这两种封装。,3.封装和信息隐蔽,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,信息隐蔽是软件工程的最基本和最重要的原理之一。 信息隐蔽对用户隐藏了部件的实现细节,用来更好地处理系统的复杂性和减少各部件之间的耦合。为了更好地应用,用户不需要知道的细节都应该由部件隐藏起来。封装原理经常被用来作为实现信息隐藏的方法。信息隐藏也可以通过接口与实现的分离的原理来实现。,3.封装和信息隐蔽,第四章 软件体系

42、结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,然而,部件应该隐藏什么取决于具体的应用。在一个应用中客户不需要知道的方面或许在另外一个应用中就需要看到。例如,在一个应用中为了提高运行性能,可能需要对某一部件的内部数据结构进行直接访问;而在另外一个应用中,可能因为对其性能已经满意了,就不需要对其数据的直接访问了。,3.封装和信息隐蔽,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,模块化主要关心的是如何将一个软件系统分解成子系统和部件,其主要任务就是决定怎样将构成应用的逻辑结构物理地分割成代码实体。模块化的主要做法,就是在一个系统内引入具有良好定义的分界,

43、依此来处理系统的复杂性。模块的作用是为了一个应用的功能和责任的物理容器。模块化与封装原理的联系非常密切。,4.模块化,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,由此带来了复杂系统资源管理、维护和应用的逻辑和条理性,增加了应用设计的灵活性。另外它对于系统的运行设计和管理调度也提供了方便,例如,对于动态链接库的选择应用、程序运行体的覆盖和交换都是十分有益的。,4.模块化,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,耦合和内聚最初是作为结构化设计方法的部分原理而提出的。耦合强调模块之间的特征,而内聚强调模块内部的特性。耦合是用来衡量一

44、个模块同另一个模块的联系的紧密程度的。紧密的耦合就会使系统变得复杂,因为如果一个模块和另外的模块有很密切的关联的话,这个模块就很难理解、调试、维护。通过弱耦合部件的设计可以降低系统的复杂性。,5.高内聚和低耦合,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,内聚用来衡量单一模块内功能和元素间联系性的程度。内聚有几种形式。最期望获得的是功能内聚,它说明一个模块或是部件内的所有元素都协同来提供具有良好边界的行为。最差的形式是偶然内聚,这种形式将毫无联系的抽象放置在同一模块之中。其他形式的内聚还有:逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和不规则内聚。,5.高内

45、聚和低耦合,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,不同和无关联的责任应该在软件系统中分离开来,让它们出现在不同的部件中。相互协作完成某一个特定任务的部件应该和在其他任务中执行计算的部分分离开来。如果一个部件在不同的环境下扮演着不同的角色,在部件中这些角色应该独立且相互分离。,6.关注点分离,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,例如,在多层体系结构的组件设计中,在多种应用场景中担任不同角色的同一个组件,需要和可以使用不同的接口定义。这样,对某一角色开放的只是与角色相关的信息和服务,避免了过多暴露所造成对应用设计的负担和

46、混乱,又保证了组件运行的可靠和安全。,6.关注点分离,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,软件系统的部件应该实现策略或处理问题,但不能同时处理两者。 策略部件负责处理上下文相关的决策、信息的语义和解释的知识、把不相交计算组合形成结果、对参数值进行选择等问题。 实现部件负责全面规范算法的执行,执行中不需要对上下文相关信息进行决策。上下文和解释是部件外部施加的,它通常由传给部件的参数提供。,7.策略和实现的分离,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,由于独立于特定的上下文环境,纯实现部件更容易重用和维护,而策略部件通常是

47、与特定应用相关的,需要随着应用的变化而变化。 如果不能将一个软件体系结构分解成策略和实现的不同部件,至少应该在一个部件内将策略和实现的功能加以分离。,7.策略和实现的分离,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计的原则,任何一个部件都应该包含两个部分,接口和实现。 接口部分定义了部件所提供的功能,并规范了功能的使用方法。该接口对部件的客户是可访问的。该类型的输出接口是由函数原型构成的。 实现部分包括了实现部件所提供功能的实际代码。实现部分还可以包含只服务于部件内部操作的另外的函数和数据结构。实现部分对部件客户来说是不可用的。,8.接口和实现的分离,第四章 软件体系结

48、构描述,4.8 软件体系结构的设计, 体系结构设计的原则,该原理的主要目的是防止部件的客户接触到实现的细节,而只为客户提供部件的接口规范和使用方法。另外,该原理还允许独立于其他部件的应用而实现一个部件的功能。就像封装一样,接口和实现的分离也是一种用来获得信息隐藏的技术。该原理强调“一个客户只应该知道它需要知道的东西”。 接口和实现的分离也支持可变性。如果部件的接口和实现分离,那么它就更容易在系统中进行改变。这种分离避免了客户直接受到部件变化的影响。该原理使部件行为和表示的改变特别容易,尤其是那些不影响接口的改变,例如对运行性能的提高。,8.接口和实现的分离,第四章 软件体系结构描述,4.8 软

49、件体系结构的设计, 体系结构设计方法的元模型,元模型是对各种体系结构设计模型的抽象。 元模型中有三处用到了领域知识的概念。 要区分几种特殊化的“领域”概念:问题领域知识、商业领域知识、解决方案领域知识、通用知识,等等。,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计方法的元模型,商业领域知识是指商业过程观点下的与问题有关的知识。包括商业过程方面的知识、用户调查、市场分析报告等。 解决方案领域知识是指提供领域概念的知识。这些领域概念用于解决问题,并独立于特定需求。解决方案领域知识还包括如何从这一解决方案领域生产软件系统。 通用知识是指软件工程师的一般背景和经验。 系统/产品

50、知识是指关于一个系统、一个系统族或一个产品的知识。,问题领域知识是指客户观点下的与问题有关的知识。包括需求规格说明文档、与客户面谈、客户发布的原型等。,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计方法的元模型,第一阶段:捕捉需求。 客户:表示那些关心软件体系结构设计的系统相关人员。包括:客户、最终用户、系统开发人员、系统维护人员、销售人员等。 领域知识:表示在解决某一问题中所应用的知识的范围。 需求规格说明:表示规格说明,描述了所要开发的体系结构系统的需求。,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计方法的元模型,第二阶段:提取解决方案 的结构

51、。 需求规格说明、领域知识。 工件:表示某一方法的工件描述。这是指诸如工件类、工件操作、工件属性等。一般,每种工件都有一套与之相关的试探法,用来标识相关的工件实例。 解决方案抽象:定义了体系结构中(子)结构的概念表示。,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计方法的元模型,第三阶段:体系结构规格说明。 解决方案抽象、领域知识。 体系结构描述:定义了软件体系结构的规格说明。,第四章 软件体系结构描述,4.8 软件体系结构的设计, 体系结构设计方法的分析,为了获取对体系结构设计的抽象,人们已经提出了许多方法。我们把这些体系结构设计方法分类为: 工件驱动(artifact

52、-driven)的方法; 用例驱动(use-case-driven)的方法; 模式驱动(pattern-driven)的方法; 域驱动(domain-driven)的方法。,第四章 软件体系结构描述,4.8 软件体系结构的设计,工件驱动(artifact-driven)的方法,工件驱动的体系结构设计方法的概念模型,特点: 从方法的工件描述中提取体系结构描述。,第四章 软件体系结构描述,4.8 软件体系结构的设计,工件驱动(artifact-driven)的方法,工件驱动的体系结构设计方法的例子包括广为流行的面向对象分析和设计方法OMT和OAD。,第四章 软件体系结构描述,4.8 软件体系结构的

53、设计,工件驱动(artifact-driven)的方法,缺点: (1)文本形式的系统需求不够清楚、精确、完整。以它作为导出体系结构抽象的来源作用不够。 (2)子系统的语义过于简单,难以作为体系结构构件。 (3)对子系统的组合支持不足。,第四章 软件体系结构描述,4.8 软件体系结构的设计,用例驱动(use-case-driven)的方法,用例驱动的体系结构设计方法主要从用例导出体系结构抽象。,目的: 作为系统预期功能及其环境的模型,并在客户和开发者之间起到合约的作用。,第四章 软件体系结构描述,4.8 软件体系结构的设计,用例驱动(use-case-driven)的方法,一个用例,是指系统进行

54、的一个活动序列,它为参与者提供一些结果值。参与者通过用例使用系统。参与者和用例共同构成了用例模型。,第四章 软件体系结构描述,4.8 软件体系结构的设计,用例驱动(use-case-driven)的方法,统一过程使用的是一种用例驱动的体系结构设计方法。它由核心工作流组成。核心工作流定义了过程的静态内容,用活动、工人和工件描述了过程。随时间变化的过程的组织被定义为阶段。 统一过程由6个核心工作流组成:商业模型、需求、分析、设计、实现和测试。这些核心工作流的结果分别是下列模型:商业和领域模型、用例模型、分析模型、设计模型、实现模型和测试模型。,第四章 软件体系结构描述,4.8 软件体系结构的设计,

55、用例驱动(use-case-driven)的方法,在需求工作流中,以用例的形式捕捉客户的需求,构成用例模型。这一过程在上图中被定义为“1:描述”。 用例模型和非形式化的需求规格说明共同构成了系统的需求规格说明。用例模型的开发得到了“非形式化的规格说明”,“领域模型”,“商业模型”等概念的支持,在设置系统上下文时这些概念是必需的。 如前所述,“非形式化的规格说明”表示文本形式的需求规格说明。“商业模型”描述一个组织的商业过程。“领域模型”描述领域上下文中最重要的类。,第四章 软件体系结构描述,4.8 软件体系结构的设计,用例驱动(use-case-driven)的方法,从用例模型中可以选择出对于

56、体系结构有重要意义的用例,并创建“用例实现”,如上图中“2:实现”所述。用例实现决定了任务在系统内部是怎样进行的。用例实现受到相关工件的知识和通用知识的支持。这在图中被表示为分别从“工件”和“通用知识”引出的指向“2:实现”的箭头线。这一功能的输出是“分析和设计模型”概念,它表示在用例实现之后标识出的工件。,第四章 软件体系结构描述,4.8 软件体系结构的设计,用例驱动(use-case-driven)的方法,然后,分析和设计模型被分组为包,这在图中表示为“3:分组”。图中的“4:组合”代表定义这些包之间的接口,其结果是“体系结构描述”的概念。“3:分组”和“4:组合”这两个功能都受到“通用知

57、识”概念的支持。,第四章 软件体系结构描述,4.8 软件体系结构的设计,缺点: (1)难以适度把握领域模型和商业模型的细节。 (2)对于如何选择与体系结构相关的用例没有提供系统的支持。 (3)用例没有为体系结构抽象提供坚实的基础。 (4)包的语义过于简单,难以作为体系结构构件。,用例驱动(use-case-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计,缺点: (1)难以适度把握领域模型和商业模型的细节。 该方法在定义用例模型之前进行商业模型和领域模型的定义。这就带来了如何适度把握这些模型的细节的问题。在了解用例之前,很难回答这一问题,因为用例实际上定义了所要开发的

58、是什么。,用例驱动(use-case-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计,缺点: (2)对于如何选择与体系结构相关的用例没有提供系统的支持。 为了进行体系结构描述,需要选择与体系结构相关的用例。但在确定哪些用例是“体系结构相关”时,缺乏客观标准,仅凭一些启发式规则和软件工程师的评估。,用例驱动(use-case-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计,缺点: (3)用例没有为体系结构抽象提供坚实的基础。 在选择出与体系结构相关的用例之后,对它们进行实现。这意味着分析和设计类是从用例中确定的。用例实现受到工件的启发式规则

59、的支持,还受到软件工程师的通用知识的支持。工件是从文本形式的需求中得出的,这类似于工件驱动的方法。尽管用例对于理解和表示用户需求是实用的,但它并不能为导出体系结构设计抽象提供坚实的基础。用例主要关注的是系统的问题域和外部行为。在用例实现中,解决方案领域和内部系统中的透明或隐藏抽象将难以标识。因此,即使确定了所有的相关用例,从用例模型确定体系结构抽象仍将是较为困难的。,用例驱动(use-case-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计,缺点: (4)包的语义过于简单,难以作为体系结构构件。 该方法中,分析和设计模型被分组为包。包,类似于工件驱动的方法中的子系统

60、,主要也是分组机制,因此其语义也很简单。而且,在把分析和设计类分组成包、以及把包组合为最终的体系结构等方面,该方法提供的支持也很有限,主要依靠软件工程师的通用知识。这也可能带来错误定义的体系结构边界及其交互。,用例驱动(use-case-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计,模式驱动(pattern-driven)的方法,体系结构模式关心的是体系结构级别的元素及其交互。,体系结构设计模式本身不是软件体系结构,而是体系结构层次的一种抽象表示。,第四章 软件体系结构描述,4.8 软件体系结构的设计,模式驱动(pattern-driven)的方法,软件工业界已经

61、广泛接受了软件设计模式的概念。软件设计模式的目的在于编制一套可重用的基本原则,用于开发高质量的软件系统。软件设计模式常常用在设计阶段。 也有研究者在软件开发过程中的体系结构分析阶段应用设计模式。体系结构模式类似于设计模式,实际上它就是体系结构风格的另一种名称。,第四章 软件体系结构描述,4.8 软件体系结构的设计,模式驱动(pattern-driven)的方法,体系结构模式描述的概念指的是对体系结构模式的描述。主要由4个概念组成: 意图:表示使用模式的基本原则; 上下文:表示问题的产生环境; 问题:表示上下文环境中经常出现的问题; 解决方案:是以元素及其关系的抽象描述的形式来表示对问题的解决方

62、案。 为了确认模式,就要对各个可用模式的意图进行扫描。如果发现一个模式的意图和给出的问题相关,那么就分析它的上下文描述。如果上下文描述仍然能够和给出的问题相匹配,则处理过程进入“应用”阶段。进而用“解决方案”这一子概念来提供所给出问题的解决方案。,第四章 软件体系结构描述,4.8 软件体系结构的设计,缺点: (1)在处理范围广泛的体系结构问题时,模式库可能不够充分。 (2)对模式的选择仅依靠通用知识和软件工程师的经验。 (3)模式的应用并不是一个简单直接的过程,它需要对问题进行全面的分析。 (4)对于模式的组合没有提供很好的支持。,模式驱动(pattern-driven)的方法,第四章 软件体

63、系结构描述,4.8 软件体系结构的设计,缺点: (1)在处理范围广泛的体系结构问题时,模式库可能不够充分。 对于模式驱动的体系结构设计方法而言,必要的条件之一是有充足的模式库可用。当前已经存在众多的体系结构模式(风格)分类。尽管这些分类为软件体系结构设计提供了使用的工具,但是它们没有也无法覆盖所有范围内的体系结构开发问题。这一问题的原因在于,体系结构由表示对特定领域的抽象的概念和定义这些概念的组成方式及其相互联系的模式组成。由于应用领域中的软件系统千变万化,所以,也就有无数的体系结构抽象和体系结构模式。,模式驱动(pattern-driven)的方法,第四章 软件体系结构描述,4.8 软件体系

64、结构的设计,缺点: (2)对模式的选择仅依靠通用知识和软件工程师的经验。 为了简化对模式的选择和管理,改进对模式的理解,人们通常把具有共同特点的模式分类到相同的组中。不同的体系结构设计方法可能有不同的分类原则。这样,对于同一问题,可能有多种体系结构模式可供选择。但是,在如何确定优先次序、如何在不同模式间进行取舍和平衡等问题上,当前的体系结构设计方法并没有提供明确的支持。这妨碍了查找模式的过程,也进而妨碍了体系结构的确定。,模式驱动(pattern-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计,缺点: (3)模式的应用并不是一个简单直接的过程,它需要对问题进行全面的

65、分析。 在选择了模式之后,模式的应用也并不是一个简单直接的过程。可以把模式看成是一种模板,它由构件及其相互关系组成,在使用时,必须与问题领域的概念和概念之间的关系相匹配。,模式驱动(pattern-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计,例如,对于一个给定的问题,选择使用管道过滤器模式。在这种模式中,过滤器作为构件,管道作为连接件。过滤器接收输入数据,进行处理,提供输出数据;管道在一个过滤器的输出和另一个过滤器的输入之间发送数据。在应用这种模式时,存在的问题有:应当把哪些领域概念表示成管道,把哪些领域概念表示成过滤器?它们的结构是怎样的?等等。当前,对于这一匹配过程并没有严格的方法可循,模式的应用仍然基于软件工程师的经验和通用知识。,模式驱动(pattern-driven)的方法,第四章 软件体系结构描述,4.8 软件体系结构的设计

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!