软件体系结构设计ppt课件

上传人:cl****1 文档编号:567536581 上传时间:2024-07-21 格式:PPT 页数:117 大小:3.02MB
返回 下载 相关 举报
软件体系结构设计ppt课件_第1页
第1页 / 共117页
软件体系结构设计ppt课件_第2页
第2页 / 共117页
软件体系结构设计ppt课件_第3页
第3页 / 共117页
软件体系结构设计ppt课件_第4页
第4页 / 共117页
软件体系结构设计ppt课件_第5页
第5页 / 共117页
点击查看更多>>
资源描述

《软件体系结构设计ppt课件》由会员分享,可在线阅读,更多相关《软件体系结构设计ppt课件(117页珍藏版)》请在金锄头文库上搜索。

1、软件体系结构设计软件体系结构设计教材教材P175 P175 第第7 7章章1先思考几个问题?先思考几个问题?软件设计的基本原则?(软件设计的基本原则?(回顾回顾)内聚与耦合的区别?(内聚与耦合的区别?(回顾回顾)软件设计的过程模型?(软件设计的过程模型?(回顾回顾)2阅读书的第七章回答下列问题?阅读书的第七章回答下列问题?什么是体系结构?什么是体系结构?体系结构视图分为?体系结构视图分为?体系结构常用哪几种体系结构常用哪几种UMLUML图形图形机制表示?机制表示?1010分钟分钟3第七章第七章 软件体系结构设计软件体系结构设计7.1 7.1 软件体系结构的概念软件体系结构的概念7.2 7.2

2、体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图7.3 7.3 体系结构设计的过程体系结构设计的过程7.4 7.4 体系结构设计模式体系结构设计模式7.5 7.5 概念设计概念设计7.6 7.6 体系结构精化体系结构精化7.7 7.7 基于构件的体系结构基于构件的体系结构7.8 7.8 体系结构验证体系结构验证4第七章第七章 软件体系结构设计软件体系结构设计软件体系结构的定义:软件体系结构的定义:软件软件体系结构体系结构(architecturearchitecture,也称,也称“架构架构”)从高层抽象的角度刻画组成目标软件系统的从高层抽象的角度刻画组成

3、目标软件系统的设计设计元素元素(包括子系统、构件及类)以及它们之间的(包括子系统、构件及类)以及它们之间的逻辑关联。逻辑关联。56软件体系结构设计软件体系结构设计体系结构设计的任务:体系结构设计的任务:建立满足软件需求的建立满足软件需求的软件体系结构。软件体系结构。u体系结构既要明确定义软件各子系统、构件、体系结构既要明确定义软件各子系统、构件、关键类的关键类的职责划分及协作关系职责划分及协作关系,也要描绘它们,也要描绘它们在物理运行环境下的在物理运行环境下的部署模型部署模型;u体系结构还必须针对软件系统全局性、基础性体系结构还必须针对软件系统全局性、基础性的技术问题给出技术解决方案,这种方案

4、构成的技术问题给出技术解决方案,这种方案构成目标软件系统的目标软件系统的技术基础设施技术基础设施。7可信计算终端系统平台安全体系结构可信计算终端系统平台安全体系结构8软件体系结构设计软件体系结构设计体系结构的重要性:体系结构的重要性:u今天软件日益庞大复杂、交付时间日益紧迫、今天软件日益庞大复杂、交付时间日益紧迫、详细设计和软件实现技术日益成熟,详细设计和软件实现技术日益成熟,体系结构体系结构设计已经成为软件质量的瓶颈。设计已经成为软件质量的瓶颈。u与详细设计相比,体系结构设计对性能、灵活与详细设计相比,体系结构设计对性能、灵活性、可修改性、可扩充性等质量需求的影响是性、可修改性、可扩充性等质

5、量需求的影响是全局性的、决定性的全局性的、决定性的。u一旦启动基于体系结构的详细设计,对体系结一旦启动基于体系结构的详细设计,对体系结构进行调优的代价将远大于算法调优的代价。构进行调优的代价将远大于算法调优的代价。9软件体系结构设计软件体系结构设计本章试图本章试图回答的问题回答的问题对对系统进行模块划分时,怎样划分才合理?系统进行模块划分时,怎样划分才合理?在大型软件项目中,需求如此之多,如何基于需在大型软件项目中,需求如此之多,如何基于需求推导体系结构,如何确保体系结构满足软件需求推导体系结构,如何确保体系结构满足软件需求,尤其是非功能需求?求,尤其是非功能需求?是否存在指导软件体系结构设计

6、的过程及方法学是否存在指导软件体系结构设计的过程及方法学?107.1 7.1 软件体系结构的概念软件体系结构的概念本节介绍:本节介绍:什么是软件体系结构什么是软件体系结构体系结构与需求体系结构与需求体系结构设计与详细设计的关系体系结构设计与详细设计的关系从多种视角探讨软件体系结构的不同表现形式从多种视角探讨软件体系结构的不同表现形式117.1.1 7.1.1 何谓体系结构何谓体系结构软件体系结构包括三大要素:软件体系结构包括三大要素:u 组件组件(component)(component)u 连接件连接件(connector)(connector)u 约束约束(constraints)(con

7、straints)连接件表示组件之间的连接和交互关系连接件表示组件之间的连接和交互关系约束表示组件中的元素应满足的条件,以及组件经由连接约束表示组件中的元素应满足的条件,以及组件经由连接件组装成更大模块时应满足的条件。件组装成更大模块时应满足的条件。12图图7.12 7.12 家庭保安系统的体系结构雏形家庭保安系统的体系结构雏形13举例:举例:家庭保安系统家庭保安系统软件软件组件:组件:u如如,图图7.127.12所示的体系结构将家庭保安系统软件划所示的体系结构将家庭保安系统软件划分为界面、核心和物理设备接口三个层次分为界面、核心和物理设备接口三个层次u核心层负责存储所有业务数据并提供业务逻辑

8、处理核心层负责存储所有业务数据并提供业务逻辑处理功能功能u界面层负责向用户呈现家庭保安系统的操作界面,界面层负责向用户呈现家庭保安系统的操作界面,接收用户的界面输入并将其转换为内部事件传递给接收用户的界面输入并将其转换为内部事件传递给核心层核心层。u物理设备接口层应核心层的要求向传感器、报警器、物理设备接口层应核心层的要求向传感器、报警器、报警电话等物理设备发送必要的控制指令,也负责报警电话等物理设备发送必要的控制指令,也负责接收来自传感器的监测数据。接收来自传感器的监测数据。14何谓体系结构何谓体系结构图图7.127.12所示的软件体系结构涉及的所示的软件体系结构涉及的约束约束:(1 1)位

9、于较高层次的软件元素可以向低层元素发出)位于较高层次的软件元素可以向低层元素发出服务请求,低层元素完成计算后向高层元素发送服务请求,低层元素完成计算后向高层元素发送服务应答,反之不行;服务应答,反之不行;(2 2)每个软件元素根据其)每个软件元素根据其职责职责位于最恰当的一个层位于最恰当的一个层次当中,不可错置(如,核心层不能包含界面呈次当中,不可错置(如,核心层不能包含界面呈现和界面输入接收职责,也不能直接与物理设备现和界面输入接收职责,也不能直接与物理设备交互);交互);(3 3)每个层次都可替换,即,一个层次可以被能实)每个层次都可替换,即,一个层次可以被能实现同样现同样对外服务接口对外

10、服务接口的层次所替代。的层次所替代。15体系结构体系结构与软件需求的与软件需求的关系:关系:u体系结构体系结构是以软件需求的实现为目标的软件设是以软件需求的实现为目标的软件设计蓝图,计蓝图,软件需求是体系结构设计的基础和驱软件需求是体系结构设计的基础和驱动因素。动因素。u软件需求,尤其是非功能需求,对软件体系结软件需求,尤其是非功能需求,对软件体系结构具有关键性的塑形作用构具有关键性的塑形作用。体系结构设计与详细设计的体系结构设计与详细设计的关系:关系:u详细设计是针对软件体系结构中某个详细设计是针对软件体系结构中某个未展开模块的未展开模块的局部设计局部设计,必须遵循体系结构中规定的原则、接口

11、,必须遵循体系结构中规定的原则、接口及约束及约束u详细设计详细设计只能实现、不能更改体系结构中规定的模只能实现、不能更改体系结构中规定的模块的对外接口和外部行为块的对外接口和外部行为;u软件体系结构必须为详细设计提供软件体系结构必须为详细设计提供可操作的指可操作的指导和充分的约束导和充分的约束。167.1.2 7.1.2 体系结构视图体系结构视图完整完整的软件体系结构应该包含以下的软件体系结构应该包含以下视图:视图:逻辑视图:逻辑视图:体系结构中各软件模块的逻辑功体系结构中各软件模块的逻辑功能划分(或曰职责分派),以及基于这种能划分(或曰职责分派),以及基于这种划分的协作行为。逻辑视图的示例见

12、划分的协作行为。逻辑视图的示例见图图7.127.12。开发视图:开发视图:软件源代码的程序分包及目录结软件源代码的程序分包及目录结构,采用的类库、中间构,采用的类库、中间件或件或框架框架(framework(framework) ),它们与逻辑视图中各模块之它们与逻辑视图中各模块之间的映射关系。开发视图的示例见间的映射关系。开发视图的示例见图图7.197.19。17体系结构视图体系结构视图物理视图:物理视图:安装部署的物理机器及其网络连接,安装部署的物理机器及其网络连接,逻辑视图及开发视图中逻辑视图及开发视图中模块或程序包的物理部模块或程序包的物理部署位置署位置。物理视图的示例见。物理视图的示

