翔子 发表于 2012-11-10 02:58:50

软件架构风格[转]

软件架构风格整理(1 数据流风格)

1         数据流风格
1.1      批处理序列
批处理风格的每一步处理都是独立的.并且每一步是顺序执行的.只有当前一步处理完后.后一步处理才能开始.数据传送在步与步之间作为一个整体.(组件为一系列固定顺序的计算单元,组件间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递)
批处理的典型应用:
l经典数据处理;
l程序开发;
lWindows下的BAT程序就是这种应用的典型实例。
批处理风格与管道过滤器风格比较:
l共同点:把任务分成一系列固定顺序的计算单元(组件).组件间只通过数据传递交互。
l区别:批处理是全部的、高潜伏性的,输入时可随机存取,无合作性、无交互性.而管道过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈、可交互。

.
1.2      管道/过滤器
每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,包括通过计算和增加信息丰富数据,通过浓缩和删除精炼数据,通过改变记录方式转化数据,递增地转化数据等。在输入被完全消费之前,输出便产生了。这里构件被称为过滤器,连接件就是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入
l优点:
1)       使得软构件具有良好的隐蔽性和高内聚.低耦合的特点
允许设计者将一个系统的整体输入/输出行为理解为各个独立过滤器行为的简单合成
2)       支持软件重用。只要提供适合在两个过滤器之间传送的数据.任何两个过滤器都可被连接起来;
3)       系统维护和性能增强简单:新的过滤器可以添加到现有系统中,或者利用改进的过滤器替换老的过滤器;
4)       支持并行执行:每个过滤器是作为一个单独的任务完成.因此可与其他任务并行
5)       方便系统分析:例如,吞吐量、死锁等
l缺点:
1)       通过长的管道时会导致延迟的增加
2)       通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据.但它们是独立的.所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。
3)       不适合处理交互的应用。当需要增量地显示改变时.这个问题尤为严重。
4)       因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作.这样就导致了系统性能下降.并增加了编写过滤器的复杂性。
5)       在维护或响应两个分离但相关的数据流时,利用管道/过滤器方式不易。

典型的管道/过滤器风格有:UNIX下的Shell编程。UNIX既提供一种符号以连接各组成部分(进程),又提供某种进程运行时机制以实现管道。另一个例子:传统的编译器。传统的编译器中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。


软件架构风格整理(2 调用/返回) .



1         调用/返回
1.1      主程序/子程序
单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性,取决于它调用的子程序的正确性。
这种程序风格也比较多,比如早期的结构化程序.
1.2      面向对象风格
数据抽象和面向对象架构风格。这种风格的构件是对象。对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来。对象的行为体现在其接受和请求的动作。连接件即对象间交互的方式,对象是通过函数和过程的调用来交互的。对象具有封装性,一个对象的改变不会影响其他对象。对象拥有状态和操作,也有责任维护状态。这种结构风格中包含有封装、交互、多态、集成和重用等特征.
这种风格中,数据表示和与之相连的原语操作被封装在一个抽象数据类型或对象中。这种风格的部件是对象,也可称为抽象数据类型的实例。
这种风格的两个重要特征为:
1)   对象负责维护其表示的完整性;
2)   对象的表示对其它对象而言是隐蔽的。因为一个对象对它的客户隐藏了自己的表示,所以这些对象可以不影响它的客户就能改变其实现方法
l优点:
1)       因为对象对其他对象隐藏它的表示.所以可以改变一个对象的表示.而不影响其他的对象。
2)       设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合;
l缺点
1)       为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。
2)       只要一个对象的标识改变了.就必须修改所有其他明确调用它的对象,并消除由此带来的一些副作用
3)       不同对象的操作关联性弱
面向对象是现在编程最流行的方式,基本上是无所不对象.但这也不能说明其它风格就不好,因为现在很难找到一个程序只包含有一种架构风格.
1.3      层次结构
层次结构构架风格。层次系统组织成一个层次结构。构件在一些层实现了虚拟机。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻导间交互的约束。这个风格的特点是每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。大的问题分解为若干个渐进的小问题,逐步解决,隐藏了很多复杂度。修改一层,最多影响两层,而通常只能影响上层。上层必须知道下层的身份,不能调整层次之间的顺序。
优点:
1)       支持基于抽象程度递增的系统设计,使得设计者可以把一个复杂系统按递增的步骤分解开。
2)       支持功能扩展,每一层至多和相邻的层次交互。
3)       支持复用,只要服务接口定义不变,不同的实现可以交换使用。
缺点
1)         适应面不宽
2)         并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;
很难找到一个合适的、正确的层次抽象方法。




