软件架构设计

一、考点分布

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

二、软件架构的概念 

架构的本质

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

架构的作用

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

软件架构=软件体系结构

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

三、架构发展历程

架构的4+1视图

 四、软件架构风格-ADL

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

ADL三个基本要素:

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

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

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

ABSD方法有三个基础:

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

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

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

六、软件架构风格

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

6.1 数据流风格 

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

优点:

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

缺点:

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

典型实例

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

数据流分格

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

6.2 调用/返回风格 

调用返回风格

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

分层架构风格

分层风格的优缺点

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

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

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

6.3 独立构件风格

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

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

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

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

6.4 虚拟机风格

​​​​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell中正则表达式和sed编译器

目录 一、正则表达式 1.元字符 2.表示次数 3.位置锚定 4.分组 5.扩展正则表达式 二、sed编译器 1.什么是sed编译器 2.sed编译器的工作流程 3.sed命令格式 一、正则表达式 1.元字符 ①.:在正则表达式中.表示任意单个字符。 [rootpc1 data]#grep -o r.…

第一节 分布式架构设计理论与Zookeeper环境搭建

1. 分布式架构设计理论 学习Zookeeper之前,我们需要掌握一些分布式系统基础知识:了解分布式系统的概念、原理。 配置管理 域名服务 分布式同步 发布订阅 1. 分布式架构介绍 1.1 什么是分布式 《分布式系统原理和范型》一书中是这样定义分布式系统的&#xff1a…

【ArcGIS微课1000例】0099:土地利用变化分析

本实验讲述在ArcGIS软件中基于两期土地利用数据,做土地利用变化分析。 文章目录 一、实验描述二、实验过程三、注意事项一、实验描述 对城市土地利用情况进行分析时,需要考虑不同时期土地利用图层在空间上的差异性,如农用地转建筑用地的空间变化。而该变化过程表现为各时期…

C#学习笔记_字符串常用方法

ToUpper()/ToLower() 作用:将字符串中字符转换为大写/小写字符,仅对字符有效,返回转换后的字符串。 使用:字符串变量名.ToUpper() / 字符串变量名.ToLower() 使用实例如下: using System; using System.Collection…

C#,贝尔数(Bell Number)的计算方法与源程序

1 埃里克坦普尔贝尔 贝尔数是组合数学中的一组整数数列,以埃里克坦普尔贝尔(Eric Temple Bell)命名, 埃里克坦普尔贝尔(生于1883年2月7日,苏格兰阿伯丁郡阿伯丁,于1960年12月21日在美国加利福尼…

2024年数学建模美赛C题(预测 Wordle)——思路、程序总结分享

1: 问题描述与要求 《纽约时报》要求您对本文件中的结果进行分析,以回答几个问题。 问题1:报告结果的数量每天都在变化。开发一个模型来解释这种变化,并使用您的模型为2023年3月1日报告的结果数量创建一个预测区间。这个词的任何属性是否会…

设计模式——模板方法模式(Template Method Pattern)

概述 模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。模板方法模式是结…

【开源】JAVA+Vue.js实现超市商品管理系统

目录 一、摘要1.1 简介1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 超市区域模块2.3 超市货架模块2.4 商品类型模块2.5 商品档案模块 三、系统设计3.1 用例图3.2 时序图3.3 类图3.4 E-R图 四、系统实现4.1 登录4.2 注册4.3 主页4.4 超市区域管理4.5 超市货架管理4.6 商品类型…

标准库中的string类(下)——“C++”

各位CSDN的uu们你们好呀,这段时间小雅兰的内容仍然是Cstring类的使用的内容,下面,让我们进入string类的世界吧!!! string类的常用接口说明 string - C Reference string类的常用接口说明 string类对象的修…

一文理清楚-Docker 容器如何工作

Docker 容器如何工作 集装箱什么是虚拟机?虚拟化如何运作?什么是容器?什么是 Docker?总结 五星上将麦克阿瑟曾经说过:在docker面前,虚拟机就是个弟弟 集装箱 《盒子:集装箱如何让世界变得更小&…

【BUG】golang gorm导入数据库报错 “unexpected type clause.Expr“

帮同事排查一个gorm导入数据报错的问题 事发现场 ck sql CREATE TABLE ods_api.t_sms_jg_msg_callback_dis (app_key String DEFAULT COMMENT 应用标识,callback_type Int32 DEFAULT 0 COMMENT 0送达,1回执,channel Int32 DEFAULT 0 COMMENT uid下发的渠道,mode…

Hive环境准备

1.配置Hive环境变量 [rootnode1 /]# vim /etc/profile在profile文件末尾添加以下内容(小技巧Go快速定位到最后) export HIVE_HOME/export/server/apache-hive-3.1.2-bin export PATH P A T H : PATH: PATH:HIVE_HOME/bin:$HIVE_HOME/sbin [rootnode1 /]# source /etc/profile2…

THM学习笔记——SQL注入

简介 SQL注入,通常称为SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经适当验证的用户输入与数据库通信时,攻击者有可能窃取、删除或更改私人和客户数据,还可以攻击 Web 应用程…

LeetCode每日一题 | 2808. 使循环数组所有元素相等的最少秒数

文章目录 题目描述问题分析程序代码 题目描述 原题链接 给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒,你可以对数组执行以下操作: 对于范围在[0, n - 1]内的每一个下标i,将nums[i]替换成nums[i],nums[(i - 1 n) % n]或…

自定义vue通用左侧菜单组件(未完善版本)

使用到的技术&#xff1a; vue3、pinia、view-ui-plus 实现的功能&#xff1a; 传入一个菜单数组数据&#xff0c;自动生成一个左侧菜单栏。菜单栏可以添加、删除、展开、重命名&#xff0c;拖动插入位置等。 效果预览&#xff1a; 代码&#xff1a; c-menu-wrap.vue <t…

docker swarm转移K8s 实践(-)

相关资料 Kubernetes初识_kubernetes怎么读-CSDN博客

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

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

鸿蒙OS之Rust开发

背景 Rust是一门静态强类型语言&#xff0c;具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。Rust官方也使用Cargo工具来专门为Rust代码创建工程和构建编译。 OpenHarmony为了集成C/C 代码和提升编译速度&#xff0c;使用了GN Ninja的编译构建系统。GN的构…

Open CASCADE学习|遍历曲面的边

目录 1、球面的Brep数据 2、C遍历球面的边 ​这里以球面为例来说明如何遍历曲面的边。 1、球面的Brep数据 使用Tcl命令在Draw Test Harness中生成的球面并到出Brep数据如下&#xff1a; pload ALL psphere asphere 1 dump asphere 结果如下&#xff1a; *********** D…

构建高效外卖系统:利用Spring Boot框架实现

在当今快节奏的生活中&#xff0c;外卖系统已经成为人们生活中不可或缺的一部分。为了构建一个高效、可靠的外卖系统&#xff0c;我们可以利用Spring Boot框架来实现。本文将介绍如何利用Spring Boot框架构建一个简单但功能完善的外卖系统&#xff0c;并提供相关的技术代码示例…