文档介绍:第3章
软件体系结构风格
刘伟(Sunny Liu)
weiliu_china@
教学内容
定义
管道和过滤器
数据抽象和面向对象组织
基于事件的隐式调用
分层系统
仓库系统
过程控制环路
C2风格
C/S风格
三层C/S风格
B/S风格
定义
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
Definition
An architectural style defines a family of systems in terms of a pattern of anization. More specifically, an architectural style defines a vocabulary ponents and connector types, and a set of constraints on how they can bined.
经典的体系结构风格
数据流风格: 批处理序列; 管道/过滤器。
调用/返回风格:主程序/子程序;面向对象风格;层次结构。
独立构件风格:进程通讯;事件系统。
虚拟机风格:解释器;基于规则的系统。
仓库风格:数据库系统;超文本系统;黑板系统。
过程控制环路
C/S风格
B/S风格
管道和过滤器
每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
过滤器风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。
不变量:
过滤器虽然可以增量式地处理数据,但是它们是独立的
管道和过滤器的正确输出不依赖其顺序
实例:
编译器,功能程序,并行程序
管道和过滤器
数据抽象和面向对象组织
数据的表示方法和它们的相应操作被封装在一个抽象数据类型或对象中
这种风格的构件是对象或者说是抽象数据类型的实例
对象通过函数和过程的调用来进行交互
数据抽象和面向对象组织
基于事件的隐式调用
构件不直接调用一个过程,而是触发或广播一个或多个事件
系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程。
这种风格的构件是一个模块,这些模块可以是一些过程,又可以是一些事件的集合。
不变量:事件的触发者并不知道哪些构件会被这些事件影响(观察者模式-Observer)
实例:数据库管理系统,用户界面