软件架构设计的一个核心问题是能否达到架构级的软件复用,也就是说,能否在不同的系统中使用同一个软件架构。软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式(Idiomatic Paradigm)。架构风格定义了一个系统“家族”,即一个架构定义、一个词汇表和一组约束。
Garlan和Shaw对通用软件架构风格进行了分类,他们将软件架构分为:
数据流风格。数据流风格包括批处理序列和管道/过滤器两种风格。
调用/返回风格。调用/返回风格包括主程序/子程序、数据抽象和面向对象,以及层次结构。
独立构件风格。独立构件风格包括进程通信和事件驱动的系统。
虚拟机风格。虚拟机风格包括解释器和基于规则的系统。
仓库风格。仓库风格包括数据库系统、黑板系统和超文本系统。