如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
结合互操作性浅谈软件体系结构小组成员:邓超,陈迪豪,张宇乾,黄达彬Part1:有关互操作性的简单介绍互操作性(Interoperability),互用性互操作性是指不同的计算机系统、网络、操作系统和应用程序一起工作并共享信息的能力,也是一个衡量各种功能单元之间进行通信、执行程序或传递数据的能力。互操作性分为语法互操作性以及语义互操作性两种。首先对于深入推进互操作性的任何工作而言,语法互操作性都不可或缺。如果一个系统能够进行通讯和交换数据,那么,它就具备语法协同工作能力。就数据的通讯而言,基本的要素包括规定的数据格式、通讯协议以及接口描述等等。一般而言,XML或SQL标准提供的就是语法互操作性;数据交换至少要涉及到两个计算机系统参与方:即发送方计算机系统和接受方计算机系统。数据交换旨在为所有的参与方计算机系统,或者交换双方或其中之一带来有用的结果。不过,这些参与方计算机系统的所有用户事先已经就有关何谓有用结果的规定达成了一致意见。只有当参与方计算机系统之间所交换的数据能够得到对方正确处理和使用的情况下,才能称为实现了语义协同工作能力。Part2:有关软件体系结构的简单介绍软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。尽管软件体系架构已经被应用于IT领域很多年,但是对于其还尚未有一个比较完整完善的一个定义。其中一个比较完善的定义是:某个软件或计算机系统的软件构架是该系统的一个或多个结构,他们由软件元素、这些元素的外部可见属性以及这些元素之间的关系组成。对其解释如下首先,构架定义了软件元素,构架中包含了关于各元素应如何交互彼此相关的信息,也就是说,构架必须省略各元素与其交互无关的某些信息。因此,构架首先是对系统的抽象,该抽象去除了不影响他们如何使用、其他元素如何使用以及如何与其他元素关联或交互的细节。第二,该定义明确指出系统可能而且确实由多个结构组成,而且,其中任何一个结构并不能与构架等同。第三,该定义意味着具有软件的每个计算机系统都有一个软件构架,这是因为每个软件系统都可以看作是由若干元素及其相互联系构成的Part3:互操作性与软件体系架构的关系互操作性是软件体系架构不可或缺的一部分软件体系架构(SoftwareArchitecture)是指系统的一个或多个结构,它由软件元素、元素的外部可见属性以及它们之间的关系组成。而要维持软件元素之间的关系就必须保证系统的互操作性(Interoperability),至于互操作性就是指不同的计算机系统、网络、操作系统和应用程序一起工作并共享信息的能力。没有互操作性是不能维持整个软件架构的信息通讯或者数据交换,所以在整个软件体系架构中是不能分离互操作性的。互操作性才能保证抽象要评断一个架构的好坏,对其互操作性和抽象(Abstract)层次的评估尤为重要。一个好的软件体系架构是对系统的抽象,该抽象去除了不影响它们如何使用、其他元素如何使用以及如何与其他元素关联或交互的细节。而上述的一切都是互操作性所应该提供、保证的。通过对接口的定义,设计师在设计软件体系架构的时候就无需考虑实现的细节,而且负责不同模块的工程师也只要专注于自己的工作而在最后能将整个项目很好的结合在一起。Part4:有关互操作性与软件体系架构的例子互操作性的实例举个实例吧,使用C/S架构开发一个互联网产品,客户端通过网络请求向服务器获得数据。这时候双方的工程师和软件架构师首先要定义传输的协议规范和数据格式,如在Wiki上定义好接口,然后两边的工程师参照Wiki就可以分别开工码字了(这里就体现了高互操作性的好处)。再举个例子,使用Thrift接口可以服务器之间数据传输的效率(这里体现了高互操作性的另一个优势)。Thrift是一个软件框架,允许你定义一个简单的定义文件中的数据类型和服务接口,跨C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk和OCaml这么多种语言。而我们知道Java的序列化和反序列化的效率是很低的,如果通讯的两个实体都使用自己编写的格式统一的thrift文件,则可以更少数据量的传输,从而大大地提高了服务器之间信息交换的能力。Part5:结语经过我们小组全体成员学习,我们发现对于任何一个软件来说,互操作性都是其必须具备的重要内容;对于一个好的软件体系来说,拥有一个良好的互操作性更是重中之重。总而言之,要想做出一个令人满意的软件,可能需要