软件体系结构(期末复习)

news2024/9/24 15:16:46

文章目录

  • 软件体系结构
    • 软件体系结构概论
    • 软件体系结构建模
    • 软件体系结构风格
    • 统一建模语言
    • 基于体系结构的软件开发

软件体系结构

软件体系结构概论

软件危机是指计算机软件的开发和维护过程中遇到的一系列严重问题。

软件危机的表现:

image-20230217101528731

软件危机的原因:

image-20230217101630026

软件工程的基本要素:过程、方法、工具。

软件工程过程(五种活动):image-20230217102300716

软件工程方法(四种方法):

image-20230217102417928

软件体系结构构成(核心模型):构件+连接件+约束

体系结构风格:用于描述某一特定应用领域中系统组织的惯用模式,反映了领域中众多系统所共有的结构和语义特性。

软件框架:软件框架是由开发人员定制的应用系统的骨架,是整个或部分系统的可重用设计,由一组抽象构件和构件实例间的交互方式组成。

设计模式:描述了软件系统设计过程中常见问题的一些解决方案,通常是从大量的成功实践中总结出来的且被广泛公认的实践和知识。

框架和体系结构的关系

  • 体系结构的呈现形式是一个设计规约,而框架则是“半成品”的软件。
  • 体系结构的目的是指导软件系统的开发,而框架的目的是设计复用。

框架和设计模式的关系

  • 框架给出的是整个应用的体系结构;而设计模式则给出了单一设计问
    题的解决方案,且可以在不同的应用程序或者框架中进行应用。
  • 举例:一个网络游戏可以基于网易的Pomelo框架开发,这是一个基于
    Node.js的高性能、分布式游戏服务器框架;在实现某个动画功能时,
    可能会使用观察者模式实现自动化的通知更新。
  • 设计模式的目标是改善代码结构,提高程序的结构质量;框架强调的
    是设计的重用性和系统的可扩展性,以缩短开发周期,提高开发质量。

构件:是具有某种功能的可复用的软件结构单元,表示系统中主要的计算元素和数据存储。

image-20230217103944052

构件获取:

image-20230217110015581

构件三个流派

  • CORBA:对象管理集团OMG的通用对象请求代理结构CORBA。

    OMG: Object Management Group
    CORBA: Common Object Request Broker Architecture

  • EJB:Sun公司制定的EJB规范。
    EJB: Enterprise Java Bean

  • DCOM:Microsoft公司制定的分布式构件对象模型DCOM。
    DCOM: Distributed Component Object Model

构件管理

  • 构件描述。
  • 构件分类与组织。
  • 人员及权限管理。

构件描述是模型对构件本质的抽象描述,主要是为构件的制作与构件的重用提供依据。从管理角度出发,也需要对构件进行描述,例如:实现方式、实现体、注释、生产者、生产日期、大小、价格、版本和关联构件等信息,它们与构件模型共同组成了对构件的完整描述。

构件分类与组织

  • 关键字分类法。
  • 刻面分类法。
  • 超文本组织方法。

构件管理:人员及权限管理:包括五类用户,即注册用户、公共用户、构件提交者、一般系统管理员和超级系统管理员。

构件重用

  • 检索与提取构件。
  • 理解与评价构件。
  • 修改构件。
  • 构件组装。

构件重用:检索与提取构件

  • 基于关键字的检索。
  • 刻面检索法。
  • 超文本检索法。
  • 其他检索方法。

构件重用:理解与评价构件

  • 构件的功能与行为。
  • 相关的领域知识。
  • 可适应性约束条件与例外情形。
  • 可以预见的修改部分及修改方法。

构件重用:构件组装

  • 基于功能的组装技术。
  • 基于数据的组装技术。
  • 面向对象的组装技术。

连接:是构件间建立和维护行为关联与信息传递的途径。

image-20230217103807133

连接件 :表示构件之间的交互并实现构件之间的连接。

image-20230217103745949

软件体系结构的目标:有效性、简单性、可重用性、可拓展性。

软件体系结构建模

Kruchten4+1视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容。

逻辑视图:当采用面向对象的设计方法时,逻辑视图即是对象模型。

过程视图:描述系统的并发和同步方面的设计。

物理视图:描述软件到硬件之间的映射关系,反映系统在分布方面的设计。

开发视图:描述软件在开发环境下的静态组织。

image-20230219123048201

Rational 4+1视图模型

image-20230217111915808

用例视图

•用例视图包含描述用户、分析师和测试工程师看到的系统行为的用例。