13、例见图图7.207.20。运行视图:运行视图:软件运行时进程、线程的划分,它软件运行时进程、线程的划分,它们之间的并发与同步,瞬时快照们之间的并发与同步,瞬时快照软件运行软件运行过程中某个特定时刻活跃的对象及其协作关系过程中某个特定时刻活跃的对象及其协作关系,以及它们与逻辑视图和开发视图之间的映射关以及它们与逻辑视图和开发视图之间的映射关系。系。数据视图:数据视图:持久数据的存储方案,数据传递、持久数据的存储方案,数据传递、备份、恢复、同步方案,与物理视图之间的映备份、恢复、同步方案,与物理视图之间的映射关系。射关系。187.2 7.2 体系结构的表示体系结构的表示用于表示体系结构的逻辑视图的

14、用于表示体系结构的逻辑视图的UMLUML图形机图形机制主要是包图和构件图,有时还辅以类图;制主要是包图和构件图,有时还辅以类图;u开发视图开发视图的表示可能会用到的表示可能会用到包图包图;u物理视图物理视图显然应表示为显然应表示为部署图部署图;u因为因为运行视图运行视图涉及到并发、同步以及软件运行涉及到并发、同步以及软件运行过程中的瞬时快照,所以它应表示为过程中的瞬时快照,所以它应表示为活动图活动图与与对象图对象图;u数据视图数据视图一般表示为一般表示为类图类图或者或者实体实体- -关系图关系图,197.2.1 7.2.1 包图包图包图包图刻画包之间的构成和依赖关系。刻画包之间的构成和依赖关系

15、。u包是包是UMLUML模型的一种组织单元,它可以包含一组具有逻模型的一种组织单元,它可以包含一组具有逻辑关联的辑关联的UMLUML模型元素(例如用例、类等)、模型图模型元素(例如用例、类等)、模型图(例如用例图、类图、交互图、状态图、活动图等),(例如用例图、类图、交互图、状态图、活动图等),以及其他的包。以及其他的包。u包在模型管理过程中是包在模型管理过程中是配置管理配置管理的基本单元,同时也的基本单元,同时也为为访问控制访问控制提供基本手段。提供基本手段。20包图包图包图的作用:包图的作用:在在整个软件开发过程整个软件开发过程中,包图用于以结构化、中,包图用于以结构化、层次化的方式组织、

16、管理大型的软件模型,层次化的方式组织、管理大型的软件模型,使得分别处理不同包的开发团队之间的相使得分别处理不同包的开发团队之间的相互干扰程度降至最低互干扰程度降至最低;u在在业务分析和需求定义阶段业务分析和需求定义阶段,包图可用于刻画,包图可用于刻画业务系统和用户需求的结构;业务系统和用户需求的结构;u在设计和实现阶段在设计和实现阶段,包图可用于描述软件系统,包图可用于描述软件系统的高层结构。的高层结构。21图图7.17.1 包包图图示示例例22(一)(一) 包及包间依赖包及包间依赖可以从四种不同角度来理解包的概念:可以从四种不同角度来理解包的概念:作为软件模型的组织单元。作为软件模型的组织单

17、元。对于一个大型的软件系统,对于一个大型的软件系统,前述每一种前述每一种UMLUML模型图都可能非常庞大、复杂。此时,模型图都可能非常庞大、复杂。此时,就有必要将系统划分成不同的包,在每个包中构建各类就有必要将系统划分成不同的包,在每个包中构建各类模型图。模型图。作为模型管理的基本单元。作为模型管理的基本单元。只要包的分划合理,就可只要包的分划合理,就可以以包为单位分派软件开发任务、安排计划。与此同时,以以包为单位分派软件开发任务、安排计划。与此同时,在配置管理(包括版本控制)活动中,包是天然的基本在配置管理(包括版本控制)活动中,包是天然的基本处理单元。处理单元。作为系统高层结构中的组成元素

18、作为系统高层结构中的组成元素。类类图适于展示面向图适于展示面向对象软件系统的静态结构。但是,对于大型系统而言,对象软件系统的静态结构。但是,对于大型系统而言,类的粒度太小,类图过于细节化,难以宏观地展现系统类的粒度太小,类图过于细节化,难以宏观地展现系统的高层结构。因此,对于大型软件而言,可以逐级细分的高层结构。因此,对于大型软件而言,可以逐级细分的包才是软件高层结构中恰当的组成元素。这一结论可的包才是软件高层结构中恰当的组成元素。这一结论可延伸至大型业务系统和软件需求的顶层结构描述。延伸至大型业务系统和软件需求的顶层结构描述。23包及包间依赖包及包间依赖作为访问控制的基本手段作为访问控制的基

19、本手段。可以将包视为名字空间,其中的每个模型元素可可以将包视为名字空间,其中的每个模型元素可以通过在其(简单)名称之前拼接包名,构成全以通过在其(简单)名称之前拼接包名,构成全系统范围内的唯一的限定名(系统范围内的唯一的限定名(qualified namequalified name)来指称它,正如在文件系统中以文件的全路径名来指称它,正如在文件系统中以文件的全路径名来唯一地指称一个文件。来唯一地指称一个文件。如,包如,包p1p1的子包的子包p11p11中的类中的类class1class1的限定名的限定名为为p1.p11.class1p1.p11.class1。24UMLUML中以中以包为包为

20、基准的可见性基准的可见性规则:规则:包中可见性定义为包中可见性定义为publicpublic的元素可以在模型的元素可以在模型的任何地方被引用;的任何地方被引用;包中可见性定义为包中可见性定义为privateprivate的元素仅在该元素的元素仅在该元素所在的(最内层)包中可见,其他地方不能所在的(最内层)包中可见,其他地方不能引用引用。25(二)(二) 包图包图包之间的两种关系:包之间的两种关系:构成和依赖构成和依赖。u构成关系构成关系用父包图元直接包含子包图元的方式用父包图元直接包含子包图元的方式来表示。来表示。u依赖关系依赖关系的图元与类间依赖关系相同,见的图元与类间依赖关系相同,见图图7

21、.17.1。如果包图的每个包中仅包含类,则称此种包如果包图的每个包中仅包含类,则称此种包图为图为类包图类包图;如果包图的每个包中仅包含用例,则称此种如果包图的每个包中仅包含用例,则称此种包图为包图为用例包图用例包图。267.2.2 7.2.2 构件图构件图构件的定义:构件的定义:构件是可执行软件系统中的某个可分离的物理模块,构件是可执行软件系统中的某个可分离的物理模块,它具有精确定义的对外接口,并且外界只能通过接它具有精确定义的对外接口,并且外界只能通过接口来访问它。口来访问它。2728构件的特点:构件的特点:构件是构件是可分离的可分离的,它通常表现为一个或数个可独立,它通常表现为一个或数个可

22、独立部署的执行码文件;部署的执行码文件;构件是构件是可替换的可替换的,嵌于运行系统中的构件实例能够,嵌于运行系统中的构件实例能够被其他任何实现了相同接口的另一构件实例所替换;被其他任何实现了相同接口的另一构件实例所替换;构件是构件是可配置的可配置的,在构件在部署至运行环境之后,在构件在部署至运行环境之后,外界仍然可以通过规范化的配置机制修改构件的配外界仍然可以通过规范化的配置机制修改构件的配置数据,进而影响(或称置数据,进而影响(或称“定制定制”)构件的对外服)构件的对外服务的功能或行为。务的功能或行为。构件一般具有较好的构件一般具有较好的可复用可复用潜力,构件可不经源代潜力,构件可不经源代码

23、修改,也不需要重新编译,即可应用于多个软件码修改,也不需要重新编译,即可应用于多个软件项目或软件产品,这部分地归因于构件可通过配置项目或软件产品,这部分地归因于构件可通过配置信息的调整来适应不同的应用场景,同时也归因于信息的调整来适应不同的应用场景,同时也归因于构件在创立之初即考虑了不同应用场景下的可复用构件在创立之初即考虑了不同应用场景下的可复用性。性。29图图7.27.2是表示某个软件系统中主要构件之间是表示某个软件系统中主要构件之间关系的构件图关系的构件图图图7.37.3是其中是其中“Customer”“Customer”构件的内部结构构件的内部结构图。图。30图图7.2 7.2 构件图

24、示例构件图示例 图图7.3 7.3 构件定义图示构件定义图示例例31(一)(一) 构件及其表示构件及其表示接口:接口:是一组操作是一组操作 和和/ /或或 属性的说明(不属性的说明(不含操作的实现),它用作服务提供方和使含操作的实现),它用作服务提供方和使用方之间的协议。接口由类或构件实现。用方之间的协议。接口由类或构件实现。构件最关键的特征是它构件最关键的特征是它对外提供的对外提供的供给接口供给接口(provided interfaceprovided interface),以及它请求其),以及它请求其他类、构件或软件模块提供帮助时他类、构件或软件模块提供帮助时使用的使用的需求接口需求接口(

25、required interfacerequired interface)。)。32构件及其表示构件及其表示构件与接口的关系:构件与接口的关系:构件的实现与接口是分离的,也是隐藏的,构件的实现与接口是分离的,也是隐藏的,即,即,构件的实现者可以自由选择实现方法,只要它完构件的实现者可以自由选择实现方法,只要它完整地实现了供给接口中规定的操作及属性即可,整地实现了供给接口中规定的操作及属性即可,并且它对其他软件模块的访问必须通过需求接口并且它对其他软件模块的访问必须通过需求接口来进行来进行。构件构件的使用者只需要了解其供给接口,构件的服的使用者只需要了解其供给接口,构件的服务提供者只需要了解其需

