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

news/2025/2/8 18:36:41 标签: 软件工程, 考研, 设计规范

目录

​编辑

一.体系结构的发展

二.理解体系结构

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.niftyadmin.cn/n/5084429.html

相关文章

Go语言错误处理最佳实践

错误处理实践 我们在go语言中设计error的处理体系时候, 一般都会去做下面两点 直接使用errors.New()生成error接口的值 扩展error接口, 并定义扩展error接口的实现类型 error接口是什么? go语言的error是一个接口类型, 其源码如下: type error interface {Error() string…

安卓主板_MTK安卓开发板方案介绍

MT6765安卓开发板是一款功能强大的安卓平台,适用于商业显示设备和手持终端的开发。该开发板搭载了联发科MTK6765处理器,这是一款高性能ARM处理器,专为个人移动互联网设备和其他应用程序而设计。MT6765采用了八核Cortex-A53构架,主…

C++: 多态

1.多态的概念 1.1概念 多态: 是面向对象编程 中的一个重要概念,它允许不同的对象以一种统一的方式进行操作。 具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态 多态性使得可以使用相同的接口来处理不同的数据类型,而无需…

QT5 实现 SFTP 上传和下载文件

1.QSsh-Botan-1: QSSH库,含有botan分支 - Gitee.com下载QSSH 源码,注意是选择botan-1分支 使用QT 编译,可以屏蔽掉 examples的编译 编译完成后将 src\libs\ssh src\libs\3rdparty\botan 头文件 拷贝至工程目录/Common/ssh 将编译好的库文件…

HDLbits: Lemmings3

Lemmings又多了一种状态:dig,我按照上一篇文章里大神的思路又多加了两种状态:LEFT_DIGGING与RIGHT_DIGGING,写出了如下的代码: module top_module(input clk,input areset, // Freshly brainwashed Lemmings walk …

计算机毕业设计选什么题目好?springboot 健身房管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

NVIDIA偷偷换接口,显卡终于不“烧”了

去年10月 NVIDIA RTX 4090 正式发布,可上市没多久便频频「翻车」。 接口熔化、自燃,有意无意间问题指向了供电能力本应更强的 12VHPWR 新接口。 后续大伙应该还记得,玩家安装不规范导致的咯。 然而后续是,即便确保接口插到底、无…

知识图谱04——openGL与ubuntu22.04

跑图神经网络的时候遇到了如下问题 libGL error: failed to load driver: iris libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: 无法打开共享对象文件: 没有那个文件或目录 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/li…