体系结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.管道-过滤器风格描述
⏹语境:处理数据流
⏹问题:建立一个必须处理或转换输入数据流的系统。
⏹解决方案:把系统分解为几个序贯的处理步骤,这些步骤采用通过系统的数据流连
接---一个步骤的输出是另一个步骤的输入。
⏹管道和过滤器体系结构模式把系统任务分成几个序贯的处理步骤。
⏹这些步骤采用通过系统的数据流连接-一个步骤的输出是下一个
⏹步骤的输入。每个处理步骤由一个过滤器组件实现。
⏹数据源:表示系统的输入,它提供一系列相同结构或类型的数据。
数据汇点:收集来自流水线终端的结果
⏹过滤器组件:是处理单元。
⏹通过计算和增加信息来丰富数据
⏹通过浓缩或摘录信息来提炼数据
⏹通过以别的表示形式交付数据来转换数据
过滤器组件的类型
⏹随后的单元从过滤器中拉出输出单元
⏹前面的单元把新的数据压入过滤器
⏹过滤器以循环的方式,从流水线中拉出其输入数据,并将其输出数据压入后续单元
⏹被动过滤器
⏹主动过滤器
过滤器组件:增量式的处理数据
过滤器的状态
⏹停止状态:表示过滤器处于待启动状态,当外部启动过滤器后,过滤器处于处理状态。
⏹处理状态:表示过滤器正处理输入数据队列中的数据。
⏹等待状态:表示过滤器的输入数据队列为空,此时过滤器等待,当有新的数据输入
时,过滤器处于处理状态。
特点
⏹过滤器组件是独立的。
⏹除输入和输出外,每个过滤器不受任何其它过滤器运行的影响。
⏹过滤器之间不共享任何信息。
每个过滤器不知道其上游或下游过滤器的ID号
管道-过滤器的优缺点
长处:系统易于升级:
过滤器组件的重用
通过重组增加了灵活性
支持并发:每个过滤器作为一个单独的执行任务,可以与其它过滤器并发执行。短处:共享状态信息或者昂贵或者不灵活(如果处理阶段需要共享大量的全局数据,则应用该模式就低效)
不适于交互处理。往往导致批处理的方式.
数据转换的额外开销(考虑进行数值计算并使用unix管道的系统,必须在每个过滤器中把ASCII字符转换成实数或者将实现转换成ASCII字符。一个简单的过滤器,如两个数相加,它的绝大部分处理时间消耗在格式转换上)
2.批处理风格
把任务分解成为一系列固定顺序的计算单元(组件),组件间只通过数据传递交互
⏹面向数据流的方法也是软件工程的基本方法,例如:数据流图、杰克逊面向数据结
构的方法都与数据流模式(风格)相关联。其中采用数据流图进行建模、分析、导出概要设计的思想已成为经典技术。
3.数据抽象和面向对象
⏹数据及其操作被封装成抽象数据类型(对象)
特点:
⏹封装
⏹继承
⏹多态
⏹数据抽象风格(ADT)是特殊化的面向对象风格,区别在于:ADT只有封
装的特点,而没有继承和多态的特点。
⏹ (隐藏内部实现,和外界隔离;外部的接口稳定,内部实现随版本更迭; 封装
变化点)
⏹(复用现有代码)
⏹(改变对象的行为;虚函数等)
⏹
⏹(1)对象抽象使得组件和组件之间的操作以黑箱的方式进行。
⏹
(2)封装性使得细节内容对外部环境得以良好的隐藏。对象之间的访问是通过方法调用来实现的。
⏹
(3)考虑操作和属性的关联性,封装完成了相关功能和属性的包装,并由对象来对它们进行管理。
⏹
(4)使用某个对象提供的服务并不需要知道服务内部是如何实现的。
1、ODS开放式分布系统中体系结构的精化
三大建模理念:
构件-基本要素(接口、类型、语义、约束、演化、非功能属性)
连接器-交互协议(接口、类型、语义、约束、演化)
配置-拓扑结构(构件合理性、连接匹配性、连接通信正确性、连接定义满足设计要求性)
2、连接器模型设计
通信协议(命名和处理机制、通信协议、传输控制协议)
适应性稳定算法(自适应算法、容错网络、遗传算法)
3、面向对象风格的应用(建立对象模型,对象间的关系是系统关键)
◎因为对象对其它对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其它的对象;
◎设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。
⏹(1)对象之间的耦合度比较紧:为了使一个对象和另一个对象通过过程调用等进行
交互,必须知道对象的标识。只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象。
⏹
(2)必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用。例如a 使用了对象b,c也使用了对象b,那么,c对b的使用所造成的对a的影响可能是不可预测的。
4.基于事件的风格描述
基于事件(event-based)的风格,又被称为隐式调用(implicit invocation)的风格。
在此类风格的系统结构中,组件并不直接调用一个过程,而是声明或广播一个或多个事件。
系统中的其他组件可以把某一过程注册为与它所关心的事件相关联。当某一事件发生时,系统会调用所有与之相关联的过程,即一个事件的激发隐含地导致了对其他模块的过程调用
⏹组件:它们的接口不仅提供一个过程的集合,也提供一个事件的集合。
⏹连接器:这些过程既可以用一般的方式调用,也可以被注册为与某些事件相关。
⏹组件可以声明或广播一个或多个事件,或者向系统注册,来表明它希望响应一个或
多个事件。
⏹连接器的两种类型:对事件的显式或隐式调用。
⏹隐式调用的最大不足之处在于,组件对系统进行的计算放弃了主动控制。一个组件
不能假设其他组件将会对它的请求做出响应,也不能知道事件被处理的先后顺序。
5.Model-View-Control
为交互式的软件系统提供了最著名的体系结构方面的组织。一个交互式应用程序分成三