软件架构
软件架构(软件架构风格、常见架构模式)
(1)软件架构风格:
① 数据流风格:数据流风格的软件架构是一种最常见,结构最为简单的软件架构。这样的架构下,所有的数据按照流的形式在执行过程中前进,不存在结构的反复和重构,就像工厂中的汽车流水线一样,数据就像汽车零部件一样在流水线的各个节点上被加工,最终输出所需要的结果(一部完整的汽车)包括:批处理序列、管道/过滤器;
② 调用/返回风格:就是指在系统中采用了调用与返回机制。利用调用 - 返回实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性。包括:主程序/子程序、数据抽象、面向对象(即对象间相互调用)、层次结构(分层处理,上层以下层为基础));
③ 独立构件风格:强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。包括:进程通信、事件驱动;
④ 虚拟机风格:虚拟机风格的基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性。包括:解释器、基于规则的系统(即专家系统);
⑤ 仓库风格:在仓库( repository )风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有大的变化。包括:数据库系统、黑板系统、超文本系统。
(2)常见架构模式:
① 管道/过滤器模式,典型应用包括批处理系统。
② 面向对象模式,典型应用基于组件的软件开发。
③ 事件驱动模式,并不是直接调用操作,典型应用包括各种图形界面应用。
④ 进程通信模式:将不同的功能划分为独立进程,进程之间不直接通信,而是依靠消息传递如:点到点(Socket) 、 异步和同步方式及远过程调用(RPC)等。该设计的优点是相互之间解耦。
⑤ 分层模式,典型应用是分层通信协议,如ISO/OSI的七层网络模型。
⑥ 基于规则的专家系统:以规则表示知识的专家系统,即把人类的经验总结成一道道的指令输入给计算机,遇到什么样情况就怎么处理。包含五部分:知识库,数据库,推理引擎,解释工具和用户界面。
优点:a.自然知识的描述; b. 统一的结构(IF …THEN); c.知识与处理过程分离。
缺点:a. 规则间的关系不透明; b. 搜索策略的工作效率抵消,因为系统存在大量的穷举搜索;c.不能自学习,没有能力从经验中学习
⑦ 客户/服务器模式,为了解决C/S客户端问题,形成B/S模式;为了解决C/S服务器端问题,形成了三层C/S模式。