软件体系结构 PPT
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图A 播放AVI文件的Graph Filter图 上图中每个模块分别代表了不同的Filter,媒体文件Filter从硬盘读取AVI文件,AVI分离 Filter将文件分离为音频流和视频流,AVI解码Filter对视频流进行解码并送往Video表现Filter, 由后者将各帧在显示器上显示,默认的DirectSound设备用DirectSound将音频流输 出。。
1.1what is SA ?
• 形式化还是非形式化 : • 首先,软件工程师在长期的实践中已经拥有了 一套共享的,语义丰富的词典,它由软件系统 的习惯用语,模式,软件系统组织结构风格组 成。 • 通过识别一个管道过滤器体系结构风格的实例, 一个软件工程师传达了这样的事实:这个系统 的主要功能就是进行数据流的转换,系统的主 要功能由各种独立实体的过滤器分别来实现, 系统的响应时间和吞吐量能用一种直接的方式 计算出来。
•
• Kruchten • 软件体系结构有四个角度,它们从不 软件体系结构有四个角度, 同方面对系统进行描述:概念角度描述 同方面对系统进行描述:概念角度描述 系统的主要构件及它们之间的关系; 系统的主要构件及它们之间的关系;模 角度包含功能分解与层次结构; 块角度包含功能分解与层次结构;运行 角度描述了一个系统的动态结构; 角度描述了一个系统的动态结构;代码 角度描述了各种代码和库函数在开发环 境中的组织。 境中的组织。
1.1what is SA ?
• 软件设计层次
• 体系结构级:系统性能与构件之间的整体联系。这个 级别的构成元素是模块,模块通过各种方式互连,通 过操作算子将子系统组装成一个系统。 • 代码级:这个级别的设计问题包括算法和数据结构; 其构成元素是编程语言原语。 • 执行级:这个级别的设计问题包含存储器的映射、数 据格式配置、堆栈和寄存器的分配。
1.2软件体系结构研究的内容 和范畴
• 风格、设计模式、框架 • 3.应用框架(application framework) • 应用框架是整个或部分系统的可重用设计,表 现为一组抽象构件的集合以及构件实例间交互 的方法。可以说,一个框架是一个可复用的设 计构件,它规定了应用的体系结构,阐明了整 个设计、协作构件之间的依赖关系、责任分配 和控制流程。
1.2软件体系结构研究的内容 和范畴
• 体系结构风格、设计模式和应用框架的 概念是从不同的目的和出发点讨论软件 体系结构,它们之间的概念经常互相借 鉴和引用。
1.3体系结构设计原则
• • • • • • • • 抽象 分而治之 封装和信息隐藏 模块化 高内聚和低耦合 关注点分离 策略和实现的分离 接口和实现的分离
1.1what is SA ?
• 软件系统的体系结构定义系统由计算构件和构件 之间的相互作用组成。构件可以是客户机和服务 器、数据库、过滤器或者是在一个分层系统中的 层。构件之间的相互作用在这个设计层次上可以 是简单和相似的,比如过程调用,共享变量的访 问。但是它们也可以是复杂和语义丰富的。比如 客户机-服务器协议(client-server protocols)数据库存取协议(databaseaccessing protocols),异步事件多点传送 (asynchronous event multicast)和管道 数据流(piped streams)
1.1定义
• Mary Shaw和David Garlan Shaw和 • • 软件体系结构是软件设计过程中的一个层次, 软件体系结构是软件设计过程中的一个层次,这一层次超越计 算过程中的算法设计和数据结构设计。 算过程中的算法设计和数据结构设计。 体系结构问题包括总体组织和全局控制、通讯协议、同步、 体系结构问题包括总体组织和全局控制、通讯协议、同步、数 据存取,给设计元素分配特定功能,设计元素的组织, 据存取,给设计元素分配特定功能,设计元素的组织,规模和性 在各设计方案间进行选择等。 能,在各设计方案间进行选择等。 软件体系结构处理算法与数据结构之上关于整体系统结构设计 和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、 和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、 同步与数据存取的协议,设计构件功能定义,物理分布与合成, 同步与数据存取的协议,设计构件功能定义,物理分布与合成, 设计方案的选择、评估与实现等。 设计方案的选择、评估与实现等。
•
1概述-软件危机的原因
• 软件复杂度越来越高 • 软件不仅仅是在规模上快速地发展扩大, 软件不仅仅是在规模上快速地发展扩大,而且其复 杂性也急剧地增加。 杂性也急剧地增加。软件产品的特殊性和人类智力的 局限性,导致人们无力处理“复杂问题” 局限性,导致人们无力处理“复杂问题”。 所谓“复杂问题”的概念是相对的, 所谓“复杂问题”的概念是相对的,一旦人们采用 先进的组织形式、 先进的组织形式、开发方法和工具提高了软件开发效 率和能力,新的、更大的、 率和能力,新的、更大的、更复杂的问题又摆在人们 的面前。 的面前。
1.1what is SA ?
• 其次,体系结构的描述的作用好像一个框架, 系统属性在这个框架下进行扩充,并且,它在 考察一个系统实现其整体需求的能力中扮演了 非常重要的作用。 • (软件体系结构是非常抽象的,可以理解更大 范围的,系统级的关注点,比如吞吐量,通信 模式,执行控制结构,可伸缩性,以及系统演 化的扩展方式,提供一个自然的框架。)
•
1.1what is SA ?
• 这种全局结构的设计和规划问题包括 全局组织 结构;全局控制结构;通信和同步以及数据存 取协议;规定设计元素的功能;设计元素的组 合;物理分布;规模和性能;演化的维度;设 计方案的选择等。 • 1随着软件系统的规模和复杂性不断增加,系 统的全局结构的设计和规划变得比算法的选择 以及数据结构的设计更加重要。 • 2人们普遍认为,为系统设计一个合适的体系 结构是系统取得长远的成功的关键因素。 • 3非形式化的。
1.2软件体系结构研究的内容 和范畴
• 风格、设计模式、框架 • 1.体系结构风格(architecture styles) • 体系结构风格独立于实际问题,强调了 软件系统中通用的组织结构。比如管道 线,分层系统,客户机-服务器等等。
1.2软件体系结构Biblioteka Baidu究的内容 和范畴
• 风格、设计模式、框架 • 2.设计模式 • 设计模式是软件问题高效和成熟的设计模板,模板包 含了固有问题的解决方案。设计模式可以看成规范了 的小粒度的结构成分,并且独立于编程语言或编程范 例。设计模式的应用对软件系统的基础结构没有什么 影响,但可能对子系统的组织结构有较大影响。每个 模式处理系统设计或实现一种特殊的重复出现的问题。 它为解决抽象部分和实现部分独立变化的问题提供了 一种通用结构。因此,设计模式更强调直接复用的程 序结构。
• Barry Boehm • 软件体系结构包括一个软件和系统构 互联及约束的集合; 件,互联及约束的集合;一个系统需求 说明的集合; 说明的集合;一个基本原理用以说明这 一构件,互联和约束能够满足系统需求。 一构件,互联和约束能够满足系统需求。
• Bass,Ctements 和 Kazman Bass, • 软件体系结构包括一个或一组软件构 件、软件构件的外部的可见特性及其相 互关系。其中, 软件外部的可见特性” 互关系。其中,“软件外部的可见特性” 是指软件构件提供的服务、性能、特性、 是指软件构件提供的服务、性能、特性、 错误处理、共享资源使用等。 错误处理、共享资源使用等。
软件体系结构
刘兴
计算机学院软件工程系
软件体系结构内容
• • • • • • • 1概述 2软件体系结构风格 3案例研究 4软件体系结构的分析与评估(略) 5流行的软件体系结构 6设计模式与软件架构 7企业架构师和设计师、企业软件架构简介
1概述
• • • • 我们要学的这个是什么玩意? 我们为什么要学这个玩意? 我们将来会怎么干? 其他人是怎么玩的?
软件各级抽象
软件体系结构使系统在体系结构级达到重用 程序族在信息隐藏和软件结构设计上具 有相同的模式(设计模式抽象) 软件体系结构
程序族 数据类型抽象、封装、信息 隐藏、多态性
抽象数据类型 软件结构研 究的开始 数据结构 与算法 高级程序 设计语言
软件划分与构造、方便系统的开发与维护
程序=数据结构+算法
• 软件规模越来越大 • 随着软件应用范围的增广,软件规模愈来愈大。 随着软件应用范围的增广,软件规模愈来愈大。大 型软件项目需要组织一定的人力共同完成, 型软件项目需要组织一定的人力共同完成,而多数管 理人员缺乏开发大型软件系统的经验, 理人员缺乏开发大型软件系统的经验,而多数软件开 发人员又缺乏管理方面的经验。 发人员又缺乏管理方面的经验。各类人员的信息交流 不及时、不准确、有时还会产生误解。 不及时、不准确、有时还会产生误解。 软件项目开发人员不能有效地、 软件项目开发人员不能有效地、独立自主地处理大 型软件的全部关系和各个分支, 型软件的全部关系和各个分支,因此容易产生疏漏和 错误。 错误。
1.1what is SA ?
e.g. 每个Filter都有输入端和输出端,例如一个MPEG-1解码Filter它的输入是MPEG编码的 流数据,它的输出端是一解码过的流数据。DirectShow正是通过将不同的Filter连接在一起 完成特定的功能的,我们将这些Filter的连接叫做Filter Graph,如下图A给出是播放AVI的 Filter Graph:
• Hayes Roth • 软件体系结构是一个抽象的系统规范, 软件体系结构是一个抽象的系统规范, 系统规范 主要包括用其行为来描述的功能构件和 构件之间的相互连接、接口和关系。 构件之间的相互连接、接口和关系。
• David Garlan 和 Dewne Perry • 软件体系结构是一个程序/系统各构 软件体系结构是一个程序/ 件的结构、 件的结构、它们之间的相互关系以及进 行设计的原则和随时间演化的指导方针。 行设计的原则和随时间演化的指导方针。
1.3体系结构设计原则
体系结构是指软件系统的基本和主体的形 态,也就是软件系统中“最本质”的东 西。一个软件系统的体系结构设计得好 不好,可以用“合适性、结构稳定性、 可扩展性、可复用性”这些特征量来评 估。
1概述
• 它是一种简单的、清楚的、完善的方式 形成的 • 软件工程师需要一种更好的视角来理解 软件,并试图找到一种新的方法来构建 更复杂的大型软件系统 • SA (software architecture) • 一个简单程序到复杂系统软件的距离是 十年
1概述-需求开发的主要困难
1概述-软件危机的原因
汇编语言、宏替换、高级语言编译器、数据类型
1.1定义
• Dewayne Perry和A1exander Wo1f Perry和 • • • • • 软件体系结构是具有一定形式的结构化元素, 软件体系结构是具有一定形式的结构化元素,即构 件的集合,包括处理构件、数据构件和连接构件。 件的集合,包括处理构件、数据构件和连接构件。 处理构件负责对数据进行加工, 处理构件负责对数据进行加工,数据构件是被加工 的信息, 的信息,连接构件把体系结构的不同部分组合连接起 来。 这一定义注重区分处理构件、数据构件和连接构件, 这一定义注重区分处理构件、数据构件和连接构件, 这一方法在其他的定义和方法中基本上得到保持。 这一方法在其他的定义和方法中基本上得到保持。
1.2软件体系结构研究的内容 和范畴
• 被解决的:模块接口语言,特定领域的软件体系结构, 软件的重用,软件组织结构模式的规范化编纂,体系 结构描述语言,体系结构设计形式化的支持和体系机 构设计环境。 • 四个研究领域: • 1.新的体系机构描述语言来解决体系机构描述问题。 • 2.体系结构领域知识的总结性研究。这个领域关心的 是工程师通过软件实践总结而来的各种体系机构原则 和模式的分类和阐释。 • 3.针对特定的领域的框架的研究。 • 4.软件体系结构形式化支持的研究。