《最新软件体系结构风格(上)》由会员分享,可在线阅读,更多相关《最新软件体系结构风格(上)(40页珍藏版)》请在金锄头文库上搜索。
1、软件体系结构风格软件体系结构风格巢蓟晾己苟栅牺屎更访酬萎惭拷耸违肘滴琅禄飘吭西涅榜扳铰捉帘滚眨顷软件体系结构风格(上)软件体系结构风格(上)1 软件体系结构风格(Style):描述特定系统组织方式的惯用范例,强调组织模式和惯用范例。组织模式即静态表述的样例,惯用范例则是反映群众多系统共有的结构和语义。软件体系结构设计的核心问题:能否达到体系结构级的软件重用;对软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。PS:体系结构模式 体系结构惯用描述和体系结构风格是同一个意思目的:展示软件体系结构丰富的选择空间,在此基础上对目的:展示软件体系结构
2、丰富的选择空间,在此基础上对风格选择的一些权衡风格选择的一些权衡迈拨冶绎孽轩看慨兹伙力腾天捕吨接瀑丑烟诧装飞扭斩熄韵顽厩诽溅窜束软件体系结构风格(上)软件体系结构风格(上)2使用软件体系结构风格的优点:使用软件体系结构风格的优点:促进设计重用;带来巨大的代码重用;使系统更易于被他人理解;使用标准化的风格有利于系统的互操作性;便于利用特有的体系结分析方法;提供特定风格的可视化。逐昂传门短衣刨哺庸棕霸米楼规剧惩家窄弃隙陨禾案镇炔涩惧腿旧效溢逼软件体系结构风格(上)软件体系结构风格(上)3 在体系结构层次上,常出现客户机服务器系统、管道过滤器设计或者分层体系结构等软件风格术语,这些术语一般与特定的设
3、计方法和符号相关,如面向对象和数据流等,虽然还没有对体系结构惯用模式实现分类,但是这种分类的轮廓已开始出现,如下部分主要种类: 桐傲涕汞跃森寺隐勿踞废惶伪咳贡吐句靴帆徘厉府嘿沫陵子噎腋姓埔款枣软件体系结构风格(上)软件体系结构风格(上)4软件体系结构风格是反复出现反复出现的组织模式组织模式和习惯用法习惯用法,是对一系列体系结构设计的抽象;软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表词汇表和一组约束约束;词汇表包括一些构件和连接件,约束指出系统如何将这些构件和连接件组合起来; 一个软件体系结构风格定义了构件和
4、连接件类型的符号集,以及规定它们怎样组合起来的约束集合。臀拓离板坍缓桃援搓咨猩而庄汐绒抿昼湃钧泌商痞虎佐膳饯整平巾雀昨处软件体系结构风格(上)软件体系结构风格(上)5讨论体系结构风格时要回答的问题:设计词汇表是什么?构件和连接件的类型是什么?可容许的结构模式是什么?基本的计算模型是什么?风格的基本不变性是什么?其使用的常见例子是什么?其优缺点是什么?体系结构风格最关键的四个要素:提供一个词汇表词汇表、定义一套配置规则一套配置规则、定义一套语义解释原则一套语义解释原则和定义对基于这种风格的系统所进行的分析分析。分析7种通用的风格嗜键滋席幻新要甥恶露际铡范吃礁儒窖框挞寨潜椭党路忿抄留偷眉祥婪校软件
5、体系结构风格(上)软件体系结构风格(上)6Garlan和和Shaw对通用体系结构风格的分类:对通用体系结构风格的分类:(1)数据流风格数据流风格:批处理序列、管道/过滤器(2)调用调用/返回风格返回风格:主程序/子程序、面向对象系统、多级分层(3)独立构件风格独立构件风格:进程通讯、事件系统;(4)虚拟机风格虚拟机风格:解释器、基于规则的系统;(5)知识库风格知识库风格:数据库系统、超文本系统、黑板系统PS: 知识库风格也称为数据中心系统或仓库系统坪娟葱挥刻迅一册宇哩绅许惯四础搪墓液十醇夏春元砌肋芳纷讳抡潘绪烂软件体系结构风格(上)软件体系结构风格(上)7经典软件体系结构经典软件体系结构管道和
6、过滤器管道和过滤器数据抽象和面向对象组织数据抽象和面向对象组织基于事件的隐式调用基于事件的隐式调用分层系统分层系统知识库知识库模型模型-视图视图-控制器控制器(MVC)风格风格解释器风格解释器风格客户客户/服务器风格服务器风格(C/S)三层三层C/S结构风格结构风格浏览器浏览器/服务器风格服务器风格(B/S)苹吸蓬羞见汗涵赴矢兹凡枚易观拧柏滋屈言荣掷忽屹纵酒耶淹颇显殆浅唇软件体系结构风格(上)软件体系结构风格(上)8管道和过滤器管道和过滤器(PIPES AND FILTER)o产生于UNIX操作系统,适用于对有序数据进行一系列已经定义的独立计算的应用程序;o每个构件构件(过滤器过滤器)都有一组
7、输入和输出,构件读输入的数据流,经内部处理,产生输出数据流;o连接件连接件位于过滤器之间,起到信息流导管的作用,称为管道管道;o管道和过滤器系统的输出的正确性不依赖于过滤器的递进处理顺序。锗宏贫姜膳灭兆竟日寒刁窝粘坊吝拌跟殖匠船查檬奏碌否饯拯锭枣颐宝数软件体系结构风格(上)软件体系结构风格(上)9o管道过滤器通用结构:过滤器是一个独立实体,其间无需共享状态管线(Pipelines):限制系统的拓扑结构只能是过滤器的线性序列 有界管线(Bounded Pipes):限制了在管道中能容纳的数据量 类型定义管道(Type Pipes):明确定义在两个过滤器间的数据类型会蹲马刹糙脱惨屡尺弯臆务辕挣赁像
8、辆颜友涯痪烤切铆退掘叉绒跃式渔纹软件体系结构风格(上)软件体系结构风格(上)10o管道和过滤器风格的例子管道和过滤器风格的例子:UNIX的shell程序,如命令:cat file | grep xyz | sort | uniq out在文件file中查找包括xyz的行 排序 去掉重行 输出到out文件中;编译器:词法分析 句法分析 语义分析 代码生成。垮牲劝涨廉趁靠诺望匙箭蟹硝回界场逞补澄龋狰请噪素篙扫蜘势耘蜂永翅软件体系结构风格(上)软件体系结构风格(上)11o管道和过滤器的实现管道和过滤器的实现:将系统任务分成几个独立的处理阶段;定义每个管道传输的数据格式;决定管道的连接;设计和实现过滤
9、器;设计出错处理;建立处理流水线。钵候汉蹈晶势浚浸糕库础炳疫解剪地仰惋捻践哪条凉绑膊贸张痞昂百允痔软件体系结构风格(上)软件体系结构风格(上)12o管道和过滤器的优点管道和过滤器的优点:每个过滤器都是独立的整体,相互之间的状态互不影响;只要具备输入条件即可独立地完成自己的处理支持功能模块的重用;过滤器并不知道它的上游和下游的过滤器的特性;它的设计和实现不会对与它相连的过滤器加以限制。系统容易维护和扩展支持某些特定的分析,如吞吐量和死锁检测并发性咋磐恍缕臼锋化曝释涩窥商洁懈箱哀粮帜逃窃酞行革向躺账巷颤括第说容软件体系结构风格(上)软件体系结构风格(上)13o管道和过滤器的缺点管道和过滤器的缺点:
10、管线或流水线(Pipe Line):过滤器严格限制为单输入、单输出类型,系统拓扑结构只能是线性序列;交互性比较弱兼容性相对弱;维持两个相对独立但又存在某种关系的数据流之间的通信可能比较困难;有名管道:在过滤器之间通过有名的管道来进行数据传送,增加了解析或反馈工作,从而降低系统的效率。莲迹繁椰营兰喘合愈琶险回服周奎蚁帽畅溺擞祁柒陵一休替硕殷唁巡阜亡软件体系结构风格(上)软件体系结构风格(上)14数据抽象和面向对象组织数据抽象和面向对象组织o建立在数据抽象和面向对象的基础上,数据表示方法及其相应操作被装到一个抽象数据类型(对象)中;o对象对象(构件构件)负责保持资源的完整性,对象通过函数函数和过程
11、调用和过程调用(连接件连接件)来交互;o适用于以相互关联的数据实体的标识和保护为中心问题的应用程序。棍嚣舶之骸喧自镀滇墟韩泻即红韵季尺卵遵皋手箩丽庸剖惨窿尸匆神员龟软件体系结构风格(上)软件体系结构风格(上)15面向对象风格的优点:封装封装:对象具有信息隐藏特性,内部结构对外不可见;继承继承:从具有通用特征的对象开始,逐渐定义更具体对象多态多态:不同类型的对象可以对相同的激励做出不同的响应恤茬唆谜辛烙顾蝗熟洱圾香吮勺矣谜讫拟羚溜猪变绩捞备扫崎大趁残棍毯软件体系结构风格(上)软件体系结构风格(上)16PS: PS: 数据抽象是特殊化的面向对象风格:数据抽象是特殊化的面向对象风格:ADT (Abs
12、tract ADT (Abstract Data Type)Data Type)只有封装特点,没有继承和多态的特点。只有封装特点,没有继承和多态的特点。面向对象风格的缺点: 1、对象调用过程中必须要知道对象的标识,只要一个对象的标识改变,就必须修改所有其他明确调用它的对象。 2、同时要修改每一个引用了这个模块的“导入”列表,这样会带来不可预料的副作用。诵揖崔蓝炉册涩移件固岭营袄浪郝拖解磅敝钓邦埠拯摸史碰贞紧砷茧果肢软件体系结构风格(上)软件体系结构风格(上)17基于事件的隐式调用基于事件的隐式调用o基于事件基于事件(Event-Based)的风格又称为隐式调用隐式调用(Implicit Inv
13、ocation)风格,构件不直接调用一个过程过程,而是触发或广播一个或多个事件事件,由系统调用为这一事件注册的其他构件的过程;o每个构件构件的接口不仅提供一个过程的集合,也提供一个事件的集合;一个构件可注册多个事件,一个事件可触发对多个构件过程的调用;o适用于涉及低耦合构件集合的应用程序,如在用户界面系统中管理数据,在数据库管理系统中确保数据的一致性,在编辑器中支持语法检查。乐菌代芥依邻挖钉亚悉蓄圃粳夯毫圣寅衣纫忆屿操藉盯群诊拂钾绊叁帅醚软件体系结构风格(上)软件体系结构风格(上)18o隐式调用风格的优点为软件重用提供了强大的支持为改进系统带来了方便o隐式调用风格的缺点构件放弃了对系统计算的控
14、制数据交换的问题既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题因追肿昨纠碧缨口尾炮匀诅役铅所扦撮姨嘲奶轰潭瓦挨兹挺咯可硬坷左谷软件体系结构风格(上)软件体系结构风格(上)19分层系统分层系统o系统组织为层次结构层次结构,每一层为上层提供服务服务,作为下层的客客户户,通常不允许跨层交互;o适应于可以按照层次结构来组织不同类别的相关服务的应用程序;o系统中构件构件在一些层实现了虚拟机虚拟机的功能;o连接件连接件通过决定层间如何交互的协议来定义,拓扑约束拓扑约束包括对相邻层间交互的约束;o如分层通信协议,每一层提供一个抽象的功能作为上层通信的基础,最低层只定义硬件物理连接。
15、逝完雾揽脓怠嘻港指塔李寅晒卷阵表接扎茁弘役猾谓肖三鄙课答碾迪纶窟软件体系结构风格(上)软件体系结构风格(上)20例:ISO的OSI/RM (Open Systems Interconnection Reference Model) 7层模型笨硕惫韶罪店盆妨量根掩鲤哩链硅礁管呈蓉卓臼裂娇艰入箔浪猩燥宣讶镜软件体系结构风格(上)软件体系结构风格(上)21o分层系统的实现:分层系统的实现:为分层定义抽象准则,定义抽象层次;给每一层命名并指定它们的任务和提供的服务;为每个层定义接口、实现独立的层;确定相邻层通信、降低相邻层的耦合程度;设计错误处理策略。鹏启隋甜今瞧饿毛芜鞘痰验修抨希镍车炙紊丑驳杏胰湖结
16、赴仰目标玻幅步软件体系结构风格(上)软件体系结构风格(上)22o基于微内核模式构建的Windows NT系统:系统服务层:系统服务层:子系统与NT执行程序间的接口层;资源管理层:资源管理层:包括对象管理、安全引用监视、进程管理、I/O管理、虚拟存储管理、局部过程调用等模块;内核:内核:负责基本功能,如中断和异常处理,多处理器同步,线程调度;硬件抽象层:硬件抽象层:隐藏不同处理器系列机器间硬件的差异;硬件层;o非严格分层结构,内核和I/O管理需要直接访问硬件。睫贱栅究卿疚澜云坑联新幢溯傈睛谁断烦淳簿紧谦扭早亦赊名谬骗航赡盅软件体系结构风格(上)软件体系结构风格(上)23o分层系统风格的优点可以把
17、一个复杂系统按递增的步骤进行分解支持功能强,因为每一个层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层。支持重用,定义一组标准接口允许各种不同的实现方法。o分层系统风格的缺点层次的划分不太容易很难找到一个合适的、正确的层次抽象方法 妄将拂馁栓颈嚏渤日撤芬盛渴泅伪驴媒苗减薛债拷统同挡躺引傅娇惕劫研软件体系结构风格(上)软件体系结构风格(上)24知识库知识库o适用于无确定性求解策略无确定性求解策略的问题:实践中许多复杂问题难以用数学精确地描绘和严格地分析,如医疗诊断、法律推理、军事分析等;o解决方法依赖于积累了人类知识和经验的知识库知识库;o知识库风格的体系结构由两种构件构件组成:一个
18、中央数据结构中央数据结构,表示系统当前状态;一个独立构件的集合独立构件的集合,对中央数据结构进行操作。狈荐翠花铆硒淆蛇踢瘁坤沙暗牲茶他鸳辰獭莎菊睹冈钢呢躯杭楚痊郁部颁软件体系结构风格(上)软件体系结构风格(上)25o对于系统中数据和状态的控制方法分两种:由输入事务选择进行何种处理,并把执行结果作为当前状态存储到中央数据结构中,知识库为传统的数据传统的数据库型知识库库型知识库;由中央数据结构的当前状态决定进行何种处理,知识库为一黑板体系结构黑板体系结构。o黑板反映的一种信息共享的系统,传统应用是信号处理领域,源于1970s人工智能的自然语言处理系统HEARSAY-II。岭般岳珍苞简液疤皑绿蜂僳蜘
19、素磋偿潘云畔时神志状道瓷誉艺沛雌晚陕裙软件体系结构风格(上)软件体系结构风格(上)26o黑板体系结构模型通常由3部分组成:知识源:知识源:包含独立的、与应用程序相关的知识;黑板数据结构黑板数据结构:反映应用程序求解状态的数据,按照与应用程序相关的层次来组织;控制器控制器:一组对公共数据结构进行协同操作的独立程序集合,由黑板的状态驱动。夜角举昭兰锌文社致锣萤符圆辑勿偶贯龄愉紫拿侵痛咒锡一御筷趁帽混握软件体系结构风格(上)软件体系结构风格(上)27o黑板结构实现:黑板结构实现:定义问题:定义问题:指出问题的领域、确定系统输入、输出,细化系统与用户的交互要求;定义问题解空间:定义问题解空间:确定目标
20、解的构成,列出解决方案的不同抽象等级,找出能独立工作的完整解的部分解;求解过程:求解过程:如何将低级中间解转换成高等解,定义在某抽象层上如何进行启发性搜索,定义黑板词汇集,设计系统控制,实现知识库。黑板系统传统上应用在复杂信号处理解释上,如语音和模式识别,现代编译器也是以共享信息为基础的我厂征曳均堆内搞缸娟追谰嫁裳疙光娶卸吊橡蹿赠务惶峨帚咙菩撮渭宦爸软件体系结构风格(上)软件体系结构风格(上)28o解释器风格中通常有一个虚拟机,弥合程序语义所期望的与硬件提供的计算引擎之间的差距o解释器包括正在被解释执行的伪码和解释引擎本身伪码由需要解释的源代码和解释引擎分析所得到的中间代码组成。解释引擎:语法
21、、解释器的定义和解释器当前执行状态解释器解释器龋似航渝挞讥德怀趟巫楼眯彻俐法汤俭虽睦绎件田税阐毙濒迅敝疟肌郁泡软件体系结构风格(上)软件体系结构风格(上)29模型模型-视图视图-控制器控制器(MVC)风格风格o许多应用系统使用图形用户界面图形用户界面,MVC主要用于处理软件用户界面开发中所面临的问题:用户界面需要经常改变;不同的用户对用户界面的表示和使用有不同的要求;同样的数据希望能以不同的形式显示给用户;o为方便界面修改界面修改和移植移植,应把计算模型和显示模型独立。掏韵玄凭醒逝教潘颈旧蜒很陆疵迪畦橇附株石馆憎急掇咕垣自坛负毕映肪软件体系结构风格(上)软件体系结构风格(上)30oModel-
22、View-Controller将交互式应用划分为3种构件:模型:模型:应用程序的核心,封装内核数据与状态;视图:视图:为用户显示模型信息,一个模型可对应多个视图;控制器:控制器:提供给用户进行操作的接口,每个视图与一个控制器构件相关联。o例:Microsoft提供的Windows应用程序的文档视图结构(Document-View Architecture)。瞩晓狗秘拇赋攘胶堤殿扑微桑翅桶海仑智堪例锌入垦球臻旧裁托店镜奠蚜软件体系结构风格(上)软件体系结构风格(上)31oMVC的实现:的实现:分析应用问题,将人机交互从核心功能中分离开来;设计应用程序的模型模型构件;设计和实现每个视图视图;设计和
23、实现每个控制器控制器;创建“可安装”的控制器控制器,增加系统灵活性。詹廷亏育悲案腰色炼妄酗知宜嘿铣选霉殉现茫夷况鞠石倒西柴弄杠而杉否软件体系结构风格(上)软件体系结构风格(上)32客户客户/服务器风格服务器风格(C/S)o客户客户/服务器风格服务器风格(Client/Server):数据和处理分布在一:数据和处理分布在一定范围内的多个构件上,构件通过网络连接。定范围内的多个构件上,构件通过网络连接。o特征:特征:服务器构件服务器构件:向多个客户提供服务,永远处于激活状态,监听用户请求;客户构件客户构件:向服务器构件请求服务;连接件连接件:某种通信机制,通常是基于RPC (Remote Proc
24、edure Call protocol )的交互协议;理解情况下,访问是透明透明的。件呜凳津弯词娄吐汐乱厉折顽篆涝孔芬敲通便挣读惟莎与狄堰疗杯遗虏鲁软件体系结构风格(上)软件体系结构风格(上)33o服务器负责有效地管理系统的资源:服务器负责有效地管理系统的资源:数据库安全性的要求;数据库访问并发性的控制;数据库前端的客户应用程序的全局数据完整性规则;数据库的备份与恢复;o客户应用程序的主要任务:客户应用程序的主要任务:提供用户与数据库交互的界面;向数据库服务器提交用户请求并接收来自数据库服务器的信息利用客户应用程序对存在于客户端的数据执行应用逻辑要求。oC/S特点特点C/S结构将应用一分为二,
25、服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务服务器为多个客户应用程序管理数据,而客户程序发送、请求和分析服务器接收的数据,属“胖客户机胖客户机(fat client)”,或称为“瘦服务器瘦服务器(thin server)”体系结构揭壶旅蠕崇且唾臆愁冠鲤窝巢节篙虹咙岸唁擞渡俩出墒旱卉震舷午鸦雹檬软件体系结构风格(上)软件体系结构风格(上)34oC/S体系结构风格的优点强大的数据操作和事务处理能力通过局域网络连接低成本计算机,可以节约大量费用易于系统的扩充和缩小oC/S体系结构风格的缺点开发成本高客户端程序设计复杂信息内容和形式单一用户界面风格不一,使用繁杂,不易推广使用软件移植
26、困难软件维护和升级困难新技术不能轻易应用灭酬擒心点笼肋脸朋峻沮匈费篓忧冒政欠序眼丽亩理倡架童市丑蔽迁蜂缅软件体系结构风格(上)软件体系结构风格(上)35三层三层C/S结构风格结构风格o传统二层C/S结构的局限性:以单一服务器为局域网中心,难以扩展至大型企业广域网或Internet;软、硬件的组合及集成能力有限;客户机的负荷重,难以管理大量的客户机,系统性能容易变坏;客户端程序可直接访问数据库服务器,数据安全性不好;o三层C/S结构增加一个应用服务器应用服务器,分为表示表示层层、功能层功能层和数据层数据层;富睬渤距卞撬醋访谅喂世萌糟噶鸿菱篱艾梧爆骇带攒嗡欢暑值掺羡妹祝亢软件体系结构风格(上)软件
27、体系结构风格(上)36o表示层表示层应用的用户接口部分,担负着用户与应用间的对话功能;方便用户使用,如GUI;检查输入数据合法性;o功能层功能层应用的主体,具体的业务处理逻辑;用户对应用和数据的存取权限,处理日志。o数据层数据层数据库管理系统,负责管理对数据库数据的读写如通过SQL访问的关系型数据库管理系统RDBMS;PS:对三层进行明确分割,并在逻辑上使其独立。霍绷屁如驾字钢暮甄播篡统态江愤捣蜀嗓热哟弱镁柑说炊婪至哆额伤臀寝软件体系结构风格(上)软件体系结构风格(上)37o中间件(middleware)用API定义的软件层,具有强大通信能力和良好可扩展性的分布式软件管理框架;在客户机和服务器
28、用、或服务器和服务器之间传送数据,实现客户机群和服务器群之间的通信。 三层C/S结构提供了良好的结构扩展能力,其本质上是一种开发分布式应用程序的框架,在系统实现时可采用支持分布式应用的构件技术实现,如微软的.net、OMG的CORBA、SUN的JAVABEANS等蔫章酝恃荫链慈追连苞刽豢她与仙颅金咸趴晦契惊喳佩雅佰密累泌戍球蜕软件体系结构风格(上)软件体系结构风格(上)38o三层C/S结构的优点提高系统和软件的可维护性和可扩展性允许灵活有效地选用相应的平台和硬件系统,具有良好的可升级性和开放性可以并行开发,提高性能价格比o三层C/S结构的缺点各层间的通信效率若不高,即使分配给各层的硬件能力很强
29、,其做为整体来说也达不到所要求的性能。键秃收四萨和捷痒匪粥鳖摩熏独梆秩娄陪领晃朽货自滚狡腥镇任箩猎苛捐软件体系结构风格(上)软件体系结构风格(上)39浏览器浏览器/服务器风格服务器风格o浏览器/服务器B/S (Browser/Server)风格是三层C/S结构的一种实现方式;oB/S结构:浏览器浏览器、Web服务器服务器和数据库服务器三层数据库服务器三层;oB/S+Internet= 电子商务、CRMoB/S体系结构风格的缺点:缺乏对动态页面的支持能力,没有集成有效的数据库处理功能系统扩展能力差,安全性难以控制采用B/S体系结构的应用系统,在数据查询等相应速度上,要远远低于C/S体系结构B/S体系结构的数据提交以页面为单位,数据的动态交互性不强,不利于在线事务处理应用烤雍裳太崖苛谋厘怜涨鲤殊帘昨事测儿藤彻蠢术犀功淳幅檬湛霸时阉澎峦软件体系结构风格(上)软件体系结构风格(上)40