【系统分析师】软件架构设计

news2024/11/17 15:32:17

文章目录

  • 1、构件与软件复用
    • 1.1 主流构件标准
    • 1.2 构件获取与管理
    • 1.3 构件复用的方法
  • 2、软件架构概述
  • 3、软件架构建模
  • 4、软件架构风格
    • 4.1 经典架构风格
    • 4.2 层次架构风格
    • 4.3 富互联网应用-RIA
  • 5、面向服务的架构
    • 5.1 SOA概述
    • 5.2 SOA的关键技术
    • 5.3 SOA的实现方法
  • 6、软件架构评估
    • 6.1 架构评估概述
    • 6.2 ATAM评估方法
    • 6.3 SAAM评估方法
  • 7、软件产品线
    • 7.1 产品线的过程模型
    • 7.2 产品线的建立方式

此章节,非《系统分析师》的重点章节,仅做衔接。

1、构件与软件复用

1.1 主流构件标准

# 主流的构件标准有:对象管理集团 Object Management Group - OMG 的
1、CORBA
2、COM - Mircrosoft的构件对象模型
3、DCOM - 分布式构件对象模型
4、EJB - Sun的Java企业Bean

1.2 构件获取与管理

构件的获取
在这里插入图片描述
构件的组织

在这里插入图片描述

1.3 构件复用的方法

1、检索与提取构件
2、理解和评价构件
3、修改构件
4、构件组装:(基于功能的组装技术、基于数据的组装技术、面向对象组装技术)

2、软件架构概述

什么是架构?

1、组成派:站在目标系统的角度看,架构是名词,是目标系统
2、决策派:站在需求者的角度看,架构是动词,是愿景,是实现后的样子。
3、程序员:站在程序员的角度看,架构是名词,是实现后的u用哪个子

组成派

这个派别的思想源于物理世界的建筑行业的架构,也源于架构这个单词本身,
该派别认为:软件是一个系统,任何系统都是由组件、子系统、模块等组成的
通过分解还原一个软件系统,通过划分组件、子系统、模块来构建一个新的系统。

组成派是站在目标系统的角度,为外部提供服务的角度,以目标系统为目标和中心,而不是以用户为中心。
结构化分析与设计方法---就是组成派的杰出代码

决策派

核心思想:软件架构是在一些重要方面所作出的决策的集合。
软件架构并不仅仅注重软件本身的结构和行为,还注重其他特性,如:使用、功能性、性能、弹性、重用、可理解性,经济和技术的限制及权衡,以及美学等

决策派站在人的角度看目标系统,ta们认为 目标系统是人意愿的体现,是人决策的体现,展现的是一种 人对目标系统的一个愿景和规划。除了看得见的功能性需求,还包括看不见的非功能性需求。

面向对象分析与设计方法---属于决策派
用例图和用例就是需求,用需求衍生出各种视图

架构的种类?
单是IT行业,就有多种架构和架构师,下面列出几个最普遍的回答:

1、软件
2、硬件
3、基础设施
4、网络
5、数据
6、数据库
7、应用程序
8、安全
9、系统
......

可以看出,架构无处不在~

架构属于设计,但并非所有的设计都属于架构。

架构设计的决策,往往对整体质量、并行开发、适应变化等方面有着重大影响(否则就放到 详细设计环节 了)
 · 模块如何划分
 · 每个模块的职责是什么
 · 每个模块的接口如何定义
 · 模块间采用何种交互方式
 · 开发技术如何选型
 · 如何满足约束和质量属性的需求
 · 如何适应可能发生的变化
 ......

软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用、指导构件集成的模式 以及 这些模式的约束 组成。

软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。

软件架构研究的主要内容涉及:软件架构描述、软件架构风格、软件架构评估和软件架构的形式化方法等。

解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。

  1. 架构是项目干系人进行交流的手段;
  2. 架构是早期设计决策的体现;
  3. 架构明确了 对系统实现的约束条件;
  4. 架构决定了开发和维护人员的组织结构;
  5. 架构制约着系统的质量属性;
  6. 架构使推理和控制更改更简单;
  7. 架构有助于循序渐进的原型设计;
  8. 架构可以作为培训的基础;
  9. 架构是可传递和可复用的模型。