•根据视图可确定系统架构。

•UML:

静态方面:用例图描述。

动态方面:交互图、状态图和活动图描述。

设计视图

•设计视图包含构建系统的类、接口和类之间的协作。

•主要支持系统的功能性需求,也即系统提供给用户的服务。

•UML:

静态方面:类图、对象图描述。

动态方面:交互图、状态图和活动图描述。

交互视图

•交互视图描述了系统不同部分之间的控制流,包括可能的并发和同步机制。

•主要解决系统的性能、可拓展性、吞吐量等问题。

•UML:

静态方面:类图、对象图描述。

动态方面:交互图、状态图和活动图描述。

实现视图

•实现视图包含用于组装和发布物理系统的组件。

•主要解决系统发布的配置管理问题。

•UML:

静态方面:物件图描述。

动态方面:交互图、状态图和活动图描述。

部署视图

•部署视图包含形成系统硬件拓扑结构的节点。

•主要解决构成物理系统的部件的分布、发布和安装问题。

•UML:

静态方面:部署图描述。

动态方面:交互图、状态图和活动图描述。

软件体系结构风格

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式,强调了软件系统中通用的组织结构。

体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。

体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。

通用体系结构风格分类

•数据流风格:批处理序列;管道/过滤器。

•调用/返回风格:主程序/子程序;面向对象风格;层次结构。

•独立构件风格:进程通讯;事件系统。

•虚拟机风格:解释器;基于规则的系统。

•仓库风格:数据库系统;超文本系统;黑板系统。

主程序-子程序风格是结构化程序设计的一种典型风格,从功能的观点设计系统,通过逐步分解和细化,形成整个系统的体系结构。(应用于C语言)

数据抽象和面向对象系统风格(应用于java):

  • 系统被看作是对象的集合,每个对象都有一个它自己的功能集合。
  • 数据及作用在数据上的操作被封装成抽象数据类型。
  • 只通过接口与外界交互,内部的设计决策则被封装起来。

管道-过滤器风格把系统任务分成若干连续的处理步骤,这些步骤由通过系统的数据流连接,一个步骤的输出是下一个步骤的输入(应用于视频播放器)。

事件系统是将应用看成是一个构件集合,每个构件直至发生对它有影响的事件时才有所动作(应用于程序调试器)。

层次结构

  • 层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
  • 这种风格支持基于可增加抽象层的设计。允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。

仓库体系结构是一种以数据为中心的体系结构,适合于数据由一个模块产生而由其他模块使用的情形。

客户机/服务器体系结构是一种分布式系统模型,作为服务器的子系统为其他客户机的子系统提供服务,作为客户机的子系统负责与用户的交互。

三层C/S结构

image-20230217144128813

B/S结构

image-20230219124056705

  • 第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。
  • 第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。
  • 第三层数据层:主要是接受客户端请求后独立进行各种运算。

CORBA技术规范

  • 接口定义语言(IDL)
  • 接口池(IR)
  • 动态调用接口(DII)
  • 对象适配器(OA)

CORBA体系结构模型

image-20230219124308868

什么是前后端分离:就是把数据操作和显示分离出来。 前端专注做数据显示,通过文字,图片或者图标等方式让数据形象直观的显示出来。 后端专注做数据的操作。 前端把数据发给后端,有后端对数据进行修改。

统一建模语言

什么是模型:模型是对现实的简化,建模是为了更好地理解系统。

UML简介

  • 英文 Unified Modeling Language 首字母缩写。
  • 中文:统一建模语言。
  • 统一( Unified ):
  • 软件工程领域全部认可并遵守的规范,类似于自然语言中的“英语”。
  • 具有简单、直观和规范的特点,学习和掌握比较简单。所描述的软件模型,可以直观地理解和阅读,由于具有规范性,所以能够保证模型的准确、一致。
  • 建模( Modeling ):
  • 用于表达现实的简化视图,以便于面向对象软件系统的设计与实现。
  • 语言( Language ):
  • UML主要是遵循精确语法的图形语言(还包括规则、约束、扩展机制)。

UML语法和语义

image-20230219125734995

UML的构成

image-20230219125836689

UML事物

image-20230219125942264

结构事物

  • 结构事物(structural thing):UML模型的静态部分,描述概念或物理元素。

  • 结构事物也称为:构件事物。

  • 常见的结构事物包括:

    ​ 类(class)

    ​ 接口(interface)

    ​ 协作(collaboration)

    ​ 用例(use case)

    ​ 主动类(active class)

    ​ 构件(component)

    ​ 节点(node)

