定义

架构设计的一个核心问题是能否达到架构级的软件复用
架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
架构风格定义了用于描述系统的术语表和一组指导构建系统的规则

分类

软件架构风格分类 (

数据流风格(批、管)∶批处理序列、管道-过滤器。
调用/返回风格(主、面、层):主程序/子程序、面向对象、层次结构。
独立构件风格(进、事)∶进程通信、事件驱动系统(隐式调用)。
虚拟机风格(解、基)∶解释器、基于规则的系统。
仓库风格(数、超、黑)︰数据库系统、超文本系统、黑板系统。

一、数据流风格 (批、管)

早期编译器就是采用的这种架构。要一步一步处理的,均可考虑采用此架构风格。

√批处理序列 (数据完整,整体传递)

构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在其前一步结束后才能开始,数据必须是完整的以整体的方式传递

√管道-过滤器 (数据可不完整,构件都有输入 输出)

每个构件都有一组输入输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常是通过对输入数据流的变换或计算来完成的,包括通过计算和增加信息以丰富数据、通过浓缩和删除以精简数据、通过改变记录方式以转化数据和递增地转化数据等。这里的构件称为过滤器连接件就是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。

二、调用/返回风格(层次结构) (主、面、层)

优点∶
1、这种风格支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现。
2、不同的层次处于不同的抽象级别:越靠近底层,抽象级别越高;越靠近顶层,抽象级别越低;
3、由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。
缺点∶
1、并不是每个系统都可以很容易地划分为分层的模式。
2、很难找到一个合适的、正确的层次抽象方法

√主程序/子程序

单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序,子程序通常可合成为模块。过程调用作为交互机制,即充当连接件的角色。调用关系具有层次性,其语义逻辑表现为主程序的正确性取决于它调用的子程序的正确性。

√面向对象

构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。连接件即是对象间交互的方式,对象是通过函数和过程的调用来交互的。

√层次结构

构件组织成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的两层(通常只能影响上层)。

三、独立构件风格 (进、事)

√进程通信

构件是独立的过程连接件是消息传递。构件通常是命名过程,消息传递的方式可以是点对点、异步或同步方式,以及远程过程(方法)调用等。

√事件驱动系统(隐式调用)

构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中的过程调用。这种风格中的构件是匿名的过程,它们之间交互的连接件往往是以过程之间的隐式调用来实现的。主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便;其缺点是构件放弃了对系统计算的控制

四、虚拟机风格 (解、基)

√解释器 (自定义需求的场景)

解释器通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,其缺点是执行效率比较低

√基于规则的系统

基于规则的系统包括规则集规则解释器规则/数据选择器和工作内存,一般用在人工智能领域DSS(决策支持系统)中。

五、仓库风格(数、超、黑) 以数据为中心的风格

仓库风格中构件分两种:一种是中央数据结构,保存系统的当前状态;另一种是独立构件,对中央数据存储进行操作。

现代集成编译环境一般采用这种架构风格。

√数据库系统

MySQL,Oracle等数据库。

√黑板系统 (语音识别)

包括知识源黑板控制三部分。知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介;知识源响应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题没有确定性算法的软件中(信号处理问题规划编译器优化等)。

√超文本系统

构件以网状链接方式相互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。超文本是一种非线性的网状信息组织方法,它以结点为基本单位,链作为结点之间的联想式关联。超文本系统通常应用在互联网领域。

六、其它风格

√闭环控制架构(过程控制) 用于工控领域

当软件被用来操作一个物理系统时,软件与硬件之间可以粗略地表示为一个反馈闭环。这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态。适合于嵌入式系统,涉及连续的动作与状态

√C2风格

是一种并行构件网络。

C2架构的基本规则︰
构件和连接件都有一个顶部和一个底部。
构件的顶部要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连。
一个连接件可以和任意数目的其它构件和连接件连接。
当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

软考高级软件架构风格定义以及分类相关推荐

  1. 【系统架构设计师】软考高级职称,一次通过,2017年下半年系统架构设计师考试论文真题(论软件架构风格)

    [系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 2017年下半年系统架构设计师考试论文真题(论软件架构风格) 论文:2017年第2题(论文题)论软件架构 ...

  2. 软考高级系统架构设计师:特定领域软件架构

    软考高级系统架构设计师:特定领域软件架构 一.4+1视图 二.软件系统在特定领域重用DSSA 三.特定领域软件架构创建步骤 1.定义领域范围 2.定义领域特定元素 3.定义领域特定的设计和实现需求约束 ...

  3. 【系统架构设计师】软考高级职称,一次通过,倾尽所有,看完这篇就够了,论软件架构设计的重要性、本篇论文“未通过考试”,供分析参考

    [系统架构设计师]软考高级职称,一次通过,倾尽所有,看完这篇就够了,学习方法和技巧这里全都有. 论软件架构设计的重要性.本篇论文未通过考试(不合格),供分析参考. 目录 摘要 正文 结尾 摘要 201 ...

  4. 软考高级信息系统项目管理师,高项读书系列笔记——1招标分类

    软考高级信息系统项目管理师,高项读书系列笔记--1招标分类 (一)公开招标     是指采购人以招标公告的方式广泛邀请不特定的供应商(或承包商.下同)参加投标. 因特殊情况需要采用公开招标以外的采购方 ...

  5. 软考高级系统架构设计师系列论文一:论软件架构的选择与应用

    软考高级系统架构设计师系列论文一:论软件架构的选择与应用 一.摘要 二.正文 1.项目概述 2.架构设计 三.总结 一.摘要 公司承担了某省社会保险管理信息系统的开发工作,我在该项目中担任系统架构设计 ...

  6. 软考高级-系统分析师-案例分析-系统设计

    系分-案例分析-系统设计 结构化设计SD 内聚(高内聚低耦合) 耦合 业务流程建模 IDEF(建模仿真) 面向对象的设计OOD 设计原则 设计模式分类 人机界面设计 架构设计 Zachman 架构框架 ...

  7. 【软考 - 高级系统架构设计师】自学备考计划 - 报考流程 - 附备考资料

    [软考 - 高级系统架构设计师]自学备考计划 - 报考流程 - 附备考资料 一.考试介绍及安排 二.备考资料 三.备考计划 四.考点整理 今天2022年8月21号,刚刚上午参加完<CSDN竞赛& ...

  8. 软考高级系统架构设计师备考攻略

    目录 前言 一.报名缴费 二.考试时间 三.软考历史 四.软考体系 五.架构师证书有什么用 六.复习策略 6.1 总纲领 6.2 综合知识点分布 6.3 案例分析 6.4 论文写作 前言 对于软考是什 ...

  9. 软考高级-系统架构师-案例分析-案例题1

    软考高级-系统架构师-案例分析题1必做部分主要考点就是质量属性,架构风格,软件架构评估,非功能需求.除了2013年(ESB总线),2014年(设计模式和MVC)没有考以外基本上都涉及到了,下面是我总结 ...

最新文章

  1. Linux inode 之我见
  2. directshow c++ 设置 曝光_DirectShow 接口访问相机参数设置方法
  3. 嵌入式linux笔记,嵌入式linux学习笔记(一)----嵌入式操作系统
  4. 2018.09.24-2018.09.30
  5. jquery中的attr()和prop()
  6. C++静态全局变量问题
  7. 填坑-十万个为什么?(22)
  8. mysql查询数据库desc_数据库查询DESC
  9. python基本随机生成函数_Python学习笔记(三):随机生成函数方法
  10. rx 异步执行耗时_使用rx-java的异步抽象
  11. 初中生学计算机网络应用怎么样,初中生读计算机网络技术专业怎么样?小编解答...
  12. ES6学习(七)—Set 和 Map 数据结构
  13. vs2008+sqlserver2008 同一台服务器webconfig 数据连接串的配置要点
  14. 如何设计实时数据平台(技术篇)
  15. HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)
  16. Message Queue
  17. 计算机网络与Internet发展历史
  18. 【神经网络架构】Pyramid Convolution(金字塔卷积模块)论文笔记
  19. 用工作流思想实现简单的校园请假系统
  20. 计算机视觉论文doc,计算机视觉论文.doc

热门文章

  1. error while loading shared libraries: libopencv_imgcodecs.so.405: cannot open shared object file
  2. 2012 nba playoff 观感
  3. Laya魅族手动关闭banner广告之后打不开
  4. 关于最近GD32F103替代STM32F103方案个人记录
  5. 计算机动画主要学什么,动画专业主要学什么?
  6. C++的time_t 和 struct tm 类型【s
  7. 计算机 usb 检测,怎样检测计算机USB接口类型
  8. 电路板上的插头怎么拔下来_如何在电路板上完美的取下多针脚电子元件?求高手指教方法技巧?...
  9. win10硬盘锁怎么解除_大师教你解决win10系统取消移动硬盘写保护的图文办法
  10. 灰色关联度矩阵——MATLAB在数学建模中的应用