专栏首页cwl_Java软考分类精讲-软件架构设计(一)

软考分类精讲-软件架构设计(一)

软件架构的概念
  • 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相 互作用、指导元素集成的模式以及这些模式的约束组成。
  • 软件架构的是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织 结构,制约着系统的质量属性
  • 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础 l 软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件质量。
  • 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。
软件架构的发展史
软件架构建模
  • 结构模型:以架构的构件、连接件和其他概念来刻画结构
  • 框架模型:不太侧重描述结构的细节而更侧重于整体的结构
  • 动态模型:系统的“大颗粒”的行为性质
  • 过程模型:构建系统的步骤和过程
  • 功能模型:由一组功能构件按层次组成,下层向上层提供服务
架构描述语言

体系结构描述语言(architecture description language, 简称ADL),支持构件、连接件及其配置的描述语言就 是如今所说的体系结构描述语言。ADL对连接子的重视 成为区分ADL和其他建模语言的重要特征之一。典型的 ADL包括Unicon,Rapide,Darwin,Wright,C2 SADL, Acme,xADL,XYZ/ADL,ABC/ADL等

软件架构风格
  • 架构设计的一个核心问题是能否达到架构级的软件复用
  • 架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各 个构件有效地组织成一个完整的系统
  • 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则
  • 数据流风格:批处理序列、管道—过滤器
  • 调用/返回风格:主程序/子程序、面向对象、层次结构
  • 独立构建风格:进程通信、事件驱动系统(隐式调用)
  • 虚拟机风格:解释器、基于规则的系统
  • 仓库风格:数据库系统、超文本系统黑板系统
软件架构风格-数据流风格
  • 批处理序列:构件为一系列固定顺序的计算单元,构件之间只通过数 据传递交互,每个处理步骤是一个独立的程序,每一步 必须在其前一步结束后才能开始,数据必须是完整的, 以整体的方式传递。
  • 管道—过滤器:每个构件都有一组输入和输出,构件读输入的数据流经 过内部处理,然后产生输出数据流,这个过程通常是通过 对输入数据流的变换或计算来完成的,包括通过计算和增 加信息以丰富数据、通过浓缩和删除以精简数据,通过 改变记录方式以转化数据和递增地转化数据等.这里的构 件称为过滤器,连接件就是数据传输的管道,将—个过滤 器的输出传到另一个过滤器的输入。 早期翻译器就是采用的这种架构.要一步一步处理的, 均可考虑采用此架构风格
软件架构风格-调用/返回风格
  • 主程序/子程序:单线程控制,把问题划分为若干个处理步骤,构件即为主程序 和子程序,子程序通常可合成为模板。过程调用作为交互机制, 即充当连接件的角色。通用关系具有层次性,其语义逻辑表现 为主程序的正确性取决于它调用的子程序的正确性
  • 面向对象:构件是对象,对象是抽象数据类型的实例。在抽象数据类型中, 数据的表示和它们的相应操作被封装起来,对象的行为体现在 其接受和请求的动作。连接件即是对象间交互的方式,对象是 通过函数和过程的调用来交互的
  • 层次结构:构件组织成一个层次结构,连接件通过决定层间如何交互的协议 来定义。每层为上一层提供服务,使用下一层的服务,只能见到 与自己邻接的层。通过层次结构,可以将大的问题分解为若干个 渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层, 最多影响其相邻的两层(通常只能影响上层)
软件架构风格—调用/返回风格(层次结构)
  • 优点:
    • 1、这种风格支持基于可增加抽象层的设计,允许 将一个复杂问题分解成一个增量步骤序列实现。
    • 2、不同的层次处于不同的抽象级别: 越靠近底层,抽象级别越高; 越靠近顶层,抽象级别越低;
    • 3、由于每一层最多只影响两层,同时只要给相邻 层提供相同的接口,允许每层用不同的方法实现, 同样为软件复用提供了强大的支持
  • 缺点:
    • 1、并不是每个系统都可以很容易的划分为分层的模式。
    • 2、很难找到一个合适的、正确的层次抽象方法