软件架构技术发展过程
1、无架构设计阶段;
2、萌芽阶段:出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征;
3、初级阶段:出现了从不同侧面描述系统的结构模型,以UML为典型代表;
4、高级阶段:以描述系统的高级抽象结构为中心,不关心具体的建模细节,以"4+1"模型为标志


# 核心思想
1、关注软件系统的组成部分的分割与交互
软件系统的架构将系统描述为计算机 组件 及 组件之间的交互。
架构=组件+交互

任何系统,都由各个子系统组成,子系统和子系统之间,子系统与外界之间 一定存在一定的交互,没有交互的子系统是孤岛,注定没有存在的价值。

组件的本质就是子系统。

2、架构是自顶向下 逐步分层的 树型决策 ===》 分解过程也是决策过程 ===》 决策树
	而实际的设计,往往是分层次 依次展开的---无论是决策如何分系统 还是决策技术选型都是如此

3、架构无处不在

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述可复用、可传递

3、软件架构建模

# 根据建模的侧重点不同,可以将软件架构的模型分为五种
1、结构模型
2、框架模型
3、动态模型
4、过程模型
5、功能模型:一种特殊的框架模型

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4、软件架构风格

软件架构设计的一个核心问题是能否达到架构级的软件复用,
也就是说,能否在不同的系统中,使用同一个软件架构。

软件架构风格是描述一种特定应用领域中 系统组织方式的惯用模式。

架构风格定义了一个系统“家族”,即一个架构定义、一个词汇表和一组约束。
词汇表:中包含一些构件和连接件类型,
约束:指出系统是如何将这些构件和连接件组合起来使用

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

4.1 经典架构风格

# 5种
1、数据流风格
2、调用/返回风格
3、独立构件风格
4、虚拟机风格
5、仓库风格

在这里插入图片描述
1、数据流风格
在这里插入图片描述

2、调用\返回风格

在这里插入图片描述
补充:MVC架构-Model View Controller

将系统分为模型(Model)、视图(View)和控制器(Controller)三个部分,
1.模型负责处理数据;
	[应用问题域中包含的抽象领域知识]
2.视图负责展示数据;
	[将应用问题域中包含的抽象领域知识呈现给用户的方法;一个模型可以用于多个视图]
3.控制器负责协调模型和视图之间的交互,以实现系统的灵活性和可扩展性。
	[用户界面对用户输入的相应方式]

3、独立构件风格
在这里插入图片描述

4、虚拟机风格
在这里插入图片描述
解释器

在虚拟机风格中,解释器是一种将源代码逐条解释并执行的软件程序。
它将高级语言或特定领域语言的代码逐条翻译成虚拟机能够执行的指令,并逐步执行这些指令来实现代码的功能。

解释器的工作方式是逐条读取源代码,将每条代码转化为一系列虚拟机指令,并按顺序执行这些指令。
解释器会逐条解释指令中的操作,根据需要读取和修改虚拟机的状态(例如变量的值、函数的调用栈等),并根据指令的规定执行相应的操作。
这种逐条解释和执行的过程使得解释器的执行速度相对较慢,但具有一定的灵活性和跨平台性。

基于规则的系统

基于规则的系统是一种在虚拟机风格中 应用 规则引擎的软件系统。
这种系统使用规则引擎来推理、匹配和处理规则,从而实现特定的功能和逻辑。

基于规则的系统的核心是:规则引擎,它负责解析、匹配和执行规则。

5、仓库风格

在这里插入图片描述
数据库系统

仓库风格的数据库系统是一种将数据存储在中央仓库中的系统。
这种系统结构常见于传统的数据仓库和商业智能系统,
用于集中存储和管理大量的结构化和非结构化数据,并支持数据的分析和报告。

在仓库风格的数据库系统中,数据仓库可以被看作是一个中央化的数据存储和管理机构,用于集中存储来自多个源系统的数据,并按照一致的数据模型进行组织和管理。
数据可以从各种数据源(例如生产系统、事务性数据库、外部数据源等)中提取、清洗和转换,然后装载到数据仓库中

黑板系统

仓库风格的黑板系统(Warehouse-style Blackboard System)是一种基于分布式计算的问题解决框架,用于处理大规模、复杂和动态的问题。

