调用/返回风格是指在系统中采用了调用与返回机制。利用调用-返回实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为若干子系统,以便降低复杂度,并且增加可修改性。程序从其执行起点开始执行该构件的代码,程序执行结束,将控制返回给程序调用构件。调用/返回体系结构风格主要包括主程序/子程序风格、面向对象风格、层次型风格以及客户端/服务器风格。
1.主程序/子程序风格
主程序/子程序风格一般采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性取决于它调用的子程序的正确性。
2.面向对象体系结构风格
抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型的实例(见图1)。
图1 面向对象体系结构风格
3.层次型体系结构风格
层次系统(见图2)组成一个层次结构,每一层为上层提供服务,并作为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。这样的系统中构件在层上实现了虚拟机。连接件由通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,这同样为软件重用提供了强大的支持。
图2 层次型体系结构风格
4.客户端/服务器体系结构风格
C/S(客户端/服务器)软件体系结构(见图3)是基于资源不对等,且为实现共享而提出的,在20世纪90年代逐渐成熟起来。两层C/S体系结构有3个主要组成部分:数据库服务器、客户应用程序和网络。服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务,称为“胖客户机,瘦服务器”。
图3 C/S体系结构风格
与两层C/S结构相比,三层C/S结构(见图4)增加了一个应用服务器。整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,故称为“瘦客户机”。应用功能分为表示层、功能层和数据层三层。表示层是应用的用户接口部分,通常使用图形用户界面;功能层是应用的主体,实现具体的业务处理逻辑;数据层是数据库管理系统。以上三层逻辑上独立。
图4 三层C/S体系结构风格