软件体系架构复习二

呃,前面复习的忘了发了。从后面开始吧
Unit 11--18
复习Tips:
重点在于对概念的理解,概念间关系的理解。
对具体的识别方法,处理方法等根据自己的兴趣做一些了解即可 。
如:关于 软件架构脆弱性的成因 ,
首先要知道软件脆弱性是什么,然后知道"软件架构的脆弱 性通常与软件架构的风格和模式有关",
至于具体不同架构模式的脆弱性表现,只要根据兴趣了解一下就可以,需要举例子时能举出来即可。 这八章均是如此要求。

一、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)软件脆弱性的成因及危害

相关推荐
0点51 胜9 分钟前
[MediaForge] 架构之美:依赖倒置原则与好莱坞法则在微内核中的实战
架构·依赖倒置原则
码点滴9 小时前
什么时候用 DeepSeek V4,而不是 GPT-5/Claude/Gemini?
人工智能·gpt·架构·大模型·deepseek
heimeiyingwang9 小时前
【架构实战】状态机架构:订单/工单状态流转设计
观察者模式·架构·wpf
小江的记录本10 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
一切皆是因缘际会11 小时前
AI数字分身的底层原理:破解意识、自我与人格复刻的核心难题
大数据·人工智能·ai·架构
jinanwuhuaguo13 小时前
(第二十七篇)OpenClaw四月的演化风暴:OpenClaw 2026年4月全版本更新的文明级解读
大数据·人工智能·架构·kotlin·openclaw
James_WangA13 小时前
我给 AOI 设备装了一个 Agent,然后发现工具注册才是最难写的
架构·github
James_WangA13 小时前
产线上跑 Agent:LLM 挂了不是 500 错误,是停线
架构·github
生成论实验室14 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构
SamDeepThinking14 小时前
并发量就算只有2,该上锁还得上呀
java·后端·架构