软件架构风格整理(3 独立构件风格 4 虚拟机风格)


1         独立构件风格
1.1      进程通讯
进程通信架构风格。构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步和同步方式及远过程调用等。
1.2      事件系统
事件驱动架构风格。构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中过程的调用。
这种风格中的构件是非命名的过程,它们之间交互的连接件往往是以过程之间的隐式调用(Implicit Invocation)来实现的。
主要优点:
1)       为软件重用提供了强大的支持。当需要将一个构件加入现存系统中时,只要将它注册到系统的事件中;(复用,扩展)
2)       为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其他构件的接口;
3)       易于系统升级
主要缺点:
1)       件放弃了对系统计算的控制。一个构件触发一个事件时.不能确定其他构件是否会晌应它。而且即使它知道事件注册了哪些构件的构成.它也不能保证这些过程被调用的顺序。
2)       数据交换的问题,有时数据可被一个事件传递,但另一些情况下.基于事件的系统必须依靠一个共享的仓库进行交互。在这些情况下.全局性能和资源管理便成了问题。
3)       既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题

"
2         虚拟机风格
2.1      解释器
一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。
具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用;解释器通常被用来建立一种虚拟机以祢合程序语义与硬件语义之间的差异
其缺点是执行效率较低

         典型的例子是专家系统
               
软件架构风格整理(5 仓库风格 6复制风格) .



1         仓库风格
在仓库风格中。有两种不同的构件:中央数据结构说明当前状态.独立构件在中央数据存贮上执行.仓库与外构件问的相互作用在系统中会有大的变化
若输入流中某类时间触发进程执行的选择.则仓库是一传统型数据库;另一方面.若中央数据结构的当前状态触发进程执行的选择.则仓库是一黑板系统
1.1      数据库系统
数据库架构是库风格最常见的形式。构件主要有两大类,一个是中央共享数据源,保存当前系统的数据状态;另一个是多个独立处理元素,处理元素对数据元素进行操作。
1.2      超文本系统
早期的静态网页是比较典型的超文本系统.
1.3      黑板系统
黑板架构包括知识源、黑板和控制3个部分。知识源包括若干独立计算的不同单元,提供解决问题的知识,知识源响应黑板上的变化,也只修改黑板。黑板是一个全局数据库,包含解域的全部状态,是知识源互相作用的唯一媒介。知识源响应是通过黑板状态的变化来控制。
黑板通常应用在对于解决问题没有确定性算法的系统中,例如信号处理、问题规划及编译器优化等软件系统的设计中。
软件专家模块,称作知识源[knowledge sources (KSs)]。就像在黑板上工作的人类专家那样,每个知识源提供应用程序所需要的具体的专家知识。
黑板[blackboard],一个共享知识库,包含了问题、部分解决方案、建议和已经贡献的信息。黑板可以被认为是一个动态的“库”,里面是其他知识源最近“发表”的对当前问题的贡献。
控制机制[control shell],控制系统中问题解决的活动流。正如狂热的人类专家得有一个主持人来防止他们乱抢粉笔,知识源(KSs)也需要一种机制来保证以一种最有效和连贯的方式来工作。控制机制(control shell)正是提供这一功能。

