系统架构设计师 - 软件架构设计(2)

news2024/11/14 14:01:00

软件架构设计

  • 软件架构设计(20多分)最重要
    • 基于架构的软件开发 ★ ★ ★
      • 概念
      • 开发过程
        • 架构需求、设计过程
        • 架构文档化
        • 架构复审
        • 架构实现、演化过程
    • 软件质量属性 ★ ★ ★ ★ ★
    • 软件架构评估 ★ ★ ★ ★ ★
      • 概念
      • 架构评估方法
        • 评估方式
        • 基于场景的评估方法
    • 软件产品线 ★ ★ ★
      • 双生命周期模型
      • 建立方式
      • 组织结构
    • 构件与中间件技术 ★ ★ ★ ★
      • 构件的定义
      • 中间件
      • 构建的复用
      • 构建复用的过程
      • 构建标准


大家好呀!我是小笙,本章我主要分享系统架构设计师 - 软件架构设计(2)知识,希望内容对你有所帮助!!

软件架构设计(20多分)最重要

基于架构的软件开发 ★ ★ ★

概念

  • ABSD 方法是架构驱动,即强调由业务、质量和功能需求的组合驱动架构设计
  • ABSD 方法有三个基础:第一个基础是功能的分解,在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;第二个基础是通过选择架构风格来实现质量和业务需求;第三个基础是软件模板的使用
  • 视角与视图:从不同的视角来检查,所以会有不同的视图
  • 用例用来捕获功能需求、特定场景用来捕获质量需求

开发过程

架构需求、设计过程
image-20240805123333281
架构文档化

架构文档化过程的主要输出结果是架构规格说明和测试架构需求的质量设计说明书这两个文档

文档的完整性和质量是软件架构成功的关键因素

关于文档的三大注意事项

  • 文档要从使用者的角度进行编写
  • 必须分发给所有与系统有关的开发人员
  • 且必须保证开发者手上的文档是最新的
架构复审

架构复审的目的是标识潜在的风险,及早发现架构设计中的缺陷和错误

架构实现、演化过程
image-20240805123925808

例题

1、在基于体系结构的软件设计方法中,采用 视角与视图 来描述软件架构,采用 用例 来描述功能需求,采用 质量场景 来描述质量需求

  • 类图和序列图 视角与视图 构件和类图 构件与功能
  • 类图 视角 用例 质量场景
  • 连接件 用例 质量场景 质量属性

2、ABSDM 把整个基于体系结构的软件过程划分为体系结构需求、体系结构设计、体系结构文档化、体系结构复审体系结构实现 和体系结构演化等6个子过程其中,体系结构文档化 过程的主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书

  • 体系结构复审 体系结构测试 体系结构变更 体系结构管理
  • 体系结构实现 体系结构测试 体系结构建模 体系结构管理
  • 体系结构设计 体系结构需求 体系结构文档化 体系结构测试

软件质量属性 ★ ★ ★ ★ ★

  • 性能(指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数)

    性能战术(如何提高性能)

    • 资源需求(提高计算效率、减少计算开销、管理事件率以及控制采样频率)
    • 资源管理(引入并发、维持多个副本以及增加可用资源)
    • 资源仲裁(资源调度策略方面:先进/先出、固定优先级、动态优先级以及静态调试)
  • 可靠性(容错、健壮性)

  • 可用性(指系统能够正常运行的时间比例)

    可用性战术

    • 错误检测(命令/响应、心跳、异常)
    • 错误恢复(表决、冗余、备件)
    • 错误预防(进程监视器、事务)
  • 安全性(指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力

    安全性又可划分为机密性、完整性、不可否认性及可控性等特性)

    安全性战术

    • 抵抗攻击(身份验证、用户授权、数据加密、数据完整性、限制暴露、限制访问)
    • 检测攻击(入侵检测)
    • 从攻击中恢复(识别:审计追踪、恢复:冗余)
  • 可修改性(指能够快速地以较高的性能价格比对系统进行变更的能力)

    可维护性、可扩展性、结构重组、可移植性

    可修改性战术

    • 局部化修改(维持语义一致性、预期期望的变更、泛化模块、限制可能的选择、抽象通用服务)
    • 防止连锁反应(隐藏信息、维持现有的接口、限制通信路径、使用仲裁者)
    • 推迟绑定时间(运行时注册、配置文件、多态、组件更换、遵守已定义的协议)
  • 功能性

  • 可变性

  • 互操作性

  • 易用性(指对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类)

    • 界面友好
    • 新用户学习使用系统时间不超过2小时
  • 可测试性(指通过测试揭示软件缺陷的容易程度)

    • 提供远程调试接口,支持远程调试

