软件工程与计算总结(九)软件体系结构基础

目录

​编辑

一.体系结构的发展

二.理解体系结构

1.定义

2.区分体系结构的抽象与实现

3.部件

4.连接件

5.配置

三.体系结构风格初步

1.主程序/子程序

2.面向对象式

3.分层

4.MVC


一.体系结构的发展

小规模编程的重点在于模块内部的程序结构非常依赖于程序设计语言提供的编程机制,而大规模编程的重点在于将众多的模块组织起来实现需求,需要特别关注模块之间的关系——这些关系应该是不依赖于编程机制的另一项完全不同的技术

20世纪90年代,正式将软件体系结构作为重要的研究主题。

二.理解体系结构

1.定义

软件体系结构=部件+连接件+配置

  • 部件:是软件体系结构的基本组成单位之一,承载系统的主要功能,包括处理与数据
  • 连接件:定义了部件之间的交互,是链接的抽象表示
  • 配置:对形式的发展,定义了部件以及连接件之间的关联方式,他们组织成系统的总体结构

2.区分体系结构的抽象与实现

以部件、连接件和配置为基本单位组织的模型就是软件体系结构的抽象,基本目的是描述软件系统的整体功能组织,不涉及程序设计语言提供的各种编程机制;而模块,构建,进程等传统单位都是依赖于编程机制的,它们组成的模型就被称为软件体系结构的实现~

软件体系结构设计是先使用抽象机制完成软件系统的总体功能部署,然后再将抽象模型等价转换为设计模型,这既保证了软件系统的效用和质量,又顺利实现那了从总体结构设计到详细设计的过渡

3.部件

  • 原始:部件可以直接被现实为相应的软件实现机制,具体的实现粒度要视部件的复杂度而定
  • 复合:部件则由更细粒度的部件和连接件组成,通过局部配置将其内部的部件和连接件链接起来,构成一个整体

4.连接件

实现类型:

  • 隐式类型:编程语言、操作系统、中间件、数据库管理系统、软件框架等提供方提供,开发者可以直接使用~
  • 显示类型:通常需要进行一些复杂的逻辑处理,需要开发者进行专门的实现~

5.配置

通过部件端口与连接角色想匹配的方式,将系统中部件和连接件的关系定义为一个关联集合,这个关联集合可以形成系统整体结构的一个拓扑描述~

ADL:体系结构描述语言,用于描述系统结构的形式化模块语言,描述的对象是软件系统的高层结构,而不涉及软件系统的实现~

三.体系结构风格初步

如下是几个经典的常用模式~

1.主程序/子程序

包含一个主程序和一些列子程序,主程序是系统的控制器,负责调动各子程序的执行,而各子程序又是一个局部的控制器,负责调度其子程序的执行~

部件的实现模块内部无论采用结构化还是面向对象分析,这并不妨碍整个系统高层结构符合主程序、子程序风格的约定~

优点:

  • 流程清晰,易于理解
  • 强控制性

缺点:

  • 系统难以修改和复用
  • 会产生不必要的公共耦合(限制了各部件之间的数据交互)

2.面向对象式

将系统组织为多个独立的对象,每个对象封装其内部的数据,并基于数据对外提供服务,不同对象之间通过写作机制共同完成系统任务~

需要注意的是:面向对象式风格是因为它借鉴了面向对象分析方法的思想,而不是因为它使用面向对象分析方法实现体系结构,这也是在该风格名称中有一个“式”字的原因~

优点:

  • 内部实现的可修改性
  • 易开发、易理解、易复用的结构组织

缺点:

  • 接口的耦合性
  • 标识的耦合性
  • 面向对象的副作用

3.分层

根据不同的抽象层次,将系统组织为层次式结构,每个层次被建立为一个部件~

优点:

  • 设计机制清晰
  • 支持并行开发
  • 更好的复用性与内部可修改性