软件架构风格—独立构件风格
  • 进程通信:构件是独立的过程,连接件是消息传递,构件通常是命 名过程,消息传递的方式可以是点对点、异步或同步方 式,以及远程过程(方法)调用等
  • 事件驱动系统 (隐式调用):构件不直接调用一个过程,而是触发或广播一个或多个 事件。构件中的过程在一个或多个事件中注册,当某个事 件被触发时,系统自动调用在这个事件中注册的所有过程。 一个事件的触发就导致了另一个模块中的过程调用。这 种风格中的构件是匿名的过程,它们之间交互的连接件往 往是以过程之间的隐式调用来实现的。主要优点是为软 件复用提供了强大的支持,为构件的维护和演化带来了方 便;其缺点是构件放弃对系统计算的控制
软件架构风格—虚拟机风格
  • 解释器:解释器通常包括一个完成解释工作的解释引擎,一个包 含将被解释的代码的存储区,一个记录解释引擎当前工 作状态的数据结构,以及一个记录源代码被解释执行的 进度的数据结构,具有解释器风格的软件中含有一个虚 拟机,可以仿真硬件的执行过程和一些关键应用,其缺 点是执行效率比较低
  • 基于规则的系统: 基于规则的系统包括规则集、规则解释器、规则/数据 选择器和工作内存,一般用在人工智能领域和DSS中
软件架构风格—仓库风格(以数据为中心的风格)
  • 数据库系统:构件主要有两大类,一类是中央共享数据源,保存当前系统的 数据状态;另一类是多个独立处理单元,处理单元对数据元素 进行操作
  • 黑板系统:包括知识源、黑板和控制三部分。知识源包括若干独立计算的不 同单元,提供解决向题的知识。知识源响应黑板的变化,也只修改 黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是 知识源相互作用的唯一媒介;知识源响应是通过黑板状态的变化 来控制的。黑板系统通常应用在于解决问题设有确定性算法的软 件中(信号处理、问题规划和编译器优化等)
  • 超文本系统:构件以网状链接方式相互连接,用户可以在构件之间进行按照人 类的联想思维方式任意跳转到相关构件,超文本是一种非线性的 网状信息组织方法,它以结点为基本单位,链作为结点之间的联 想式关联。超文本系统通常应用在互联网区域

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端基础-HTML标签的通用属性

    id属性是标签的唯一标识,一个页面中可以有很多id属性,但是每个标签的id属性的值必须是唯一的

    cwl_java
  • 快速学习Maven-搭建私服环境Nexus

    公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的 maven 远程仓库,每个员工的电脑上安装 maven 软件并且连接私服服务器...

    cwl_java
  • 软考分类精讲-软件架构设计(四)

    cwl_java
  • HR SaaS市场迎来震荡年 下一个被出局的是谁?

    如果要问2017年SaaS市场最为显著的特性,除了营收,资本遇冷,客户成功,AI和BI等新技术涌入外,还有一个显著的特征就是整合并购将引发行业震动,而在中国Sa...

    人称T客
  • 盗火者陈明烨:用极客精神拓展机器感知的边界 | 镁客请讲

    镁客网
  • Xcode 9 制作 iOS 通用 Framework创建 Framework模拟器和真机通用 FrameworkBundle使用 Framework

    iOSDevLog
  • Python处理Excel文档之openpyxl

    AlicFeng
  • laravel表单构建

    以构建用户注册表单resources/views/users/create.blade.php为例:

    章鱼喵
  • Angular 初始化显示出大括号语法的解决方法(ngCloak)

    在做angular的SPA开发时,我们经常会遇见在如Chrome这类能够快速解析的浏览器上出现表达式({{ express }} ),或者是模块(div)的闪烁...

    javascript.shop
  • urllib异常处理

    urllib的error模块定义了由 request模块产生的异常。如果出现了问题,request 模块便会抛出error模块中定义的异常。

    用户2398817

扫码关注云+社区

领取腾讯云代金券