例题

1、某服务器软件系统对可用性、性能和可修改性的要求较高,Ping/Echo 设计策略能提高该系统的可用性,队列调度 设计策略能够提高该系统的性能,信息隐藏 设计策略能够提高该系统的可修改性

  • Ping/Echo 限制访问 运行时注册 接口-实现分离
  • 分层结构 事务机制 主动冗余 队列调度
  • 信息隐藏 记录/回放 任务模型 回滚

2、某公司欲开发一个电子交易清算系统,在架构设计阶段,公司的架构师识别出3个核心质量属性场景。其中“数据传递时延不大于1s,并提供相应的优先级管理”主要与 性能 质量属性相关,通常可采用 资源仲裁 架构策略实现该属性;“系统采用双机热备,主备机必须实时监测对方状态,以便完成系统的实时切换”主要与 可用性 质量属性相关,通常可采用 心跳 架构策略实现该属性;“系统应能够防止99%的黑客攻击”主要与 安全性 质量属性相关,通常可采用 检测攻击 架构策略实现该属性

  • 可用性 性能 安全性 可修改性
  • 限制资源 引入并发 资源仲裁 限制访问
  • 可用性 性能 安全性 可修改性
  • 记录/回放 操作串行化 心跳 资源调度
  • 可用性 性能 安全性 可修改性
  • 检测攻击 Ping /Echo 选举 权限控制

软件架构评估 ★ ★ ★ ★ ★

概念

  • 敏感点是一个或多个构件的特性

  • 权衡点是影响多个质量属性的特性,是多个质量属性的敏感点(权衡多方面的质量属性)

  • 风险点是指架构设计中潜在的、存在问题的架构决策所带来的隐患

  • 非风险点是指不会带来隐患,一般以“某要求是可以实现(或接受)的”方式表达

架构评估方法

评估方式
  • 基于调查问卷的方式
  • 基于度量的方式
  • 基于场景的方式
基于场景的评估方法
  • 软件架构分析法(SAAM)

    最初用于分析架构可修改性,后扩展到其他质量属性

    image-20240807124116319
  • 架构权衡分析法(ATAM)

    在SAAM的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中

    image-20240807124601259
  • 成本效益分析法(CBAM)

    成本效益分析法是在构架权衡分析方法上构建的,用来对架构设计决策的成本和收益进行建模,是优化此类决策的一种手段

例题

1、识别风险、非风险、敏感点和权衡点是进行软件架构评估的重要过程。“改变业务数据编码方式会对系统的性能和安全性产生影响”是对 权衡点 的描述,“假设用户请求的频率为每秒1个,业务处理时间小于30毫秒,则将请求响应时间设定为1秒钟是可以接受的”是对 非风险 的描述

  • 风险点 非风险 敏感点 权衡点
  • 风险点 非风险 敏感点 权衡点

2、ATAM 是一种软件架构的评估方法,以下关于该方法的叙述中,正确的是 ATAM不是一种精确的评估工具

  • ATAM是一种代码评估方法
  • ATAM需要评估软件的需求是否准确
  • ATAM需要对软件系统进行测试
  • ATAM不是一种精确的评估工具

3、体系结构权衡分析方法(ATAM)包含4个主要的活动领域,分别是场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中。基于场景的架构分析方法(SAAM)的主要输入是问题描述、需求声明和 体系结构描述

  • 架构设计 问题分析与建模 属性模型构造和分析 质量建模
  • 问题说明 问题建模 体系结构描述 需求建模

软件产品线 ★ ★ ★

软件产品线就是项目开发过程中共性的部分迭代开发出来的产品

双生命周期模型

image-20240808123856845

建立方式

演化方式革命方式
基于现有产品基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构件核心资源的开发基于现有产品集的需求和可预测的、将来需求的超集
全新产品线产品线核心资源随产品新成员的需求而演化开发满足所有预期产品线成员的需求的核心资源