应用
1)         数据库
2)         信号处理
3)         松耦合代理数据共享存取
4)         带有全局数据库的批处理系统
5)         编程开发环境
6)         编译器等
2         复制风格
2.1      复制仓库(Replicated Repository,RR)
基于复制仓库风格的系统通过利用多个进程提供相同的服务,来改善数据的可访问
性(accessibility of data)和服务的可伸缩性(scalability of service)。这些分散的服务器交互为客户端制造出只有一个集中的服务的“幻觉”。主要的例子包括诸如XMS.这样的分布式文件系统和CVS这样的远程版本控制系统。
RR风格的主要优点在于改善了用户可觉察的性能,实现途径是通过减少处理正常请求
的延迟,并在主服务器故障或有意的线下漫游(intentional roaming off the network)时支持离线操作(disconnected operation)。在这里,简单性是不确定的,因为RR风格允许不关心网络(network-unaware)的组件能够透明地操作本地的复制数据,这补偿了复制所导致的复杂性。维护一致性是RR风格的主要关注点。
2.2      缓存(Cache)
复制仓库风格的一种变体是缓存风格:复制个别请求的结果,以便可以被后面的请求重
用。这种形式的复制最常出现在潜在的数据集远远超出单个客户端的容量的情况下,例如在
WWW中,或者在不必完全访问仓库的地方。可以执行延迟复制(lazy replication):当复制一个请求的尚未缓存的响应数据时,根据引用的局部性(locality of reference)和兴趣的趋同性(commonality of interest),将有用的数据项复制到缓存中以备稍后重用。还可以执行执行主动复制(active replication):基于预测到的请求来预先获取可缓存的数据项。
与复制仓库风格相比,缓存风格对于用户可觉察性能的改善较少,因为没有命中缓存的请求会更多,只有近期被访问过的数据才能被离线操作使用。另一方面,缓存风格实现起来
要容易得多,不需要复制仓库风格那么多的处理和存储,而且由于只有当数据被请求时才会
传输数据,因此缓存风格更加高效。缓存风格当与客户-无状态-服务器风格(client- stateless sserver style)结合后就成为了一种基于网络的架构风格


软件架构风格整理(6 CS,BS等)


1.1      CS结构
C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术, C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。
C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。
l服务器
(1)数据库安全性的要求;
(2)数据库访问并发性的控制;
(3)数据库前端的客户应用程序的全局数据完整性规则;
(4)数据库的备份与恢复。
l客户应用程序
(1)提供用户与数据库交互的界面;
(2)向数据库服务器提交用户请求并接收来自数据库服务器的信息;
(3)利用客户应用程序对存在于客户端的数据执行应用逻辑要求。
1)         优点
üC/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
ü系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
ü在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
2)         缺点
ü开发成本较高
ü客户端程序设计复杂
ü信息内容和形式单一
ü用户界面风格不一,使用繁杂,不利于推广使用
ü软件移植困难
ü软件维护和升级困难
ü新技术不能轻易应用
1.2      CS三层架构
c/s软件体系结构是20世纪90年代成熟起来的技术,它将应用一分为二,服务器(后台)负责数据管理.客户机(前台)完成与用户的交互任务。 传统的二层c/s结构存在以下几个局限:
1.二层c/s结构是 单一服务器且以局域网为中心的.所以难以扩展至大型企业广域网或Internet;
2.软硬件的组合及集成能力有限;
3.客户机的负荷太重.难以管理大量的客户机.系统的性能容易变坏;
4.数据 安全性不好。
因为二层C/S有这么多缺点.三层C/S结构应运而生。三层C/S结构是将应用功能分成表示层、功能层和数据层三个部分.
图 2 三层C/S结构示意图
  表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户接口,操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他两层。检查的内容也只限于数据的形式和取值的范围,不包括有关业务本身的处理逻辑。
  功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,在制作订购合同时要计算合同金额,按照定好的格式配置数据、打印订购合同,而处理所需的数据则要从表示层或数据层取得。表示层和功能层之间的数据交往要尽可能简洁。例如,用户检索数据时,要设法将有关检索要求的信息一次性地传送给功能层,而由功能层处理过的检索结果数据也一次性地传送给表示层。
  通常,在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能。功能层的程序多半是用可视化编程工具开发的,也有使用COBOL和C语言的。
  数据层就是数据库管理系统,负责管理对数据库数据的读写。数据库管理系统必须能迅速执行大量数据的更新和检索。因此,一般从功能层传送到数据层的要求大都使用SQL语言。
  三层C/S的解决方案是:对这三层进行明确分割,并在逻辑上使其独立。原来的数据层作为数据库管理系统已经独立出来,所以,关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。
  一般情况是只将表示层配置在客户机中,如果连功能层也放在客户机中,与二层C/S结构相比,其程序的可维护性要好得多,但是其他问题并未得到解决。客户机的负荷太重,其业务处理所需的数据要从服务器传给客户机,所以系统的性能容易变坏。
  如果将功能层和数据层分别放在不同的服务器中,则服务器和服务器之间也要进行数据传送。但是,由于在这种形态中三层是分别放在各自不同的硬件系统上的,所以灵活性很高,能够适应客户机数目的增加和处理负荷的变动。例如,在追加新业务处理时,可以相应增加装载功能层的服务器。因此,系统规模越大这种形态的优点就越显著。
