软件架构设计

一、考点分布

  • 软件架构的概念(※※※)
  • 基于架构的软件开发(※※※※)
  • 软件架构风格(※※※※※)
  • 特定领域软件架构(※※※)
  • 软件质量属性(※※※※※)
  • 软件架构评估(※※※※)
  • 软件产品(※※※)
  • 构件与中间件技术(※※※)

二、软件架构的概念 

架构的本质

  • 软件架构为软件系统提供了一个结构、行为和属性的高级抽象
  • 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇和一组约束

架构的作用

  • 软件架构是项目干系人进行交流的手段
  • 软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量
  • 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础

软件架构=软件体系结构

架构设计就是需求分配,即将满足需求的职责分配到组件上。

三、架构发展历程

架构的4+1视图

 四、软件架构风格-ADL

        ADL是一种形式化语言,它底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。

ADL三个基本要素:

  • 构件:计算或数据存储单元
  • 连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则
  • 架构配置:描述体系结构的构件与连接件的连接图

 五、基于架构的软件开发方法-概念

ABSD方法是架构驱动,即强调由业务、质量和功能需求的组合驱动架构设计。

ABSD方法有三个基础:

  1. 功能的分解。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术
  2. 通过选择架构风格来实现质量和业务需求
  3. 软件模块的使用

视角与视图:从不同的视角来检查,所以会有不同的视图

用例用来捕获功能需求、特定场景用来捕获质量需求。

六、软件架构风格

架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。

6.1 数据流风格 

基本思想:把数据分步骤处理

优点:

  • 松耦合
  • 良好的重用性/可维护性
  • 可扩展性(标准接口适配)
  • 支持并行

缺点:

  • 交互性较差
  • 复杂性较高
  • 性能较差(每个过滤器都需要解析与合成数据)

典型实例

  • 传统编译器
  • 网络报文处理

数据流分格

  • 批处理序列:大量整体数据、无需用户交互
  • 管道-过滤器:流式数据、弱用户交互

6.2 调用/返回风格 

调用返回风格

  • 主程序/子程序:面向过程
  • 面向对象:对象的方法调用
  • 分层:层与层之间的方法调用

分层架构风格

分层风格的优缺点

优点:良好的重用性,只要接口不变可用在其他处;可维护性;可扩展性好,支持递增设计。

缺点:并不是每个系统都方便分层;很难找到一个合适的、正确的层次抽象方法;不同层次之间耦合度高的系统很难实现。

特点:各个层次的组件形成不同功能级别的虚拟机;多层相互协同工作,而且透明。

6.3 独立构件风格

保证构件相互独立:不直接交互

优点:松耦合;良好的重用性/可修改性/可扩展性

缺点:构件放弃可对系统计算的控制。一个构件触发一个事件时,不确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程调用的顺序;数据交互问题;由于过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。

特点:系统由若干个子系统构成且成为一个整体;系统有统一的目标;子系统有主从之分;每一子系统有自己的事件收集和处理机制。

6.4 虚拟机风格

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/357144.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

142. 环形链表 II(力扣LeetCode)

文章目录 142. 环形链表 II题目描述解题思路判断链表是否有环如果有环,如何找到这个环的入口 c代码 142. 环形链表 II 题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个…

vp9协议梳理-header头文件

vp9协议梳理-header头文件 本文是对vp9视频码流中header中包含的语法元素的一个分类整理,及其对具体的解码过程的影响的分析。 这里写目录标题 vp9协议梳理-header头文件1. Vp9码流中的header头文件2. profile3. show_existing_frame, frame_to_show_map_idx4. fr…

【国科大】应用矩阵理论 / 矩阵论习题与解答

【国科大】应用矩阵矩阵理论 / 矩阵论 习题与解答 包括“参考教材”,“平时习题”以及“上机题”,之后还会更新历年试卷 下载地址:https://mbd.pub/o/bread/ZZqXmZhw

Matlab基础语法

基础语法 %% Matlab基本的小常识 % (1)在每一行的语句后面加上分号(一定要是英文的哦;中文的长这个样子;)表示不显示运行结果 a 3; a 5% (2)多行注释:选中要注释的若干语句,快捷键CtrlR % a 3; % a 5% (3)取消注释:选中要取消注释的语句,快捷键CtrlT % 我想要取…

idea创建golang项目

目录 1、设置环境 2、创建项目 3、设置项目配置 4、初始化项目 5、安装本项目的外部依赖包 6、运行项目 7、访问页面查看结果 1、设置环境 1 启用 Go Modules 功能go env -w GO111MODULEon 2. 阿里云go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct上述命…

Linux之系统安全与应用续章

