SE08_第8讲进行体系结构设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
约束:指明构件连接的势态和条件。例如,上层构件
可要求下层构件的服务,反之则不允许。
©Copyright Fujian Normal University
11
1.2 体系结构定义
Soni&Nord&Hofmeister定义
– 西门子研究院的Soni等人认为体系结构有4个不同的 具体形态,每种形态都从不同的角度来描述系统。
东等译,清华大学出版社,2007.03 《设计模式—可复用面向对象软件的基础》,李英军等 译,机械工业出版社,2005.06 《企业应用架构模式》,王怀民等译,机械工业出版社, 2004.07 《Microsoft .NET企业级应用架构设计》,陈黎夫译, 人民邮电出版社,2010.06 《Expert One-on-One J2EE Development without EJB 中文版》,JavaEye,电子工业出版社,2005.09
22
©Copyright Fujian Normal University
进行体系结构设计
体系结构综述
体系结构风格 特定领域体系结构 体系结构框架 映射数据流到软件体系结构
小结
©Copyright Fujian Normal University
23
2 体系结构风格
体系结构风格定义了一个系统家族和实践为大粒度的软件复 用提供了可能。
©Copyright Fujian Normal University
26
2 体系结构风格
典型的体系结构风格
– – – – 数据流风格 管道/过滤器风格 调用—返回风格 仓库风格
©Copyright Fujian Normal University
©Copyright Fujian Normal University
21
特定领域的体系结构框架
特定领域的体系结构框架研究为一些特定领域的
软件产品提供可重用框架。
– – – – – – Eclipse的插件体系结构 Struts框架、Spring框架和Hibernate框架 MVC框架 北邮周莹新博士提出的电信软件的体系结构 北航金茂忠教授提出的测试环境的体系结构 …
7
©Copyright Fujian Normal University
1.2 体系结构定义
目前学术界和工业界对于体系结构的定义尚未形 成统一意见,以下介绍几种具有代表性的定义 。
– Booch&Rumbaugh&Jacobson定义
– Bass定义 – Garlan&Shaw定义
– Soni&Nord&Hofmeister
27
2.1 数据流风格
数据流风格的特点
– 当输入数据经过一系列的计算和操作构件的变换形 成输出数据时,可以应用这种体系结构。 – 管道/过滤器、批处理序列属于数据流风格。
©Copyright Fujian Normal University
28
2.2 管道/过滤器风格
管道/过滤器风格
– 拥有一组过滤器构件,这些构件通过管道连接管道 将数据从一个构件传送到下一个构件。 – 每个过滤器独立于其上游和下游的构件而工作,过 滤器的设计要针对某种形式的数据输入,并且产生 某种特定形式的数据输出。 – 如果数据流退化成为单线的变换,则称为批处理序 列。这种结构接收一批数据,然后应用一系列连续 的构件(过滤器)变换它。
©Copyright Fujian Normal University
18
体系结构设计
体系结构设计是系统设计的一部分,它凌驾于算法和 数据结构设计之上,其包括设计整体组织和全局控制 结构,如构件的功能分配、通信协议、物理空间分布 等等
– 体系结构设计方法
– 体系结构风格 – 体系结构设计空间 – 体系结构设计的支撑工具
软件构件
构件的外部可视属性 构件之间的关系
©Copyright Fujian Normal University
10
1.2 体系结构定义
Garlan&Shaw定义
– 体系结构={构件,连接件,约束}
构件:一组代码,如程序的模块、独立的程序或数据
库服务器等。 连接件:过程调用、管道、远程过程调用等,用于表 示构件之间的相互作用。
©Copyright Fujian Normal University
14
1 体系结构综述
体系结构背景
体系结构定义 体系结构研究领域
©Copyright Fujian Normal University
15
1.3 体系结构研究领域
体系结构已经取得了长足的发展,受到大多数软件系统 设计和研究人员的重视。但它仍处在不断发展之中,下 面简介一些关注较多、影响较大的研究领域。
– IEEE的定义 – …….
10多种
©Copyright Fujian Normal University
8
1.2 体系结构定义
Booch&Rumbaugh&Jacobson定义
– 体系结构={组织,元素,子系统,风格} – 体系结构是一系列重要决策的集合,这些决策与以 下内容相关:
软件元素:构成系统的结构元素及其接口。 软件的组织:软件元素的选择,以及它们在协作中明
概念体系结构:用于描述设计元素和及其相互关系。
模块互连体系结构:包含功能分解和分层两个正交的
结构。 执行体系结构:用于描述系统的动态结构。
代码体系结构:用于描述源程序、二进制代码和函数
库的组织方式。
©Copyright Fujian Normal University 12
1.2体系结构定义
©Copyright Fujian Normal University 17
体系结构描述语言
体系结构描述语言(ADL)的主要目的是提供一
种规范化的体系结构描述。
– ADL为体系结构的分析和验证提供形式化基础。 – 目前已有近20种ADL,比较有影响力的有C2、 UniCon、MetaH、Aesop、SADL、Rapide、Wright 等。
©Copyright Fujian Normal University
5
1.1 体系结构背景
对于大规模的复杂软件系统来说,对总体的系统 结构设计和规格说明要比算法和数据结构的选择
重要得多。
– – – – – – 体系结构是早期设计决策的体现 体系结构明确了对系统实现的约束条件 体系结构制约着系统的质量属性 通过研究体系结构可以预测软件的质量 体系结构可以提高软件生产率 …….
确表现出的行为。 子系统:软件元素在结构和行为上组合成更大规模的 软件元素。 体系结构风格:用于引导软件元素的组合。
©Copyright Fujian Normal University 9
1.2 体系结构定义
Bass定义(教材采用的定义)
– Bass等人在《Software Architecture in Practice》一书 中提到,程序或计算系统的体系结构是系统的一个 或多个结构,其包括
IEEE的定义
– 体系结构={构件,连接件,环境,原理} – 体系结构是以构件、构件之间的关系、构件与环境 之间的关系为内容的某一系统的基本组织结构以及 指导上述内容设计与演化的原理。
©Copyright Fujian Normal University
13
1.2 体系结构定义
我们的认识
– 体系结构在较高抽象层次上描述了构成软件系统的 元素、元素之间的交互关系、指导元素组合的模式 以及相关约束要求,对于软件系统的理解、分析、 验证和演化等方面有着十分重要的意义。
– 体系结构建模 – 体系结构描述语言
– – – –
体系结构设计 体系结构分析与验证 基于体系结构的软件开发过程 特定领域的体系结构框架
16
©Copyright Fujian Normal University
体系结构建模
体系结构建模是研究如何表示体系结构的问题。根据建 模的侧重点的不同,可以将体系结构的模型分为5种:
– 一个词汇表包含一些构件和连接件类型, – 一组约束指出系统是如何将这些构件和连接件组合 起来的。
©Copyright Fujian Normal University
24
2 体系结构风格
有些学者对体系结构模式和体系结构风格不加区分。 体系结构模式(architectural pattern)
©Copyright Fujian Normal University
29
2.3 调用—返回风格
调用—返回风格 :在此类体系结构中,存在以下3
种子风格。
– 主程序/子程序风格
©Copyright Fujian Normal University
30
2.3 调用—返回风格
调用—返回风格之面向对象风格
进行体系结构设计
需要回答以下几个问题
– 为什么要进行体系结构设计?
– 体系结构是什么?它有哪些研究领域? – 如何进行体系结构设计?
©Copyright Fujian Normal University
1
进行体系结构设计
教材只给出了部分回答
– 需要对教材内容作适度补充 – 推荐阅读
《软件体系结构(世界著名计算机教材精选)》,刘振
6
©Copyright Fujian Normal University
1.1 体系结构背景
体系结构虽脱胎于软件工程,但其形成同时借鉴了计 算机体系结构和网络体系结构中很多宝贵的思想和方 法。 近年来,体系结构研究独立于软件工程的研究,成为 计算机科学的一个新的研究方向和独立学科分支。 对体系结构的系统、深入的研究将会成为提高软件生 产率和解决软件维护问题,提供新的、最有希望的途 径。
4
1.1 体系结构背景
随着软件系统规模越来越大、越来越复杂,整个 系统的结构和规格说明显得越来越重要。
最早指出体系结构重要性的是 大师Edsger Dijkstra(1930-2002) ―..the larger the project, the more essential the structuring!”(1968)
– 表达了软件系统的基本结构组织形式或者结构方案, – 包含了一组预定义的子系统 – 规定了这些子系统的责任 – 提供了用于组织和管理这些子系统的规则和向导。
©Copyright Fujian Normal University
25
2 体系结构风格
体系结构风格反映了领域中众多系统所共有的结
构和语义特性,并指导如何将各个模块和子系统 有效地组织成一个完整的系统。
进行体系结构设计
体系结构综述
体系结构风格 特定领域体系结构 体系结构框架 体系结构设计
映射数据流到软件体系结构
小结
©Copyright Fujian Normal University
3
1 体系结构综述
体系结构背景
体系结构定义 体系结构研究领域
©Copyright Fujian Normal University
最为 – 结构模型:用构件、连接件和其他概念刻画体系结构 。 常用 – 动态模型:用于描述系统的“大粒度”的行为性质。例 如描述系统的重新配置或演化 。 – 框架模型:与结构模型类似,但它主要以一些特殊的问 题为目标建立只针对和适应该问题的结构。 – 过程模型:研究构造体系结构的步骤和过程。 – 功能模型 :研究系统功能构件的层次划分,可以将其视 为是一种特殊的框架模型 。
©Copyright Fujian Normal University
19
体系结构分析与验证
体系结构分析与验证研究如何将软件的非功能性转化 为体系结构需求、如何分析和验证体系结构满足期望 的需求属性,以及如何建立评价体系结构的方法。
– 基于场景的体系结构分析方法SAAM – 体系结构权衡分析方法ATAM – 体系结构形式化的验证方法 – 特定领域软件体系结构分析方法 – …….
– 系统的构件封装了数据和必须应用到该数据上的操 作,构件间通过消息传递进行通信与合作。 – 与主程序/子程序的体系结构相比,面向对象风格中 的对象交互会复杂一些。 – 面向对象风格与网络应用的需求在分布性、自治性、 协作性、演化性等方面具有内在的一致性。
©Copyright Fujian Normal University
20
基于体系结构的软件开发过程
基于体系结构的软件开发过程研究引入体系结构后的 软件开发过程、基于体系结构的开发与中间技术集成、 基于体系结构的程序框架自动生成技术等。
– 体系结构的开发是大型软件系统开发的重要环节。 – 对软件产品线有重要意义 :基于同一个体系结构,可以 创建具有不同功能的多个系统 。
可要求下层构件的服务,反之则不允许。
©Copyright Fujian Normal University
11
1.2 体系结构定义
Soni&Nord&Hofmeister定义
– 西门子研究院的Soni等人认为体系结构有4个不同的 具体形态,每种形态都从不同的角度来描述系统。
东等译,清华大学出版社,2007.03 《设计模式—可复用面向对象软件的基础》,李英军等 译,机械工业出版社,2005.06 《企业应用架构模式》,王怀民等译,机械工业出版社, 2004.07 《Microsoft .NET企业级应用架构设计》,陈黎夫译, 人民邮电出版社,2010.06 《Expert One-on-One J2EE Development without EJB 中文版》,JavaEye,电子工业出版社,2005.09
22
©Copyright Fujian Normal University
进行体系结构设计
体系结构综述
体系结构风格 特定领域体系结构 体系结构框架 映射数据流到软件体系结构
小结
©Copyright Fujian Normal University
23
2 体系结构风格
体系结构风格定义了一个系统家族和实践为大粒度的软件复 用提供了可能。
©Copyright Fujian Normal University
26
2 体系结构风格
典型的体系结构风格
– – – – 数据流风格 管道/过滤器风格 调用—返回风格 仓库风格
©Copyright Fujian Normal University
©Copyright Fujian Normal University
21
特定领域的体系结构框架
特定领域的体系结构框架研究为一些特定领域的
软件产品提供可重用框架。
– – – – – – Eclipse的插件体系结构 Struts框架、Spring框架和Hibernate框架 MVC框架 北邮周莹新博士提出的电信软件的体系结构 北航金茂忠教授提出的测试环境的体系结构 …
7
©Copyright Fujian Normal University
1.2 体系结构定义
目前学术界和工业界对于体系结构的定义尚未形 成统一意见,以下介绍几种具有代表性的定义 。
– Booch&Rumbaugh&Jacobson定义
– Bass定义 – Garlan&Shaw定义
– Soni&Nord&Hofmeister
27
2.1 数据流风格
数据流风格的特点
– 当输入数据经过一系列的计算和操作构件的变换形 成输出数据时,可以应用这种体系结构。 – 管道/过滤器、批处理序列属于数据流风格。
©Copyright Fujian Normal University
28
2.2 管道/过滤器风格
管道/过滤器风格
– 拥有一组过滤器构件,这些构件通过管道连接管道 将数据从一个构件传送到下一个构件。 – 每个过滤器独立于其上游和下游的构件而工作,过 滤器的设计要针对某种形式的数据输入,并且产生 某种特定形式的数据输出。 – 如果数据流退化成为单线的变换,则称为批处理序 列。这种结构接收一批数据,然后应用一系列连续 的构件(过滤器)变换它。
©Copyright Fujian Normal University
18
体系结构设计
体系结构设计是系统设计的一部分,它凌驾于算法和 数据结构设计之上,其包括设计整体组织和全局控制 结构,如构件的功能分配、通信协议、物理空间分布 等等
– 体系结构设计方法
– 体系结构风格 – 体系结构设计空间 – 体系结构设计的支撑工具
软件构件
构件的外部可视属性 构件之间的关系
©Copyright Fujian Normal University
10
1.2 体系结构定义
Garlan&Shaw定义
– 体系结构={构件,连接件,约束}
构件:一组代码,如程序的模块、独立的程序或数据
库服务器等。 连接件:过程调用、管道、远程过程调用等,用于表 示构件之间的相互作用。
©Copyright Fujian Normal University
14
1 体系结构综述
体系结构背景
体系结构定义 体系结构研究领域
©Copyright Fujian Normal University
15
1.3 体系结构研究领域
体系结构已经取得了长足的发展,受到大多数软件系统 设计和研究人员的重视。但它仍处在不断发展之中,下 面简介一些关注较多、影响较大的研究领域。
– IEEE的定义 – …….
10多种
©Copyright Fujian Normal University
8
1.2 体系结构定义
Booch&Rumbaugh&Jacobson定义
– 体系结构={组织,元素,子系统,风格} – 体系结构是一系列重要决策的集合,这些决策与以 下内容相关:
软件元素:构成系统的结构元素及其接口。 软件的组织:软件元素的选择,以及它们在协作中明
概念体系结构:用于描述设计元素和及其相互关系。
模块互连体系结构:包含功能分解和分层两个正交的
结构。 执行体系结构:用于描述系统的动态结构。
代码体系结构:用于描述源程序、二进制代码和函数
库的组织方式。
©Copyright Fujian Normal University 12
1.2体系结构定义
©Copyright Fujian Normal University 17
体系结构描述语言
体系结构描述语言(ADL)的主要目的是提供一
种规范化的体系结构描述。
– ADL为体系结构的分析和验证提供形式化基础。 – 目前已有近20种ADL,比较有影响力的有C2、 UniCon、MetaH、Aesop、SADL、Rapide、Wright 等。
©Copyright Fujian Normal University
5
1.1 体系结构背景
对于大规模的复杂软件系统来说,对总体的系统 结构设计和规格说明要比算法和数据结构的选择
重要得多。
– – – – – – 体系结构是早期设计决策的体现 体系结构明确了对系统实现的约束条件 体系结构制约着系统的质量属性 通过研究体系结构可以预测软件的质量 体系结构可以提高软件生产率 …….
确表现出的行为。 子系统:软件元素在结构和行为上组合成更大规模的 软件元素。 体系结构风格:用于引导软件元素的组合。
©Copyright Fujian Normal University 9
1.2 体系结构定义
Bass定义(教材采用的定义)
– Bass等人在《Software Architecture in Practice》一书 中提到,程序或计算系统的体系结构是系统的一个 或多个结构,其包括
IEEE的定义
– 体系结构={构件,连接件,环境,原理} – 体系结构是以构件、构件之间的关系、构件与环境 之间的关系为内容的某一系统的基本组织结构以及 指导上述内容设计与演化的原理。
©Copyright Fujian Normal University
13
1.2 体系结构定义
我们的认识
– 体系结构在较高抽象层次上描述了构成软件系统的 元素、元素之间的交互关系、指导元素组合的模式 以及相关约束要求,对于软件系统的理解、分析、 验证和演化等方面有着十分重要的意义。
– 体系结构建模 – 体系结构描述语言
– – – –
体系结构设计 体系结构分析与验证 基于体系结构的软件开发过程 特定领域的体系结构框架
16
©Copyright Fujian Normal University
体系结构建模
体系结构建模是研究如何表示体系结构的问题。根据建 模的侧重点的不同,可以将体系结构的模型分为5种:
– 一个词汇表包含一些构件和连接件类型, – 一组约束指出系统是如何将这些构件和连接件组合 起来的。
©Copyright Fujian Normal University
24
2 体系结构风格
有些学者对体系结构模式和体系结构风格不加区分。 体系结构模式(architectural pattern)
©Copyright Fujian Normal University
29
2.3 调用—返回风格
调用—返回风格 :在此类体系结构中,存在以下3
种子风格。
– 主程序/子程序风格
©Copyright Fujian Normal University
30
2.3 调用—返回风格
调用—返回风格之面向对象风格
进行体系结构设计
需要回答以下几个问题
– 为什么要进行体系结构设计?
– 体系结构是什么?它有哪些研究领域? – 如何进行体系结构设计?
©Copyright Fujian Normal University
1
进行体系结构设计
教材只给出了部分回答
– 需要对教材内容作适度补充 – 推荐阅读
《软件体系结构(世界著名计算机教材精选)》,刘振
6
©Copyright Fujian Normal University
1.1 体系结构背景
体系结构虽脱胎于软件工程,但其形成同时借鉴了计 算机体系结构和网络体系结构中很多宝贵的思想和方 法。 近年来,体系结构研究独立于软件工程的研究,成为 计算机科学的一个新的研究方向和独立学科分支。 对体系结构的系统、深入的研究将会成为提高软件生 产率和解决软件维护问题,提供新的、最有希望的途 径。
4
1.1 体系结构背景
随着软件系统规模越来越大、越来越复杂,整个 系统的结构和规格说明显得越来越重要。
最早指出体系结构重要性的是 大师Edsger Dijkstra(1930-2002) ―..the larger the project, the more essential the structuring!”(1968)
– 表达了软件系统的基本结构组织形式或者结构方案, – 包含了一组预定义的子系统 – 规定了这些子系统的责任 – 提供了用于组织和管理这些子系统的规则和向导。
©Copyright Fujian Normal University
25
2 体系结构风格
体系结构风格反映了领域中众多系统所共有的结
构和语义特性,并指导如何将各个模块和子系统 有效地组织成一个完整的系统。
进行体系结构设计
体系结构综述
体系结构风格 特定领域体系结构 体系结构框架 体系结构设计
映射数据流到软件体系结构
小结
©Copyright Fujian Normal University
3
1 体系结构综述
体系结构背景
体系结构定义 体系结构研究领域
©Copyright Fujian Normal University
最为 – 结构模型:用构件、连接件和其他概念刻画体系结构 。 常用 – 动态模型:用于描述系统的“大粒度”的行为性质。例 如描述系统的重新配置或演化 。 – 框架模型:与结构模型类似,但它主要以一些特殊的问 题为目标建立只针对和适应该问题的结构。 – 过程模型:研究构造体系结构的步骤和过程。 – 功能模型 :研究系统功能构件的层次划分,可以将其视 为是一种特殊的框架模型 。
©Copyright Fujian Normal University
19
体系结构分析与验证
体系结构分析与验证研究如何将软件的非功能性转化 为体系结构需求、如何分析和验证体系结构满足期望 的需求属性,以及如何建立评价体系结构的方法。
– 基于场景的体系结构分析方法SAAM – 体系结构权衡分析方法ATAM – 体系结构形式化的验证方法 – 特定领域软件体系结构分析方法 – …….
– 系统的构件封装了数据和必须应用到该数据上的操 作,构件间通过消息传递进行通信与合作。 – 与主程序/子程序的体系结构相比,面向对象风格中 的对象交互会复杂一些。 – 面向对象风格与网络应用的需求在分布性、自治性、 协作性、演化性等方面具有内在的一致性。
©Copyright Fujian Normal University
20
基于体系结构的软件开发过程
基于体系结构的软件开发过程研究引入体系结构后的 软件开发过程、基于体系结构的开发与中间技术集成、 基于体系结构的程序框架自动生成技术等。
– 体系结构的开发是大型软件系统开发的重要环节。 – 对软件产品线有重要意义 :基于同一个体系结构,可以 创建具有不同功能的多个系统 。