黑板系统的核心思想是将问题分解成多个子问题,
并通过共享数据和知识来实现分布式的问题求解。

超文本系统

仓库风格的超文本系统(Warehouse-style Hypertext System)
是一种将超文本内容存储在多个服务器上,
并在需要时 透明地将其组合到单个网页中的系统。

4.2 层次架构风格

在这里插入图片描述

1、两层架构
在这里插入图片描述

2、三层C/S架构

在这里插入图片描述
3、B/S架构

在这里插入图片描述
4、优缺点对比

在这里插入图片描述

4.3 富互联网应用-RIA

在这里插入图片描述

RIA的概念

针对B/S架构所存在的缺点,如果一味的提升服务器和网络的速度,既不现实又不经济,一种可行的技术方案是 采用高度互动性和局部智能性的客户端程序,这样,就可以在无需刷新全页或增加带宽的情况下,迅速响应用户的输入并作出相应的处理。这种技术就是RIA

在这里插入图片描述

客户端开发技术

# 支持RIA的平台或工具主要有以下几个
1、Flex
2、Bindows
3、Java
4、Laszlo
5、XUL
6、Avalon

5、面向服务的架构

在这里插入图片描述

异步JavaScript和XML

AJAX

异步JavaScript和XML 是 Asynchronous JavaScript And XML , AJAX
是由几种蓬勃发展的技术以新的方式组合而成,包括:
1、基于XHTML(可扩展超文本标识语言)和CSS标准的表示
2、使用DOM(Document Object Model,文档对象模型)进行动态显示和交互
3、使用XML和XSLT(用于转换的可扩展样式表语言) 进行数据交互及相关操作
4、使用XMLHttpRequst与服务器进行异步通信
5、使用JavaScript绑定一切

在这里插入图片描述在这里插入图片描述

5.1 SOA概述

在这里插入图片描述

SOA 并不是新鲜事物,是面向对象模型的一种替代。
虽然基于SOA的系统并不排除适用OOD来构建单个服务,但是其整体设计却是面向服务的。

SOA 的一个典型例子是:CORBA

SOA建立在XML等新技术的基础上,通过使用基于XML的语言来描述接口,服务已经转到更灵活的接口系统中。

在这里插入图片描述在SOA模型中,所有的功能都定义成独立的服务。
服务之间通过交互和协调完成业务的整体逻辑。
所有的服务通过服务总线或流程管理器来连接。

服务的基本结构
在这里插入图片描述

SOA设计原则

1、明确定义的接口;
2、自包含和模块化;
3、粗粒度;
4、松耦合;
5、互操作性、兼容和策略声明

在这里插入图片描述

服务构件与传统构件

在这里插入图片描述

5.2 SOA的关键技术

1、UDDI:统一描述、发现和集成
2、WSDL:web服务描述语言
3、SOAP:简单对象访问协议
4、REST:表述性状态转移
...

1、UDDI

在这里插入图片描述

2、WSDL

在这里插入图片描述

3、SOAP

在这里插入图片描述

4、REST
在这里插入图片描述

5.3 SOA的实现方法

# 比较主流的有:
1、Web Service
2、企业服务总线
3、服务注册表

待丰富

补充:微服务架构

将系统分为若干个独立的小型服务,每个微服务负责一部分功能,
以实现系统的可伸缩性和自治性。

在这里插入图片描述

微服务架构和SOA对比

在这里插入图片描述

补充:模型驱动架构-MDA
在这里插入图片描述

6、软件架构评估

在这里插入图片描述

6.1 架构评估概述

软件架构评估,可以只针对一个架构,也可以针对一组架构。
在架构评估过程中,评估人员所关注的是:系统的质量属性。

# 先介绍两个概念 敏感点和权衡点
敏感点:是一个或多个构件(和/或之间之间的关系)的特性
权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点。
# 从目前已有的软件架构评估技术来看,可以归纳为三类主要的评估方式
1、基于调查问卷(或检查表)的方式
2、基于场景的方式
3、基于度量的方式

1、基于调查问卷(或检查表)的方式

在这里插入图片描述

2、基于场景的方式

在这里插入图片描述

3、基于度量的方式

在这里插入图片描述

6.2 ATAM评估方法

在这里插入图片描述