26、求接口,决不需要了解务提供者只需要了解其需求接口,决不需要了解构件的内部实现。构件的内部实现。只要构件的两种实现遵循相同的接口定义,那么只要构件的两种实现遵循相同的接口定义,那么它们就一定是可自由替换的。它们就一定是可自由替换的。构件的表示图元仅示出构件的名字和接口。构件的表示图元仅示出构件的名字和接口。33构件及其表示构件及其表示端口(端口(portport):):针对每个构件还可以定义一些端针对每个构件还可以定义一些端口,每个端口绑定了一组供给接口和口,每个端口绑定了一组供给接口和/ /或需求接口。或需求接口。u对于具有端口的构件,它通过端口与外部世界交互。对于具有端口的构件,它通过端口与

27、外部世界交互。当外部请求到达端口时,构件的端口知道如何将外部当外部请求到达端口时,构件的端口知道如何将外部请求路由至合适的接口的实现体;请求路由至合适的接口的实现体;u当构件通过端口请求外部服务时,端口也知道如何分当构件通过端口请求外部服务时,端口也知道如何分辨该请求所对应的需求接口。辨该请求所对应的需求接口。针对构件的每个接口和端口,可以通过自然语言针对构件的每个接口和端口,可以通过自然语言描述、用例图或状态图来定义其使用方法。描述、用例图或状态图来定义其使用方法。34图图7.4 7.4 构件的表示图元构件的表示图元(a a)最简化的三种图元)最简化的三种图元 (隐藏接口部(隐藏接口部分)分

28、)(b b)构件及其接口的两种表示方法)构件及其接口的两种表示方法(c)构件端口的表示方法35(二)构件图(二)构件图构件图的结点:构件图的结点:构件、类和包。构件、类和包。构件图的边构件图的边与普通类图的边没有严格区分与普通类图的边没有严格区分构件图的关系:构件图的关系:构件、类和包之间的构件、类和包之间的依赖关系依赖关系,偶尔也可以出现偶尔也可以出现继承关系继承关系和和实现关系实现关系。u两个构件间的依赖关系可以直接搭建于这两个构件两个构件间的依赖关系可以直接搭建于这两个构件之间,也可以搭建于一个构件与另一构件的供给接之间,也可以搭建于一个构件与另一构件的供给接口之间,还可以描述成一个构件

29、的需求接口与另一口之间,还可以描述成一个构件的需求接口与另一构件的供给接口之间的依赖关系,见构件的供给接口之间的依赖关系,见图图7.7.2 2。36(三)(三) 构件定义图构件定义图构件构件定义图定义图描述一个构件的内部结构。它可以描述一个构件的内部结构。它可以包含多个子构件,每个子构件的需求接口要么包含多个子构件,每个子构件的需求接口要么由另一子构件的供给接口负责实现,要么经由由另一子构件的供给接口负责实现,要么经由父构件的需求接口请求外部支援,这样才能构父构件的需求接口请求外部支援,这样才能构成父构件的完整实现成父构件的完整实现。见。见图图7.37.3在构件定义图中,一个子构件的供给接口对

30、另在构件定义图中,一个子构件的供给接口对另一子构件的需求接口的实现通过两种图元之间一子构件的需求接口的实现通过两种图元之间的衔接来表示。的衔接来表示。子构件端口与父构件端口之间的有向边称为子构件端口与父构件端口之间的有向边称为委委托连接器托连接器(delegation connectordelegation connector)。377.2.3 7.2.3 部署图部署图部署图部署图表示软件系统的表示软件系统的可执行工件可执行工件(artifactartifact)在运行环境中的分布情况在运行环境中的分布情况。u工件工件是指软件系统中相对独立的物理实现单元,例如是指软件系统中相对独立的物理实现单

31、元,例如WindowsWindows平台下的动态链接库(平台下的动态链接库(DLLDLL)文件、)文件、JavaJava系统系统中的类库(中的类库(jarjar)文件)文件。部署部署图的作用:图的作用:u在在分布计算环境中,部署图为软件配置管理工程师确分布计算环境中,部署图为软件配置管理工程师确定软件发布版本的封包方法提供依据,同时也是软件定软件发布版本的封包方法提供依据,同时也是软件安装、维护工程师了解系统部署状况的主要信息源安装、维护工程师了解系统部署状况的主要信息源。u软件软件设计、实现人员理解软件运行环境、确定软构件设计、实现人员理解软件运行环境、确定软构件划分的重要参考。划分的重要参

32、考。38部署图部署图两种部署图:两种部署图:逻辑层面的逻辑层面的描述性部署图描述性部署图(见图见图7.57.5),物理层面的),物理层面的实例性部署图实例性部署图(见(见图图7.67.6)。)。u描述性部署图描述性部署图描述软件的逻辑布局描述软件的逻辑布局u实例性部署图实例性部署图在描述性部署图的基础上针对具在描述性部署图的基础上针对具体的运行环境和特定的系统配置描述软件系统体的运行环境和特定的系统配置描述软件系统的物理部署情况。的物理部署情况。39举例举例如机票预订管理系统,设计人员可使用如机票预订管理系统,设计人员可使用描述性描述性部署图部署图展现待发布的软件系统有哪些工件,各展现待发布的

33、软件系统有哪些工件,各工件在网络环境中计算结点的分布,结点之间工件在网络环境中计算结点的分布,结点之间的通信连接,工件间的依赖关系等。的通信连接,工件间的依赖关系等。假设该软件系统在三家机票预订服务商投入应假设该软件系统在三家机票预订服务商投入应用,那么可以使用三张用,那么可以使用三张实例性部署图实例性部署图分别展示分别展示它在不同服务商的具体网络环境下不同的部署它在不同服务商的具体网络环境下不同的部署情况。情况。有可能某个工件部署在一家服务商的应用服务有可能某个工件部署在一家服务商的应用服务器上,但另一服务商购买的软件版本中却无此器上,但另一服务商购买的软件版本中却无此工件。工件。各工件的配

34、置信息随使用需求和环境的变化有各工件的配置信息随使用需求和环境的变化有所差异。所差异。40图图7.5 7.5 描述性部署图示例描述性部署图示例41图图7.6 7.6 实例性部署图示例实例性部署图示例42(一)(一) 描述性部署图描述性部署图描述性部署图的四类结点:描述性部署图的四类结点:结点结点 表示软件运行环境中的一组计算资源表示软件运行环境中的一组计算资源 如,客户端计算机、如,客户端计算机、WebWeb服务器、应用服务器、数据库服服务器、应用服务器、数据库服务器等务器等 软件工件驻留其中,依赖基础服务实现工件的功能。软件工件驻留其中,依赖基础服务实现工件的功能。 如,如,图图7.57.5

35、中驻留在中驻留在WebWeb服务器上的工件依靠服务器提供的服务器上的工件依靠服务器提供的HTTPHTTP请求和应答处理能力实现与请求和应答处理能力实现与WebWeb客户端的交互功能客户端的交互功能工件工件 以构造型以构造型标识。标识。 工件位于结点图元之内,表示该工件部署于相应结点。工件位于结点图元之内,表示该工件部署于相应结点。43描述性部署图描述性部署图构件构件 位于结点内的构件表示该构件部署于相应结点位于结点内的构件表示该构件部署于相应结点 位于结点外的构件用来指明工件与构件之间的依赖关位于结点外的构件用来指明工件与构件之间的依赖关系。系。 不需要将所有的构件引入至部署图,仅显示相关的、

36、不需要将所有的构件引入至部署图,仅显示相关的、重要的构件即可。重要的构件即可。与用例有关的执行者与用例有关的执行者 在部署图中引入执行者意在强调执行者与部署于结点在部署图中引入执行者意在强调执行者与部署于结点中的工件之间的使用关系及信息交互。中的工件之间的使用关系及信息交互。44描述性部署图描述性部署图描述性部署图的四种边:描述性部署图的四种边:结点之间的通信关联结点之间的通信关联 表示两个结点间的通信连接表示两个结点间的通信连接 可以在通信关联边上以构造型说明通信协议及其他约束,可以在通信关联边上以构造型说明通信协议及其他约束,还可以标注结点之间的数量对应关系还可以标注结点之间的数量对应关系

37、 如,如,WebWeb服务器通过服务器通过HTTPHTTP协议与客户端相连,一台协议与客户端相连,一台WebWeb服务服务器可对应多台客户端器可对应多台客户端工件之间的依赖关系工件之间的依赖关系 与类之间的依赖关系的含义类似。与类之间的依赖关系的含义类似。 如果工件定义了对外接口,那么软件设计人员应确保工如果工件定义了对外接口,那么软件设计人员应确保工件之间的依赖关系表现为工件接口上的依赖关系,如此可件之间的依赖关系表现为工件接口上的依赖关系,如此可降低工件之间的耦合度降低工件之间的耦合度45描述性部署图描述性部署图工件与构件之间的依赖关系工件与构件之间的依赖关系 表示工件具体实现了构件。表示