组织结构

组织结构类型

  • 设立独立的核心资源小组
  • 不设立独立的核心资源小组
  • 动态的组织结构

要成功实施产品线,主要取决于以下因素

  • 对该领域具备长期和深厚的经验
  • 一个用于构建产品的好的核心资源库
  • 好的产品线架构
  • 好的管理(软件资源、人员组织、过程)支持

构件与中间件技术 ★ ★ ★ ★

构件的定义

  • 软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意地组装
  • 构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能
  • 构件是一个独立发布的功能部分,可以通过其接口访问它的服务

中间件

中间件是一类构件、系统软件

image-20240809124108996

优点:简化结构、屏蔽不同应用程序之间的差异、利于复用

构建的复用

复用的历史发展线路

函数库(结构化时代) => 类库(面向对象时代) => 构件库 => 服务库

复用的维度

  • 水平复用:不分行业领域,通用
  • 垂直复用:分行业领域,专用

构建复用的过程

  • 检索与提取构建(基于关键字检索、刻面检索、超文本检索)

  • 理解与评价构建(必须要求构件的开发过程遵循公共标准)

  • 修改构建(理想状态是直接复用构件库中现成的构件,但大多数情况下,必须对构件进行或多或少的修改,以应对新需求)

  • 组装构建

    构建的实现方式(基于功能、数据、对象的构件组装技术)

例题

1、软件重用可以分为垂直式重用和水平式重用,标准函数库 是一种典型的水平式重用

  • 医学词汇表
  • 标准函数库
  • 电子商务标准
  • 网银支付接口

2、构件组装是指将库中的构件经适当修改后相互连接构成新的目标软件。基于实现的构件组装技术 不属于构件组装技术

  • 基于功能的构件组装技术
  • 基于数据的构件组装技术
  • 基于实现的构件组装技术
  • 面向对象的构件组装技术

构建标准

  • COBRA

    • 伺服对象:CORBA对象的真正实现,负责完成客户端请求
    • 对象适配器:用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能
    • 对象请求代理:解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制
    image-20240809125534570
  • COM

  • EJB

    • 会话Bean:实现业务逻辑,负责完成服务端与客户端的交互
    • 实体Bean:实现O/R映射,简化数据库开发工作
    • 消息驱动Bean:处理并发与异常访问

例题

1、CORBA服务端构件模型中,伺服对象 是CORBA对象的真正实现,负责完成客户端请求

  • 伺服对象
  • 对象适配器
  • 对象请求代理
  • 适配器激活器

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

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

相关文章

EmguCV学习笔记 VB.Net 9.1 VideoCapture类

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

人工智能开发实战MNIST数据集及神经网络完全解析

内容提要 MNIST数据集简介神经元常用函数深度神经网络卷积神经网络介绍循环神经网络 一、MNIST数据集简介 数据集(Dataset)是一类数据的集合。传统的数据集通常表现为表格或者文档形式,每个数值被称为数据资料。 MNIST数据集是一个含有手写…

ARM32开发——(二十四)电源管理单元

1. 重点 了解什么是电池管理单元PMU了解ARM32中的电源域了解几种省电模式 2. 主要内容 2.1 PMU PMU全称Power Management Unit,电源管理单元。 2.2 电源域 总共有三大电源域,包括VDD / VDDA域,1.2V域和备份域。 2.2.1 VDD/VDDA域 VDD/…

2024最新最全:网络安全软件大合集(非常详细)零基础入门到精通,收藏这一篇就够了

安全建议:渗透类软件,建议先在虚拟机试运行! VMware虚拟机 https://pan.quark.cn/s/6e439e2c15c1 下载KALI(安装版) https://pan.quark.cn/s/2124bdf3c732 下载KALI(免安装版) https://pa…

解决警告【WARNING: Ignoring invalid distribution -xxx 】

1、问题发生 出现警告【WARNING: Ignoring invalid distribution -umpy (c:\programdata\anaconda3\lib\site-packages)】 2、解决方法 进入报错文件夹 ,删除相关文件夹 3、解决效果

【C++标准模版库】模拟实现容器适配器:stack、queue、priority_queue(优先级队列)

