资源描述
Software Architecture Perspective on an Emerging Discipline,By 王备战 13959238599(M) 05922580589(O) 海韵园行政楼A座506,Chapter 3 软件体系结构的层次性,Contents: 体系结构的基础和层次特性 软件体系结构的层次结构模型 从层次模型看软件体系结构,2/64,3/64,在构建一幢建筑物和构建一个软件系统之间存在着惊人的相似性。(From 软件架构师导读) 简单而易于掌握的思想具有改变思想和认识的力量。 牛顿与万有引力 弗洛伊德:潜意识的存在是行为的动机。 如果把软件和信息技术系统都想象成物理建筑,则:我们会看到什么? 废弃的房屋 不开心的住户 空房,3.1 从建筑学看软件的构成,4/64,体系结构需要基础:从建筑的基础性看软件构成 地基、材料、材料构成三个方面从根本上决定了建筑物的结构、性能、功用、建造方法,形成了建筑的基础。 构造软件同样需要基础。计算机硬件结构、软件的基本组成、构成软件的可用组块三个方面。 讨论软件的体系结构必须首先建立一个基础:一旦确立了基础,各种观点的比较就有了共同的标准语言。,3.1 从建筑学看软件的构成,5/64,体系结构需要层次:从建筑的层次性看软件构成。 建筑是由基本材料到基础构件再到整体框架逐层次发展和构成的历程。 软件的体系结构也是由使用最基本的材料开始,到认识常用基础构件再到组装和构造整体框架的发展过程。,3.1 从建筑学看软件的构成,6/64,体系结构需要模式:从建筑的组合性看软件构成 形态和构件组成了建筑模式。20多年建立了现代建筑学的250余种“场景问题解决方案”模式,涵盖不同的规模和形态 这些建筑学的思想再软件结构的研究中也得到了重视,提出并发展了软件“软件设计模式”的概念,进而又提出了“软件体系结构模式”的概念。,3.1 从建筑学看软件的构成,7/64,体系结构需要清晰的角色划分:从建筑业看各个角色的划分。,3.1 从建筑学看软件的构成,8/64,软件设计的物质基础是当前的计算机硬件,它决定了软件设计和实现的出发点。 当前硬件的变革表现在两个方面 非冯.诺依曼运行机制的产生 并行处理为特征的高性能计算机结构,3.2 软件的物质基础,9/64,计算机硬件体系结构 软件是对一组数据进行处理的一串指令。 根据处理指令流和数据流的数量,计算机分为: SISD SIMD MISD MIMD,3.2 软件的物质基础,10/64,多处理机系统 属于MIMD系统 多处理机系统分为 共享存储器 分布存储器 工作在统一的操作系统下进行资源管理 挑战:并行算法和软件的设计,3.2 软件的物质基础,11/64,分布计算系统 多台计算机通过网络连接起来的大系统 分布存储的多处理机系统 但各自运行独立的操作系统,3.2 软件的物质基础,12/64,结论 多处理机需要并行处理(解决并行任务的调度和自动分解),对软件设计提出了复杂的要求,使软件设计的复杂度大大提高 我们以讨论串行计算机环境下的软件体系结构为主,3.2 软件的物质基础,13/64,任何具有固定组成形式的数据、代码、数据集合、代码序列、数据和代码的结合体都可以称作结构。 无论多么高层的结构,都是建立在基础结构之上的。 软件结构的问题从最初的最基本、最底层的描述过渡到越来越高、越来越抽象的层次上。 作为软件结构基础的思想和概念,包括四个方面: 结构化控制流 结构化连接模式 数据结构 抽象数据类型,越 来 越 抽 象,3.3 软件的结构基础,14/64,结构化控制流 顺序序列 转向语句 goto 过程调用 ,3.3 软件的结构基础,15/64,结构化控制流 条件语句 if then if then else 开关语句 Swithch Case value 1 Case value n ,3.3 软件的结构基础,16/64,结构化控制流 循环语句 For While do Repeat until Break Continue,3.3 软件的结构基础,17/64,结构化控制流 事件/异常语句 On goto 中断/事件控制 Set to Set on/off,3.3 软件的结构基础,18/64,部件连接方式 部件连接器:完成部件与部件之间的连接 部件:数据、外部设备、程序段 实现部件连接的四种方式 过程调用 远程过程调用 事件触发 服务连接,3.3 软件的结构基础,19/64,部件连接方式 过程调用方式 部件之间通过过程、函数或方法实现连接 必须知道对方部件的标识、对外提供的操作过程标识、参数设置 远程过程调用 RPC 网络分布环境下的过程调用 通过代理部件完成部件之间的连接,3.3 软件的结构基础,20/64,部件连接方式 中断/事件触发方式 通过硬件提供的中断及其控制机制实现部件连接的方式 用特定名称标识中断号码就形成事件触发的部件连接方式 服务连接方式 服务连接方式由接口、分析器、执行器构成 请求部件 接口 分析器 执行器 请求部件 各类解释器、功能服务器采用的就是这种连接方式,3.3 软件的结构基础,21/64,任何具有固定组成形式的数据、代码、数据集合、代码序列、数据和代码的结合体都可以称作结构。 无论多么高层的结构,都是建立在基础结构之上的,作为软件结构基础的思想和概念,包括四个方面: 结构化控制流 结构化连接模式 数据结构 抽象数据类型,3.3 软件的结构基础,22/64,结构化连接模式:建立在基本控制流之上的高层次抽象,属于控制模式。 指部件与部件连接关系的构成形式。 条件连接 循环连接 查询连接 中断/事件方式 共享信息方式,3.3 软件的结构基础,23/64,结构化连接模式 条件连接 ,部件A,部件 1,部件 n,条件,3.3 软件的结构基础,24/64,结构化连接模式 循环连接 例如编译系统中:调用词法分析、语法分析、语义分析、目标代码生成、代码优化、链接等模块 ,部件A,部件 1,部件 n,3.3 软件的结构基础,25/64,结构化连接模式 查询方式 两个部件 信息源:负责信息的采集 信息处理部件:周期性地对信息源进行信息查询 对于随机发生的信息源事件无法达到快速的实时处理 ,信息获取和处理构件,信息源 1,信息源 n,3.3 软件的结构基础,26/64,结构化连接模式 中断/事件触发方式 处理构件不主动关心信息源的情况 信息处理部件在信息源中断事件触发下启动工作 可以对随机发生的信息源事件进行快速的实时处理,处理构件,信息源 1,信息源 n,3.3 软件的结构基础,27/64,结构化连接模式 共享信息模式 共享信息区构件进行信息源和信息处理构件的信息交换和传递 需要考虑信息存取的同步和互斥问题,信息源 1,信息源 n,共享信息交换区,信息处理构件,3.3 软件的结构基础,28/64,任何具有固定组成形式的数据、代码、数据集合、代码序列、数据和代码的结合体都可以称作结构。 无论多么高层的结构,都是建立在基础结构之上的,作为软件结构基础的思想和概念,包括四个方面: 结构化控制流 结构化连接模式 数据结构 抽象数据类型,3.3 软件的结构基础,29/64,基本数据类型(数据结构) 是继规范控制和结构化设计后在软件研究和设计中发挥巨大促进作用的软件结构概念 在表达软件体系结构的时候离不开基本的数据结构,是体系结构的基本和重要方面 Java 10的杂质 已经让位与体系结构和更高层的结构 常见的数据结构 线性结构 树形结构 复杂结构 文件结构,3.3 软件的结构基础,30/64,任何具有固定组成形式的数据、代码、数据集合、代码序列、数据和代码的结合体都可以称作结构。 无论多么高层的结构,都是建立在基础结构之上的,作为软件结构基础的思想和概念,包括四个方面: 结构化控制流 结构化连接模式 数据结构 抽象数据类型,3.3 软件的结构基础,31/64,抽象数据结构 是一个关于软件分块或者部件的数学模型 定义了所描述的部件的构成和构成成员之间的关系以及作用在部件构成之上的合法的操作和操作的性质 与其在计算机内的具体的表示和实现无关 定义了由一个值域和定义在该值域上的一组操作组成 从类型的概念把握部件 抽象数据类型的定义,四元组(D,R,P,S)表示,3.3 软件的结构基础,32/64,任何具有固定组成形式的数据、代码、数据集合、代码序列、数据和代码的结合体都可以称作结构。 无论多么高层的结构,都是建立在基础结构之上的,作为软件结构基础的思想和概念,包括四个方面: 结构化控制流 结构化连接模式 数据结构 抽象数据类型 补充 面向对象 进程及其运行环境 分时并发计算 资源共享/并行同步 实时系统,3.3 软件的结构基础,33/64,面向对象 20世纪60年代提出的 Simula67,Smalltalk80 建立在抽象数据类型基础之上 基本概念:对象、类、封装、继承、多态、方法 类的层次性增加了代码的复用 信息隐藏保证的对象行为的可靠性 封装提高了对象作为一种模块的内聚力,3.3 软件的结构基础,34/64,进程 60年代初引入的概念 定义 进程是可以并行执行的计算部分,是一个独立的可以调度的活动 进程执行某个任务时,需要分配和释放各种资源 行为的规范构成程序,程序在处理机上的执行活动叫进程 程序是进程的脚本,进程是程序的动态执行过程 一个进程可以执行一个或者几个程序 不同的进程可以包含同一个程序 进程具有并行特征 进程必须建立独立的数据环境(确保进程间不发生干扰) 在串行计算机上,进程处理是实现程序并行和分时运行的必不可少的机制 进程概念的进一步发展,提出和实现了线程等概念,3.3 软件的结构基础,35/64,分时并发计算 对分时系统的需求 引入基于进程的多道程序技术后使机器的利用率得到的改善,但仍然不能满足用户的需求。 对任务控制能力的失去(小计算量的长事件等待)、希望多个操作能同时进行 分时系统的基本特征 同时性 独立性 及时性 交互作用性 实现分时的方法 时间片,3.3 软件的结构基础,36/64,资源共享/并行同步 并行执行的任务同时需要同一个硬件和软件资源资源共享、竞争的问题 并行执行的任务之间可能存在某种受限的逻辑或时序关系进程同步问题 解决办法:信号量 互斥信号:用于资源共享 同步信号:用于任务同步,3.3 软件的结构基础,37/64,实时系统 实时是指对于特定事件处理响应的高速度特性,或者指所提供的计算或服务反映最新信息状态的现实特性。 实时是相对于用户容许的响应时间或容许的滞后时间,只要满足用户对时间的要求,皆可称作实时的 分时与实时 分时的目标是提供多个用户可同时使用同一台机器或多个程序可在同一台机器上运行的软件环境 实时强调的是系统对特殊时间或请求的及时响应性 实时系统的实现 在分时控制下的循环查询模式和事件/中断模式 实时系统的特性 实时时钟管理 负载控制能力 高可靠性,3.3 软件的结构基础,38/64,分而治之的思想 横向 纵向 层次性一直都是软件的问题分析和设计实施的基本和具有普遍适用的思想方法 OS Network 层次系统(Layered Systems)是一种体系结构风格,3.4 软件的层次结构模型,39/64,计算机网络的体系结构,应用层,表示层,会话层,传输层,网络层,链路层,物理层,应用层,表示层,会话层,传输层,网络层,链路层,物理层,第1层协议,第2层协议,第3层协议,第4层协议,第5层协议,第6层协议,第7层协议,3.4 软件的层次结构模型,40/64,计算机操作系统的体系结构,计算机硬件(CPU、内存、I/O),基本输入输出,操作系统内核,系统调用,语言处理、系统工具、系统应用、应用程序,Shell解释运行,3.4 软件的层次结构模型,41/64,层次体系结构的对比、总结 都是从硬件的构成和连接的基础开始 系统设计中都考虑道了系统的升级和扩展性、兼容性 建立在各基础层服务之上的系统,对于性能可以建立可追踪的分析估计 以上两个体系结构的不同点 上层对下层的隔层之间是否发生直接连接或调用关系 以上体系结构为复杂软件的分层设计提供了典范,体系结构的层次风格主要因此而得到认识的。,3.4 软件的层次结构模型,42/64,建筑的发展经历了从认识建筑材料到采用基础构件、到建立整体结构的过程。 软件的发展和构造也具有类似建筑的性质。 任何软件的完整结构都具有层次关系: 特定的软件需要特定的硬件环境运行 不存在不需要下层支持的抽象的上层结构或框架 层次性是软件体系结构的不变性质,是软件构成的共同规律,3.5 软件体系结构的层次模型,3.5 软件体系结构的层次模型,第6层 应用层,第5层 系统结构模式层,第4层 资源和管理调度层,第3层 基础控制描述层,第2层 软化的硬件层,第1层 计算机硬件,软件体系结构的层次模型,44/64,硬件基础层 软件运行的物质基础 软化的硬件层 对硬件结构和性能抽象的基础上,实现硬件的操作和控制描述软化的硬件层 处理器:状态和指令集合 中断:状态和中断服务,3.5 软件体系结构的层次模型,45/64,基础控制描述层 建立在高级程序语言描述上的纯粹软件描述层,包括了高级语言所支持的所有程序控制和数据描述概念 程序控制概念:顺序、条件、选择、循环、变量、参数、过程、函数、模块 数据描述的概念:数组、队列、链表、堆栈、树、图、指针、记录 支持该层面的软件系统模型 主程序/子程序、结构化程序、模块化程序、面向对象程序 支持该层面的设计工具 程序设计语言、结构化分析、面向对象分析设计,3.5 软件体系结构的层次模型,46/64,资源和管理层 作用:在基础控制描述层建立的一切数据对象和操作,都需要在操作系统的协调和控制下才能实际的实现其设计的作用和功能。 进程管理、消息处理、I/O etc. 该层考虑的设计模式 共享资源、同步、分时系统、异常处理、并行、进程、线程、消息、远程调用 etc. 该层的软件系统模型 进程控制、分时系统、消息机制 etc .,3.5 软件体系结构的层次模型,47/64,系统结构模式层 最高层次的软件结构概念 属于体系结构风格或系统级别的设计模式 最高的抽象描述层 该层包含的概念有: 解释器、编译器、编辑器、管道/过滤器、黑板、C/S 、B/S、框架 etc.,3.5 软件体系结构的层次模型,48/64,应用层 从纯粹应用领域出发所建立的系统结构概念 是系统结构模式层的概念经过领域应用命名的直接引用 企业管理、公文处理、控制系统、CAD系统、ERP系统 etc.,3.5 软件体系结构的层次模型,49/64,3.5 软件体系结构的层次模型,50/64,3.5 软件体系结构的层次模型,51/64,3.5 软件体系结构的层次模型,52/64,体系结构的层次模型构成了SA的结构体系、知识体系。原因如下: 软件研究的过程就是SA从基础到高层逐步发展的过程 SA的概念是建立在软件研究和技术成果之上,是软件发展过至今的产物,3.6 软件体系结构的体系,53/64,层次模型对软件体系结构的认识 体系结构是关于软件的构成部件及其连接的分层的结构框架 体系结构包括软件的内在概念和外在操作结构 体系结构分析与设计涵盖并指导着从逻辑结构设计到运行实现的软件工程的全部过程,3.6 软件体系结构的体系,54/64,体系结构的构成基础 体系结构是计算机技术发展成熟的必然产物 基础包括:对硬件的软件抽象、基础控制描述、资源管理调度、系统结构模式、领域知识 SA研究是整个软件领域几十年研究的继承、概括和发展,3.6 软件体系结构的体系,55/64,体系结构的描述抽象 抽象在软件技术研究中一直发挥着重要的作用,每次抽象都标志着技术发展从经验向理论的转折,每次抽象都在前一次抽象基础上建立的 语言(01,汇编高级);ADT(data,operation);进程(并行和任务调度);事件和消息(中断);虚拟机、微内核(OS);分布式 (network);领域模型(特定应用问题);SP、OO、UML(软件结构) etc. SA是目前对软件结构的最高级抽象,该抽象建立在当强所有关于软件的研究成果之上的,3.6 软件体系结构的体系,56/64,体系结构的语法和语义 体系结构的组成需要使用特定的语言进行描述 词汇、语法、语义、语用 SA的层次性反映了几十年软件描述的基础词汇、语法集合、使用方法规范化、形式化,3.6 软件体系结构的体系,57/64,体系结构的性能分析 软件的性能 功能特性(Functional Properties) 非功能特性(NonFunctional Properties) 只有最上层结构关系而无深层次实现描述是无法实现非功能性分析 体系结构层次模型的资源及管理调度和基础控制描述层为研究非功能特性提供了支持,3.6 软件体系结构的体系,58/64,体系结构代码生成 软件设计的目的是建立正确高效运行的软件代码系统 SA应该支持代码的生成,提供对各个层次的部件和连接器的深层分析和表达 目前,SA研究重点在: 体系结构风格 体系结构形式化 体系结构描述语言 代码的生成,3.6 软件体系结构的体系,59/64,体系结构的知识体系 软件体系结构的层次模型说明了软件的构成和设计知识贯穿散布在计算机各领域中 软化的硬件层:组成、汇编、接口 基础控制描述层:语言、DS、OO、DB 资源及管理调度层:OS 系统结构模式层:DB、SE、DC 应用层:Background 建立统一、系统的软件知识体系,3.6 软件体系结构的体系,Thank You !,
展开阅读全文