版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件体系结构,Software Architecture,教学内容,2,软件体系结构概述,Software Architecture Overview,软件与建筑,体系结构(Architecture): 在英文里就是“建筑”的意思,4,软件与建筑,结构化设计时代 以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼 (土木工程) 面向对象设计时代 以整面墙、整间房、一层楼梯的预制件盖高楼大厦 (现代建筑学),5,软件设计与建筑设计,建狗窝 只要一个人就能建成 极简单的建模 简单的流程 简单的工具,6,软件设计与建筑设计,建房子 由一个团队建造 需要一定的建模 完善的流程 有力的工具,7,软件设
2、计与建筑设计,建摩天大楼 ,8,软件设计与建筑设计,建筑建模,9,软件设计与建筑设计,软件建模,10,软件体系结构,软件体系结构与建筑体系结构,建筑体系结构: 建筑中包含多个层面的技术 外观、挖掘、地基、结构、墙、地板、电梯、电气、空调、水、卫生 其它专门为居住者提供服务的设施 建筑设计师需要把所有的层次结合起来: 使客户理解 在建造的过程中为施工者提供指导 体系结构不包括每个部分的细节,11,软件体系结构与建筑体系结构,软件体系结构 期望其与建筑体系结构起到相同的作用: 将软件的所有层次组合在一起 便于客户理解 为建造过程提供指导 软件体系结构包含了关于下列方面的重要决定: 软件系统的组成
3、对所包括的系统及其接口的结构元素的选择,以及元素间的协作行为 结构和行为元素如何组成不断增长的更大的子系统 体系结构风格:组成元素与接口、相互协作、相互组合,12,软件体系结构产生背景,20世纪60年代的软件危机使得人们开始重视软件工程的研究。 起初,人们把软件设计的重点放在数据结构和算法的选择上。 随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。,13,系统结构设计 规格说明,算法 数据结构,软件体系结构产生背景,在此背景下, 对软件体系结构(Software Architecture,也叫软件架构)的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新
4、的最有希望的途径。 软件体系结构是寻求构建最快、成本最低、质量最好的构造方法。,14,软件体系结构的定义,Perry and Wolf, 1992 A set of architectural (or design) elements that have a particular form. Perry and Wolf further distinguish between processing elements, data elements, and connecting elements. 软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。 处理构件
5、负责对数据进行加工 数据构件是被加工的信息 连接构件把体系结构的不同部分组合连接起来 这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。,15,软件体系结构的定义,Boehm et al., 1995 A software system architecture comprises: A collection of software and system components, connections, and constraints A collection of system stakeholders need statements A ration
6、ale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders need statements. 软件体系结构包括:一个软件和系统构件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一构件,互联和约束能够满足系统需求。,16,软件体系结构的定义,Clements et al., 1997 The software ar
7、chitecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them. 软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。 其中,“软件外部的可见特性”是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。,1
8、7,软件体系结构的定义,前面几个定义中的公共元素 定义了构件 定义了构件之间的关系(结构)和交互 定义了构件和结构背后的基本原理,18,软件体系结构的定义,国内普遍接受的定义: 软件体系结构包括构件、连接件和约束,它是可预制和可重构的软件框架结构。 构件是可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元 连接件也是可预制和可重用的软件部件,是构件之间的连接单元 构件和连接件之间的关系用约束来描述 软件体系结构 = 构件 + 连接件 + 约束,19,软件体系结构的定义,构件(component) 构件是指一个计算单元或者数据存储单元,可以是一个处理过程或数据元素。 构件是用于
9、实现计算和状态的单元,可以工作在:客户端、服务器端、数据库或层等。 构件可简单可复杂:复杂构件描述一个系统,一个体系结构由一些描述系统的复杂构件组成。,20,软件体系结构的定义,连接件(connector) 连接件是体系结构的一个元素,它可以用于建模: 构件之间的相互作用 控制这些相互作用的规则 简单相互作用: 过程的调用 访问共享变量 复杂和语义相关的相互作用: 客户端-服务器协议 数据库访问协议 异步事件的多点传送 管道数据流,21,软件体系结构的定义,约束(constraint) 约束描述了体系结构的配置和拓扑要求,配置或拓扑是指构件和连接件组成的一个连接图,它用于描述软件体系结构的构成
10、,确定了体系结构的构件与连接件之间的连接关系: 正确的连接性 并发和分布性 符合设计的启发式和风格规则,22,软件体系结构的发展,基础研究阶段 1985年-1994年 软件系统的设计人员习惯使用一些没有统一格式和语义的图形来描述系统的结构。在描述风格和手段方面却有着很多共性,不同系统之间也有着很多设计手段或风格上的共性。 一些重要的基本思想和基础概念开始浮出水面:数据/信息隐藏和封装、抽象数据类型、面向对象软件设计与开发等 开始尝试一些为了解决特定行业、特定问题所采用的具有明显针对性的设计手段和设计结构。 试图识别出通用的体系结构风格和设计方式,尝试找到和应用一些通用的方法来描述不同类型的系统
11、结构,23,软件体系结构的发展,概念确立阶段 1992年-1996年 设计模式 软件体系结构基本概念和模型的确立 体系结构描述语言(ADL)的发展 体系结构表述及分析规则的制定 体系结构元素及风格的分类研究 体系结构评估方法(如SAAM等) 体系结构视图(4+1视图),24,软件体系结构的发展,探索发展阶段 1995年-2000年 1995年IEEE专门针对软件体系结构的特刊 1997年,ACME体系结构交互语言,为不同体系结构描述语言之间的交互提供一个统一的平台 1998年,软件体系结构工作会议WICSA (Working IEEE/IFIP Conference on Software A
12、rchitecture) 2000年,软件体系结构的路线图 体系结构模式与设计模式,25,软件体系结构的发展,探索发展阶段(续) 体系结构评估方法的发展:SAAM ATAM 经验和成果开始在工业界大规模应用 UML (Unified Modeling Language)的发展 RUP (Rational Unified Process) 面向对象软件体系结构框架(Architecture Framework)或体系结构平台(Architecture Platform):Sun的Java EE和Microsoft的 .NET Framework 特定领域的体系结构 基于构件的软件体系结构,26,
13、软件体系结构的发展,普及应用阶段 2000年至今 新架构风格:N层的C/S架构、B/S架构、基于代理的架构、SOA等 Web Service OMG提出:MDA (Model Driven Architecture) 软件架构师 (Software Architect) 越来越多的软件体系结构国际性会议召开 美国大学2000年、中国大学2001年开始,软件体系结构进入本科教育,27,软件体系结构的优势,容易理解 它从一个高层设计的抽象层次来表征一个系统 简化了我们理解庞大系统的能力 重用 重用大的构件 重用一些集成构件的框架 特定领域的软件体系结构 设计模式,28,软件体系结构的优势,控制成本
14、 系统维护者可以更好的理解变更带来的影响,因而可以更加精确的估算变更所需的成本 可分析性 对系统的一致性检查提供高层次的视图 研究系统是否与某种体系结构风格相符合 对符合特定风格的特定领域系统的体系结构分析 分析依赖于其中的构件,29,软件体系结构建模,Software Architecture Modeling,软件体系结构建模,软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模 根据建模的侧重点不同,可以将软件体系结构的模型分为5种: 结构模型 框架模型 动态模型 过程模型 功能模型,31,软件体系结构建模,结构模型 这是一个最直观、最普遍的建模方法。 这种方法以体系结
15、构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质等。 研究结构模型的核心是体系结构描述语言。,32,软件体系结构建模,框架模型 框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。 框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。,33,软件体系结构建模,动态模型 动态模型是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。 例如,描述系统的重新配置或演化。动态可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。,34,软件体系结构建模,过程模型 过程模型研究构造系统的
16、步骤和过程。 结构是遵循某些过程脚本的结果。 功能模型 功能模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。 功能模型可以看作是一种特殊的框架模型。,35,“4+1”视图模型,前述5种模型各有所长。 将5种模型有机地统一在一起,形成一个完整的模型来刻画软件体系结构更合适。 如Kruchten提出了用于体系结构描述的“4+1”视图模型(1995年) 从5个不同的视角(逻辑视图、进程视图、物理视图、开发视图和场景视图)来描述软件体系结构。 每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容。,36,“4+1”视图模型,“4+1”模型概述,37,场
17、景,“4+1”视图模型,38,“4+1”视图模型,逻辑视图(Logical View) 当采用面向对象的设计方法时,逻辑视图即是对象模型。 过程视图(Process View) 描述系统的并发和同步方面的设计。 物理视图(Physical View) 描述软件到硬件之间的映射关系,反映系统在分布方面的设计。 开发视图(Development View) 描述软件在开发环境下的静态组织。,39,“4+1”视图模型,对体系结构进行的描述是围绕着以上4个视图展开的。然后,通过选择出的一些用例(use cases)对体系结构加以说明。这些用例被称作场景(scenarios),它们构成了第5个视图。 体
18、系结构的概念在每个视图里面都可以独立应用。 这就是说,可以在每个视图里面定义体系结构的各种组成元素,如构件、连接件等。对于不同的视图,还可以选择不同的体系结构风格,因此在同一个系统结构中可以使用多种风格。 在每一种视图里,使用该视图特定的符号。 这避免了符号用法和意义的混乱。 “4+1”视图模型是一个十分通用的模型: 可以便用其他的符号表示法,也可以使用其他的设计方法,尤其是逻辑视图和过程视图的分解。,40,“4+1”视图模型,“4+1”模型实际上使得有不同需求的人员能够得到他们对于软件体系结构想要了解的东西 系统工程师先从物理视图,然后从过程视图靠近体系结构。 最终使用者、客户、数据专家从逻
19、辑视图看体系结构 项目经理、软件配置人员从开发视图看体系结构。 不是所有的软件体系结构都需要完整的“4+1”视图 没有用的视图在体系结构描述中可以被省略 例如对于非常小的系统,逻辑视图和开发视图有可能非常相似以至于没有必要把它们分开描述。 场景视图在各种环境下都是有用的,41,“4+1”视图模型逻辑视图,逻辑视图 - 面向对象的分解 逻辑视图主要支持功能需求系统应当向用户提供什么样的服务。 从问题域出发,采用面向对象的方法,按照抽象、封装、继承的原则,进行分解,得到代表着系统的关键抽象表示的集合。 这些抽象表示的具体形式就是对象和对象的类。 这种分级不仅是为了功能分析,而且担负着在系统的各部分
20、中确定公共机制和设计元素的作用。 使用Rational / Booch方法,通过类图和类模板来表示逻辑体系结构。 对于数据驱动程度高的应用程序,可以使用其他形式的逻辑视图,例如 E-R 图,来代替面向对象的方法,42,“4+1”视图模型逻辑视图,逻辑视图的符号表示法 逻辑体系结构的符号表示法是从Booch方法派生而来的。可以使用Rational Rose等UML建模工具,43,构件,实例,继承,使用,包含,聚集,关联,类层次,参数化类,类服务,类,连接件,“4+1”视图模型逻辑视图,逻辑视图的风格 逻辑视图可以采用面向对象的风格。 逻辑视图设计的主要准则是:要设法在整个系统中保持一个单一的、内
21、聚的对象模型 逻辑视图的例子1 某通信系统 在通信终端之间建立连接,44,“4+1”视图模型逻辑视图,逻辑视图的例子2 空中交通管制系统,45,“4+1”视图模型过程视图,过程视图 - 过程分解 过程视图考虑的是一些非功能性的需求,诸如性能、可用性等。 它所要面对的问题有并发,分布,系统的完整性,容错能力等。 它还要考虑怎样把过程视图与逻辑视图的要点相适应 可以分为几个抽象层次来描述,每个层次考虑不同的方面。在最高层次上,过程体系结构可以被视为是一个逻辑网络的集合。每个独立执行的逻辑网络都是由通信程序(即“过程”)构成的。这些逻辑网络分布在一个通过LAN或WAN连接起来的硬件资源集合上。多个逻
22、辑网络可能同时存在,并共享同样的物理资源。,46,“4+1”视图模型过程视图,软件被分为独立的任务的集合。 每个任务是一个独立的控制线程,可以在一个处理节点上独立单独调度。 可以将任务分为主任务和辅任务。主任务是需要单独解决的体系结构元素。辅任务是由于实现原因而在本地加入的附加任务(缓冲,超时,等等)。 基于过程体系结构设计图,可以估计出消息流和过程负荷。,47,“4+1”视图模型过程视图,过程视图的符号表示法,48,“4+1”视图模型过程视图,过程视图的风格 有多种风格适合过程体系结构。例如管道和过滤器、客户/服务器及其变体(多客户/单服务器,多客户/多服务器)等。 过程视图的例子 某通信系
23、统,49,“4+1”视图模型开发视图,开发视图 - 子系统分解 开发视图关注的是在软件开发环境中软件模块的实际组织。 软件被打包成可以由单个或少量程序员开发的各种小的部分:程序库或子系统。 子系统被组织成层次化的体系,每一层为上一层提供一个严密的、明确定义的接口。 系统的开发视图用模块图和子系统图来表示,在图中可以显示出“导入”和“导出”关系。 开发视图主要考虑的是内部需求,这些需求目的是要使开发相关的活动更易于进行,如软件管理、软件复用、开发工具集所造成的约束、编程语言等。,50,“4+1”视图模型开发视图,开发视图的符号表示法,51,“4+1”视图模型开发视图,开发视图的风格 对于开发视图
24、,建议采用分层风格,定义46层的子系统。每一层都有明确责任。 设计规则是:某一层的子系统只能依赖于本层或其下层的子系统。 这样可以使每个层次的接口既完备又精练,避免了各个模块之间很复杂的依赖关系。,52,“4+1”视图模型开发视图,开发视图的例子 空中交通管制系统,53,“4+1”视图模型物理视图,物理视图 - 从软件到硬件的映射 物理视图主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通讯等问题。 当软件运行于不同的节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小。,54,“4+1”视图模型物理视图,物理视图的符号表示法,55,“4+1”视图模型物理视图,物理视图的例子 某通信系统,56,“4+1”视图模型场景,场景 综合所有的视图 通过使用一些重要场景,4个视图中的元素可以协调地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度医学检验(师)试卷附完整答案详解(易错题)
- 2024-2025学年主管护师(中级)试题及答案详解
- 2024-2025学年医学检验(师)通关考试题库及一套参考答案详解
- 年度调研成果通告信6篇范文
- 2024-2025学年常德科技职业技术学院单招《职业适应性测试》试题预测试卷【B卷】附答案详解
- 2024-2025学年度农村信用社招聘考试能力检测试卷附答案详解【完整版】
- 2024-2025学年度燃气职业技能鉴定检测卷附参考答案详解(预热题)
- 供应商评估及选择的审核意见回复函(7篇范文)
- 2024-2025学年唐山海运职业学院电视播音主持期末考试预测复习附参考答案详解【轻巧夺冠】
- 2024-2025学年园林绿化作业人员测试卷完美版附答案详解
- 2025年高职(金融科技应用)金融科技基础专项测试试题及答案
- 理疗店应急预案(3篇)
- 2026年新疆生产建设兵团兴新职业技术学院单招职业技能测试题库及答案详解一套
- 鼾症科普宣传课件
- 义务教育《英语课程标准》(2025年修订版)原版核心框架+深度解读+测试题及答案
- 配电箱设备防护维护技术方案
- 2026年苏州工业职业技术学院单招综合素质考试题库附答案
- 2025版《煤矿安全规程》解读
- 采集动脉血课件
- 2025年江西省公务员考试行测真题解析试卷(含答案)
- 剧毒从业证摸拟考试及答案解析
评论
0/150
提交评论