38、工件具体实现了构件。 在该依赖关系之上需标注构造型在该依赖关系之上需标注构造型。用例执行者与工件之间的依赖关系用例执行者与工件之间的依赖关系 表示执行者使用工件提供的服务(依赖关系从执行者指表示执行者使用工件提供的服务(依赖关系从执行者指向工件),或工件使用执行者提供的服务(依赖关系从工向工件),或工件使用执行者提供的服务(依赖关系从工件指向执行者)。件指向执行者)。l在描述性部署图中对各类依赖关系的建模切忌贪多求全,在描述性部署图中对各类依赖关系的建模切忌贪多求全,仅标示重要的依赖关系。仅标示重要的依赖关系。46(二)(二) 实例性部署图实例性部署图实例性部署图与描述性部署图之间的关系可实例

39、性部署图与描述性部署图之间的关系可类比为对象图类比为对象图与类图之间的关系与类图之间的关系。实例性部署图实例性部署图的结点和边分别视为描述性部署图中结点和的结点和边分别视为描述性部署图中结点和边的边的实例实例。在实例性部署图中结点的命名方式为在实例性部署图中结点的命名方式为 “ “结点名结点名: : 类型名类型名” 其中类型名为描述性部署图中的结点名。其中类型名为描述性部署图中的结点名。如果实例性部署图中的结点包含了描述性部署相应结点中如果实例性部署图中的结点包含了描述性部署相应结点中的所有工件,则不必在该结点中再列举这些工件。的所有工件,则不必在该结点中再列举这些工件。实例性部署图的结点还可

40、实例性部署图的结点还可包含对工件的具体配置信息包含对工件的具体配置信息的描的描述,见述,见图图7.67.6中的结点中的结点“customerDeploy.xml”“customerDeploy.xml”。477.2.4 7.2.4 对象图对象图对象图是软件系统中某些对象在运行过程中的瞬时快照对象图是软件系统中某些对象在运行过程中的瞬时快照结点表示对象,边表示对象之间的链接,见图结点表示对象,边表示对象之间的链接,见图7.77.7。图图7.7 7.7 对象图示例对象图示例48对象图对象图对象图对象图是是类类图图在软件系统的运行过程中某个时刻点在软件系统的运行过程中某个时刻点上或某一时间段内的上或

41、某一时间段内的实例化样本实例化样本。u类图中的一个类在对象图中可以表现为多个活跃的对类图中的一个类在对象图中可以表现为多个活跃的对象实例,也可以没有任何对象与之对应(因为此类的象实例,也可以没有任何对象与之对应(因为此类的对象当前尚不存在)。对象当前尚不存在)。u对象图的链接边是类图中关联边的实例化,而类图中对象图的链接边是类图中关联边的实例化,而类图中的其他边,如继承、依赖等在对象图中则无从表现。的其他边,如继承、依赖等在对象图中则无从表现。u与类图不同,对象图不能定义软件系统(或子系统)与类图不同,对象图不能定义软件系统(或子系统)的结构或行为,它只是采用场景例化的方式解释类图的结构或行为

42、,它只是采用场景例化的方式解释类图隐含的一种可能。隐含的一种可能。u虽然对象图表现了软件系统运行时的一种场景,但由虽然对象图表现了软件系统运行时的一种场景,但由于它是一种静态的瞬时快照,不像交互图、状态图、于它是一种静态的瞬时快照,不像交互图、状态图、活动图那样可以表示软件系统(或其子部分)随时间活动图那样可以表示软件系统(或其子部分)随时间而演化的动作过程,所以而演化的动作过程,所以对象图仍被归于静态视图的对象图仍被归于静态视图的范畴范畴。497.37.3体系结构设计的过程模型体系结构设计的过程模型如何如何展开软件体系结构的设计工作展开软件体系结构的设计工作?50体系结构设计的过程模型体系结

43、构设计的过程模型将将体系结构的设计过程划分为两个阶段:体系结构的设计过程划分为两个阶段:初初步设计和体系结构精化步设计和体系结构精化。u在在前一阶段,体系结构设计师仅需针对软件需前一阶段,体系结构设计师仅需针对软件需求模型中的部分关键需求项来构思体系结构的求模型中的部分关键需求项来构思体系结构的雏形。雏形。u在在后一阶段全面地考虑所有的软件需求项、丰后一阶段全面地考虑所有的软件需求项、丰富体系结构雏形的细节并且对其进行调优。富体系结构雏形的细节并且对其进行调优。关键需求项关键需求项是指对用户满意度及软件结构均是指对用户满意度及软件结构均有重要影响的需求项有重要影响的需求项。 “20-8020-

44、80规则规则” :20%20%的关键需求项决定的关键需求项决定80%80%的体系结构形态。的体系结构形态。51体系结构设计的过程模型体系结构设计的过程模型本书推荐的体系结构设计过程的主要活动如下:本书推荐的体系结构设计过程的主要活动如下:概念设计概念设计 在深入理解业务领域和软件需求模型的基础上辨识关键需在深入理解业务领域和软件需求模型的基础上辨识关键需求,研究采用何种体系结构雏形才能以合理的、充分优化求,研究采用何种体系结构雏形才能以合理的、充分优化的方式实现这些关键需求。的方式实现这些关键需求。体系结构精化体系结构精化 对体系结构的概念雏形进行精化,分别从逻辑视图、开发对体系结构的概念雏形

45、进行精化,分别从逻辑视图、开发视图、运行视图、物理视图、数据视图等多种视角设计软视图、运行视图、物理视图、数据视图等多种视角设计软件的体系结构。件的体系结构。 在软件项目中,究竟选取哪些体系结构视图取决于项目的在软件项目中,究竟选取哪些体系结构视图取决于项目的需要,但是逻辑视图对所有项目都是必需的。需要,但是逻辑视图对所有项目都是必需的。 体系结构的精化过程也是需求导向的:应考虑如何才能以体系结构的精化过程也是需求导向的:应考虑如何才能以合理的、充分优化的方式完整地实现软件需求模型?合理的、充分优化的方式完整地实现软件需求模型?52体系结构设计的过程模型体系结构设计的过程模型体系结构验证体系结

46、构验证 基于精化后的软件体系结构,重新审视所有软件基于精化后的软件体系结构,重新审视所有软件需求项的实现方案,研究如何化解迄今标识出来需求项的实现方案,研究如何化解迄今标识出来的所有重要的全局风险,在此过程中验证体系结的所有重要的全局风险,在此过程中验证体系结构的合理性和充分优化性。构的合理性和充分优化性。这些活动可按序组织为体系结构设计工作流,见这些活动可按序组织为体系结构设计工作流,见图图7.87.8。53体系结构设计的过程模型体系结构设计的过程模型 图图7.8 7.8 体系结构设计体系结构设计工作流工作流与需求工程的过程模型类似,大中型软件系统的体系与需求工程的过程模型类似,大中型软件系

47、统的体系结构设计过程同样采用结构设计过程同样采用迭代方式迭代方式。两种迭代方式:两种迭代方式:u 针对体系结构验证过程发现的问题返工至概念设计或精化针对体系结构验证过程发现的问题返工至概念设计或精化阶段阶段;u 分别分别针对不同的需求项依次进行概念设计、体系结构精化针对不同的需求项依次进行概念设计、体系结构精化和验证,然后进行体系结构的集成。和验证,然后进行体系结构的集成。后一种迭代方式必须确保重要的需求项优先。后一种迭代方式必须确保重要的需求项优先。547.4 7.4 体系结构设计模式体系结构设计模式7.4.1 7.4.1 何谓设计模式何谓设计模式设计模式设计模式:以设计复用为目的,采用一种

48、良好定以设计复用为目的,采用一种良好定义的、正规的、一致的方式记录的软件设计经验。义的、正规的、一致的方式记录的软件设计经验。每条模式关注在一般或特定设计环境中可能重复每条模式关注在一般或特定设计环境中可能重复出现的设计问题,并给出经过充分实践考验的软出现的设计问题,并给出经过充分实践考验的软件解决方案。件解决方案。55体系结构设计模式体系结构设计模式一种设计模式包含以下内容:一种设计模式包含以下内容:设计模式的名称。设计模式的名称。 名称应能概观地反映模式蕴含的设计经验,并尽量名称应能概观地反映模式蕴含的设计经验,并尽量体现它与业界广泛采用的已有模式之间的关系。体现它与业界广泛采用的已有模式

49、之间的关系。问题。问题。 描述模式解决的设计问题,包括问题的背景。描述模式解决的设计问题,包括问题的背景。施用条件。施用条件。 描述在何种条件下才推荐使用该模式解决上述问题,描述在何种条件下才推荐使用该模式解决上述问题,以及在使用本模式之前必须考虑的约束条件。以及在使用本模式之前必须考虑的约束条件。解决方案。解决方案。 这是设计模式的主体部分,描述问题的软件解决方这是设计模式的主体部分,描述问题的软件解决方案。案。56体系结构设计模式体系结构设计模式效果。效果。 描述上述解决方案导致的正面及负面的设计效果。描述上述解决方案导致的正面及负面的设计效果。示例代码。示例代码。 以特定的程序设计语言或

