软件体系架构复习二
呃,前面复习的忘了发了。从后面开始吧
一、Unit 11-12 软件架构度量和软件架构演化
1.1为什么需要进行软件架构度量?
(软件架构度量的意义/好处)
软件架构作为软件开发的早中期模型,通过对软件架构进行评估分析,能够及早的发现软件开发过程中可能遇到的问题,并提出可行的解决方案,进而提高了软件质量保障,降低了软件开发的风险。
1.2软件度量与软件演化之间的关系?
通过对演化前后的软件进行度量,分析相关质量属性的变化情况,可以得到软件的内部架构与外在属性之间的联系,有利于进一步在总体上把握和控制软件演化的方向
1.3为什么要进行软件架构演化?
软件架构演化的目的为了适应用户需求、开发环境、运行环境的变化。
一是在开发过程中用户的需求以及开发环境会发生变化,需要通过改变软件架构来适应用户需求的变化以及开发环境的变化;
二是在项目开发完成后,用户的需求依然可能发生改变,软件的运行环境也可能会发生变化,需要通过架构演化来适应这一系列变化。
1.4软件架构演化的类型?
静态演化:(1)是什么、(2)必要性、(3)一般流程
(1)静态演化是指开发尚未完成过程中、或者说开发已完成但系统停止运行过程中发生的演化。
(2)在架构开发和实现过程中需要对原有架构进行调整,保证架构与需求之间的一致性
在开发完成后,由于运行环境发生变化,需要对软件进行修改升级。
(3)架构理解——演化需求分析——演化计划设计——演化计划实现——系统测试
动态演化:(1)是什么、(2)必要性、(3)内容以及技术
(1)软件运行过程中,对系统进行更新,且不停止软件功能的运行
(2)系统内部执行导 致的系统架构的变更;二是系统外部发送请求对软件进行重部署
(3)属性变更、接口变更、拓扑结构变更、架构风格变更,
技术:动态重配置(主从模式、中央控制模式、客户端-服务端模式)
二、Unit13 软件架构重构
2.1 软件架构重构是什么,为什么要进行软件架构重构
软件架构重构是指在不改变软件功能以及软件可见部分的前提下,对软件的可维护性、可拓展性等质量属性进行优化的过程。软件从架构重构是软件质量保障的重要手段、是软件架构演化的重要方式。
2.2 基于度量的软件架构重构
(1)如何通过软件架构度量获取重构需求
(2)如何通过软件架构度量进行软件重构建议(如何重构)
(3)基于度量评估的架构重构过程
架构重构一定是在通过度量明确架构缺陷之后才进行的
基于度量对软件架构进行评估——产生重构需求——分析重构需求——设计重构计划——执行重构操作
三、Unit14-15 软件架构腐蚀与软件架构恢复
3.1什么是软件架构腐蚀
是指实际开发中的软件架构与预期的软件架构之间的差别。软件架构腐蚀是由于软件修改产生的,而非人为恶意的。
解决方法(架构腐蚀前:预防腐蚀;架构腐蚀中:减轻架构腐蚀危害;架构腐蚀后:进行腐蚀修复)
3.2什么是软件架构恢复,有什么意义
软件架构恢复是逆向工程的实践和研究的方向。软件架构恢复是指根据项目工程,完成由低层向高层的抽象过程,得到系统架构中组成元素。开发人员可以根据恢复出的系统架构,对系统的代码编写、代码测试等进一步评估优化。
3.3软件架构腐蚀和软件架构恢复之间的关系
随着软件开发的进行,难免会产生文档的缺失,代码与预期的偏差越来越大(架构腐蚀的定义),进而逐步发生软件的架构腐蚀。这时候如果人工来阅读代码来恢复架构的话,无疑很是费时费力,这个时候通过逆向工程来恢复架构对预防软件腐蚀就显得很有意义
四、Unit16-18 技术债、坏味道、脆弱性
4.1 软件技术债的含义和分类
含义:
指软件开发人员为了保证项目进展,或因为时间的原因,或因为开发人员本身技术的原因,在该采用某些最优的设计方案时采取了某些妥协,以在短期内加速开发,进而加重自己未来的开发负担。
分类:
设计债务(没有采用最优架构)
代码债务(没有遵循标准代码格式等)
测试债务
文档债务
4.2 软件技术债的偿还
(1)发现技术债
(2)加入产品列表
(3)按照偿还的难度以及收益进行排序
(4)在将来开发周期中逐步偿还技术债
4.3 软件坏味道的含义和分类
1.代码坏味道:程序中某一段代码是不好的或是不合理的,我们将这一段代码称为代码坏味道。
(1)应用级坏味道:重复代码
(2)类级坏味道:过大的类
(3)方法级坏味道:过长的方法、参数过多
2.架构坏味道:
连接件嫉妒
模糊接口功能分散
4.4 软件脆弱性的成因
软件脆弱性是指在软件开发过程中(如需求分析,代码编写)等过程存在的错误,也可能是在配置过程中存在的错误。这种错误本身并没有危害,但一旦被攻击者利用,可能会导致非常严重的后果。软件脆弱性一般与软件架构风格相关,不同风格的脆弱性不同。比如管道过滤器风格,如果前面几个过滤器出现错误,经过层层过滤,可能会导致错误的放大。
最后再简单总结下:
1.软件架构度量与演进
(1)软件架构度量的意义(进行软件质量保障,降低开发风险)
(2)软件架构演进的意义(满足需求,适应环境)
(3)二者之间的联系
(4)软件架构演进的分类
2.软件架构重构
(1)什么是软件架构重构
(2)软件架构重构的步骤
3.软件架构腐蚀与恢复
(1)什么是软件架构腐蚀
(2)什么是软件架构恢复
(3)腐蚀与恢复之间的联系
4.软件架构技术债、坏味道、脆弱性
(1)什么是软件架构技术债
(2)如何偿还技术债
(3)有哪些坏味道
(4)软件脆弱性的成因及危害
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
软件体系架构复习二
呃,前面复习的忘了发了。从后面开始吧 Unit 11--18 复习Tips: 重点在于对概念的理解,概念间关系的理解。 对具体的识别方法,处理方法等根据自己的兴趣做一些了解即可 。 如:关于 软件架构脆弱性的成因 , …...
![](https://img-blog.csdnimg.cn/direct/548e85f5e4ea4ec3afac2ec85686112e.png)
产品经理学习-策略产品指标
目录: 数据指标概述 通用指标介绍 Web端常用指标 移动端常用指标 如何选择一个合适的数据指标 数据指标概述 指标是衡量目标的一个参数,指一项活动中预期达到的指标、目标等,一般用数据表示,因此又称为数据指标;…...
![](https://www.ngui.cc/images/no-images.jpg)
【c语言】日常刷题☞有趣的题目分享❀❀
︿( ̄︶ ̄)︿hi~~ ヽ( ̄ω ̄( ̄ω ̄〃)ゝ本次刷题发现3个比较有趣的题目,分享给您,希望对您有所帮助,谢谢❀❀~ 目录 1.单词覆盖还原(单词的连续性) …...
![](https://img-blog.csdnimg.cn/direct/aeed876d09bf4675aa50935d92ae5885.png)
LINUX 抓包工具Tcpdump离线安装教程
本次教程基于内网环境无法访问网络使用安装包进行安装抓包工具 1、首先给大家看下一共有6个安装包,依次进行解压,包我就放到csdn上了,需要的可以联系我进行下载 2打包然后传到服务器任意一个目录下,进入到当前目录,然后…...
![](https://img-blog.csdnimg.cn/direct/6d28e0f782ec478c9c4916acaf07e365.png#pic_center)
c语言-string.h库函数初识
目录 前言一、库函数strlen()1.1 strlen()介绍1.2 模拟实现strlen() 二、库函数strcpy()2.1 strcpy()介绍2.2 模拟实现strcpy() 三、库函数strcmp()3.1 strcmp()介绍3.3 模拟实现strcmp() 总结 前言 本篇文章介绍c语言<string.h>头文件中的库函数,包含strlen…...
![](https://img-blog.csdnimg.cn/direct/37d8cddcf2ee4ad9b567c4532741bd69.png)
PyTorch官网demo解读——第一个神经网络(4)
上一篇:PyTorch官网demo解读——第一个神经网络(3)-CSDN博客 上一篇我们聊了手写数字识别神经网络的损失函数和梯度下降算法,这一篇我们来聊聊激活函数。 大佬说激活函数的作用是让神经网络产生非线性,类似人脑神经元…...
![](https://www.ngui.cc/images/no-images.jpg)
TCP发送和接受数据
发送数据 public class sendmessage {public static void main (String[] args) throws IOException {//创建socket对象//在创建的同时会连接服务器,若连接不上,代码会报错Socket socketnew Socket("127.0.0.1",10086);//从连接通道中获取输出流OutputStream ossock…...
![](https://img-blog.csdnimg.cn/direct/d0764a47115a40b8ba80064cd4d0a398.gif#pic_left#pic_left)
SpringBoot快速集成多数据源(自动版)
有些人因为看见所以相信,有些人因为相信所以看见 有目录,不迷路 前期准备实现演示代码地址参考 最近研究了一下多数据源,这篇博客讲的是简单模式,下篇博客预计写自动切换模式 前期准备 本篇博客基于SpringBoot整合MyBatis-plus&a…...
![](https://img-blog.csdnimg.cn/direct/2c310bb68ce34fd89a2fc85192409040.png)
mysql原理--Explain详解
1.概述 一条查询语句在经过 MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的 执行计划 ,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。设计 MySQL 的…...
![](https://img-blog.csdnimg.cn/84724768bb5f4be3aacc14bf18185ef0.png)
阶段五-JavaWeb综合练习-学生管理系统
一.项目说明 1.前台 (用户使用) 前端,后端 2.后台 (管理员使用) 前端,后端 3.该项目为后台管理系统 项目开发流程: 1.需求分析 1.1 登录功能 用户访问登录页面输入用户名和密码,并且输入验证码。全部输入正确后点击登录,登录成功跳转主页面;登录…...
![](https://img-blog.csdnimg.cn/direct/1d2bb5382a054a9cb6e5552713216b5e.png)
DevC++ easyx实现视口编辑--像素绘图板与贴图系统
到了最终成果阶段了,虽然中间有一些代码讲起来没有意思,纯靠debug,1-1解决贴图网格不重合问题,这次是一个分支结束。 想着就是把瓦片贴进大地图里。 延续这几篇帖子,开发时间也从2023年的4月16到了6月2号,80小时基本…...
![](https://img-blog.csdnimg.cn/direct/9399aa44ac7e43288aeacaf3cafd74a5.png)
Visual studio 2010的安装与使用
一、下载及安装 1、下载软件。 百度网盘: 链接:https://pan.baidu.com/s/115RibV7dOI_y8LUGW-94cA?pwd4hrs 提取码:4hrs 2、右键解压下载好的文件。 3、找到cn_visual_2010_……/Setup.hta,双击运行。 4、选择第三个“ Visual…...
![](https://img-blog.csdnimg.cn/img_convert/903cd62492863f157a830ee7c5744ba0.png)
Download Monitor Email Lock下载监控器邮件锁插件
打开Download Monitor Email Lock下载监控器邮件锁插件 Download Monitor Email Lock下载监控器邮件锁插件下载监视器的电子邮件锁定扩展允许您要求用户在获得下载访问权限之前填写他们的电子邮件地址。 Download Monitor Email Lock下载监控器邮件锁插件用法 安装扩展程序后…...
![](https://img-blog.csdnimg.cn/direct/aa991b4b283542ffae281d36b951e9ca.png)
在vscode中创建任务编译module源文件
接昨天的文章 [创建并使用自己的C模块(Windows10MSVC)-CSDN博客],觉得每次编译转到命令行下paste命令过于麻烦,于是研究了一下在vscode中创建自动编译任务。 经过尝试,在task.json中增加如下代码: {"…...
![](https://www.ngui.cc/images/no-images.jpg)
element ui级连选择,lazyLoad选择地区
ui文档上直接给了一函数 先试试看效果是什么,加上let id0;不然会报错 props: {lazy: true,lazyLoad (node, resolve) {let id 0;const { level } node;setTimeout(() > {const nodes Array.from({ length: level 1 })//创建一个新数组,数组长度l…...
![](https://img-blog.csdnimg.cn/direct/6d0255d94427463bbc1a0c6685496fc9.jpeg)
软件测试基础知识详解
1、黑盒测试、白盒测试、灰盒测试 1.1 黑盒测试 黑盒测试 又叫 功能测试、数据驱动测试 或 基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。 采用这种测试方法,测试工程师把测试对象看作一个黑盒子,完全不考虑程序内部的逻辑结构…...
![](https://img-blog.csdnimg.cn/img_convert/a397a95983e702a3207fd63a19c9b61b.png)
Linux之进程管理
什么是进程 在linux中每个执行的程序都称为一个进程,每个进程都分配一个ID号(pid进程号)。每个进程都可能以两种方式存在,即前台和后天。前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但屏幕…...
![](https://img-blog.csdnimg.cn/img_convert/2383f06bf1923135bf4844e7195db969.jpeg#pic_center)
动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper
文章目录 前言下载github地址:网盘 关于VideoWebpagesYoutube和流媒体ShadersGIFs游戏和应用程序& more:Performance:多监视器支持:完结 前言 Lively Wallpaper是一款开源的视频壁纸桌面软件,类似 Wallpaper Engine,兼容 Wal…...
![](https://www.ngui.cc/images/no-images.jpg)
187.【2023年华为OD机试真题(C卷)】阿里巴巴找黄金宝箱(I)(贪心算法-JavaPythonC++JS实现)
请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】阿里巴巴找黄金宝箱(…...
![](https://img-blog.csdnimg.cn/direct/4e78fe542d664112afba3424dfa7db61.png)
Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch
Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch 安装 Nvidia 显卡驱动安装 CUDA安装 cuDNN安装 VSCode安装 Anaconda 并更换源在虚拟环境中安装 GPU 版本的 PyTorchReference 这篇博文主要介绍的是 Ubuntu22.04 系统中软件、显卡驱动、cuda、cudnn、pytorch 等软件和…...
![](https://img-blog.csdnimg.cn/direct/0f6c2e1d75144be8a5282b45fcff7afb.png)
基于矩阵乘的CUDA编程优化过程
背景:网上很多关于矩阵乘的编程优化思路,本着看理论分析万遍,不如实际代码写一遍的想法,大概过一下优化思路。 矩阵乘的定义如下,约定矩阵的形状及存储方式为: A[M, K], B[K, N], C[M, N]。 CPU篇 朴素实现方法 按照…...
![](https://img-blog.csdnimg.cn/direct/9d7252f6d8c248908fd7686f23dba795.png)
layuiadmin新建tabs标签页,点击保存,打开新的标签页并刷新
用的layuiamin前端框架 需求:新增的页面为一个标签页,保存后,需要刷新列表 1、新建customMethod.js文件,自定义自己的方法 layui.define(function (exports) {var $ layui.$var customMethod {// 表单点击保存后,…...
![](https://www.ngui.cc/images/no-images.jpg)
Rxjs概念 学习
RxJS 是一个流式编程库,用于处理异步数据流和事件流。它基于观察者模式和迭代器模式,提供了丰富的操作符和工具,用于处理和操作数据流。RxJS 的核心概念包括可观察对象(Observable)、观察者(Observer&#…...
![](https://www.ngui.cc/images/no-images.jpg)
pillow像型学操作(转载笔记) --- 西北乱跑娃
Opencv、Matplotlib(plt)、Pillow(PIL)、Pytorch读取数据的通道顺序 需注意:Pillow加载图像后的尺寸是二维,图形化是三维,但无法打印三维尺寸。 详细区别: Opencv:uint8的ndarray数据,通道顺序[h, w, c],颜色通道BGR。 导入模块:import cv2 (1)cv2.imread() (2)cv…...
![](https://img-blog.csdnimg.cn/direct/da198316cc9142248d122cede52540a1.png)
JS作用域链和闭包
JS作用域链和闭包 引题作用域链词法作用域闭包思考题 闭包如何回收 引题 有没有人跟我一样,面试中要是问基础,最怕遇到的就是闭包问题,闭包在 JavaScript 中几乎无处不在,理解作用域链是理解闭包的基础,同时作用域链和…...
![](https://img-blog.csdnimg.cn/direct/1cb5524ecae8431398caedcc156c1825.png#pic_center)
【Spring实战】15 Logback
文章目录 1. 依赖2. 配置3. 打印日志4. 启动程序5. 验证6. 调整日志级别7. 代码详细总结 Spring 作为一个现代化的 Java 开发框架,提供了很多便利的功能,其中包括灵活而强大的日志记录。本文将介绍如何结合 Spring 和 Logback 配置和使用日志,…...
![](https://img-blog.csdnimg.cn/direct/3b0178fd73f74a4c9c8bdc119c638fdc.png)
Stable Diffusion WebUI安装合成面部说话插件SadTalker
SadTalker可以根据一张图片、一段音频,合成面部说这段语音的视频。图片需要真人或者接近真人。 安装ffmpeg 下载地址: https://www.gyan.dev/ffmpeg/builds/ 下载ffmpeg-git-full.7z 后解压,将解压后的目录\bin添加到环境变量的Path中。 在…...
![](https://img-blog.csdnimg.cn/direct/15c3b72d72b5431290c95040cd84ce89.gif)
CSS 纵向顶部往下动画
<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-top: isAnimating }"><!-- 元素内容 -->&…...
![](https://www.ngui.cc/images/no-images.jpg)
科普:敏捷估算为什么用斐波那契数列
被一个同学问:敏捷估算为什么用斐波那契数列?有什么意义? 简单说说我自己的简介: 敏捷开发中使用斐波那契数列来估算的原因是,斐波那契数列可以用于估算任务的难度级别,并帮助团队预测完成任务所需的时间…...
![](https://img-blog.csdnimg.cn/img_convert/45a332b62112b8da386a08afede49c66.png)
HarmonyOS资源分类与访问
资源分类与访问 应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同…...
![](/images/no-images.jpg)
最火的二十个电商app/广州网络推广seo
这里总结了常见的一些mysql错误,会不断更新。 要求大家将如下错误的每个单词都知道是什么意思,方便调错。 --1.语法错误:SQL syntax [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL …...
![](/images/no-images.jpg)
泰安手机网站建设/seo友情链接
我尝试了这个例外的可用解决方案。我清除了整个本地存储库,也maven update但仍然收到此错误。我检查了JRE和tomcat java versions的版本都是相同的。堆栈跟踪如下:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Fa…...
![](https://img-blog.csdnimg.cn/img_convert/7d88012c5c5e51328152e08b5c3d2950.png)
wordpress登录页面图标/网页模板大全
一、SQL语言查询选修了全部课程的学生的学号和姓名。 两种解决途径: 第一种: 我们可以表示为在SC表中某个学生选修的课程数等于C表中课程总数。相应的SQL语言如下: select S#,SNAME from S where S# in (select S# from SC group by S# --根据Sno分组,统计每个学生选修了几…...
![](https://img-blog.csdnimg.cn/img_convert/774929cdfd0c76752d60128e195857aa.png)
网页商城设计商城网站设计案例/代发新闻稿的网站
之前重点介绍了 Zynq All Programmable SoC 处理器系统 (PS) 中可用的私有定时器和看门狗。Zynq SoC 的 PS 还包含两个三重定时器计数器 (TTC),可提供更加灵活的定时资源。您可以将这些 TTC 用作定时器或在 Zynq SoC 的 EMIO 或 MIO 引脚上输出波形。介绍下图取自Zy…...
网站首页导航栏怎么做/百度在线提问
苏生不惑第133 篇原创文章,将本公众号设为星标,第一时间看最新文章。今天就是 520 了,还没对象的朋友看看我之前的文章 听说 520 你还没对象,来这里看看关于b站之前已经写过了下列文章:那些我关注的 b 站 up 主bilibil…...
![](http://oss.im2maker.com/uploadfile/2017/0811/20170811022100992.jpg?x-oss-process=image/resize,m_fill,w_1200)
网站空间做邮箱/东莞网站到首页排名
看来英特尔势必要和英伟达在自动驾驶领域争个高低。 刚刚完成对Mobileye的收购工作,英特尔方面再度在自动驾驶领域加码,与几家大型科技公司和汽车厂商共同成立的一个“大数据”联盟——“汽车边缘计算联盟”(Automotive Edge Computing Cons…...