软件体系架构复习二

呃,前面复习的忘了发了。从后面开始吧
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)软件脆弱性的成因及危害

相关推荐
javaDocker38 分钟前
业务架构、数据架构、应用架构和技术架构
架构
JosieBook2 小时前
【架构】主流企业架构Zachman、ToGAF、FEA、DoDAF介绍
架构
.生产的驴3 小时前
SpringCloud OpenFeign用户转发在请求头中添加用户信息 微服务内部调用
spring boot·后端·spring·spring cloud·微服务·架构
丁总学Java4 小时前
ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
arm开发·架构
ZOMI酱6 小时前
【AI系统】GPU 架构与 CUDA 关系
人工智能·架构
天天扭码12 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
余生H13 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer