◆软件设计原则●开放-封闭原则(OCP)Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭。
通过扩展已有软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件有一定的适应性和灵活性。
已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性。
用面向对象的语言来讲,不允许更改的是系统的抽象层,而允许更改的是系统的实现层。
●里氏代换原则(LSP)Liskov Substitution Principle(里氏代换原则):子类型(subtype)必须能够替换它们的基类型。
反过来基类无法替换子类特征。
意思是子类具有基类的所有特性,也有着基类无法比拟、独特的属性信息。
●依赖倒置原则(DIP)依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。
依赖倒置原则要求客户端依赖于抽象耦合。
原则表述:抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。
使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是错误的,因为策略受到细节改变的影响。
依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
●接口隔离原则(ISP)接口隔离原则(Interface Segregation Principle)讲的是:使用多个专门的接口比使用单一的总接口总要好。
换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。
过于臃肿的接口是对接口的污染。
不应该强迫客户依赖于它们不用的方法。
实现方法是:使用委托分离接口;使用多重继承分离接口。
●合成/聚合复用原则(CARP)合成/聚合复用原则(Composite/Aggregate Reuse Principle或CARP)经常又叫做合成复用原则(Composite Reuse Principle或CRP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。
简而言之,要尽量使用合成/聚合,尽量不要使用继承。
●迪米特法则(LoD)迪米特法则(Law of Demeter或简写LoD)又叫最少知识原则(Least Knowledge Principle或简写为LKP),也就是说,一个对象应当对其它对象有尽可能少的了解。
每一个软件单位对其它的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
◆软件架构设计●SOA(Service-oriented architecture,面向服务架构)SOA被誉为下一代Web服务的基础架构,是面向服务的一种分布式软件架构。
它是一种设计模式和设计方法,并不是一种具体的技术。
SOA可以根据需求,通过网络对松散耦合的粗粒度,应用组件进行分布式部署、组合和使用。
服务层是SOA的基础,可以直接被调用,从而有效控制系统中与软件代理交互的人为依赖性。
其主要结构图如下所示:SOA架构比传统的三层结构多了一层Service,表示服务层,这就是现在流行的SOA四层结构,通过服务为应用程序提供实现方法。
SOA的基本特性如下:✓可从企业外部访问✓随时可以调用✓松散耦合✓可重用的服务✓服务接口设计管理✓标准化的服务接口✓支持各种消息模式✓精确定义的服务契约●C/S(Client/Server,客户机/服务器架构)(客户机/服务器) 架构通过将任务合理分配到Client端和Server 端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。
客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。
开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。
●B/S(Browser/Server ,浏览器/服务器架构)(浏览器/服务器) 架构是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户界面完全通过浏览器实现。
客户端基本上没有专门的应用程序,应用程序基本上都在服务器端。
由于客户端没有程序,应用程序的升级和维护都可以在服务器端完成,升级维护方便。
由于客户端使用浏览器,使得用户界面“丰富多彩”,但数据的打印输出等功能受到了限制。
为了克服这个缺点,一般把利用浏览器方式实现困难的功能,单独开发成可以发布的控件,在客户端利用程序调用来完成。
●F/S(File/Server ,文件/服务器架构)原始服务体系,不推荐使用。
◆中间件●DDSDDS概述消息中间件包括点到点、消息队列和发布/订阅三种工作模式。
点到点摸式具有很强的时间和空间耦合性,使得通信灵活性受到很大限制。
消息队列模式通过一个消息队列来传递消息,解决了通信双方时间和空间松耦合的问题,但不能实现消息消费者通信的异步,并且还存在服务器瓶颈和单点失效的问题,可靠性得不到保障。
发布/订阅模型中发布者和订阅者通过主题相关联,双方不必知道对方在何处。
也不必同时在线,实现了通信双方时间、空间和数据通信的多维松耦合。
DDS规范DDS(DataDistribution Service数据分发服务)是对象管理组织OMG的有关分布式实时系统中数据发布的一个较新的规范(2004年12月发布1.0版,2007年1月发布1.2版)。
DDS规范采用了发布/订阅体系结构,对实时性要求提供更好的支持。
DDS是以数据为中心的发布/订阅通信模型,针对强实时系统进行了优化,提供低延迟、高吞吐量、对实时性能的控制级别,从而使DDS能够广泛应用于航空、国防、分布仿真、工业自动化、分布控制、机器人、电及网络化的消费电器等多个领域。
DDS标准规范了实时分布式系统中数据发布、传递和接收的接口和行为,定义了以数据为中心的发布/订阅机制。
DDS规范使用UML语言描述服务,提供了一个与平台无关的数据模型(这个模型能够映射到各种具体的平台和编程语言),使得实时分布式系统中数据能够高效、可靠地发布,它主要应用在要求高性能、可预见性和对资源有效使用的关键任务领域。
DDS规范列举并正式定义了一整套全面的QoS策略,能利用QoS进行系统控制。
每一个DCPS实体都有自身的QoS策略,而且在每一对发布者和订阅者之间又都可以建立独立的QoS协定。
这使得DDS可以很好地配置和利用系统资源,协调可预言性与执行效率间的平衡,并能支持复杂多变的数据流需求。
DDS的通信模型应用程序在处理以数据为中心的分布式系统时,DDS标准中间件可以帮助用户使用更加简单的编程模型,不需要开发特定的事件/消息机制或手动创建封装的CORBA对象来获取远程数据。
应用程序可以使用一个简单的主题(Topic)名称来指定它想要读或写的数据,使用以数据为中心的API来直接读写数据。
DDS中以数据为中心的发布/订阅(DCPS)模型构建了一个共享的“全局数据空间”的概念,所有的数据对象都存在于此空间中,分布式节点通过简单的读、写操作便可以访问这些数据对象。
实际上,数据并非存在于所有计算机的地址空间中,它仅存在于那些对它感兴趣的应用程序的本地缓存中,而这一点正是发布/订阅模型的关键所在。
DDS的QoS策略较好的QoS控制策略可能是DDS标准最重要的特征。
QoS在DDS规范中得到了普遍而深入的使用,用于配置系统以及在每对发布者/订阅者之间建立起独立的QoS协定,而QoS协定能够提供实时系统所要求的性能、可预测性和资源可控性,并且能够保证发布/订阅模型的模块性、可量测性和鲁棒性等。
因此,DDS能够满足非常复杂和灵活的数据流要求。
DDS特点DDS是针对网络编程的一个公开标准是一套支持出版/订阅设计思想的应用程序接口(API)体现了以数据为中心进行结构设计的方法学专为高性能的实时系统设计可以大大降低用户成本用户可专注于自己的设计,不需要自己设计系统中所有的组件;降低集成成本,减少首次设计时间和后继测试等时间开销采用公开标准,减少了被供应商特定技术禁锢的风险HLA/RTI分布式仿真作为系统仿真的一个重要分支,经过SIMNET、DIS、ALSP等阶段,目前已发展到以高层体系结构HLA(High Level Architecture)为核心的一系列技术。
HLA的提出和发展集中体现了现代仿真应用的这些特点和发展规律。
HLA是将仿真功能与通用的支撑系统相分离的一种体系结构,具有开放性、灵活性和适应性。
它同时支持对不同仿真应用的重用,支持用户分布、协同地开发复杂仿真应用系统,并最终降低新应用系统的开发成本和时间。
HLA主要考虑在联邦成员的基础上如何进行联邦集成,即如何设计联邦成员间的交互以达到仿真的目的,它不考虑如何由对象构建成员,而是在假设已有成员的情况下考虑如何构建联邦,这也是把它称为“高级体系结构”的一个重要原因。
HLA的基本思想就是采用面向对象的方法来设计、开发和实现仿真系统的对象模型OM(Object Model),以获得仿真联邦的高层次的互操作和重用。
在HLA中,互操作定义为一个成员能向其他成员提供服务和接受其他成员的服务。
HLA本身并不能完全实现互操作,但它定义了实现联邦成员之间互操作的体系结构和机制。
除了方便成员间的互操作外,HLA还向联邦成员提供灵活的仿真框架。
作为一个开放的、支持面向对象的体系结构,HLA最显著的特点就是通过提供通用的、相对独立的支撑服务程序(RTI),将应用层同底层支撑环境分离,即将仿真功能实现、仿真运行管理和底层通信传输三者分开,使仿真工作者只要集中于仿真功能的开发,而不必再涉及有关网络通信和仿真管理等方面的实现细节。
同时,HLA可实现应用系统的即插即用,易于新的仿真系统的集成和管理,并能根据不同的用户需求和不同的应用目的,实现联邦的快速组合和重新配置,保证联邦范围内的互操作和重用。
TENA(试验与训练使能体系结构)TENA中间件是一个支持建立可互操作的实时分布式应用的分布对象计算中间件。
是美国国防部正在开发的试验与训练领域的公共体系结构。
美军联合任务环境试验能力(JMETC)是一种真实的、虚拟的和构造的(LVC)分布式试验能力, 它的开发是用来支持相关部门以论证在客户特定的联合任务环境(JME)中的网络完备关键性能参数(KPP)。
JMETC不仅可为部队提供分布式的试验能力和仿真,还可为工业提供试验资源。
它采用了能较好支持JMETC事件的试验与训练使能体系结构(TENA)。
TENA提供了促进靶场测控系统间互操作性所需要的体系结构和软件能力,在重要的实地演习和许多分布式的试验事件都得以使用,为JMETC提供了一种已被国防部接受的技术。
TENA中间件所要表达的实质问题是靶场信息处理系统相互之问的互操作问题。