1、评估参与者
2、评估活动
(1)描述ATAM方法
(2)描述业务动机
(3)描述架构
(4)确定架构方法
(5)生成质量属性效用树
(6)分析架构方法
(7)讨论场景和对场景分级
(8)分析架构方法
(9)描述评估结果
3、CBAM 评估方法

1、评估参与者

在这里插入图片描述

2、评估活动

在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、CBMA评估方法

在这里插入图片描述

6.3 SAAM评估方法

在这里插入图片描述在这里插入图片描述在这里插入图片描述

7、软件产品线

在这里插入图片描述

7.1 产品线的过程模型

软件产品线的过程模型主要有:双生命周期模型、SEI模型和三生命周期模型

1、双生命周末模型

在这里插入图片描述在这里插入图片描述

2、SEI模型

在这里插入图片描述在这里插入图片描述

3、三生命周期模型

在这里插入图片描述在这里插入图片描述

7.2 产品线的建立方式

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

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

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

相关文章

ARM时钟树结构(GD32)

时钟树的简易框图 初始化配置系统时钟 配置系统初始化时钟&#xff08;参考手册&#xff09; 对应hal库函数 使用72MHz的系统时钟 do -----------while&#xff08;0&#xff09;的使用方法 系统时钟 #include <stdint.h> #include "gd32f30x.h"int main(void)…

实现MYSQL8.3.0 版本流量抓取

实现MYSQL8.3.0 版本流量抓取 根据测试需求&#xff0c;需要抓取MYSQL8.3.0流量包&#xff0c;使用wireshark 数据库客户端实现 安装数据库服务端 这里就不给详细操作方法&#xff0c; 网上教程一大堆&#xff0c;小编这里是最新的MYSQL 8.3.0版本 安装成功后&#xff0c;创…

PyQt6--Python桌面开发(7.QTextEdit多行富文本框控件)

QTextEdit多行富文本框控件 保存文件到本地QLine多行文本框.ui import sys import time from PyQt6.QtGui import QValidator,QIntValidator from PyQt6.QtWidgets import QApplication,QLabel,QLineEdit,QTextEdit from PyQt6 import uic,QtGuiif __name__ __main__:appQApp…

管道液位传感器可以应用在哪些领域

管道液位传感器是一种利用光学原理来检测水管液位的传感器&#xff0c;其工作原理基于光线在水和空气中折射率不同的特性。通过光电管道传感器&#xff0c;可以有效解决传统机械式传感器存在的低精度、卡死失效等问题&#xff0c;同时也避免了电容式传感器因感度衰减而导致的不…

差分信号的前世今生

网上搜索到一篇简洁文章&#xff0c;描述差分信号&#xff0c;我觉得挺好&#xff0c;和大家一起分享&#xff0c;同时也发表个人的浅浅想法。 一、原文摘录 所谓差分方式传输&#xff0c;就是发送端在两条信号线上传输的幅值是相等的&#xff0c;相位是相反的电信号&#xff…

30年赚1000亿美元--“量化之王”和他最传奇的基金“大奖章”的秘密

文艺复兴是华尔街最成功、最神秘的机构之一。从1988-2018年的30年里&#xff0c;文艺复兴仅向内部员工开放的旗舰基金“大奖章”累计创造了超过1000亿美元的收益&#xff0c;年均回报率高达39%。作为对比&#xff0c;同期“股神”巴菲特的年均回报率为20.5%。 而且&#xff0c;…

怎么将一张包含多个帧的精灵图分割成一帧一帧的小图

工具 图片分割 - 图文工具箱 - imgtool.net 设置行列 下载即可

【6大模型让你的沟通汇报更有条理】项目管理常见问题大揭秘 03

6大模型让你的沟通汇报更有条理 虽然头脑中构思众多&#xff0c;一开口却发现空白一片&#xff1f; 工作表现出色&#xff0c;汇报时却总是支支吾吾不知从何说起&#xff1f; 生性腼腆&#xff0c;却难以避免需要站在众人面前发言&#xff1f; 阿道掐指一算&#xff1a;你需…

短剧APP开发,为短剧市场提供更多活力