50、类程序设计语言给出应以特定的程序设计语言或类程序设计语言给出应用本模式的示例代码。用本模式的示例代码。关联模式。关联模式。 说明本模式继承或扩展了哪些模式,与哪些模式说明本模式继承或扩展了哪些模式,与哪些模式关联。关联。针对具体的设计模式的描述可视情况适当针对具体的设计模式的描述可视情况适当取舍,但取舍,但名称、解决方案名称、解决方案和和效果效果是不可或是不可或缺的。缺的。57体系结构设计模式体系结构设计模式设计模式的分类视角:设计模式的分类视角: 从模式提供的从模式提供的解决方案的抽象程度解决方案的抽象程度看,模式自看,模式自高至低可依次划分为:高至低可依次划分为:体系结构设计模式:体系结构

51、设计模式:面向整个软件系统或面向整个软件系统或规规模较大的软件子系统模较大的软件子系统,给出抽象程度较高的结,给出抽象程度较高的结构化组织方式。构化组织方式。 它提供一些预定义的子系统或构件,它提供一些预定义的子系统或构件,规定其职责,描述它们之间相互关系、规定其职责,描述它们之间相互关系、协作方式的规则或指南。协作方式的规则或指南。58体系结构设计模式体系结构设计模式软件子系统或构件设计模式:软件子系统或构件设计模式:u面向面向中等规模中等规模的软件子系统或构件,以独立于程序的软件子系统或构件,以独立于程序设计语言的方式,给出内部的软件元素(粒度更小、设计语言的方式,给出内部的软件元素(粒度

52、更小、抽象级别更低的子系统或构件)的结构化组织方式。抽象级别更低的子系统或构件)的结构化组织方式。u如果此类设计模式采用面向对象方式给出解决方案,如果此类设计模式采用面向对象方式给出解决方案,那么,方案中的软件元素往往是类,解决方案除规那么,方案中的软件元素往往是类,解决方案除规定每个类的职责外,还会以定每个类的职责外,还会以UMLUML类图表示类之间的类图表示类之间的关系,以关系,以UMLUML交互图表示类之间的协作途径。交互图表示类之间的协作途径。面向软件实现的设计模式:面向软件实现的设计模式:u针对针对软件子系统或构件中的某个特定问题软件子系统或构件中的某个特定问题,描述如,描述如何利用

53、特定的程序设计语言的具体特征来解决此问何利用特定的程序设计语言的具体特征来解决此问题。题。u此类模式不影响软件结构。此类模式不影响软件结构。59体系结构设计模式体系结构设计模式(2 2)从模式)从模式解决的设计问题解决的设计问题的类别看,模式可划分为:的类别看,模式可划分为:创建型模式(工厂方法模式、生成器模式)创建型模式(工厂方法模式、生成器模式) 专门解决复杂对象的创建问题。专门解决复杂对象的创建问题。结构型模式(结构型模式(adpteradpter适配器模式、适配器模式、BridgeBridge桥接模式)桥接模式) 将软件系统、子系统或构件分解为粒度更小的软件元将软件系统、子系统或构件分

54、解为粒度更小的软件元素,规定其职责和协作方式。素,规定其职责和协作方式。行为型模式(行为型模式(InterpreterInterpreter解释器、解释器、IteratorIterator迭代)迭代) 不仅描述软件系统、子系统或构件的内部结构,更强不仅描述软件系统、子系统或构件的内部结构,更强调位于结构中的软件元素在协同解决问题时的通信及调位于结构中的软件元素在协同解决问题时的通信及控制流模式。控制流模式。60体系结构设计模式体系结构设计模式分布型模式(客户机分布型模式(客户机/ /服务器构架)服务器构架) 为构件分布于网络中不同计算机的软件系统提供为构件分布于网络中不同计算机的软件系统提供系

55、统结构和远程互操作方法。系统结构和远程互操作方法。适应性模式(微核模式)适应性模式(微核模式) 专门针对软件系统、子系统或构件的扩展、改进、专门针对软件系统、子系统或构件的扩展、改进、演进、变更等设计问题提供软件解决方案。演进、变更等设计问题提供软件解决方案。访问控制模式(访问控制模式(MVCMVC) 专门针对构件、软件服务或共享资源的访问控制专门针对构件、软件服务或共享资源的访问控制问题提供软件解决方案。问题提供软件解决方案。61体系结构设计模式体系结构设计模式(3 3)按照模式)按照模式基于的计算平台基于的计算平台类别可划分为:类别可划分为:独立于计算平台的设计模式。独立于计算平台的设计模

56、式。面向特定计算平台(如面向特定计算平台(如J2EEJ2EE、.NET.NET等)的设计等)的设计模式模式设计模式的意义和价值设计模式的意义和价值:以标准并且规范的方式以标准并且规范的方式记录软件设计经验,支持软件设计级复用。记录软件设计经验,支持软件设计级复用。627.4.2 7.4.2 通用的体系结构模式通用的体系结构模式体系结构模式是专门针对体系结构设计问题的设体系结构模式是专门针对体系结构设计问题的设计模式,是软件体系结构设计的经验结晶。计模式,是软件体系结构设计的经验结晶。本节内容:本节内容:u分层模式分层模式u管道与过滤器模式管道与过滤器模式u黑板模式黑板模式63(一)分层模式(一

57、)分层模式该模式将软件系统按照抽象级别逐次递增或该模式将软件系统按照抽象级别逐次递增或递减的顺序划分为若干层次,每层由一些递减的顺序划分为若干层次,每层由一些抽象级别相同的构件组成,见抽象级别相同的构件组成,见图图7.97.9。u在在严格的分层体系结构中严格的分层体系结构中,每层的构件仅为,每层的构件仅为紧邻其上紧邻其上的抽象级别更高的层次提供服务,并且它们仅使用紧的抽象级别更高的层次提供服务,并且它们仅使用紧邻下层提供的服务;邻下层提供的服务;u在在稍松散的分层体系结构中稍松散的分层体系结构中,服务提供者和接受者,服务提供者和接受者可可以跨越中间层以跨越中间层,但前者一定位于比后者更高的抽象

58、层,但前者一定位于比后者更高的抽象层次。次。u一般而言,顶层直接面向用户提供软件系统的交互界一般而言,顶层直接面向用户提供软件系统的交互界面,底层则负责提供基础性、公共性的技术服务,它面,底层则负责提供基础性、公共性的技术服务,它比较接近于硬件计算环境、操作系统或数据库管理系比较接近于硬件计算环境、操作系统或数据库管理系统,中间层的抽象级别介乎二者之间。统,中间层的抽象级别介乎二者之间。64图图7.9 7.9 分层体系结构模式示意图分层体系结构模式示意图65(一)分层模式(一)分层模式层次之间的连接有两种形态:层次之间的连接有两种形态:高层构件向低层构件高层构件向低层构件发出服务请求,低层构件

59、在发出服务请求,低层构件在计算完成后向请求者发送服务应答。计算完成后向请求者发送服务应答。在此过程中,在此过程中,低层构件可能向更低层构件发送抽象级别更低、低层构件可能向更低层构件发送抽象级别更低、粒度更细的服务请求。粒度更细的服务请求。低层构件在主动探测或被动获知低层构件在主动探测或被动获知计算环境的变化计算环境的变化事件后通知高层构件,事件后通知高层构件,这种通知链可能一直延伸这种通知链可能一直延伸到最高层以便软件系统向用户报告,也可能中止到最高层以便软件系统向用户报告,也可能中止于某个中间层次。于某个中间层次。66分层模式分层模式每个层次对上层服务接口的两种组织方式每个层次对上层服务接口

60、的两种组织方式 层次中的每个提供服务的构件公开其接口层次中的每个提供服务的构件公开其接口 将这些接口封装于层次的内部,每个层次提供统将这些接口封装于层次的内部,每个层次提供统一的、整合的服务接口一的、整合的服务接口前一种方式对上层服务请求者更直接,服务提供前一种方式对上层服务请求者更直接,服务提供者所在层次的透明度也较高者所在层次的透明度也较高后一种方式降低了两个层次之间的耦合度。后一种方式降低了两个层次之间的耦合度。G合理地确立一系列抽象级别是采用分层模式进行合理地确立一系列抽象级别是采用分层模式进行体系结构设计的关键。体系结构设计的关键。67分层模式分层模式分层体系结构模式具有以下正面效应

61、:分层体系结构模式具有以下正面效应:松耦合松耦合 通过软件层次的划分和层间接口的规整有效降低通过软件层次的划分和层间接口的规整有效降低整个软件系统的耦合度,强化软件系统各构件之整个软件系统的耦合度,强化软件系统各构件之间依赖关系的局部化程度。间依赖关系的局部化程度。可替换性可替换性 一个层次可以被实现了同样的对外服务接口的层一个层次可以被实现了同样的对外服务接口的层次所替换;次所替换; 接口变化给层次替换带来的影响仅限于直接使用接口变化给层次替换带来的影响仅限于直接使用该层服务的上层构件。该层服务的上层构件。68分层模式分层模式可复用性可复用性 具有良好定义的抽象级别和对外服务接口的层次具有良