n与传统的二层结构相比,三层C/S结构具有以下优点:  
1)      允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性。
2)      允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。例如,最初用一台Unix工作站作为服务器,将数据层和功能层都配置在这台服务器上。随着业务的发展,用户数和数据量逐渐增加,这时,就可以将Unix工作站作为功能层的专用服务器,另外追加一台专用于数据层的服务器。若业务进一步扩大,用户数进一步增加,则可以继续增加功能层的服务器数目,用以分割数据库。清晰、合理地分割三层结构并使其独立,可以使系统构成的变更非常简单。因此,被分成三层的应用基本上不需要修正。  
3)      三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。使之能并行地而且是高效地进行开发,达到较高的性能价格比;对每一层的处理逻辑的开发和维护也会更容易些。
4)      允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,这就为严格的安全管理奠定了坚实的基础;
5)      整个系统的管理层次也更加合理和可控制。
n要注意的问题
1)         三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。
2)         设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。
1.3      浏览器/服务器风格
浏览器/服务器(B/S)风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器。◎ B/S体系结构主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上来说,B/S结构是一种全新的软件体系结构。
优点
1)         基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
2)         B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
缺点
1)         B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。
2)         B/S体系结构的系统扩展能力差,安全性难以控制。
3)   采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。
4)         B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。

1.4      C/S与B/S混合软件体系结构
  B/S与C/S混合软件体系结构是一种典型的异构体系结构。
  B/S软件体系结构,即Browser/Server (浏览器/服务器)结构,是随着Internet技术的兴起,对C/S体系结构的一种变化或者改进的结构。在B/S体系结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。
  B/S体系结构主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件体系结构。基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了"零客户端"的功能,很容易在运行时自动升级。B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
  但是,与C/S体系结构相比,B/S体系结构也有许多不足之处,例如:
  (1)B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。
  (2)B/S体系结构的系统扩展能力差,安全性难以控制。
  (3)采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。
  (4)B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。
  从上面的对比分析中,我们可以看出,传统的C/S体系结构并非一无是处,而新兴的B/S体系结构也并非十全十美。由于C/S体系结构根深蒂固,技术成熟,原来的很多软件系统都是建立在C/S体系结构基础上的,因此,B/S体系结构要想在软件开发中起主导作用,要走的路还很长。我们认为,C/S体系结构与B/S体系结构还将长期共存。
  C/S与B/S混合软件体系结构的优点是外部用户不直接访问数据库服务器,能保证企业数据库的相对安全。企业内部用户的交互性较强,数据查询和修改的响应速度较快。
  C/S与B/S混合软件体系结构的缺点是企业外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强。
S:其实BS和CS(三层)的融合是必然之路,这是各自风格的优缺点和系统实际需要所决定的.比如在ERP系统中,贴近生产,需要操作效率(例如 MRP)和对本地控制要求比较高的可以采用CS三层,但对于一些行政OA性质的,一些对外接口则可以采用BS的(例如电子商务部分).


软件架构风格整理(7 DSSA,HA,Agent,正交等) .


