软件工程-实践者的研究方法讲义_第八章体系结构设计.pptx
-
资源ID:5484149
资源大小:2.31MB
全文页数:92页
- 资源格式: PPTX
下载积分:30金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
软件工程-实践者的研究方法讲义_第八章体系结构设计.pptx
软件工程第8章 体系结构设计主要内容v软件体系结构软件体系结构v体系结构类型体系结构类型v体系结构风格体系结构风格v体系结构设计体系结构设计v评估可选的体系结构设计评估可选的体系结构设计v使用数据流进行体系结构映射使用数据流进行体系结构映射v小结小结进行体系结构设计v体系结构设计表示了建立计算机系统所需体系结构设计表示了建立计算机系统所需的的数据结构数据结构和和程序构件程序构件。它需要考虑系统。它需要考虑系统采取的体系结构风格,系统组成构件的结采取的体系结构风格,系统组成构件的结构、性质,以及系统中所有体系结构构件构、性质,以及系统中所有体系结构构件之间的相互关系。之间的相互关系。进行体系结构设计v尽管软件工程师能够设计数据和体系结构,尽管软件工程师能够设计数据和体系结构,但是在建造大型复杂系统的时候,这项工但是在建造大型复杂系统的时候,这项工作往往由作往往由专家专家来完成。来完成。数据库或者数据仓数据库或者数据仓库设计者库设计者为系统创建数据体系结构。为系统创建数据体系结构。”系系统体系结构设计师统体系结构设计师“为系统工程和软件需为系统工程和软件需求分析中导出的需求选择合适的体系结构求分析中导出的需求选择合适的体系结构风格。风格。进行体系结构设计v体系结构设计体系结构设计始于数据设计始于数据设计,然后,然后导出系导出系统体系结构统体系结构的一个或者多个表示。对可选的一个或者多个表示。对可选的体系结构风格或模式进行分析,以导出的体系结构风格或模式进行分析,以导出最适合于客户需求和质量属性的结构。一最适合于客户需求和质量属性的结构。一旦选定,使用体系结构设计方法对体系结旦选定,使用体系结构设计方法对体系结构进行精化。构进行精化。v在体系结构设计过程中,将创建一个包括在体系结构设计过程中,将创建一个包括数据体系结构和程序结构的体系结构模型数据体系结构和程序结构的体系结构模型。此外,还需描述此外,还需描述构件的性质以及交互关系构件的性质以及交互关系。进行体系结构设计v设计通常被描述为一个多步过程,其主要设计通常被描述为一个多步过程,其主要任务是从需求信息中综合出任务是从需求信息中综合出数据的表示、数据的表示、程序结构、接口特征和过程细节程序结构、接口特征和过程细节。v设计是由设计是由信息驱动信息驱动的。软件设计方法都是的。软件设计方法都是通过仔细考虑分析模型的三个域而得到的。通过仔细考虑分析模型的三个域而得到的。因此,信息、功能和行为三个域是创建软因此,信息、功能和行为三个域是创建软件设计的指南。件设计的指南。v体系结构设计是构建软件的体系结构设计是构建软件的初始蓝图初始蓝图。软件体系结构v从第一个程序从第一个程序被划分成模块开始,软件系被划分成模块开始,软件系统就有了体系结构统就有了体系结构。同时,程序员已经开。同时,程序员已经开始负责模块间的交互和模块装配的全局属始负责模块间的交互和模块装配的全局属性。从历史的观点看,体系结构隐含了很性。从历史的观点看,体系结构隐含了很多内容多内容实现的偶然事件或先前遗留系实现的偶然事件或先前遗留系统。好的软件开发人员经常采用一个或者统。好的软件开发人员经常采用一个或者多个体系结构模式作为系统组织策略,但多个体系结构模式作为系统组织策略,但是他们只是非正式地使用这些模式,并且是他们只是非正式地使用这些模式,并且在最终系统中没有将这些模式清楚地体现在最终系统中没有将这些模式清楚地体现出来。出来。什么是体系结构v一个程序和计算系统软件体系结构是指一个程序和计算系统软件体系结构是指系系统的一个或者多个结构统的一个或者多个结构。结构中包括。结构中包括软件软件的构件的构件,构件的,构件的外部可见属性外部可见属性以及它们之以及它们之间的间的相互关系相互关系。v体系结构并非可运行软件。它体系结构并非可运行软件。它是一种表达是一种表达,使软件工程师能够:使软件工程师能够:(1)分析设计在满足分析设计在满足规定需求方面的有效性;规定需求方面的有效性;(2)在设计变更在设计变更相对容易的阶段,考虑体系结构可能的选相对容易的阶段,考虑体系结构可能的选择方案;择方案;(3)降低与软件构造相关联的风降低与软件构造相关联的风险。险。什么是体系结构v在体系结构设计的环境中,软件构件可以简在体系结构设计的环境中,软件构件可以简单到单到程序模块或者面向对象的类程序模块或者面向对象的类,也可以扩,也可以扩充到包含数据库和能够完成客户与服务器网充到包含数据库和能够完成客户与服务器网络配置的络配置的“中间件中间件”。v本教材中,软件体系结构的设计考虑了设计本教材中,软件体系结构的设计考虑了设计金字塔中的两个层次金字塔中的两个层次数据设计和体系结数据设计和体系结构设计构设计。数据设计使我们表示出传统系统中。数据设计使我们表示出传统系统中体系结构的体系结构的数据构件和面向对象系统中类的数据构件和面向对象系统中类的定义定义,体系结构设计则主要关注,体系结构设计则主要关注软件构件的软件构件的结构、属性和交互作用结构、属性和交互作用。为什么体系结构如此重要vBAS03给出了软件体系结构之所以重要的给出了软件体系结构之所以重要的三个关键原三个关键原因因:l软件体系结构的表示有助于对计算机系统开发感兴趣的软件体系结构的表示有助于对计算机系统开发感兴趣的各方开展交流各方开展交流。l体系结构突出了体系结构突出了早期设计决策早期设计决策,这些决策对随后的所有,这些决策对随后的所有软件工程工作有深远的影响,同时对系统作为一个可运软件工程工作有深远的影响,同时对系统作为一个可运行实体的最后成功有重要作用。行实体的最后成功有重要作用。l体系结构体系结构“构建了一个相对小的,易于理解的模型,该构建了一个相对小的,易于理解的模型,该模型描述了模型描述了系统如何构成以及其构件如何一起工作系统如何构成以及其构件如何一起工作”。v体系结构体系结构设计模型和包含在其中的体系结构模式都是可设计模型和包含在其中的体系结构模式都是可以传递的以传递的,即体系结构的风格和模式可以被应用于其他,即体系结构的风格和模式可以被应用于其他系统的设计中,并且表示了一组使软件工程师能以可预系统的设计中,并且表示了一组使软件工程师能以可预见的方式描述体系结构的抽象。见的方式描述体系结构的抽象。数据设计v数据设计是把在分析模型中定义的数据对数据设计是把在分析模型中定义的数据对象转化成象转化成软件构件级的数据结构软件构件级的数据结构,并且在,并且在必要时转化为必要时转化为应用程序级的数据库体系结应用程序级的数据库体系结构构。在某些情况下,必须为一个新系统专。在某些情况下,必须为一个新系统专门设计和建立门设计和建立数据库数据库。体系结构级的数据设计v当今,大大小小的业务均充斥着数据,甚至一当今,大大小小的业务均充斥着数据,甚至一个中型规模企业拥有为多个应用系统提供服务个中型规模企业拥有为多个应用系统提供服务的几十个数据库。问题在于的几十个数据库。问题在于如何从这样庞大的如何从这样庞大的数据环境中提取有用的信息数据环境中提取有用的信息,特别当需要的信,特别当需要的信息是功能交叉时。息是功能交叉时。vIT界开发出了界开发出了数据挖掘数据挖掘技术,也称为技术,也称为数据库中数据库中的知识发现的知识发现,该技术遍历现有的数据库以试图,该技术遍历现有的数据库以试图抽取出合适的业务级信息。另一种可选的解决抽取出合适的业务级信息。另一种可选的解决方案称为方案称为数据仓库数据仓库,它是一个独立的数据环境,它是一个独立的数据环境,但包含了某业务使用的所有数据。但包含了某业务使用的所有数据。构件级的数据设计v构件级的数据设计关注于那些被一个或者多个构件级的数据设计关注于那些被一个或者多个软件构件直接访问的数据结构的表示。软件构件直接访问的数据结构的表示。WAS80提出了以下数据规格说明原则:提出了以下数据规格说明原则:1.应用于功能和行为的系统分析原则也可应用于应用于功能和行为的系统分析原则也可应用于数据。数据。同样应该开发和评审数据流和数据内容同样应该开发和评审数据流和数据内容的表示,标识数据对象,还应该考虑其他可选的表示,标识数据对象,还应该考虑其他可选的数据组织结构,评估数据模型对软件设计的的数据组织结构,评估数据模型对软件设计的影响。影响。2.标识所有数据结构及其完成的操作。标识所有数据结构及其完成的操作。设计一个设计一个高效的数据结构,必须考虑其上的操作。把属高效的数据结构,必须考虑其上的操作。把属性和操作封装在一个类中满足这个原则。性和操作封装在一个类中满足这个原则。构件级的数据设计3.应该建立定义数据对象内容的机制,并应该建立定义数据对象内容的机制,并且用于定义数据及其操作。且用于定义数据及其操作。类图定义包含类图定义包含在类中的数据项和应用到这些数据项上的在类中的数据项和应用到这些数据项上的方法。方法。4.低层的数据设计决策应该延迟到设计过低层的数据设计决策应该延迟到设计过程的后期。程的后期。数据设计可以采用逐步求精的数据设计可以采用逐步求精的过程,所有的数据组织可以在需求分析阶过程,所有的数据组织可以在需求分析阶段定义,在数据设计工作中精化,在构件段定义,在数据设计工作中精化,在构件级设计阶段刻画细节。级设计阶段刻画细节。构件级的数据设计v5.只有那些直接使用数据结构内部数据的模块只有那些直接使用数据结构内部数据的模块才能够看到该数据结构的表示。才能够看到该数据结构的表示。信息隐蔽概念信息隐蔽概念以及相关的耦合概念为软件设计质量的评估提以及相关的耦合概念为软件设计质量的评估提供了依据。供了依据。v6.应该开发一个由有用的数据结构及其操作组应该开发一个由有用的数据结构及其操作组成的库。成的库。类库即可实现这个目标。类库即可实现这个目标。v7.软件设计和程序设计语言应该支持抽象数据软件设计和程序设计语言应该支持抽象数据类型的规格说明和实现。类型的规格说明和实现。如果没有办法对所选如果没有办法对所选用于实现的编程语言中的结构进行直接说明,用于实现的编程语言中的结构进行直接说明,那么复杂数据结构的实现将变得非常困难。那么复杂数据结构的实现将变得非常困难。体系结构风格和模式v建筑师使用建筑师使用体系结构体系结构(建筑风格建筑风格)作为描)作为描述机制,将该房子和其他风格的房子区分述机制,将该房子和其他风格的房子区分开来。但更重要的是,开来。但更重要的是,体系结构风格也是体系结构风格也是建筑的样板建筑的样板。必须进一步规定房子的细节,。必须进一步规定房子的细节,具体说明它的最终尺寸,进一步给出定制具体说明它的最终尺寸,进一步给出定制的特征,确定建筑材料等。实际上是的特征,确定建筑材料等。实际上是建筑建筑风格指导了建筑师的工作风格指导了建筑师的工作。体系结构风格和模式v为计算机系统建造的软件也展示了众多体系为计算机系统建造的软件也展示了众多体系结构风格中的一种。每种风格描述一种系统结构风格中的一种。每种风格描述一种系统类别,包括:类别,包括:(1)一组构件一组构件完成系统需要的完成系统需要的某种功能;某种功能;(2)一组连接器一组连接器,它们能使构件,它们能使构件间实现间实现“通信、合作和协调通信、合作和协调”;(3)约束约束,定义构件如何集成为一个系统;定义构件如何集成为一个系统;(4)语义模语义模型型,它能使设计者通过分析系统的构成成分,它能使设计者通过分析系统的构成成分的性质来理解系统的整体性质。的性质来理解系统的整体性质。体系结构风格和模式v一种体系结构风格就是一种在整个系统设一种体系结构风格就是一种在整个系统设计上面的计上面的变换变换。它的目的就是为系统的。它的目的就是为系统的所所有构件建立一个结构有构件建立一个结构。在对已有体系结构。在对已有体系结构进行进行再工程再工程时,强制采用一种体系结构风时,强制采用一种体系结构风格会导致软件结构的根本性改变,包括对格会导致软件结构的根本性改变,包括对构件功能的再分配。构件功能的再分配。体系结构风格和模式v体系结构模式体系结构模式也对体系结构的设计施加一种变也对体系结构的设计施加一种变换。然而,体系结构模式与体系结构风格在许换。然而,体系结构模式与体系结构风格在许多基本方面存在不同:多基本方面存在不同:(1)体系结构模式涉及的体系结构模式涉及的范围要小一些,它更多集中在体系结构的范围要小一些,它更多集中在体系结构的某一某一局部局部而不是体系结构的整体;而不是体系结构的整体;(2)模式在体系结模式在体系结构上施加规则,描述了软件是如何在基础设施构上施加规则,描述了软件是如何在基础设施层次上处理某些层次上处理某些功能性方面功能性方面的问题;的问题;(3)体系结体系结构模式倾向于在系统结构的环境中处理构模式倾向于在系统结构的环境中处理特定的特定的行为问题行为问题。模式可以与体系结构风格结合起来,。模式可以与体系结构风格结合起来,用于建立整个系统结构的外形。用于建立整个系统结构的外形。体系结构风格的简单分类v以数据为中心的体系结构以数据为中心的体系结构。数据存储数据存储驻留驻留在这种体系结构的中心,其他构件会经常在这种体系结构的中心,其他构件会经常访问数据存储,并对存储中的数据进行更访问数据存储,并对存储中的数据进行更新、增加、删除或者修改。图新、增加、删除或者修改。图8-1描述了描述了一个典型的以数据为中心的体系结构风格。一个典型的以数据为中心的体系结构风格。在某些情况下存储库是被动的,即客户软在某些情况下存储库是被动的,即客户软件独立于数据的任何变化或其他客户软件件独立于数据的任何变化或其他客户软件的动作而访问数据。该方法的一个变种是的动作而访问数据。该方法的一个变种是将中心存储库变换成将中心存储库变换成“黑板黑板”,当用户感,当用户感兴趣的数据发生变化时,它将通知客户软兴趣的数据发生变化时,它将通知客户软件。件。体系结构风格的简单分类图8-1以数据为中心的体系结构体系结构风格的简单分类v以数据为中心的体系结构提升了以数据为中心的体系结构提升了可集成性可集成性,即现有的构件可以被修改而且新的客户构即现有的构件可以被修改而且新的客户构件可以加入到系统结构之中,而无需考虑件可以加入到系统结构之中,而无需考虑其他的客户。另外,数据可以在客户间通其他的客户。另外,数据可以在客户间通过过“黑板黑板”机制传送,客户构件独立地执机制传送,客户构件独立地执行过程。行过程。体系结构风格的简单分类v数据流体系结构数据流体系结构。当输入数据经过一系列的计。当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应算和操作构件的变换形成输出数据时,可以应用这种体系结构。用这种体系结构。管道和过滤器结构管道和过滤器结构(如图如图8-2)拥有一组被称为过滤器的构件,这些构件通过拥有一组被称为过滤器的构件,这些构件通过管道连接,管道将数据从一个构件传送到下一管道连接,管道将数据从一个构件传送到下一个构件。每个过滤器独立于其上游和下游的构个构件。每个过滤器独立于其上游和下游的构件而工作,过滤器的设计要针对某种形式的数件而工作,过滤器的设计要针对某种形式的数据输入,并且产生某种特定形式的数据输出。据输入,并且产生某种特定形式的数据输出。然而,过滤器没有必要了解与之相邻的过滤器然而,过滤器没有必要了解与之相邻的过滤器的工作。的工作。v如果数据流退化成单线的变换,则称为如果数据流退化成单线的变换,则称为批序列批序列。这种结构接收一批数据,然后应用一系列连续这种结构接收一批数据,然后应用一系列连续的构件的构件(过滤器过滤器)变换它。变换它。体系结构风格的简单分类图8-2 数据流体系结构体系结构风格的简单分类v调用和返回调用和返回体系结构体系结构。该体系结构风格能够让。该体系结构风格能够让软件设计师设计出一个相对易于修改和扩展的程软件设计师设计出一个相对易于修改和扩展的程序结构。存在两种子风格:序结构。存在两种子风格:v主程序主程序/子程序体系结构。子程序体系结构。这种传统的程序结构将功能分解为这种传统的程序结构将功能分解为一个控制层次,其中一个控制层次,其中“主主”程序调用一组程序构件,这些程序程序调用一组程序构件,这些程序构件又去调用别的程序构件。图构件又去调用别的程序构件。图8-3描述了该种系统结构。描述了该种系统结构。v远程过程调用体系结构。远程过程调用体系结构。主程序主程序/子程序体系结构的构件分布子程序体系结构的构件分布在网络的多个计算机上。在网络的多个计算机上。v面向对象体系结构。面向对象体系结构。系统的构件封装了数据和系统的构件封装了数据和必须应用到该数据上的操作,构件间通过信息传必须应用到该数据上的操作,构件间通过信息传递进行通信与合作。递进行通信与合作。体系结构风格的简单分类图8-3 主程序/子程序体系结构体系结构风格的简单分类v层次层次体系结构体系结构。层次体系结构的基本结构如图。层次体系结构的基本结构如图8-4所示。其中定义了一系列所示。其中定义了一系列不同的层次不同的层次,每个,每个层次各自完成操作,这些操作不断接近机器的指层次各自完成操作,这些操作不断接近机器的指令集。在最外层,构件完成用户界面的操作;在令集。在最外层,构件完成用户界面的操作;在最内层,构件完成与操作系统的连接;中间层提最内层,构件完成与操作系统的连接;中间层提供各种实用程序服务和应用软件功能。供各种实用程序服务和应用软件功能。v这些体系结构风格仅仅是软件设计师可用风格这些体系结构风格仅仅是软件设计师可用风格中的中的一小部分一小部分。一旦需求工程提示了待构建系统。一旦需求工程提示了待构建系统的特征和约束,就可以选择的特征和约束,就可以选择最适合最适合这些特征和约这些特征和约束的体系结构风格或者风格的组合。在很多情况束的体系结构风格或者风格的组合。在很多情况下,会有多种风格是适合的,需要对可选的体系下,会有多种风格是适合的,需要对可选的体系结构风格进行设计和评估。结构风格进行设计和评估。体系结构风格的简单分类图8-4 层次体系结构体系结构模式v如果建筑工人决定建构一个如果建筑工人决定建构一个“殖民式中厅殖民式中厅”,那么只能应用一种体系结构风格。风格的那么只能应用一种体系结构风格。风格的细节细节内容是可以内容是可以酌情变动酌情变动的,但是一旦确定了房子的,但是一旦确定了房子的整体体系结构,这个风格就会影响设计。的整体体系结构,这个风格就会影响设计。v体系结构的模式体系结构的模式有所不同。例如,房子采用一有所不同。例如,房子采用一种种Kitchen模式,这种模式,这种Kitchen模式规定了厨房模式规定了厨房基本用具的放置、水池、橱柜等要求,如果可基本用具的放置、水池、橱柜等要求,如果可能的话,也规定了房间中与完成做饭流程相关能的话,也规定了房间中与完成做饭流程相关的这些厨具的布置规则。另外,该模式还可能的这些厨具的布置规则。另外,该模式还可能指明柜台面、灯、墙上的插座、中心岛、地板指明柜台面、灯、墙上的插座、中心岛、地板等要求。显然对厨房有不止一种的设计,但是等要求。显然对厨房有不止一种的设计,但是每种设计都应该在每种设计都应该在Kitchen模式提供的解决方案模式提供的解决方案环境下来构思完成。环境下来构思完成。体系结构模式v软件的体系结构模式定义了软件的体系结构模式定义了处理系统某些行为特征处理系统某些行为特征的方的方法。法。BOS00定义了一系列的体系结构模式域:定义了一系列的体系结构模式域:v并发性并发性:很多应用系统必须以一种模拟并行的方式来操:很多应用系统必须以一种模拟并行的方式来操作多个任务。在一个应用系统中有很多不同的方法处理作多个任务。在一个应用系统中有很多不同的方法处理并发性,而且每种方法都可以由不同的体系结构模式来并发性,而且每种方法都可以由不同的体系结构模式来呈现。例如,一种方法是使用呈现。例如,一种方法是使用“操作系统进程管理操作系统进程管理”模模式,该模式提供了一些内置的操作系统特征,这些特征式,该模式提供了一些内置的操作系统特征,这些特征允许构件并发执行。这个模式同时还结合了操作系统中允许构件并发执行。这个模式同时还结合了操作系统中那些管理进程通信、调度的功能以及其他完成并发所需那些管理进程通信、调度的功能以及其他完成并发所需要的功能。还有一种方法是在应用层上定义一个任务调要的功能。还有一种方法是在应用层上定义一个任务调度器。度器。“任务调度器任务调度器”模式包括一组含有模式包括一组含有tick()操作的操作的活动对象。调度器定期唤醒每个对象的活动对象。调度器定期唤醒每个对象的tick()操作,该操作,该操作在控制权返回调度器之前完成它负责的功能,接着操作在控制权返回调度器之前完成它负责的功能,接着调度器唤醒下一个并发对象的调度器唤醒下一个并发对象的tick()操作。操作。体系结构模式v持久性持久性:如果数据从创建它的进程执行以来:如果数据从创建它的进程执行以来一一直存在直存在,则该数据是持久性存在的数据。持久,则该数据是持久性存在的数据。持久数据被存储在数据被存储在数据库数据库中或者中或者文件文件里,并且可以里,并且可以在稍后的时间里被其他进程读取和修改。在面在稍后的时间里被其他进程读取和修改。在面向对象的环境中,向对象的环境中,持久对象持久对象的概念对持久性概的概念对持久性概念做了一些扩展,所有对象属性的值、对象的念做了一些扩展,所有对象属性的值、对象的状态以及其他的附加信息都被存储起来,以备状态以及其他的附加信息都被存储起来,以备今后的存取和使用。一般说来,可以采用两种今后的存取和使用。一般说来,可以采用两种体系结构模式获得持久性:一个是体系结构模式获得持久性:一个是数据库管理数据库管理系统模式系统模式,该模式将,该模式将DBMS的存储和存取能力用的存储和存取能力用于应用系统的体系结构中;另一个是于应用系统的体系结构中;另一个是应用级的应用级的持久模式持久模式,此种模式在应用体系结构中建立了,此种模式在应用体系结构中建立了持久性特征。持久性特征。体系结构模式v分布性分布性:分布性问题强调系统或系统中构件在:分布性问题强调系统或系统中构件在一个分布的环境中相互通信的方式。分布性问一个分布的环境中相互通信的方式。分布性问题有两个元素:题有两个元素:(1)实体间连接方式实体间连接方式;(2)实体实体间通信的特性间通信的特性。解决分布性问题最普遍的体系。解决分布性问题最普遍的体系结构模式是结构模式是代理模式代理模式。代理在客户端构件和服。代理在客户端构件和服务器构件之间充当务器构件之间充当“中间人中间人”。客户端向代理。客户端向代理发出一条信息(包含所有使通信有效的信息),发出一条信息(包含所有使通信有效的信息),代理完成(与服务器的)连接。代理完成(与服务器的)连接。v在选择一种体系结构模式之前,必须在选择一种体系结构模式之前,必须评估其对评估其对于应用和整个体系结构风格的适应性于应用和整个体系结构风格的适应性,即它的,即它的可维护性、可靠性、安全性和性能。可维护性、可靠性、安全性和性能。组织和求精v设计过程经常给软件工程师留下一系列可设计过程经常给软件工程师留下一系列可供选择的体系结构,建立一组用于供选择的体系结构,建立一组用于评估评估所所导出的体系结构设计的设计标准是非常重导出的体系结构设计的设计标准是非常重要的。要的。BAS98提出的下面问题有助于对提出的下面问题有助于对导出的体系结构风格提供深层次的考察。导出的体系结构风格提供深层次的考察。组织和求精v控制控制:在体系结构中如何管理控制?是否:在体系结构中如何管理控制?是否存在一个不同的控制层次?如果是,构件存在一个不同的控制层次?如果是,构件在控制层次中担当什么角色?构件如何在在控制层次中担当什么角色?构件如何在系统中传递控制?构件间如何共享控制?系统中传递控制?构件间如何共享控制?控制拓扑结构(即控制呈现的几何形状)控制拓扑结构(即控制呈现的几何形状)是什么样?控制是否同步或构件是否异步是什么样?控制是否同步或构件是否异步操作?操作?组织和求精v数据数据:构件间如何进行数据通信?数据流:构件间如何进行数据通信?数据流是否是连接的,或数据对象是否是零散地是否是连接的,或数据对象是否是零散地传递给系统?数据传递的模式是什么(即,传递给系统?数据传递的模式是什么(即,数据是从一个构件传递到另一个构件,还数据是从一个构件传递到另一个构件,还是系统中构件可以全局共享数据)?是否是系统中构件可以全局共享数据)?是否存在数据构件(如黑板或中心存储库)?存在数据构件(如黑板或中心存储库)?如果存在,它们的角色是什么?功能构件如果存在,它们的角色是什么?功能构件如何和数据构件交互?数据构件是被动的如何和数据构件交互?数据构件是被动的还是主动的(即数据构件是否主动地和系还是主动的(即数据构件是否主动地和系统中其他构件交互)?数据和控制如何在统中其他构件交互)?数据和控制如何在系统中交互?系统中交互?体系结构设计v在体系结构设计开始的时候,软件必须放在体系结构设计开始的时候,软件必须放在在所处环境所处环境进行开发,即,设计应该定义进行开发,即,设计应该定义与软件交互的与软件交互的外部实体外部实体(其他系统、设备、(其他系统、设备、人)和人)和交互的特性交互的特性。一般在。一般在分析模型分析模型阶段阶段可以获得这些信息,而所有其他的信息都可以获得这些信息,而所有其他的信息都是在是在需求工程需求工程阶段获得的。一旦建立了软阶段获得的。一旦建立了软件的环境模型,并且描述出所有的外部软件的环境模型,并且描述出所有的外部软件接口,那么设计师就可以通过件接口,那么设计师就可以通过定义和求定义和求精实现体系结构的构件精实现体系结构的构件来描述系统的结构。来描述系统的结构。这个过程不停地迭代,直到获得一个完善这个过程不停地迭代,直到获得一个完善的体系结构。的体系结构。系统的环境表示v系统环境图通过描述系统的系统环境图通过描述系统的出入信息流出入信息流、用户界面用户界面和相关的和相关的支持处理支持处理等来实现对环等来实现对环境的建模。在体系结构设计层,软件架构境的建模。在体系结构设计层,软件架构师用师用体系结构环境图体系结构环境图对软件与外部实体交对软件与外部实体交互方式进行建模。图互方式进行建模。图8-5给出了体系结构给出了体系结构环境图的通用结构。环境图的通用结构。系统的环境表示图8-5 体系结构环境图系统的环境表示v与目标系统交互的系统可以表示为:与目标系统交互的系统可以表示为:v上级系统上级系统:这些系统把目标系统作为某些高层:这些系统把目标系统作为某些高层处理方案的一部分。处理方案的一部分。v下级系统下级系统:这些系统被目标系统使用,并为了:这些系统被目标系统使用,并为了完成目标系统的功能提供必要的数据和处理。完成目标系统的功能提供必要的数据和处理。v同级系统同级系统:这些系统在对等的基础上相互作用。:这些系统在对等的基础上相互作用。v参与者参与者:是指那些通过产生和消耗必不可少的:是指那些通过产生和消耗必不可少的处理所需的信息,实现与目标系统交互的实体处理所需的信息,实现与目标系统交互的实体(人、设备)。(人、设备)。v每个外部实体都通过某一接口(带阴影的小矩每个外部实体都通过某一接口(带阴影的小矩形)与目标系统进行通信。形)与目标系统进行通信。SAFEHOME实例329-69-6SAFEHOME实例33图8-6 SafeHome安全功能的体系结构环境图定义原始模型v原始模型是一个类或者一个模式,描述了原始模型是一个类或者一个模式,描述了一个目标系统体系结构设计的核心抽象。一个目标系统体系结构设计的核心抽象。一般来讲,只需要设计相对较小的原始模一般来讲,只需要设计相对较小的原始模型集合,即使系统相对比较复杂。目标系型集合,即使系统相对比较复杂。目标系统的体系结构由这些原始模型组成,这些统的体系结构由这些原始模型组成,这些原始模型表示体系结构中稳定的元素,但原始模型表示体系结构中稳定的元素,但是这些元素基于系统行为可用多种方式加是这些元素基于系统行为可用多种方式加以说明。以说明。SAFEHOME实例34SAFEHOME实例35图8-7 SafeHome安全功能原始模型的UML关系图将体系结构精化为构件v当软件体系结构精化为构件时,系统的结构开当软件体系结构精化为构件时,系统的结构开始显现。但是,如何选择这些构件呢?体系结始显现。但是,如何选择这些构件呢?体系结构设计师先从构设计师先从分析模型中所描述的类分析模型中所描述的类开始。这开始。这些分析类表示那些软件体系结构中必定涉及的些分析类表示那些软件体系结构中必定涉及的应用(业务)领域内的实体。因此,应用(业务)领域内的实体。因此,应用领域应用领域是导出和精化构件的一个源泉。另一源泉是是导出和精化构件的一个源泉。另一源泉是基基础设施域。体系结构础设施域。体系结构必须容纳很多基础设施构必须容纳很多基础设施构件使应用构件能够运作,但是这些基础设施构件使应用构件能够运作,但是这些基础设施构件与应用领域没有业务联系,例如,内存管理件与应用领域没有业务联系,例如,内存管理构件、通信构件、数据库构件和任务管理构件构件、通信构件、数据库构件和任务管理构件往往归并到软件体系结构中。往往归并到软件体系结构中。将体系结构精化为构件v体系结构环境图中描述的接口隐含着一个体系结构环境图中描述的接口隐含着一个或者多个特定的构件,这些构件处理穿过或者多个特定的构件,这些构件处理穿过接口的数据。在某些情况下,需要设计一接口的数据。在某些情况下,需要设计一个完整的包含众多构件的子系统体系结构。个完整的包含众多构件的子系统体系结构。SAFEHOME实例36SAFEHOME实例37图8-8 带有高层构件的SafeHome整体体系结构描述系统实例v至此所建立起来的体系结构设计依然处于比较至此所建立起来的体系结构设计依然处于比较高的层次。系统的环境已经表示出来了,预示高的层次。系统的环境已经表示出来了,预示问题域中重要抽象的原始模型也被定义出来,问题域中重要抽象的原始模型也被定义出来,系统的整个结构已经显现出来,并且主要的软系统的整个结构已经显现出来,并且主要的软件构件也都定义出来了,然而,更进一步的精件构件也都定义出来了,然而,更进一步的精化仍然是必要的。化仍然是必要的。v为了完成体系结构设计,要开发一个体系结构为了完成体系结构设计,要开发一个体系结构的实际实例,用意是将体系结构应用到一个特的实际实例,用意是将体系结构应用到一个特定的问题上,目的是证明结构和构件都是合理定的问题上,目的是证明结构和构件都是合理的。的。SAFEHOME实例38评估可选的体系结构设计v设计会导致多种可供选择的候选体系结构,其设计会导致多种可供选择的候选体系结构,其中每一种候选体系结构都需要评估,以确定哪中每一种候选体系结构都需要评估,以确定哪种体系结构最适合要解决的问题。种体系结构最适合要解决的问题。体系结构权衡分析方法vSEI开发了一种体系结构权衡分析方法,该方法建立了开发了一种体系结构权衡分析方法,该方法建立了一个迭代的软件体系结构评估过程。一个迭代的软件体系结构评估过程。1、收集场景。、收集场景。2、诱导需求、约束和环境描述。、诱导需求、约束和环境描述。3、描述那些已经被选用于解决场景和需求的体系结构风格、描述那些已经被选用于解决场景和需求的体系结构风格/模模式。式。4、通过孤立地考虑每个属性来评估质量属性。、通过孤立地考虑每个属性来评估质量属性。5、针对特定的体系结构风格,弄清质量属性对各种体系结构属、针对特定的体系结构风格,弄清质量属性对各种体系结构属性的敏感性。性的敏感性。6、使用在第、使用在第5步中进行的敏感性分析鉴定候选体系结构。步中进行的敏感性分析鉴定候选体系结构。v这这6个步骤描述了第一次个步骤描述了第一次ATAM迭代。基于第迭代。基于第5步和第步和第6步的结果,某些候选体系结构可能被删除,剩余的一个步的结果,某些候选体系结构可能被删除,剩余的一个或多个体系结构可能被修改和进一步细化,然后,或多个体系结构可能被修改和进一步细化,然后,ATAM步骤被再次应用。步骤被再次应用。体系结构复杂性v对体系结构的整体复杂性进行评估,一种很有对体系结构的整体复杂性进行评估,一种很有用的技术是考虑体系结构中构件间的依赖关系,用的技术是考虑体系结构中构件间的依赖关系,这些依赖关系是由系统中的信息这些依赖关系是由系统中的信息/控制流驱动的。控制流驱动的。ZHA98建议了三种类型的依赖:建议了三种类型的依赖:v共享依赖表示在使用相同资源的消费者间或为相同消费者生共享依赖表示在使用相同资源的消费者间或为相同消费者生产的生产者之间的依赖关系。产的生产者之间的依赖关系。v流依赖表示资源的生产者和消费者间的依赖关系。流依赖表示资源的生产者和消费者间的依赖关系。v约束依赖表示在一组活动间相关控制流上的约束。约束依赖表示在一组活动间相关控制流上的约束。体系结构描述语言v体系结构描述语言体系结构描述语言ADL为描述软件体系结构提为描述软件体系结构提供一套语义和语法。供一套语义和语法。HOF01建议建议ADL应该使应该使得设计者具有分解体系结构构件、将单独构件得设计者具有分解体系结构构件、将单独构件组合成大的体系结构块,以及描述构件之间的组合成大的体系结构块,以及描述构件之间的接口的能力。一旦体系结构设计使用的描述的、接口的能力。一旦体系结构设计使用的描述的、基于语言的技术被建立起来,那么很有可能随基于语言的技术被建立起来,那么很有可能随着设计的进化而建立起体系结构的有效评估方着设计的进化而建立起体系结构的有效评估方法。法。映射数据流到软件体系结构v体系结构风格描述了本质上不同的体系结构,体系结构风格描述了本质上不同的体系结构,因此,并不存在一种能够实现从分析模型到各因此,并不存在一种能够实现从分析模型到各种体系风格转换的种体系风格转换的全面映射全面映射。v为了描述体系结构映射的方法,考虑为了描述体系结构映射的方法,考虑“调用和调用和返回返回”体系结构的映射技术体系结构的映射技术这种体系结构是这种体系结构是非常常见的结构。这种映射技术使得设计者能非常常见的结构。这种映射技术使得设计者能够从分析模型的够从分析模型的数据流图数据流图中导出相当复杂的中导出相当复杂的“调用和返回调用和返回”体系结构,这种技术也称为体系结构,这种技术也称为结结构化设计构化设计。v结构化设计经常被刻画为结构化设计经常被刻画为面向数据流面向数据流的设计方的设计方法,它提供了方便的从法,它提供了方便的从数据流图到软件体系结数据流图到软件体系结构的变换构的变换。信息流的类型信息流的类型决定了映射方法。决定了映射方法。DFD的两种类型v为了实现从为了实现从DFD到到体系结构体系结构的映射的映射(需求模型需求模型设计模型设计模型),需要仔细区分,需要仔细区分DFD中数据流的性质,中数据流的性质,并分别学习相应的映射方法。并分别学习相应的映射方法。变换型结构(变换流)变换型结构(变换流)事务型结构(事务流)事务型结构(事务流)变换映射v变换映射是一组设计步骤,可以将具有变变换映射是一组设计步骤,可以将具有变换流特征的换流特征的DFD映射为某个特定的体系结映射为某个特定的体系结构风格。构风格。步骤1:评审基本系统模型v基本系统模型或者环境图把安全功能描述基本系统模型或者环境图把安全功能描述为一个单一的变换,描述了流入和流出安为一个单一的变换,描述了流入和流出安全功能的数据的生产者和消费者。图全功能的数据的生产者和消费者。图8-11刻画了一个刻画了一个0层模型,图层模型,图8-12描述了初步描述了初步精化后的安全功能数据流。精化后的安全功能数据流。SAFEHOME实例39图8-11 SafeHome的环境级DFDSAFEHOME实例40图8-12 SafeHome安全功能的第一层DFD步骤2:评审和精化软件的数据流图v对从分析模型获得的信息进行精化,以获对从分析模型获得的信息进行精化,以获得更多的细节。例如,检查第得更多的细节。例如,检查第2层监控传感层监控传感器的器的DFD(如图如图8-13),并导出第,并导出