62、好定义的抽象级别和对外服务接口的层次可以在不同的上下文环境中实现复用。可以在不同的上下文环境中实现复用。标准化标准化 定义清晰、广为接受的抽象级别可促进标准化构定义清晰、广为接受的抽象级别可促进标准化构件和标准化接口的开发件和标准化接口的开发 如,如,ISOISO七层网络协议模型、七层网络协议模型、POSIXPOSIX接口标准、接口标准、 Java Java虚拟机(虚拟机(JVMJVM)标准)标准 在各自领域的标准化进程中发挥了关键性作用。在各自领域的标准化进程中发挥了关键性作用。69分层模式分层模式分层体系结构在性能开销方面的负面效应:分层体系结构在性能开销方面的负面效应:高层功能可能需要逐

63、层调用下层服务,返回值、高层功能可能需要逐层调用下层服务,返回值、报错信息又需逐级上传,这种过程一般会比直接报错信息又需逐级上传,这种过程一般会比直接实现高层功能更耗时。实现高层功能更耗时。如果低层服务还完成了最初的服务请求者所不如果低层服务还完成了最初的服务请求者所不需要的冗余功能,那么性能损耗就会更严重。需要的冗余功能,那么性能损耗就会更严重。70(二)管道与过滤器模式(二)管道与过滤器模式管道与过滤器模式将软件系统的功能实现为一管道与过滤器模式将软件系统的功能实现为一系列处理步骤,每个步骤封装在一个过滤器构系列处理步骤,每个步骤封装在一个过滤器构件中,见件中,见图图7.107.10。u相

64、邻过滤器之间以管道连接,一个过滤器的输出数相邻过滤器之间以管道连接,一个过滤器的输出数据借助管道流向后续过滤器,作为其输入数据。据借助管道流向后续过滤器,作为其输入数据。u整个软件系统的输入由数据源(整个软件系统的输入由数据源(data sourcedata source)提)提供,它通过管道与过滤器相连。供,它通过管道与过滤器相连。u软件系统的最终输出由源自某个过滤器的管道流向软件系统的最终输出由源自某个过滤器的管道流向数据汇(数据汇(data sinkdata sink)。)。u典型的数据源和数据汇包括数据库、文件、其他软典型的数据源和数据汇包括数据库、文件、其他软件系统、物理设备等。件系

65、统、物理设备等。u一个软件系统可以有多个数据源、多个数据汇。一个软件系统可以有多个数据源、多个数据汇。71图图7.10 7.10 管道与过滤器模式示意图管道与过滤器模式示意图72管道与过滤器模式管道与过滤器模式过滤器、数据源、数据汇与管道之间的协作方式有过滤器、数据源、数据汇与管道之间的协作方式有以下几种:以下几种:过滤器以循环方式工作,不断从管道中提取输过滤器以循环方式工作,不断从管道中提取输入数据,并将输出数据压入管道。入数据,并将输出数据压入管道。 此种过滤器称为此种过滤器称为主动过滤器主动过滤器。管道将输入数据压入位于其目标端的过滤器,管道将输入数据压入位于其目标端的过滤器,过滤器被动

66、地等待输入数据。过滤器被动地等待输入数据。管道负责提取位于其源端的过滤器的输出数据。管道负责提取位于其源端的过滤器的输出数据。73(三)黑板模式(三)黑板模式黑板模式将软件系统划分为黑板模式将软件系统划分为黑板黑板、知识源知识源和和控制控制器器三类构件,见三类构件,见图图7.117.11。u黑板黑板负责保存问题求解过程中的状态数据,并提供这负责保存问题求解过程中的状态数据,并提供这些数据的读写服务;些数据的读写服务;u知识源知识源负责根据黑板中存储的问题求解状态评价其自负责根据黑板中存储的问题求解状态评价其自身的可应用性,进行部分问题求解工作,并将此工作身的可应用性,进行部分问题求解工作,并将

67、此工作的结果数据写入黑板;的结果数据写入黑板;u控制器控制器负责监视黑板中不断更新的状态数据,安排负责监视黑板中不断更新的状态数据,安排(多个)知识源的活动。(多个)知识源的活动。74图图7.11 7.11 黑板模式示意图黑板模式示意图757.5 7.5 概念设计概念设计主要目标:主要目标:根据根据关键需求关键需求确定初始的软件体系结确定初始的软件体系结构构雏形雏形。u甄别出关键的软件需求项甄别出关键的软件需求项u体系结构雏形体系结构雏形767.5.1 7.5.1 关键需求辨识关键需求辨识关键需求包括关键的关键需求包括关键的功能需求项功能需求项和关键的和关键的非功能需非功能需求项求项。辨识关键

68、功能需求项的主要方法:辨识关键功能需求项的主要方法:确定核心或基础性功能。确定核心或基础性功能。确定为实现对外接口所必需的支持功能。确定为实现对外接口所必需的支持功能。标识实现难度较大、实现风险较高的功能。标识实现难度较大、实现风险较高的功能。确定最能体现待开发软件特色的功能需求。确定最能体现待开发软件特色的功能需求。确定前述类别没有覆盖,但对用户满意度影响甚确定前述类别没有覆盖,但对用户满意度影响甚巨的功能需求。巨的功能需求。剔除对体系结构塑形无贡献的功能需求项。剔除对体系结构塑形无贡献的功能需求项。77关键需求辨识关键需求辨识辨识关键的质量需求项的主要方法如下:辨识关键的质量需求项的主要方

69、法如下:区分区分影响用户认可、接受本软件系统的质量需求与影响用户认可、接受本软件系统的质量需求与 “ “锦上添花锦上添花”型的型的质量需求质量需求,将前者纳入关键集。,将前者纳入关键集。标识实现难度较大、实现风险较高的质量需求。标识实现难度较大、实现风险较高的质量需求。针对所有针对所有可能冲突的质量需求项可能冲突的质量需求项对,确定并明示权衡决对,确定并明示权衡决策,然后决定采纳以下三种选项之一:仅将优先支持的质策,然后决定采纳以下三种选项之一:仅将优先支持的质量需求项纳入关键集,将二者均纳入或均不纳入关键集。量需求项纳入关键集,将二者均纳入或均不纳入关键集。78关键需求辨识关键需求辨识 注意

70、:注意:高优先级并不完全等同于高关键性高优先级并不完全等同于高关键性。关键质量需求项所占比例应远大于关键功能占比关键质量需求项所占比例应远大于关键功能占比只要某项约束对软件体系结构有影响,就必须纳入关键集只要某项约束对软件体系结构有影响,就必须纳入关键集。那些与软件体系结构无关的约束,例如编程语言限制等,那些与软件体系结构无关的约束,例如编程语言限制等,不应进入关键集。不应进入关键集。79例例7.1 7.1 辨识关键需求项辨识关键需求项根据例根据例4-94-9,家庭保安系统的,家庭保安系统的功能性需求项功能性需求项有有“开关机及复位处理开关机及复位处理”、“日志查询日志查询”、“配置管理配置管

71、理”和和“传感器监测传感器监测”。除除“日志查询日志查询”外,其他用例均属核心基础性功能,所以外,其他用例均属核心基础性功能,所以我们将它们全部纳入关键需求集。我们将它们全部纳入关键需求集。由于家庭保安系统的规模很小,所以关键的功能需求项所由于家庭保安系统的规模很小,所以关键的功能需求项所占比例很高是可以理解的。占比例很高是可以理解的。根据例根据例4-64-6,家庭保安系统的,家庭保安系统的质量需求项质量需求项如表如表4-14-1(见(见p104p104)所示。)所示。基于该系统的市场定位和竞争力要求,我们将安全性、可基于该系统的市场定位和竞争力要求,我们将安全性、可靠性、性能和可配置性纳入关