行为事物

  • 行为事物(Behavioral Thing):UML模型图的动态部分,描述跨越空间和时间的行为。

  • 常见的行为事物包括:

    交互(interaction):实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接。

    状态机(state machine):描述事物或交互在生命周期内响应事件所经历的状态序列。

分组事物

  • 分组事物(Group Thing):UML模型图的组织部分,描述事物的组织结构。

  • 常见的分组事物包括:

    包(package)。

注释事物

  • 注释事物(Annotational thing): UML模型的解释部分,用来对模型中的元素进行说明和解释。

  • 常见注释事物包括:

    注解(note)。

UML关系

image-20230219130410019

UML图形

image-20230219130533867

类图(重点)

交互图(重点)

顺序图(重点)

基于体系结构的软件开发

MVC设计模式(重点)

MVC结构

image-20230219132912599

MVC的框架

image-20230219133018493

MVC的通信机制

MVP:MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。

image-20230219133218680

MVVM:MVVM是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。

image-20230219133246953

设计模式分类

image-20230219132703066

设计模式的组成

  • 模式名称
  • 问题
  • 解决方案
  • 后果

中间件的分类

  • 底层中间件:JVM(Java Virtual Machine,Java虚拟机)、CLR(Common Language Runtime,公共语言运行库)、ACE(Adaptive Communication Environment,自适配通信环境)等
  • 通用型中间件:也称为平台,其主流技术主要有RPC、ORB、MOM(Message-Oriented Middleware,面向消息的中间件)等
  • 集成型中间件:WorkFlow、EAI等

主要的中间件技术

  • 远程过程调用
  • 远程方法调用
  • 对象请求代理
  • 面向消息的中间件
  • 事务处理监控器

软件过程模型主要分类

  • 瀑布模型
  • 原型化模型
  • 迭代式开发
  • 可转换模型

6806166733)]

设计模式的组成

  • 模式名称
  • 问题
  • 解决方案
  • 后果

中间件的分类

  • 底层中间件:JVM(Java Virtual Machine,Java虚拟机)、CLR(Common Language Runtime,公共语言运行库)、ACE(Adaptive Communication Environment,自适配通信环境)等
  • 通用型中间件:也称为平台,其主流技术主要有RPC、ORB、MOM(Message-Oriented Middleware,面向消息的中间件)等
  • 集成型中间件:WorkFlow、EAI等

主要的中间件技术

  • 远程过程调用
  • 远程方法调用
  • 对象请求代理
  • 面向消息的中间件
  • 事务处理监控器

软件过程模型主要分类

  • 瀑布模型
  • 原型化模型
  • 迭代式开发
  • 可转换模型

设计题涉及软件过程模型分析

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

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

相关文章

轻松上手nacos使用

三步上手nacos使用1.为什么使用nacos?2.如何使用nacos1.为什么使用nacos? 1.服务发现中心。 微服务将自身注册至 Nacos,网关从 Nacos 获取微服务列表。 2.配置中心。 微服务众多,它们的配置信息也非常复杂,为了提高系统的可维护性&#xf…

每天一个linux命令---awk

awk命令 1. 简介 awk是一种处理文本文件的语言,是一个强大的文本分析工具,grep、sed、awk并称为shell中文本处理的三剑客。 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&am…

1.OCR--文本检测算法FCENet

文章目录1.简介2.主要工作2.1 傅里叶轮廓嵌入(Fourier Contour Embedding)2.2 FCE模型3.代码实现参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 论文:Fourier Contour Embedding for Arbitrary-Shaped Text Detection 1.简介 这…

设计模式之中介模式与解释器模式详解和应用

目录1 中介模式详解1.1 中介模式的定义1.1.1 中介者模式在生活场景中应用1.1.2 中介者模式的使用场景1.2 中介模式的通用实现1.2.1 类图设计1.2.2 代码实现1.3 中介模式应用案例之聊天室1.3.1 类图设计1.3.2 代码实现1.4 中介者模式在源码中应用1.4.1 jdk中Timer类1.5 中介者模…

logd守护进程

logd守护进程1、adb logcat命令2、logd守护进程启动2.1 logd文件目录2.2 main方法启动3、LogBuffer缓存大小3.1 缓存大小优先级设置3.2 缓存大小相关代码位置android12-release1、adb logcat命令 命令功能adb bugreport > bugreport.txtbugreport 日志adb shell dmesg >…

