最新分析比较KWIC系统实现四种不同体系结构风格Word文档格式.docx
《最新分析比较KWIC系统实现四种不同体系结构风格Word文档格式.docx》由会员分享,可在线阅读,更多相关《最新分析比较KWIC系统实现四种不同体系结构风格Word文档格式.docx(6页珍藏版)》请在冰豆网上搜索。
管道-过滤器风格将系统的功能逻辑建立为部件集合。
每个部件实例完成一个对数据流的独立功能处理,它接收数据流输入,进行转换和增量后进行数据流输出。
连接件是管道机制,它将前一个过滤器的数据流输出传递给后一个过滤器作为数据流输入。
连接件也可能会进行数据流的功能处理,进行转换或增量,但连接件进行功能处理的目的是为了适配前一个过滤器的输出和后一个过滤器的输入,而不是为了直接承载软件系统的需求。
各个过滤器可以并发执行。
每个过滤器都可以在数据输入不完备的情况下就开始进行处理,每次接到一局部数据流输入就处理和产生一局部输出。
这样,整个的过滤器网络就形成了一条流水线。
设计词汇表:
Pipe,Filter
构件和连接件类型构件:
Filter
连接件:
Pipe
例子:
传统编译器
优缺点:
优点:
易于理解并支持变换的复用。
工作流风格与很多业务处理系统体系结构很匹配。
通过添加变换的方式进行进化是很显然的。
可以实现为顺序的系统,也可以实现为并发的系统。
〔1〕使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;
〔2〕允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
〔3〕支持软件重用。
重要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;
〔4〕系统维护和增强系统性能简单。
新的过滤器可以添加到现有系统中来;
旧的可以被改良的过滤器替换掉;
〔5〕允许对一些如吞吐量、死锁等属性的分析;
〔6〕支持并行执行。
每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。
缺点:
在通信变换间所传输的数据格式必须协商好。
每个变换必须解析它的输入并写成约定的格式输出。
这增加了系统的负荷,意味着不可能复用实用不兼容数据结构的函数变换。
运行结果:
2采用调用/返回风格:
主程序/子程序、面向对象风格、层次结构
主程序/子程序风格〔MainProgram/SubroutineStyle〕将系统组织成层次结构,包括一个主程序和一系列子程序。
主程序是系统的控制器,负责调度各子程序的执行。
各子程序又是一个局部的控制器,调度其子程序的执行。
面向对象式风格,需要强调说明的是它的“对象〞是部件,属于高层结构的元素,虽然名称相同,但它并不是面向对象方法中所述的“对象〞实体。
“面向对象式〞风格的命名是因为它借鉴了面向对象方法的思想,而不是因为它使用面向对象方法实现体系结构,这也是在该风格名称中有一个“式〞字的原因。
面向对象式风格的主要实现机制是模块实现,它将每个对象部件实例都实现为一个模块。
存在连接的对象部件实例之间会存在模块的导入/导出关系。
每个模块内部可以是基于面向对象方法的实现,也可以是基于结构化方法的实现。
1内部实现的可修改性。
因为面向对象式风格要求封装内部数据,隐藏内部实现,所以可以在不影响外界的情况下,变更其内部实现。
2易开发、易理解、易复用的结构组织。
面向对象式风格将系统组织为一系列平等、自治的单位,每个单位负责自身的正确性,不同单位之间仅仅是通过方法调用相连接,这非常契合模块化的思想,能够建立一个易开发、易理解、易复用的实现结构。
当一个对象和其他对象交互,它必须知道其他对象的标识。
当一个对象的标识改变时,必须修改那些显式调用它的对象。
别离性和独立性的概念是体系结构设计的根底,因为别离性和独立性使得变更得到局部化。
分层体系结构模式是实现别离性和独立性的一个方式。
这里,一个分层系统〔LayeredSystems〕按照层次结构组织,系统的功能被划分成几个独立的层次,每一层只依赖紧接的下一层所提供的效劳和设施。
定义的一系列不同层次各自完成其自身的操作,这些操作逐渐接近机器的指令集。
在外层,构件完成建立用户界面的操作;
在内层,构件完成建立操作系统接口的操作;
中间层提供各种实用工具效劳和应用软件功能。
分层的方法支持系统的增量式开发。
如一个层被开发完,该层提供的效劳就可以被用户使用了。
这个体系结构还是可改变的和可移植的。
如果一层的接口被保存下来,这个层就能被另外的一个对等层替换。
当一层的接口改变或增加了新设施的时候,只有毗邻的层受影响。
因为分层系统的抽象机依赖的是内层中的抽象机,因此,转换到其他机器上实现是比拟容易的,此时只有内部与具体机器相关的层需要重新实现以适应不同的操作系统或数据库。
允许在接口保持不变的条件下更换整个一层。
在每一层中可以提供冗余效劳〔例如身份验证〕以增加系统的可靠性。
在具体实践中,在各层之间提供一个干净的别离通常是困难的,高层可能不得不直接与低层进行直接交互而不是间接通过紧邻的下一层进行交互。
性能可能是个问题因为效劳请求会在每一层中被处理所以会需要多层解释。
3仓库风格:
数据库系统、超文本系统、黑板系统
数据共享风格也称为仓库风格。
这种风格的典型代表有数据库系统、超文本系统、黑板系统。
该风格中,主要有两类部件:
1中心数据结构部件,又可称作“数据仓库〞表示系统的当前状态。
2是一组相对独立的部件集,它们可以以不同方式与数据仓库进行交互,这也就是数据共享体系结构的技术实现根底。
根据所使用的控制策略不同,数据共享体系结构主要有两大分支:
1如果系统输入业务流的类型是激发进程执行的主要原因,那么数据仓库是黑板,其中黑板体系结构风格主要应用于需要进行复杂解释的信号处理领域。
称为黑板的原因是:
它反映了信息共享,如同教室里的黑板一样,其模拟一组人类专家,对于同一个问题或者是一个问题的各个方面,每一位专家都根据自己的专业经验提出自己的看法,写在黑板上,其他人都能看到,随意使用,共同解决好这个问题。
可以有多个人读上面的字,也可以有多个人在上面写字。
便于多客户共享大量数据,而不必关心数据是何时产生的、由谁提供的以及通过何种途径来提供。
便于将构件作为知识源添加到系统中来。
容器是一个单个失败点,因而容器中的问题会影响整个系统。
在组织所有通过容器进行的通信时会比拟低效,将容器分布到多个计算机上会很困难。
4独立构件风格:
进程通讯、事件系统
事件驱动架构的根本思想是:
系统对外部的行为表现可以通过它对事件的处理来实现。
一个基于事件驱动构架的应用程序系统,各个功能设计为封装的、模块化的、可用于共享的事件效劳组件,并在这些独立非耦合的组件之间将事件所触发信息进行传递。
隐式调用的思想是,不直接调用一个过程,而是发布或播送一个或多个事件。
系统中的其他构件通过注册与一个事件关联起来的过程,来表示对某一个事件感兴趣。
当这个事件发生时,系统本身会调用所有注册了这个事件的过程。
这样一个事件的激发会导致其他模块中过程的隐式调用。
比方在Field系统中,诸如编辑器和变量监视器等工具会注册调试器的中断点事件。
从体系结构的角度说,隐式调用模式中的构件是模块,其接口不仅提供过程的集合〔像抽象数据类型〕,也提供事件的集合。
过程可能以一般的方式被调用,但构件可以将过程注册到与其相关联的系统事件中,这样,当事件发生时,过程会被间接调用。
这种模式主要特点是事件发布者不知道哪些构件会受到事件的影响。
因此,构件不能对事件的处理顺序,或者事件发生后的处理结果做任何假设。
正因为这个原因,许多隐式调用系统也包括显式调用〔比方,正常的过程调用〕,以此作为构件交互的补充。
事件元数据:
用来实现事件定义和事件处理规那么预定义。
事件处理:
包括事件处理引擎和事件处理对象实例两局部。
事件处理引擎按照所处理的事件类型分为简单事件处理和复杂事件处理两类。
事件工具:
有事件开发工具和事件管理工具两种组成。
1事件声明者不需要知道哪些构建会响应事件,因此,不能确定构件处理的先后顺序,甚至不能确定事件会引发哪些过程调用。
2提高了软件重用能力,只要在系统事件中注册构件,就可以将该构件集成到系统中。
3便于系统升级,只要构件名和事件中所注册的过程名保持不变,原有构件就可以被新构件所替代。
1构件放弃了自身对系统计算的控制。
当一个构件发布一个事件,它不能保证其他构件会对其做出响应。
即使它能够肯定该事件会被其他构件响应,它也不能依赖事件被处理的先后顺序。
2涉及到数据交换。
有时数据通过事件传递,但在某些情况下,事件系统必须依赖一个共享缓冲区,以便于数据的交换。
这样,整体的性能和资源的管理可能成为关键性问题。
3正确性验证,因为发布事件的过程的具体含义与事件激发的上下文有关。
这和传统的过程调用验证不同,当对调用功能行为进行验证时,传统的过程调用只需考虑过程前和过程后的条件。
五实验总结
通过本次实验认识到软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能到达体系结构级的软件重用。
也就是说,能否在不同的软件系统中,使用同一体系结构。
在建立体系结构过程中,不断明确设计词汇表、构建和连接件的类型、可容许的结构模式、根本的计算类型、风格的根本不变形、常用例子、优缺点。
通过明确这些问题,可以理解一种体系结构的根本特征,从而为实现体系结构重用提供可能。
通过对KWIC
进行建模和实现,让我动手把简单的软件体系结构代码实现,在程序里表达体系结构的根本思想,拓展了数据结构的根本知识,将软件设计思想表达在编码环节,为以后的体系结构设计提供根底。