软件体系结构第5章分析.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件体系结构第5章分析

清华大学出版社 第5章 软件体系结构风格 内容提要 5.1 软件体系结构风格概述 5.2 软件体系结构基本风格解析 5.2.1 管道-过滤器 5.2.2 数据抽象与面向对象风格 5.2.3 基于事件的隐式调用风格 5.2.4 分层系统风格 5.2.5 仓库风格和黑板风格 5.2.6 模型-视图-控制器(MVC)风格 5.2.7 解释器风格 5.2.8 C2风格 5.3 案例研究 5.3.1 案例1:上下文关键字 5.3.2 案例2:仪器软件 5.3.3 平台层PaaS和应用程序层SaaS 5.4 客户/服务器风格 5.5 三层C/S结构风格 5.5.1 三层C/S结构的优点 5.5.2 实例:某石油管理局劳动管理信息系统 5.6 B/S风格 5.7 C/S与B/S混合结构风格 5.8 正交软件体系结构风格 5.8.1 正交软件体系结构的概念 5.8.2 正交软件体系结构的优点 5.8.3 正交软件体系结构的实例 5.9 基于层次消息总线的体系结构风格 5.9.1 构件模型 5.9.2 构件接口 5.9.3 消息总线 5.9.4 构件静态结构 5.9.5 构件动态行为 5.9.6 运行时刻的系统演化 5.10 异构结构风格 5.10.1 使用异构结构的原因 5.10.2 异构体系结构的实例 5.10.3 异构组合匹配问题 5.11 小结 5.1 软件体系结构风格概述 5.2 软件体系结构基本风格解析 采用管道-过滤器模式建立的系统主要有以下几个优点: (1)由于每个构件的行为不受其他构件的影响,因此,整个系统的行为比较易于理解。 设计者可以将系统抽象成一个“黑匣子”,其输入是系统中第一个过滤器的输入管道,输出是系统中最后一个过滤器的输出管道,而其内部各功能模块的具体实现对用户完全透明。 (2)支持功能模块的复用。任意两个过滤器只要在相互的输入、输出管道格式上达成一致,就可以连接在一起。 过滤器A和过滤器B只要对管道C中传输的数据格式达成一致就可以实现互连,其中过滤器A并不关心过滤器B如何处理管道C的内容,而过滤器B也不知道管道C的内容究竟是如何产生的,即在管道过滤器模式中,过滤器之间仅需很少的信息交换就可以完成互连。 (3)具有较强的可维护性与可扩展性。可维护性体现在系统过滤器部件的更新或升级。 由于技术改进等原因,过滤器A的实现发生了改变,采用新技术开发的过滤器D具有和A完全相同的输入、输出管道接口,这时可以直接将A替换为D,而无须对系统中的其他过滤器或管道进行任何修改。 图5-2 管道-过滤器支持功能模块复用 (4)支持特殊的分析:如吞吐量计算和死锁检测等。利用管道-过滤器模式图,可以很容易地得到系统的资源使用与请求状态图,然后,根据操作系统原理等相关理论中的死锁检测方法就可以分析出系统目前所处的状态,是否存在死锁可能及如何消除死锁等问题。 (5)支持并发执行。基于管道-过滤器模式的系统存在很多并行的过滤器,这样的系统在实际运行时,可以将存在并发可能的多个过滤器看作多个并发的任务并行执行,从而大大提高了系统的整体效率,加快了处理速度。当然,在调度并行任务的时候,必须有相应的并行算法作基础,否则,可能导致系统功能的混乱。 5.2.2 数据抽象与面向对象风格 图5-4 数据抽象与面向对象风格的体系结构 5.2.3 基于事件的隐式调用风格 基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。 隐式调用系统的主要优点有以下两点: 为软件重用提供了强大的支持。当需要将一个构件加入现存系统时,只需将它注册到系统的事件中。 为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其他构件的接口。 隐式调用系统的主要缺点有以下几方面: ● 构件放弃了对系统计算的控制。一个构件触发一个事件时.不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序。 ● 数据交换的问题。有时数据可被一个事件传递,但在另一些情况下,基于事件的系统必须依靠一个共享的仓库进行交互。在这些情况下,全局性能和资源管理便成了问题。

文档评论(0)

little28 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档