缺点:

  • 交互协议难以修改
  • 性能损失
  • 难以确定层次数量和粒度

4.MVC

模型-视图-控制风格~(Model-View-Control)

以程序调用为连接件,将系统功能组织为模型、视图和控制3个部件。

  • 模型:系统的数据和状态信息,实现业务逻辑
  • 视图:用户交互,提供业务展现,接收用户行为
  • 控制:系统的控制逻辑

优点:

  • 易开发性
  • 视图和控制的可修改性
  • 适宜于网络系统开发的特征

缺点:

  • 复杂性
  • 模型修改困难

 

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

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

相关文章

仪酷LabVIEW OD实战(3)——Object Detection+onnx工具包快速实现yolo目标检测

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主 🎄所属专栏:『LabVIEW深度学习工具包』『仪酷LabVIEW目标检测工具包实战』 📑上期文章:『仪酷LabVIEW OD实战(2)——Obje…

E047-论坛漏洞分析及利用-针对Wordpress论坛进行信息收集与漏洞扫描的探索

任务实施: E047-论坛漏洞分析及利用-针对Wordpress论坛进行信息收集与漏洞扫描的探索 任务环境说明: 服务器场景:p9_kali-6(用户名:root;密码:toor) 服务器场景操作系统:Kali Li…

MPNN 模型:GNN 传递规则的实现

首先,假如我们定义一个极简的传递规则 A是邻接矩阵,X是特征矩阵, 其物理意义就是 通过矩阵乘法操作,批量把图中的相邻节点汇聚到当前节点。 但是由于A的对角线都是 0.因此自身的节点特征会被过滤掉。 图神经网络的核心是 吸周围…

mysql中的几种排名函数

mysql中的排名函数 mysql里面的排名函数&#xff0c;涉及有以下几个&#xff1a; rank()、dense_rank()、row_number() 1、rank() 函数 RANK() OVER (PARTITION BY <expression>[{,<expression>...}]ORDER BY <expression> [ASC|DESC], [{,<expression…

MySQL有时候命中索引有时候又不命中

索引失效的情况 -----可能 索引主要看where 、group by 、order by 1.组合索引不遵循最佳左前缀法制。最佳左前缀法制&#xff1a;如果索引了多列&#xff0c;要遵循最左前缀法则&#xff0c;指的是查询从索引的最左前列开始并且不跳过索引中的列。如组合索引为A B C 只有ABC,A…

C# RestoreFormer 图像修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…

【SpringCloud-10】SCA-nacos

前言&#xff1a; 前面介绍的springcloud&#xff0c;可以看做第一代&#xff0c;称为&#xff1a;SCN&#xff08;spring cloud Netflix&#xff09;; 接下来介绍的是第二代&#xff1a;SCA&#xff08;spring cloud alibaba&#xff09;&#xff1b; SCA主要有以下组件&#…

Java|学习|异常

1.异常 1.1 异常 1.1.1 概述 异常&#xff1a;就是程序出现了不正常的情况。 Error&#xff1a;严重问题&#xff0c;不需要处理。 Exception&#xff1a;称为异常类&#xff0c;它表示程序本身可以处理的问题。 RuntimeException&#xff1a;在编译器不检查&#xff0c;出…

关于Skywalking Agent customize-enhance-trace对应用复杂参数类型取值

对于Skywalking Agent customize-enhance-trace 大家应该不陌生了&#xff0c;主要支持以非入侵的方式按用户自定义的Span跟踪对应的应用方法&#xff0c;并获取数据。 参考https://skywalking.apache.org/docs/skywalking-java/v9.0.0/en/setup/service-agent/java-agent/cust…

论文阅读:Rethinking Range View Representation for LiDAR Segmentation

来源ICCV2023 0、摘要 LiDAR分割对于自动驾驶感知至关重要。最近的趋势有利于基于点或体素的方法&#xff0c;因为它们通常产生比传统的距离视图表示更好的性能。在这项工作中&#xff0c;我们揭示了建立强大的距离视图模型的几个关键因素。我们观察到&#xff0c;“多对一”…