72、键需求集。靠性、性能和可配置性纳入关键需求集。( (见见P136P136)807.5.2 7.5.2 体系结构初创体系结构初创体系结构初创的任务:体系结构初创的任务:建立初始的软件体系结构建立初始的软件体系结构雏形,它属于软件体系结构的雏形,它属于软件体系结构的逻辑视图逻辑视图,与具体,与具体的软件实现技术无关。的软件实现技术无关。建立体系结构雏形的依据:建立体系结构雏形的依据:u主要是前述的主要是前述的关键需求集关键需求集;u鉴于目标软件的运行环境对体系结构的影响很大,建鉴于目标软件的运行环境对体系结构的影响很大,建立雏形时还必须考虑立雏形时还必须考虑运行环境运行环境。l如,集中式的单机软件

73、、运行于局域网内部的客户如,集中式的单机软件、运行于局域网内部的客户/ /服务端软件与运行于服务端软件与运行于InternetInternet之上的之上的WebWeb软件的体系软件的体系结构大不相同。结构大不相同。81体系结构初创体系结构初创1 1、确定了采纳何种体系结构模式(分层、管道与过滤器、确定了采纳何种体系结构模式(分层、管道与过滤器、黑板模式)黑板模式)2 2、将分析模型中分析类所承担的职责注入到模式中合适、将分析模型中分析类所承担的职责注入到模式中合适的模块的模块3 3、根据职责协作关系根据职责协作关系建立体系结构中这些模块之间的逻建立体系结构中这些模块之间的逻辑关系辑关系4 4、

74、软件体系结构的雏形。、软件体系结构的雏形。如,如果选定分层模式,就必须说明每层负责完成分析模型如,如果选定分层模式,就必须说明每层负责完成分析模型中哪些分析类所承担的哪些职责,及层次之间的协作关系。中哪些分析类所承担的哪些职责,及层次之间的协作关系。82图图7.12 7.12 家庭保安系统的体系结构雏形家庭保安系统的体系结构雏形837.6 7.6 体系结构精化体系结构精化体系结构精化的主要体系结构精化的主要目标目标:将将概念体系结构概念体系结构精化成为全面的、设计适度的软件体系结精化成为全面的、设计适度的软件体系结构。构。本本阶段的体系结构精化工作主要阶段的体系结构精化工作主要围绕围绕逻辑、逻

75、辑、运行、数据、物理、开发五运行、数据、物理、开发五种种体系结构体系结构视视图的图的精化或创立展开精化或创立展开重点是重点是逻辑视图的精逻辑视图的精化化847.6.1 7.6.1 逻辑视图体系结构的精化逻辑视图体系结构的精化推荐采用以下设计过程精化逻辑体系结构。推荐采用以下设计过程精化逻辑体系结构。搜索并选取可用的设计资产;搜索并选取可用的设计资产;设计技术支撑设施;设计技术支撑设施;确立设计元素;确立设计元素;整合设计元素。整合设计元素。以上设计活动应该依序而行动。以上设计活动应该依序而行动。85(一)搜索并选取可用的设计资产(一)搜索并选取可用的设计资产“可用可用”的设计资产:的设计资产:

76、指在当前项目中直接可供指在当前项目中直接可供复用或借鉴的设计资产。复用或借鉴的设计资产。包括:现成的软件系统包括:现成的软件系统或子系统,开发机构自身积累的构件库、服务库,或子系统,开发机构自身积累的构件库、服务库,业界广泛采用的类库、中间件或框架,以及业界广泛采用的类库、中间件或框架,以及InternetInternet上开源的软件资产。上开源的软件资产。86图图7.13 7.13 可复用的设计资产与可复用的设计资产与软件体系结构的整合软件体系结构的整合87(二)设计技术支撑设施(二)设计技术支撑设施体系结构师必须研究公共的基础性软件技术问题,体系结构师必须研究公共的基础性软件技术问题,设计

77、设计技术支撑设施技术支撑设施。u如,对企业应用软件(包括电子商务应用、企如,对企业应用软件(包括电子商务应用、企业管理信息系统等),需要业管理信息系统等),需要数据持久存储服务、数据持久存储服务、安全控制服务安全控制服务等。等。88(1 1)数据持久存储服务)数据持久存储服务数据持久存储:数据持久存储:是指在目标软件系统结束一次运是指在目标软件系统结束一次运行之后,其产生的部分数据能够留存于系统的存行之后,其产生的部分数据能够留存于系统的存储介质中,以供本软件下次运行时使用,或者供储介质中,以供本软件下次运行时使用,或者供其他软件系统使用。其他软件系统使用。数据持久存储服务的功能包括数据的数据

78、持久存储服务的功能包括数据的持久存储、持久存储、查询(选择性读取)、更新、删除查询(选择性读取)、更新、删除等。等。设置数据持久存储服务的目的:设置数据持久存储服务的目的:将目标软件系统将目标软件系统中依赖于系统运行环境的数据存取部分与其他部中依赖于系统运行环境的数据存取部分与其他部分相分离。分相分离。89数据持久存储服务数据持久存储服务通常将数据持久存储服务作为一个子系统,该子系统通常包通常将数据持久存储服务作为一个子系统,该子系统通常包含一个通用构件,利用它为若干面向不同业务数据的持久存含一个通用构件,利用它为若干面向不同业务数据的持久存储服务构件提供基础性的数据持久服务。储服务构件提供基

79、础性的数据持久服务。图图7.14 7.14 数据持久存储服务数据持久存储服务子系统的结构的结构90图图7.15 7.15 数据持久存数据持久存储服务及其储服务及其与软件体系与软件体系结构的整合结构的整合91(2 2)安全控制服务)安全控制服务设置安全控制服务的设置安全控制服务的目的:目的:是是将目标软件系将目标软件系统中有关安全控制的功能集中起来,以便统中有关安全控制的功能集中起来,以便统一管理安全策略,提高安全策略的可配统一管理安全策略,提高安全策略的可配置性。置性。安全安全控制服务包含控制服务包含用户身份认证用户身份认证和和授权控制授权控制两种功能,前者验证用户是否具有合法身两种功能,前者

80、验证用户是否具有合法身份,后者判断用户在请求某种类型的服务份,后者判断用户在请求某种类型的服务时是否具有相应的权限。时是否具有相应的权限。92图图7.16 7.16 安全控制服务安全控制服务及其与及其与软件体系结构软件体系结构的整合的整合93(三)确立设计元素(三)确立设计元素设计元素设计元素包括包括子系统、构件、设计子系统、构件、设计类类。目的:目的:本本活动以概念体系结构中的模块(职活动以概念体系结构中的模块(职责)为基础,以软件需求的实现为目标,责)为基础,以软件需求的实现为目标,探索如何将概念模块组织为设计探索如何将概念模块组织为设计元素。进元素。进一步一步研究这些设计元素的职责划分和

81、协同研究这些设计元素的职责划分和协同工作。工作。注意:注意:确定确定设计元素的接口和相互协作关系设计元素的接口和相互协作关系,不需要给出设计元素的内部结构和实现途不需要给出设计元素的内部结构和实现途径,此项工作留给子系统设计、构件设计径,此项工作留给子系统设计、构件设计和类设计再进行和类设计再进行。94图图7.17 7.17 子系统设置、子系统接口设计及其与子系统设置、子系统接口设计及其与软件体系结构的整合软件体系结构的整合95例例7.7 7.7 确定关键设计类及其接口确定关键设计类及其接口基于家庭保安系统的用例模型(见例基于家庭保安系统的用例模型(见例4-94-9)和分析)和分析模型(见例模

82、型(见例5-105-10),经过例),经过例7.67.6和和例例7.137.13所述的设所述的设计,计,尚未纳入传感器监测子系统、配置管理子系尚未纳入传感器监测子系统、配置管理子系统和日志管理构件的分析类只有统和日志管理构件的分析类只有“输入键盘接口输入键盘接口”和和“显示面板接口显示面板接口”两个边界类。两个边界类。本例认为它们并不关键,可以在体系结构设计阶本例认为它们并不关键,可以在体系结构设计阶段暂且忽略,待段暂且忽略,待详细设计时再予考虑详细设计时再予考虑。96(五)整合设计元素(五)整合设计元素迄今为止已经获得的设计素材包括:迄今为止已经获得的设计素材包括:可供复可供复用的既有设计元

83、素,技术支撑设施中的设用的既有设计元素,技术支撑设施中的设计元素,以及从概念体系结构和需求模型计元素,以及从概念体系结构和需求模型推导出来的设计元素(子系统、构件和关推导出来的设计元素(子系统、构件和关键设计类)。键设计类)。现在需要将它们整合起来以协同完成所有的现在需要将它们整合起来以协同完成所有的软件需求项,软件需求项,最终给出软件体系结构的完最终给出软件体系结构的完整逻辑视图。整逻辑视图。97图图7.18 7.18 家庭保安系统的逻辑体系结构家庭保安系统的逻辑体系结构987.6.2 7.6.2 开发视图体系结构的设计开发视图体系结构的设计开发视图体系结构开发视图体系结构主要关注软件源代码

84、文件(含主要关注软件源代码文件(含配置文件)的程序分包及目录结构,编译后生成配置文件)的程序分包及目录结构,编译后生成的目标文件分包,它们之间的关系以及它们与逻的目标文件分包,它们之间的关系以及它们与逻辑视图中各模块之间的映射关系。辑视图中各模块之间的映射关系。设计开发视图体系结构的原因:设计开发视图体系结构的原因: 因为适当的开发视图体系结构是体系结构设计充因为适当的开发视图体系结构是体系结构设计充分性的主要指标之一,它可以为详细设计和软件分性的主要指标之一,它可以为详细设计和软件实现人员提供具体可操作的行动指南。实现人员提供具体可操作的行动指南。p从这个意义上说,开发视图体系结构应该细化至

85、从这个意义上说,开发视图体系结构应该细化至可以支持详细设计和软件实现的并行展开。可以支持详细设计和软件实现的并行展开。99例例7.9 7.9 设计开发视图体系结构设计开发视图体系结构假设采用假设采用JavaJava和和EclipseEclipse来开发家庭保安系统来开发家庭保安系统软件开发机构的简称为软件开发机构的简称为“seBookseBook”。设定传感器监测子系统、配置管理子系统、日志设定传感器监测子系统、配置管理子系统、日志管理构件、数据持久存储服务构件和安全控制服管理构件、数据持久存储服务构件和安全控制服务构件对应的源代码程序包依次为务构件对应的源代码程序包依次为com.seBook

86、.safeHome.monitorcom.seBook.safeHome.monitor、com.seBook.safeHome.configManagercom.seBook.safeHome.configManager、com.seBponents.logManagercom.seBponents.logManager、com.seBponents.dataServicecom.seBponents.dataService、和、和com.seBponents.securityServicecom.seBponents.securityService。100例例7.9 7.9 设计开发视图体