stack和queue 一.容器适配器1.什么是适配器 二.模拟实现stack和queue三.STL标准库中stack和queue的底层结构四.deque(双端队列)的简单介绍五.deque作为stack和queue的默认容器的原因六.priority_queue(优先级队列)的介绍和使用七.…

前端性能优化--元素类型和dom层级

展示相同布局,使用控制变量法,对比性能差距 1. 结论:用块级元素模拟行内元素时,会有性能浪费,所以能用行内元素的,就不要使用块元素(能用span就不用div) 2. 结论:行内元素模拟块级元素时&…

rk3588_dp调试

配置流程&#xff1a; 开启usbusb需要绑定dpdp绑定vp 查看rk3588内部寄存器可知 需要在USB3.0控制器中打开DP0 在设备树中需要在usb3dp端口。 usbc0: fusb3024e { ......ports {port1 { reg <1>; …

SpringBoot配置MybatisPlus

文章目录 介绍特性工作流程图添加依赖Spring Boot2Spring Boot3 配置定义Mapper接口并继承BaseMapperServer 接口自定义 Service 接口继承 IServie 接口自定义 Service 实现类&#xff0c;实现自定义接口并继承 ServiceImpl 添加Config类 介绍 MyBatis-Plus 是一个 MyBatis 的…

uniapp钱包支付、与设置密码页面

设置密码页面 <template><view class="paymentCodeBox"><!-- 自定义键盘 -->

计算机毕业设计推荐-基于python的电子图书馆数据可视化分析

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于python的电子图书馆数据…

95.WEB渗透测试-信息收集-Google语法(9)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;94.WEB渗透测试-信息收集-Google语法&#xff08;8&#xff09; • site &#xff1a; x…

nacos集群部署和VIP部署

1. 准备工作 nacos版本2.2.1 nginx版本1.24.0 2. nacos集群部署 2.1 下载nacos版本后&#xff0c;解压&#xff0c;然后复制三份nacos 2.2 分别修改三个nacos文件下config目录下的application.properties文件&#xff0c;三个nacos的端口修改为8846,8848,8850。 2.3 修改c…

C++解决:【基础】高精度整数除法

描述 求a/b的结果。 已知a&#xff0c;b为10^8范围内的非负整数&#xff0c;求a/b保留前n位小数商的结果。 输入描述 a b n 输出描述 一行数字 用例输入 1 97 61 50 用例输出1 1.59016393442622950819672131147540983606557377049180来源 高精度算法 AC code 方案一…

IGCSE计算机 cs0478 内容介绍

作者&#xff1a; 大爽老师&#xff0c;国际教育编程老师&#xff0c;熟悉AP/IG/ALevel, 擅长Python和Java 剑桥IGCSE计算机课程&#xff08;IGCSE Computer Science&#xff09;课程代码为0478&#xff0c;是为对计算机科学基础感兴趣的学生设计的课程。该课程为学生提供了计算…

WHAT - 最常用的 base64 数据编码方式(含 Blob 和 ArrayBuffer)

目录 一、介绍1. Base64 的工作原理Base64 字符集Base64 编码基本原理Base64 编码具体解释 2. Base64 的编码示例3. Base64 的应用3.1 在 URL 中嵌入数据3.2 电子邮件附件3.3 数据传输3.4 存储与缓存总结 4. 在 JavaScript 中使用 Base64编码解码使用 Buffer (Node.js) 一、介绍…

基于Python的重庆市气象数据分析可视化—计算机毕业设计源码24928

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对气象数据等问题&#xff0c;对气象信息进行…

大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

利用 Web 浏览器构建 Java Media Player

如果您需要在 Java 桌面应用程序中嵌入媒体播放器&#xff0c;有几种方法可供选择&#xff1a; 您可以使用 JavaFX Media API 来实现所有必需的媒体播放器功能。虽然稍显过时但仍然可用的 Java Media Framework 也可以作为一种解决方案。您可以集成像 VLCJ 这样的第三方 Java …

统计机器学习基础知识

一、统计机器学习定义 统计机器学习&#xff08;Statistical Machine Learning&#xff09;又称为统计学习&#xff08;Statistical Learning&#xff09;&#xff0c;是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科&#xff0c;是概率论、统…