TCP/IP(九)TCP的连接管理(六)TIME_WAIT状态探究

一 TIME_WAIT探究 要明确TIME_WAIT状态在tcp四次挥手的阶段 ① 为什么 TIME_WAIT 等待的时间是 2MSL? 背景&#xff1a; 客户端在收到服务端第三次FIN挥手后,就会进入TIME_WAIT 状态,开启时长为2MSL的定时器1、MSL 是 Maximum Segment Lifetime 报文最大生存时间2、2MSL…

论文阅读之【Is GPT-4 a Good Data Analyst?(GPT-4是否是一位好的数据分析师)】

文章目录 论文阅读之【Is GPT-4 a Good Data Analyst?&#xff08;GPT-4是否是一位好的数据分析师&#xff09;】背景&#xff1a;数据分析师工作范围基于GPT-4的端到端数据分析框架将GPT-4作为数据分析师的框架的流程图 实验分析评估指标表1&#xff1a;GPT-4性能表现表2&…

跨境商城源码有哪些独特的功能和优势

1. 强大的跨境支付功能 跨境商城源码具备强大的跨境支付功能&#xff0c;支持多种支付方式&#xff0c;包括信用卡、支付宝、微信支付等。该功能遵循国际支付标准&#xff0c;能够确保支付过程的安全性和可靠性&#xff0c;为用户提供便捷的跨境购物体验。 2. 多语言和多货币支…

[GAMES101]透视投影变换矩阵中为什么需要改变z值

一、问题提出 在GAMES101-Lecture4 Transformation Matrices 一节中&#xff0c;闫老师介绍了正交投影和透视投影。 在讲透视投影变换矩阵 M p e r s p → o r t h o M_{persp→ortho} Mpersp→ortho​时&#xff0c;同学们对矩阵中的z分量是变化的还是不变的有很多争论。即下…

MySQL多表查询综合练习

1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 创建score表。SQL代码如下&#xff1a; CREATE TABLE sc…

Postgresql关于EOH的使用注意

注意通常拿到的指针不是EOH头 EOH是一种扩展数据结构&#xff0c;之前有几篇博客讨论过了&#xff0c;最近在改相关代码加深了一些理解。 EOH目前支持ER_methods、EA_methods两套实现&#xff0c;分别是record类型展开和数组类型展开。 在内存中的样子大概是&#xff08;EA为…

Java基础20问(1-5)

1.Java面向对象和面试过程的区别&#xff1f; 面向过程是将一个问题拆解成几个步骤&#xff0c;依次实现每一个步骤&#xff0c;比如实现一个冒泡排序的算法&#xff0c;是为了解决某个非常具体的问题。 而面向对象也是将一个问题拆解成几个步骤&#xff0c;但是先不去实现&a…

scratch身高统计 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch身高统计 一、题目要求 1、准备工作 2、功能实现 二、案例分析

二维码智慧门牌管理系统:构建未来社区管理新典范

文章目录 前言一、系统概述二、系统优势三、多领域应用四、未来展望 前言 在科技的迅猛发展下&#xff0c;我们的生活正朝着智能化迈进。最近&#xff0c;备受瞩目的“二维码智慧门牌管理系统”为社区管理带来了一场革命&#xff0c;通过建立标准要素之间的关系&#xff0c;重…

207、SpringBoot 整合 RabbitMQ 实现消息的发送 与 接收(监听器)

目录 ★ 发送消息★ 创建队列的两种方式代码演示需求1&#xff1a;发送消息1、ContentUtil 先定义常量2、RabbitMQConfig 创建队列的两种方式之一&#xff1a;配置式&#xff1a;问题&#xff1a; 3、MessageService 编写逻辑PublishController 控制器application.properties 配…