近年来&#xff0c;短剧一直是一个大热赛道&#xff0c;不仅各大视频平台刮起了一股短剧热潮&#xff0c;各大品牌也纷纷开始进军短剧市场。短剧作为当下的流量密码&#xff0c;深受各大短剧观众与创业者的关注。吸引了大量的资本、制作方涌入到市场中&#xff0c;短剧行业发展…

[GESP样题 四级] 填幻方和幸运数

B3940 [GESP样题 四级] 填幻方 题目 在一个NN 的正方形网格中&#xff0c;每个格子分别填上从 1 到 NN 的正整数&#xff0c;使得正方形中任一行、任一列及对角线的几个数之和都相等&#xff0c;则这种正方形图案就称为“幻方”&#xff08;输出样例中展示了一个33 的幻方&am…

postgresql中写python去读取HDFS数据,像表一样使用。

简介 首先postgresql是支持python的&#xff0c;在安装postgresql数据库的时候需要执行python支持。可以使用python进行写fundcation 自然也就可以自定义funcation去读取HDFS文件&#xff0c;以此替换掉hive的&#xff0c;省去中间频繁切换服务器的麻烦。 安装postgresql use…

民航电子数据库:select查询时部分字段缺失

目录 前言异常排查原因解决使用systemPath标签引入本地Jar包后无法打包 前言 1、对接民航电子数据库 2、框架为shardingsphere caedb mybatis 3、部分SQL查询时&#xff0c;会出现字段缺失的情况 4、查看日志打印出来的SQL&#xff0c;字段并未缺失 异常 这里省略SQL语句…

【Java】/*逻辑控制语句和输入输出—快速总结*/

目录 前言 一、分支语句 1.1 if 语句 1.2 switch 语句 二、循环语句 2.1 while 循环 2.1.1 break 2.1.2 continue 2.2 for 循环 2.3 do_while 循环 三、逻辑语句的小结 四、Java 中的输入输出 4.1 输出到控制台 4.2 从键盘输入 前言 Java 中的逻辑控制语句和C语…

1分钟搞定Pandas DataFrame创建与索引

1.DataFrame介绍 DataFrame 是一个【表格型】的数据结构,可以看作是【由Series组成的字典】(共用同一个索引)。DataFrame 由按一定顺序排列的多列数据组成。设计初衷是将 Series 的使用场景从一维扩展到多维。DataFrame 既有行索引,也有列索引。 行索引:index 列索引:co…

【18-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

【qt】纯代码界面设计

界面设计目录 一.界面设计的三种方式1.使用界面设计器2.纯代码界面设计3.混合界面设计 二.纯代码进行界面设计1.代码界面设计的总思路2.创建项目3.设计草图4.添加组件指针5.初始化组件指针6.添加组件到窗口①水平布局②垂直布局③细节点 7.定义槽函数8.初始化信号槽9.实现槽函数…

如何禁止打开PDF文件?推荐2种方法!

在工作中&#xff0c;我们经常会使用到PDF文件&#xff0c;对于重要的文件&#xff0c;不想被随意打开怎么办呢&#xff1f;下面小编分享2个方法&#xff0c;第二个很实用&#xff0c;记得收藏起来&#xff01; 方法1&#xff1a;设置密码保护 我们可以通过PDF编辑器&#xff…

【图像识别】Swin Transformer

一、引言 论文&#xff1a; Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 作者&#xff1a; Microsoft Research Asia 代码&#xff1a; Swin Transformer 特点&#xff1a; 提出滑动窗口自注意力 (Shifted Window based Self-Attention) 解决Vi…

恶意软件正劫持安全软件更新进行分发

GuptiMiner 是一个高度复杂的威胁&#xff0c;最早在 2018 年发现&#xff0c;主要为了在大型企业中分发后门。一种是 PuTTY Link 的增强版本后门&#xff0c;能够针对本地网络进行 SMB 扫描&#xff0c;并通过网络横向移动到网络上其他可能易受攻击的 Windows 7 和 Windows Se…

如何盘点选择的连锁收银系统贵不贵

在选择连锁收银系统时&#xff0c;成本是一个至关重要的考量因素。盘点连锁收银系统的成本既涉及到系统本身的购买费用&#xff0c;也包括了系统的维护、培训以及可能带来的附加费用。下面将从四个方面对连锁收银系统的成本进行盘点。 1. 初始投资成本 连锁收银系统的初始投资…