kafka-11-kafka的监控工具和常用配置参数

kafka官方文档 参考Kafka三款监控工具比较 1 查看kafka的版本 进入kafka所在目录,通过查看libs目录下的jar包。 2.11是scala的版本,2.0.0是kafka的版本。 测试环境 #systemctl start zookeeper #systemctl start kafkka 2 kafka的常用配置 Kafka使用…

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】

SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】 目录SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】一、创建一个SpringBoot项目二、修改pom.xml中SpringBoot的版本三、配置文件3.1 application-dev.ym…

2.TCP/UDP什么时候选择,HTTP,使用TCP/UDP的协议有哪些,TCP三次握手四次挥手大概流程,为什么要三次握手.

文章目录1.什么时候选择 TCP,什么时候选 UDP?2. HTTP 基于 TCP 还是 UDP?3.使用 TCP 的协议有哪些?使用 UDP 的协议有哪些?4.TCP 三次握手和四次挥手(非常重要、传输层)5.为什么要三次握手?1.什么时候选择 TCP,什么时候选 UDP? UDP 一般…

Spring Cloud Nacos实战(五)- 命名空间分组和DataID三者关系

Nacos命名空间分组和DataID三者关系 名词解释 命名空间(Namespace) ​ 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发…

Kubernetes一 Kubernetes之入门

二 Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应…

机器学习实战教程(六):决策树

决策树 决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子,如下图所示的流程图就是一个决策树,长方形代表判断模块(decision block),椭圆形成代表终止模块(terminating block),表示…

SpringBoot实战——个人博客项目

目录 一、项目简介 二、项目整体架构 数据库模块 后端模块 前端模块 三、项目具体展示 四、项目的具体实现 1、一些准备工作 🍎数据库、数据表的创建 🍎设置数据库和MyBatis的配置 🍎将前端项目引入到当前项目中 2、登录注册模块 &…

CV学习笔记-Inception

CV学习笔记-Inception 目录 文章目录CV学习笔记-Inception目录1. 常见的卷积神经网络2. Inception(1) Inception提出背景(2) Inception module 核心思想3. Inception的历史版本(1) InceptionV1-GoogleNet(2) InceptionV2(3) InceptionV3(4) Inception V44. Inception模型的特点…

一起学 pixijs(4):如何绘制文字md

大家好,我是前端西瓜哥,今天我们来学 pixijs 如何绘制文字。pixijs 版本为 7.1.2。 使用原生的 WebGL 来绘制文字是非常繁琐的,pixijs 对此进行了高层级的封装,提供了 Text 类和 BitMapText 类来绘制文字。 Text 最基本的写法&…

【Flutter入门到进阶】Dart进阶篇---Dart异步编程

1 并行与并发的编程区别 1.1 并发与并行 1.1.1 说明 我们举个例子,如果有条高速公路 A 上面并排有 8 条车道,那么最大的并行车辆就是 8 辆此条高速公路 A 同时并排行走的车辆小于等于 8 辆的时候,车辆就可以并行运行。 CPU 也是这个原理,一个 CPU 相当于一个高速公路 A,核心数…

Ubuntu20.04如何安装虚拟机(并安装Android)

安装虚拟机(KVM)这种KVM只能安装windows无法安装安卓(From https://phoenixnap.com/kb/ubuntu-install-kvm)A type 2 hypervisor enables users to run isolated instances of other operating systems inside a host system. As a Linux based OS, Ubun…

Redis第四讲

目录 四、Redis04 4.1 Redis集群应用场景 4.2 集群 4.2.1 基本原理 4.2.2 主从复制的作用 4.3 配置集群(一台虚拟机) 4.3.1 规划网络 4.3.2 创建节点 4.3.3 创建目录 4.3.4 配置redis7001.conf 4.3.5 配置其余文件 4.3.6 后台启动redis 4.3…

【NLP实战】NLTK工具包

“Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发。NLTK由Steven Bird和Edward …

「可信计算」助力TLS 传输更安全

序言背景(Satuation):TLS 是 TCP/IP 上的传输层安全协议,保护着数以亿万级的数据安全,我们在浏览器中输入的 https,就是受到 TLS 保护的。冲突(complication):从可信计算…

洛谷P8601[蓝桥杯][2013年第四届真题]剪格子

题目描述如图 11 所示,33 的格子中填写了一些整数。我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 6060。本题的要求就是请你编程判定:对给定的 m\times nmn 的格子中的整数,是否可以分割为两个部分&am…