一. PAM认证 1.2 初识PAM PAM是Linux系统可插拔认证模块。 1.2.1 PAM及其作用 1)PAM是一种高效且灵活便利的用户级别认证方式,也是当前Linux服务器普遍使用的认证方式。 2)PAM提供了对所有服务进行认证的中央机制,适用于本地…

matlab appdesigner系列-app程序打包成可执行exe程序

提供了3种打包方式: 1)Matlab App ,这种方式是生成Matlab内部使用的小程序,可添加到matlab app菜单栏中的常用程序中,也就是应用该程序之前,你必须安装了matlab; 2)Web app 3&…

跟着cherno手搓游戏引擎【14】封装opengl

本节先把代码粘上,后续会慢慢把注释都给加上,先看代码了解个大概(待更新) 前置: RendererAPI.h: #pragma once namespace YOTO {enum class RendererAPI {None 0,OpenGL1};class Renderer {public:inline static R…

Electron桌面应用实战:Element UI 导航栏橙色轮廓之谜与Bootstrap样式冲突解决方案

目录 引言 问题现象及排查过程 描述问题 深入探索 查明原因 解决方案与策略探讨 重写样式 禁用 Bootstrap 样式片段 深度定制 Element UI 组件 隔离样式作用域 结语 引言 在基于 Electron 开发桌面应用的过程中,我们可能时常遇到各种意想不到的问题…

存储技术架构演进

一. 演进过程 存储技术架构的演进主要是从集中式到分布式的一种呈现,集中式存储模式凭借其在稳定性和可靠性方面的优势成为许多业务数据库的数据存储首选,顾名思义,集中式存储主要体现在集中性,一套集中式管理的存储系统&#xff…

day35WEB 攻防-通用漏洞XSS 跨站反射存储DOMBeef-XSS

目录 一,XSS 跨站-原理&分类&手法&探针 1、原理 2、分类 3、危害 二,反射型XSS 1,案例演示 三,存储型XSS 1,案例演示 四,DOM 型XSS 五,XSS 利用环境-XSS 平台&Beef-XS…

【Linux】压缩脚本、报警脚本

一、压缩搅拌 要求: 写一个脚本,完成如下功能 传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一; (1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc…

美国将限制中国,使用Azure、AWS等云,训练AI大模型

1月29日,美国商务部在Federal Register(联邦公报)正式公布了,《采取额外措施应对与重大恶意网络行为相关的国家紧急状态》提案。 该提案明确要求美国IaaS(云服务)厂商在提供云服务时,要验证外国…

前端框架---Vue2学习教程(上)

从HTML到现在一路跟过来的小伙伴们,坚持固然不容易,但我相信大家已经学到了不少,那么我们开始马不停蹄的进入前端的框架吧,下面讲的是Vue2,大家继续加油鸭!!!! Vue2 Vu…

记录一次腾讯云服务器部署宝塔

一、查看是否安装 宝塔面板 bt 14 1 已安装会列出宝塔登录地址; 否则-bash: bt: command not found; 下载及安装命令(这条是目前最新的宝塔安装命令) yum install -y wget && wget -O install.sh http://download.bt.cn/…

关于在Tkinter + Pillow图片叠加中出现的问题

这段时间我一直在尝试对多图层图片进行一个叠加的操作,想用tkinter实现出来,先看错误 这里我其实已经选择了图片,但是发现是ValueError,我尝试断点检测但是也无动于衷,因为设置变量检测的时候发现变量并没有错误&…

粒子群算法求解港口泊位调度问题(MATLAB代码)

粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,它通过模拟鸟群或鱼群的行为来寻找最优解。在泊位调度问题中,目标是最小化所有船只在港时间的总和,而PSO算法可以帮助我们找到一…

腾讯云Linux(OpenCloudOS)安装tomcat9(9.0.85)

腾讯云Linux(OpenCloudOS)安装tomcat9 下载并上传 tomcat官网 https://tomcat.apache.org/download-90.cgi 下载完成后上传至自己想要放置的目录下 解压文件 输入tar -xzvf apache-tomcat-9.0.85.tar.gz解压文件,建议将解压后的文件重新命名为tomcat,方便后期进…

跟着pink老师前端入门教程-day13

品优购案例 一、品优购项目规划 1. 品优购项目整体介绍 项目名称:品优购 项目描述:品优购是一个电商网站,我们要完成 PC 端首页、列表页、注册页面的制作 2. 品优购项目学习目的 1. 电商类网站比较综合,里面需要大量的布…

com.alicp.jetcache.support.CacheEncodeException: Java Encode error 报错解决

目录 一、报错截图:二、报错原因三、解决方式 一、报错截图: Spring boot 整合 JetCache 使用Cached。报错如下: 二、报错原因 带有Cached注解的方法返回值对象没有实现序列化接口,如下图所示 三、解决方式 带有Cached注解的…