1.1 面向Agent 软件体系结构
面向Agent 的基本思想是从现实世界中人类、事物和环境出发,认为事物的属性特别是动态特性在很大程度上受到与其密切相关的人和环境的影响,强调认识、思维与客观事物及其所处环境之间的相互作用,将影响事物的主观与客观特征相结合,并抽象为系统中的Agent ,作为系统的基本构成单位,通过Agent 之间的合作实现系统的整体目标。
软件Agent 的定义及主要特性
什么是软件Agent ? 由于软件Agent 的研究者来自许多不同的领域,使得软件Agent 的含义也具有多重性。归纳起来,Agent 可定义为“一个能够根据它对其环境的感知,主动采取决策和行为的软件实体”
Agent 的关键属性主要有自主性、交互性、适应性、智能性、协同性、移动性等,自主性表示没有外部直接干涉能够根据自身经验进行行动;交互性表示与环境及其它Agent 交流;适应性表示在某种程度上能够响应其它Agent 或环境;智能性是由知识所形式化的状态与其它Agent 使用符号语言交互; 协同性是指Agent能在多Agent 系统环境中协同工作,以执行和完成一些相互受益的复杂任务;移动性表示能够将自己从一个环境转移到另一个环境。事实上,很难看到一个Agent 都具有上述特性,一般认为,前三项是必需的。
面向Agent 的软件体系结构
有学者明确提出将多Agent 系统作为一种新的软件体系结构风格进行研究。就这类系统的组件要素———Agent 来说,它是一种有别于以往任何系统的组件类型。尽管在系统实现中,Agent 或多或少地与对象、控制过程等传统的体系结构要素联系起来,但是,就Agent 本身而言,其所具有的自主性、智能性、交互性、社会性等特性是对象所不具备的。另外,就多Agent 系统中的连接件来说,也有它独特的属性。一般来说,传统体系结构中,连接件是显式地将两个不同的组件联系起来的,如一对象直接调用另一对象的方法。但在多Agent 系统中,不同Agent 之间的联系在静态模型中几乎是不可见的。在系统运行之前,Agent A并不知道它所需要的服务是由Agent B 所提供。尽管Agent B 具有这种服务能力,也要依据自身当时的状态决定是否提供这种服务 。
Agent 组件是对系统处理的高度抽象,具有高度灵活和高度智能特色的软件实体,对系统需求是不敏感的,其能力可以通过修改其义务与选择知识集合动态地变更,而自身形态保持不变。Agent 连接件是一种对复合型组件的连接,该连接能够提供通信、协调、转换、接通等服务,可以通过参数在组件间传递所需的数据,通过服务请求、过程调用等方式来传递控制流,可以对传递的数据类型、格式进行转换或包装,以增强数据的互操作性,消除体系结构的不匹配,通过提供统一的接口增强组件生存环境的稳定性,可以通过交互控制连接关系的调整。
1.2      rocess Control(Loop)
1)背景
         当软件被用来操作一个物理系统时,软件与硬件之间可以粗略地表示为一个反馈循环,这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态。
         适合于嵌入式系统,涉及连续的动作与状态。
控制系统模型的构成
         计算型模型
                   过程定义:包括操作某些过程变量的机制
                   控制算法:用来决定如何操纵过程变量
         数据元素
                   过程变量:指定的输入、操纵变量等
                   设置点:受控变量的参考值
                   传感器:用于获得控制所需的过程变量值
         控制环模型
                   建立控制算法之间的关系,它收集关于过程
                   实际的和欲达到的状态,并调节过程变量,
                   以使实际状态向目标状态发展