87、系结构(续设计开发视图体系结构(续1 1)基于体系结构中顶层设计元素的划分,建议将传感器基于体系结构中顶层设计元素的划分,建议将传感器监测子系统、配置管理子系统、日志管理构件、数据监测子系统、配置管理子系统、日志管理构件、数据持久存储服务构件和安全控制服务构件的目标代码分持久存储服务构件和安全控制服务构件的目标代码分别封包为别封包为 safeHomeMonitor.jarsafeHomeMonitor.jar、 safeHomeConfigManager.jarsafeHomeConfigManager.jar、 logManager.jarlogManager.jar、 dataServic

88、e.jardataService.jar、 securityService.jarsecurityService.jar。这样,家庭保安系统的目标代码共这样,家庭保安系统的目标代码共包含包含5 5个个jarjar文件,文件,它们与源代码程序包之间的对应关系是显而易见的。它们与源代码程序包之间的对应关系是显而易见的。最后得到家庭保安系统的开发视图体系结构如图最后得到家庭保安系统的开发视图体系结构如图7.197.19所示。所示。101图图7.19 7.19 家庭家庭保安保安系统系统的开的开发视发视图体图体系结系结构构1027.6.3 7.6.3 物理视图体系结构的设计物理视图体系结构的设计软件体系

89、结构的物理软件体系结构的物理视图的作用:视图的作用:负责负责展示展示软件中各软件中各子系统、构件子系统、构件部署到哪些部署到哪些计算结计算结点上运行点上运行,以及这些结点之间的网络连接,以及这些结点之间的网络连接方式。方式。它反映了软件系统的网络运行环境它反映了软件系统的网络运行环境 和物理和物理分布状况。分布状况。UMLUML部署图部署图是表示物理视图体系结构的合适是表示物理视图体系结构的合适工具,见图工具,见图7.207.20。103图图7.20 7.20 课程注册管理系统的课程注册管理系统的物理视图体系结构物理视图体系结构1047.6.4 7.6.4 运行视图体系结构的设计运行视图体系结

90、构的设计运行视图运行视图体系结构的作用:体系结构的作用:主要主要关注目标软件关注目标软件的并行执行的并行执行。u如果如果不准备在目标软件中引入并行处理,就不必考不准备在目标软件中引入并行处理,就不必考虑运行视图体系结构的设计。虑运行视图体系结构的设计。本本步骤的主要步骤的主要工作:工作:针对针对目标软件系统的性能目标软件系统的性能需求(包括界面的灵敏性需求),将一些可以需求(包括界面的灵敏性需求),将一些可以并行执行的操作序列划分成不同的任务,明确并行执行的操作序列划分成不同的任务,明确这些任务在并发执行过程中可能的同步点,并这些任务在并发执行过程中可能的同步点,并研究并发任务在目标软件系统所

91、基于的计算平研究并发任务在目标软件系统所基于的计算平台上的实现方法。台上的实现方法。UMLUML活动图非常适合于表示并发任务的划分、活动图非常适合于表示并发任务的划分、任务之间的并发与同步,见图任务之间的并发与同步,见图7.217.21。105运行视图体系结构的设计运行视图体系结构的设计例例7.11 7.11 设计运行视图体系结构设计运行视图体系结构根据图根据图4-84-8,家庭保安系统在传感器监测过程中一,家庭保安系统在传感器监测过程中一旦发现异常,旦发现异常,警报器启动和电话报警两个子过程警报器启动和电话报警两个子过程需要并行执行需要并行执行,所以,传感器监测子系统的运行,所以,传感器监测

92、子系统的运行视图体系结构如图视图体系结构如图7.217.21所示。所示。106图图7.21 7.21 家庭家庭保安保安系统系统中传中传感器感器监测监测子系子系统的统的运行运行视图视图体系体系结构结构1077.6.5 7.6.5 数据视图体系结构的设计数据视图体系结构的设计软件体系结构的数据视图的作用:软件体系结构的数据视图的作用:主要关注持久主要关注持久数据在宏观层面的存储组织方式,必要时还需考数据在宏观层面的存储组织方式,必要时还需考虑数据的传递、备份、恢复、同步方案。虑数据的传递、备份、恢复、同步方案。数据视图体系结构与物理视图体系结构之间的映数据视图体系结构与物理视图体系结构之间的映射关

93、系是简单明确的:射关系是简单明确的:数据存储于物理视图体系数据存储于物理视图体系结构中的结点机之上。结构中的结点机之上。数据模型的细节,例如实体类及其关系到关系数数据模型的细节,例如实体类及其关系到关系数据库表格的映射、数据操作的定义及性能优化等,据库表格的映射、数据操作的定义及性能优化等,应留待后续的详细设计阶段解决。应留待后续的详细设计阶段解决。108例例 7.12 7.12 设计数据视图体系结构设计数据视图体系结构针对家庭保安系统,持久数据包括系统配置信息、针对家庭保安系统,持久数据包括系统配置信息、异常事件信息和日志信息。异常事件信息和日志信息。主要的系统配置信息包括:主要的系统配置信

94、息包括: 用户密码,传感器的数量、类型、安装位置,门窗用户密码,传感器的数量、类型、安装位置,门窗传感器的灵敏度、烟雾浓度阈值,报警电话号码、传感器的灵敏度、烟雾浓度阈值,报警电话号码、重拨次数及重拨延迟等。重拨次数及重拨延迟等。建议将它们保存于一个特定的建议将它们保存于一个特定的XMLXML配置文件中(用户配置文件中(用户密码需要加密保存)。密码需要加密保存)。异常事件和日志信息的数据量较大,必须将它们保异常事件和日志信息的数据量较大,必须将它们保存到关系数据库之中,具体的表格字段定义可推迟存到关系数据库之中,具体的表格字段定义可推迟到详细设计阶段完成。到详细设计阶段完成。基于家庭保安系统的

95、软件需求模型,其持久数据采基于家庭保安系统的软件需求模型,其持久数据采用集中存储方式即可,没有传递、备份、恢复、同用集中存储方式即可,没有传递、备份、恢复、同步的问题。步的问题。1097.6.6 7.6.6 软件体系结构文档软件体系结构文档文档主要内容:文档主要内容:引言引言概述概述需求需求逻辑逻辑体系结构体系结构体系结构开发体系结构开发视图视图体系结构物理体系结构物理视图视图体系结构运行体系结构运行视图视图体系结构数据体系结构数据视图视图应用应用指南指南1107.7 7.7 基于构件的体系结构设计基于构件的体系结构设计基于构件的软件开发是一种非常有效的基于构件的软件开发是一种非常有效的软件复

96、用软件复用技术技术。软件复用软件复用: :是指在多次不同的软件开发过程中重复是指在多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括使用相同或相似软件元素的过程。软件元素包括源程序模块、目标代码模块、各类文档、测试用源程序模块、目标代码模块、各类文档、测试用例甚至领域知识等。例甚至领域知识等。横向复用、纵向复用横向复用、纵向复用111构件创立构件创立构件创立过程包含两项必须依序展开的活动:构件创立过程包含两项必须依序展开的活动: 领域分析;领域分析; 确定构件及其接口。确定构件及其接口。112确定构件及其接口确定构件及其接口日志管理构件的设置及接口设计如图日志管理构件的设置

97、及接口设计如图7.227.22所示。引入日志所示。引入日志管理构件后精化得到的软件体系结构如图管理构件后精化得到的软件体系结构如图7.187.18所示。所示。 图图7.22 7.22 构件设置及构件接口设计构件设置及构件接口设计113构件构件复用复用构件开发者在构件的附加文档中应全面、准确地说明以下构件开发者在构件的附加文档中应全面、准确地说明以下内容:内容: 构件的功能与行为;构件的功能与行为; 相关的领域知识;相关的领域知识; 可适应性约束条件与例外情形;可适应性约束条件与例外情形; 可以预见的应用场景及每个场景下如何配置构件使之可以预见的应用场景及每个场景下如何配置构件使之可复用。可复用

98、。1147.8 7.8 体系结构验证体系结构验证参与人:参与人:项目项目软件经理、需求工程师、软件软件经理、需求工程师、软件架构师,以及即将参与软件详细设计的架构师,以及即将参与软件详细设计的设设计师。计师。验证验证的主要关注点如下:的主要关注点如下:体系结构是否能够满足软件需求,以及怎体系结构是否能够满足软件需求,以及怎样满足软件需求样满足软件需求。体系结构是否以充分优化的方式实现所有体系结构是否以充分优化的方式实现所有的软件需求项,尤其是关键需求项。的软件需求项,尤其是关键需求项。115体系结构验证体系结构验证当异常或者临界条件出现时,体系结构是否能当异常或者临界条件出现时,体系结构是否能够以令人满意的方式运作。够以令人满意的方式运作。体系结构的详略程度是否恰当,既不至过于细体系结构的详略程度是否恰当,既不至过于细化而束缚后续设计的自由度,也不至过于粗放而化而束缚后续设计的自由度,也不至过于粗放而放任后续设计背离软件需求,或者使后续设计无放任后续设计背离软件需求,或者使后续设计无所适从。所适从。体系结构是否存在以及如何化解可行性方面的体系结构是否存在以及如何化解可行性方面的风险。风险。116 谢谢谢谢117

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号