软件架构的数据流总结(二)

8. Blackboard(有点像老师叫学生上黑板写东西,而不是学生随意上黑板写)

Blackboard是Knowledge Sources的通用数据结构,能够代表问题空间的所有状态,当需要分离的数据结构时,Blackboard可以分开为多个面板(panels)。Knowledge Sources 是解决问题方法的元件,它们之间没有链接。Scheduler(调度器)决定哪个知识源有机会改变blackboard,每一个循环,它都注意blackboard的改变,激活合适的知识源,然后选择其中一个并执行。典型的案例就是Hearasy-II,语音识别程序,speech可以在不同层次被识别。

应用场合:问题空间应当能被分解为不同的部分;问题需要不同形式的问题逼近,比如bottom-up和up-bottom推理。

Problems:一个相当好的选择标准(scheduler)是比较困难的。如果仅仅从队列中选择第一个的话,这种复杂的结构is overkill。

 9. Finite State Machine(有限状态机)

实际上这种架构就是自动控制原理中的架构。比如温度控制,T作为controlled variable(控制变量),加热温度是Process,决定何时、以多大程度加热时Control。期望输出的温度叫做Set Point,加热器的状态叫做被控变量。因此,有以上两种情况:一个是开环,一个是闭环。如果温度是直接作为输入变量使用的,然后输出还反过来作为输入,这就是典型的feedback;而feedforward控制系统则间接的使用变量作为控制系统的输入。

上图从上到下:开环控制,闭环反馈控制,闭环前馈控制。具体的细节可以参看自动控制原理,这部分内容算是比较熟悉的。

 

11.  Multi AgentSystem(多自主系统)

MAS是分布人工智能的一个典型案例。当应用需要多个部分同时激活,不需要单独的解空间和集中控制,就可以采用这种多自治系统来构建。上图从上到下分为flat:directly contact with each other,fixed Hierarchy:lower and upper,Subsumption,Modular。

 

12. Broker / Service Oriented Architecture(面向代理/服务的架构)

看到这个架构,很自然就想到了DSP6678的一种典型的配置: 一个core当作master,其余7个core当作slave.

SETI项目是这个架构最成功的样例。他们要求全世界范围内计算机的所有者都能捐献一部分的空余的计算时间来处理大量的raw data。因此,创造了最大的分布式计算系统。SETI有一个单一中心的计算机,叫做Master,将数据包发送到Internet上的client电脑,每个client电脑将处理的结果发送回master server,master server把结果整合到数据库中,并喂给client更多的data。

当有足够的处理能力但是时间有限的情况下,可以采用这种分布式计算的架构。

Master有大量的独立的jobs需要执行,它将这些分立的job发送给它的slaves,然后这些slaves处理这些job,并将结果返回。类似SETI上面的解释。重要的是如何将任务分割成独立的。这种独立指的是每个任务不需要其他任务的计算结果,是完全可以独立执行的任务,即任务与任务之间是不存在依赖关系的。因此,在开发并行执行的程序时,或者分布计算的应用时,常常要进行这样的思考和构造。特别是DSP 6678这种多核架构的主从分布计算。

 

 

 

 

 

 

 

 

参考文献:http://www.dossier-andreas.net/software_architecture

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年6月7日
下一篇 2015年6月7日

相关推荐