1.3      Heterogeneous Architecture(异构)
◇为什么要使用异构结构
n不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。
n关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。
n实际工作中,我们总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。
n即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。
1.4      特定领域软件体系结构
◇定义
◎ Hayes-Roth对DSSA的定义如下:“DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合”。
◎ Tracz的定义为:“DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成”。
在某个特定的应用领域范围内进行软件体系结构的分析,更能容易地提取到可复用度较高的可复用构件和形成可复用系统构架,更能增大系统构件的复用粒度和提高系统构件复用的成功率。
◇DSSA特征 DSSA特征
1)一个严格定义的问题域和/或解决域;
2)具有普遍性,可以用于领域中某个特定应用的开发;
3)对整个领域的合适程度的抽象;
4)具备该领域固定的、典型的在开发过程中可重用的元素。
◎垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。
◎水平域:定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能,无法为系统提供完整的通用体系结构。
◇基本活动
◎领域分析◎领域设计◎领域实现
◇领域分析
领域知识资源技术文献分类方法已完成的软件项目标准用户评述功能模型专家建议领域分析领域语言当前及未来的需求领域实现人员领域设计人员领域分析人员领域专家
◇建立过程
◎定义领域范围:确定什么在感兴趣的领域中以及本过程到何时结束。
◎定义领域特定的元素:编译领域字典和领域术语的同义词词典。识别领域中应用间的共同性和差异性;
◎定义领域特定的设计和实现需求约束:描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论;
◎定义领域模型和体系结构:产生一般的体系结构,并说明构成它们的模块或构件的语法和语义;
◎产生、搜集可重用的产品单元:为DSSA增加构件使得它可以被用来产生问题域中的新应用。
◇ DSSA和体系结构风格的比较
◎ DSSA以问题域为出发点,体系结构风格以解决域为出发点。
◎ DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。
◎ DSSA通常选用一个或多个适合所研究领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。
◎体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。
◎ DSSA和体系结构风格是互为补充的两种技术。


1.5      正交软件体系结构
  正交软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。
  如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。从以上定义,我们可以看出,正交软件体系结构是一种以垂直线索构件族为基础的层次化结构,其基本思想是把应用系统的结构按功能的正交相关性,垂直分割为若干个线索(子系统),线索又分为几个层次,每个线索由多个具有不同层次功能和不同抽象级别的构件构成。各线索的相同层次的构件具有相同的抽象级别。因此,我们可以归纳正交软件体系结构的主要特征如下:
  (1)正交软件体系结构由完成不同功能的n(n > 1)个线索(子系统)组成;
  (2)系统具有m(m > 1)个不同抽象级别的层;
  (3)线索之间是相互独立的(正交的);
  (4)系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。
  对于大型的和复杂的软件系统,其子线索(一级子线索)还可以划分为更低一级的子线索(二级子线索),形成多级正交结构。正交软件体系结构的框架如图1所示。
  
  图1是一个三级线索、五层结构的正交软件体系结构框架图,在该图中,ABDFK组成了一条线索,ACEJK也是一条线索。因为B、C处于同一层次中,所以不允许进行互相调用;H、J处于同一层次中,也不允许进行互相调用。一般来讲,第五层是一个物理数据库连接构件或设备构件,供整个系统公用。
  在软件进化过程中,系统需求会不断发生变化。在正交软件体系结构中,因线索的正交性,每一个需求变动仅影响某一条线索,而不会涉及到其他线索。这样,就把软件需求的变动局部化了,产生的影响也被限制在一定范围内,因此实现容易。
  正交软件体系结构具有以下优点:
  (1)结构清晰,易于理解。正交软件体系结构的形式有利于理解。由于线索功能相互独立,不进行互相调用,结构简单、清晰,构件在结构图中的位置已经说明它所实现的是哪一级抽象,担负的是什么功能。
  (2)易修改,可维护性强。由于线索之间是相互独立的,所以对一个线索的修改不会影响到其他线索。因此,当软件需求发生变化时,可以将新需求分解为独立的子需求,然后以线索和其中的构件为主要对象分别对各个子需求进行处理,这样软件修改就很容易实现。系统功能的增加或减少,只需相应的增删线索构件族,而不影响整个正交体系结构,因此能方便地实现结构调整。
  (3)可移植性强,重用粒度大。因为正交结构可以为一个领域内的所有应用程序所共享,这些软件有着相同或类似的层次和线索,可以实现体系结构级的重用。
页: [1]
查看完整版本: 软件架构风格[转]