1、2022-12-41第七章 软件体系结构主讲人:谭 良2022-12-42提 纲1.什么是软件体系结构?2.为什么要研究软件体系结构?3.软件体系结构的研究角度;4.基本的软件体系结构风格;5.基于体系结构的软件开发模式;6.异构体系结构;7.软件体系结构的当前研究热点。2022-12-43什么是软件体系结构?Dewayne Perry和Alexander Wolf于1992年正式提出软件体系结构的概念:软件体系结构是具有一定形式的结构化元素。结构化元素包括:进程元素、数据元素和连接元素。Mary Shaw和David Garlan于1993年提出:软件体系结构是软件设计过程中的一个层次,这一
2、层次超越计算过程中的算法设计和数据结构设计。设计和说明总体系统结构作为一个新问题正式提出来了。2022-12-44什么是软件体系结构?Dewayne Perry和David Galan于1995年IEEE软件工程学报上定义:软件体系结构是一个程序/系统各部件的结构、它们之间的相互关系、进行设计的原则和随时间演进的指导方针。南加州大学软件工程中心的Barry Boehm指出:一个软件体系结构包括:(1)一个软件和系统部件、互联及约束的集合;(2)一个系统需求说明的集合;(3)一个基本原理用以说明这一部件、互联和约束能够满足系统的需求。2022-12-45什么是软件体系结构?1997年,Bass,
3、Clements和Kazman在使用软件体系结构一书中的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件部件、软件部件的外部可见特性及其相互关系。“外部可见特性”是指软件部件提供的服务、性能、特性、错误处理、共享资源使用等。这一定义强调软件体系结构必须从系统中抽象出某些信息。2022-12-46什么是软件体系结构?对软件体系结构定义的总结分析:软件体系结构定义了软件部件(Component),包括部件间交互的定义,特别强调省略和部件相互关系无关的内容信息(content information)。软件体系结构并不说明什么是部件、什么是部件的相互关系。每一个软件系统都有自身的体系结构,
4、即由软件部件及其相互关系组成。软件体系结构中每一部件的行为是体系结构的一部分,反映部件间如何进行交互。软件体系结构的基本元素是部件,部件的描述信息包括:(1)计算功能:部件所实现的整体功能;(2)额外功能特性:描述部件的执行效率、处理能力、环境假设和整体特性;(3)结构特性:描述部件如何与其他部件集成在一起,以构成系统信息;(4)家族特性:描述了相同或相关部件之间的关系。2022-12-47什么是软件体系结构?部件类型 部件支持的相互作用类型 模块(Module)过程调用、数据共享 对象(Object)方法调用 过滤器(Filter)数据流 过程(Process)消息传递、远过程调用、通讯协议
5、、同步 数据文件(Data file)读/写 数据库(Database)模式(Schema)、查询语言 文档(Document)共享表示假设 表1:普通部件及其支持的相互作用2022-12-48软件体系结构讲座提纲1.什么是软件体系结构?2.为什么要研究软件体系结构?3.软件体系结构的研究角度;4.基本的软件体系结构风格;5.基于体系结构的软件开发模式;6.异构体系结构;7.软件体系结构的当前研究热点。2022-12-49为什么要研究软件体系结构?1.系统体系结构的发展是与计算机抽象技术的发展同步的;2.大规模复杂软件系统的性能与质量对软件工程技术提出了新的要求;3.软件体系结构研究的重要性。
6、2022-12-410为什么要研究软件体系结构?-计算机抽象技术的发展抽象数据类型数据结构与算法软件结构研究的开始高级程序设计语言程序族软件体系结构汇编语言、宏替换;高级语言编译器、数据类型。程序数据结构算法(算法抽象)软件划分与构造,方便系统的开发与维护。(模块抽象)数据类型抽象、封装、信息隐藏、多态性等。一个家族的程序,在信息隐藏和软件结构设计上具有相同的模式。(设计模式抽象)软件体系结构可以看作是要把程序族中的成员的结构化信息组织起来,使系统在体系结构级达到重用。(体系结构抽象)2022-12-411为什么要研究软件体系结构?-软件工程技术发展的要求程序设计阶段早期软件工程阶段手工作坊软
7、件危机1.软件开发无计划性;2.软件需求不充分;3.软件开发过程无规范;4.软件开发产品无评测手段。如何更多、更好、更方便、更快地开发软件?工程化管理软件开发以满足功能需求为主问题定义;需求分析;概要设计;详细设计;编码;测试;维护瀑布模型;演化模型;螺旋模型;喷泉模型;增量模型;原型模型;组装可重用构件模型。2022-12-412为什么要研究软件体系结构?-软件工程技术发展的要求?1.为什么专家和新手在使用软件开发模型和软件工程方法时,表现出来的软件效率和效果不一样?专家的经验应用环境问题要求空间问题求解空间如:设计模式 框架注意:经验的抽取与表达独立于具体的功能要求。2022-12-413
8、为什么要研究软件体系结构?-软件工程技术发展的要求?2.为什么应用软件开发模型和软件工程方法解决大规模、复杂问题时,软件系统的质量和效率无法得到保证?非功能性需求1.系统性能要求,可用性要求;2.系统可适应性和可移植性要求;3.系统可靠性和安全保密性要求;4.系统可重用性要求等。解决方法:在系统的局部算法结构设计之前,着重进行系统的整体结构设计。软件体系结构设计2022-12-414为什么要研究软件体系结构?-软件工程技术发展的要求软件概要设计的主要任务就是进行系统结构设计,是不是就是软件体系结构设计?概要设计结构化设计面向对象设计构件连接模块模块调用关系类和对象对象关联、聚集、继承注意:以往
9、的概要设计中的功能实体(构件)的设计是首位的,也是显式的,构件间的连接并没有单独作为实体显式地设计,而是作为构件的附属形式出现。而软件体系结构设计将部件、部件连接、连接规范和原则单独作为实体显式定义。2022-12-415为什么要研究软件体系结构?-软件体系结构研究的重要性1.软件体系结构是系统开发中不同参与者进行交流和信息传播的媒介。参 与 者软 件 体 系 结 构 视 角用 户系 统 是 否 满 足 可 用 性 及 可 靠 性 需 求客 户此 结 构 是 否 能 按 预 算 实 现管 理 人 员在 经 费 支 出 和 进 度 条 件 下,能 否 使 开 发 组 成 员 在一 定 程 度 上
10、 独 立 开 发,并 有 条 不 紊 地 有 序 地 交 互。开 发 人 员达 到 全 部 目 的 的 策 略注意:软件体系结构代表了系统的公共的高层次的抽象。2022-12-416为什么要研究软件体系结构?-软件体系结构研究的重要性2.软件体系结构代表了早期的设计决策成果。早期的决策最难处理、最难于改变、影响范围也最大。软件体系结构给予开发人员一种实现的约束。(部件划分、部件交互)软件体系结构支配了开发和维护项目的组织结构。(系统结构支配了项目组织结构)软件体系结构关系着系统的目标质量。(好的体系结构是系统成功的必要条件)通过研究软件体系结构可能预测软件的某些质量。软件体系结构是系统的高层次
11、概述,因此可以作为新项目成员培训的基础。软件体系结构可以帮助管理层适应变化。(改动的时间、风险、后果、优先级等)软件变化种类1.局部的:修改单个部件本身;2.非局部的:要修改几个部件,但不影响基础体系结构的变动;3.体系结构级的:改动会影响各部分的相互关系,甚至整个系统。2022-12-417为什么要研究软件体系结构?-软件体系结构研究的重要性3.软件体系结构可以作为一种可变换的模型。软件体系结构决策能在具有相似需求的多个系统中发生影响。通过体系结构的抽象可以使设计者能够对一些经过实践证明是非常有效的体系结构部件进行复用,从而提高设计的效率和可靠性。软件体系结构有利于形成完整的软件生产线,并共
12、享公共的软件体系结构。可以引进大量的外部开发的部件来构造系统,只要这些部件是与确定的体系结构相容。体系结构可以使部件的功能与其互连机制分离,从而可以分散注意焦点,有利于处理问题。体系结构有利于面向模式、面向部件的开发。因此:软件体系结构体现了一个相对来说比较小又可理解的模型2022-12-418软件体系结构讲座提纲1.什么是软件体系结构?2.为什么要研究软件体系结构?3.软件体系结构的研究角度;4.基本的软件体系结构风格;5.基于体系结构的软件开发模式;6.异构体系结构;7.软件体系结构的当前研究热点。2022-12-419软件体系结构的研究角度1.软件角度从不同角度分析软件的体系结构。2.软
13、件风格(style)角度 描述了对软件设计成分如何进行整理和安排,并且对这些整理和安排加以限制,从而形成一种设计软件的特定模式。每一种软件体系结构风格均有自己的组织原则和基本成分,它们决定了风格的形成。2022-12-420软件体系结构研究角度-软件角度 从多个不同的角度描述一个软件系统的整体结构,能全面、清晰地反映软件系统的全貌,也能满足不同参与者的需求。目前常用的“4+1”角度模式:支持软件的功能需求(系统的功能抽象)支持模块的组织与管理(软件的静态结构)系统的并发与同步等控制结构,支持系统的非功能性需求。描述软件和硬件的映射问题对系统中的重要活动的抽象,使四个角度有机地联系起来。2022
14、-12-421软件体系结构研究角度-软件风格角度软件体系结构风格:能重复使用的软件体系模式。有原则使用结构风格的益处:促进了对体系结构设计的复用;带来显著的代码复用。体系结构风格不变部分可以共享同一个实现代码;只要系统是使用常用的、规范的方法来组织,就可使别的设计者很容易地理解系统的体系结构;对标准风格的使用也支持了互操作性。CORBA与基于事件机制的集成;结构风格通常允许进行特殊的和风格有关的分析,这与连接件的特性有关;通常有可能对特定的风格提供可视化手段(visualization)。注意:结构风格的使用几乎完全是特化的,必须根据特定项目的具体特点进行分析比较后确定。2022-12-422
15、软件体系结构研究角度-软件风格角度软件体系结构风格的四种基本要素:1.提供一个词汇表:定义与设计元素有关的部件、连接件类型等。2.定义一套配置规则或系统的拓扑限制:明确设计元素的合法组成方式。3.定义一套语义解释原则:使得设计元素的组成可以适当地约束于配置规则之中,并具有清晰的含义。4.定义可以对基于这种风格建立的系统进行的分析。如:Client/Server结构风格的实时处理过程的可调度性。2022-12-423软件体系结构讲座提纲1.什么是软件体系结构?2.为什么要研究软件体系结构?3.软件体系结构的研究角度;4.基本的软件体系结构风格;5.基于体系结构的软件开发模式;6.异构体系结构;7
16、.软件体系结构的当前研究热点。2022-12-424基本的软件体系结构风格出发点:侧重于软件体系结构的结构模型,即观察软件部件、连接件、部件及连接件组合的约束条件。1.管道和过滤器(pipes and filters)2.数据抽象和面向对象组织(data abstraction and OO-organization)3.基于事件的隐式调用(event-based,implicit invocation)4.分层系统(layered systems)5.仓库系统(repositories)6.表格驱动的解释器(table driven interpreters)7.其它类型的体系结构2022-
17、12-425基本的软件体系结构风格-管道/过滤器(pipes and filters)计算过滤器计算过滤器管道过滤器:对输入数据进行局部变换,并采用渐进式计算方法,在未处理完所有输入数据以前,就可以产生部分计算结果,并将其送到输出端口。管道:各过滤器之间的连接器将一个过滤器的输出传到下一过滤器的输入端。特征:1.过滤器一定是独立的实体,即各过滤器之间不能共享状态;2.过滤器与其连接的上下游的过滤器互相独立。过滤器只能涉及限制哪类数据可以出现在它的输入管道中,可以保证它将输出何种类型的计算结果,但不能识别与其相连的管道的另一边的过滤器。2022-12-426基本的软件体系结构风格-管道/过滤器(
18、pipes and filters)1.系统的整体行为可以理解为各独立过滤器行为的简单合成。2.系统维护容易:过滤器可以容易地替换和增加。3.允许进行如吞吐量和死锁等性能分析。4.很自然地支持并发执行。1.过滤器容易被看成提供一个完整的将输入数据转换成输出数据的模块。实际上,过滤器是以渐进式处理数据的。2.维护两个分离但相关的数据流时,很难设计这样的系统。3.由于管道遵循最一般的数据传输标准,所以,过滤器必须承担数据语法分析和编码的额外工作,增加了复杂性,降低了性能。2022-12-427基本的软件体系结构风格-数据抽象和面向对象组织(data abstraction and OO-organ
19、ization)部件:对象,或者说是抽象数据类型的实例。连接:对象间通过函数和过程调用发生相互关系。特征:1.对象负责维持本身的完整性;2.信息隐藏:对象的结构和方法的实现对其它对象不可见。抽象、封装、信息隐藏、继承、多态性、动态联编等.一个对象与另一个对象交互时必须知道对方的标识,这种显式调用使得系统的维护变得较困难。2022-12-428基本的软件体系结构风格-基于事件的隐式调用(event-based,implicit invocation)思想:组件不直接调用一个过程,而是触发或广播一个或多个事件。系统中其它组件的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注
20、册的所有过程。这样,事件的触发就可以隐式调用模块中的过程。特点:事件的声明者不用知道哪些部件会被事件影响。部件:模块,既可以是过程,又可以是事件集合。连接:显式和隐式过程调用强有力支持软件复用;系统容易升级。软件部件放弃了对计算的控制,控制完全由系统完成。数据传递常常需要依赖一个存储库来完成,资源管理成为问题。系统正确性的评判问题。因为过程的调用依赖于调用时的环境。2022-12-429基本的软件体系结构风格-分层系统(layered systems)内核基本工具有用的系统用户软部件:实现在层次结构中的虚拟机连接件:层次与层次之间交互的协议层次化组织原则:每一层向其上层提供服务,并利用下层的服
21、务。2022-12-430基本的软件体系结构风格-分层系统(layered systems)支持基于抽象程度递增的系统设计。支持功能扩展、增强。因为功能的改变最多影响相邻的层次。支持复用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。并不是每个系统都可以很容易地划分为分层的模式,有时即使存在逻辑层次结构,但出于对系统性能的考虑,将低层和高层的功能耦合起来。很难找到一个合适的、正确的层次抽象方法。2022-12-431基本的软件体系结构风格-仓库系统(repositories)软件部件表示当前状态的中心数据结构一组相互独立的处理中心数据的部件部件交互方式根据输入数据流的事务处理类型决
22、定执行哪个处理过程根据中心数据结构的当前状态触发进行执行传统的数据库系统黑板系统2022-12-432基本的软件体系结构风格-仓库系统(repositories)黑板(共享数据)知识源知识源知识源知识源直接存取:知识源不断改变黑板的状态。按照与应用程序相关的层次组织的问题求解数据独立、分离的与应用程序相关的知识及其处理单元黑板状态驱动控制:使用特定的知识。2022-12-433基本的软件体系结构风格-表格驱动的解释器(table driven interpreters)工作存储区对解释引擎控制状态的表示被解释程序的当前状态的表示解释引擎输入输出计算状态机被选数据和指令存储器数据存取解释器202
23、2-12-434基本的软件体系结构风格-表格驱动的解释器(table driven interpreters)工作存储区规则库规则与数据元素选择规则解释引擎输入输出计算状态机被选数据和规则存储器数据存取事实存储区专家系统2022-12-435基本的软件体系结构风格-其它类型的体系结构分布式系统中最常用的体系结构:客户/服务器模型服务器:为客户提供服务;事先并不知道有哪些客户对其进行访问。客户:必须直接或间接知道服务器的标识。远过程调用注意:结构的层次可以是两层,也可以是三层(在客户和服务器之间增加了一个中间层:中间件),三层结构中相邻两层仍然保持客户/服务器的关系。2022-12-436基本的
24、软件体系结构风格Garlan和Shaw对通用体系结构风格的分类:数据流风格:批处理序列;管道/过滤器;过程/调用风格:主程序/子过程;面向对象;分层系统;独立组件风格:进程通讯;基于事件驱动的系统;虚拟机风格:表格驱动的解释器;基于规则的系统;数据中心风格:数据库系统;超文本系统;黑板系统。小结:一个体系结构风格定义了有相同组织结构模式的一系列系统,并定义了组件和连接器类型的列表以及一套组件连接的约束。许多体系结构模型还有一个或多个语义模型来指定如何由各部分的属性决定系统的整体属性。2022-12-437软件体系结构讲座提纲1.什么是软件体系结构?2.为什么要研究软件体系结构?3.软件体系结构
25、的研究角度;4.基本的软件体系结构风格;5.基于体系结构的软件开发模式;6.异构体系结构;7.软件体系结构的当前研究热点。2022-12-438基于体系结构的软件开发模式良好的体系结构可以为软件开发和维护带来好处:识别相似系统的通用结构模式,有助于理解系统高层之间的联系,使得新系统可以作为以前系统的变种来构造;合适的体系结构是系统成功的关键,而不合适的体系结构可能带来灾难性的后果;对软件体系结构的理解,可以帮助开发人员在不同的设计方案中做出理性的选择;体系结构对于分析和描述复杂系统的高层属性通常是十分必要的;各种体系结构风格的提炼、描述和普遍采用,便于软件开发人员在系统设计中互相交流;在软件开
26、发文档中清晰地记录系统体系结构,不仅可以显著地节省软件理解的工作量,而且便于在软件维护的全过程中保持系统的总体结构和特性不变。2022-12-439基于体系结构的软件开发模式提炼特定应用领域的稳定需求和易变需求,建立可复用的领域模型。在特定领域模型的基础上提炼特定应用领域的软件体系结构。进行体系结构设计分配系统功能到相应的构建和连接件上存放设计模式、对象或其它可重用的设计构件。设计构件和连接件复用/存储2022-12-440软件体系结构讲座提纲1.什么是软件体系结构?2.为什么要研究软件体系结构?3.软件体系结构的研究角度;4.基本的软件体系结构风格;5.基于体系结构的软件开发模式;6.异构体
27、系结构;7.软件体系结构的当前研究热点。2022-12-441异构体系结构1.异构是不可避免的不同的体系结构在处理能力上有不同的优缺点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。同一种体系结构下的可重用的部件和连接件在不同时期可能存在不同的标准,特别是连接件中的通信协议标准。如果要重用原来系统中遗留下来的代码,那么就要解决与新系统体系结构的不协调问题。2.异构体系结构的组合组合的方法很多,如可以利用分层组织方式,基于某种体系结构的系统的一个组成部分,其内容可以是另一种与之完全不同的结构。以完全不同的结构类型完整描述体系结构中的每一层。2022-12-442异构体系结构?异构体
28、系结构组合时,如何解决不同体系结构下部件间的协调问题?假设:两个部件(A和B)不能协调工作的原因是各自事先对数据表示、通信协议、同步控制、语法(统称为形式(form))作了假设。1.按照B的形式重写A,即将A的形成改变成B的形式。2.公布A的形式的抽象化信息,即开放API。3.在数据传输过程中从A的形式转变到B的形式。4.通过协商,A和B达成一个统一的形式。5.提供进口/出口转换器。6.引入中间形式,如IDL(接口描述语言)、标准的发布形式等。2022-12-443软件体系结构讲座提纲1.什么是软件体系结构?2.为什么要研究软件体系结构?3.软件体系结构的研究角度;4.基本的软件体系结构风格;
29、5.基于体系结构的软件开发模式;6.异构体系结构;7.软件体系结构的当前研究热点。2022-12-444软件体系结构的当前研究热点1.提供软件体系结构描述语言:使开发者能够描述他们设计的体系结构,以便与人交流。2.对软件体系结构的专门知识的整理:对软件工程师在软件开发实践中得来的各种体系结构方面的原则、模式进行整理和分类。3.提供特定领域的体系结构框架:使得开发者能够很容易地将此体系结构框架实例化为该领域内新的软件系统。4.提供软件体系结构设计技术的形式化基础:希望对系统的非功能性需求(性能、可维护性等)给出形式化特征,使得据此设计的软件体系结构可以更好地被理解和实现。5.研究体系结构的分析技术:预见软件质量,比较不同的体系结构特性。6.体系结构设计规则与开发方法的研究:将体系结构设计活动推广到更广的软件开发进程中去。7.体系结构设计工具和环境:用软件工具描述和分析软件体系结构。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。