软件体系结构问题整理

本文深入探讨软件架构的核心概念,包括架构的来源、需求分类、架构定义,以及架构设计中的策略与模式。同时,对比了架构与设计、结构的区别,并详细阐述了软件架构的关键活动,如ADD方法、ATAM评估模型和产品线与单一产品的差异。此外,文章还讨论了多种架构风格、模式与视图,以及如何通过多种视图记录架构以揭示不同质量属性。
摘要由CSDN通过智能技术生成

一、概念性问题

1、架构的5个来源

需求、涉众、开发组织、架构师、技术环境

2、需求的3类,每一类的定义

功能性需求,质量需求、约束

功能需求:系统需要做什么,系统应当如何为涉众提供价值。

质量需求:系统应当满足的整个系统的理想特性。

约束:是预定义的设计决策。通过接受设计决策、与其他受影响的设计决策进行协调来满足约束。

3、架构的定义

SEI:是整个程序或计算系统的结构(Structure),包含了程序的元素(Software Elements)和那些外部能看见的元素属性(Properties)和元素之间的关系(Relationship)

IEEE:一个系统的基本组织,包含了了它的所有组件(Components)、组件之间的关系、环境以及指导该系统的设计(Design)和演化(Evolution)的原则(Principle)

4、列举4种tactics

心跳机制:监控系统/服务的可用性,如果不再能收到服务的心跳,则认为服务已经失效/出了故障,可用来提高可用性、可靠性

提高内聚、降低耦合、重构、清晰定义接口:可以提高系统的可修改性,互操作性

提高资源效率,增加资源,控制资源需求、引入并发:系统接收到外部请求后可迅速响应。提高系统性能

时间戳:可用于发现错误序列,尤其是分布式信息传递系统中

事务机制,回滚:便于故障恢复

主动冗余:采用冗余的服务器的机制来保证系统出现故障时不发生可用性缺失。

5、软件架构中的4个活动及各自的输入输出(就是那张颜色丰富的图

确定ASR:发现一些候选ASR

输入:涉众 输出:带优先级的质量属性场景

架构设计:定位ASR,选择、生成和分析设计决策来达成这些质量属性

输入:带优先级的质量属性场景、需求、约束、patterns和tactics 输出:候选views

文档化:设计出来架构后还要让它可被涉众理解和使用

输入:候选view、涉众 输出:选中的views和其结合文本的表示

架构评估:关乎系统成败,有必要花时间确保架构设计可提供需要的东西

输入:涉众、带优先级的质量属性场景 输出:选中的views和其结合文本的表示

二、比较对比问题

1、架构VS设计

1)架构是设计的一部分:架构一定是软件设计,但并非所有的设计都是架构;

2)架构提供了设计的抽象视图,架构是一种high level的设计,是一系列设计决策。

2、架构VS结构

架构包括software elements和它们的外在特性、它们之间的关系。

结构定义了组件接口,但架构还说明组件间的交流和依赖

架构是一种high level的结构,架构定义了结构,结构特性由架构设计决定。

3、软件需求VS质量属性VS架构关键需求(ASR

软件需求 :包括功能需求、非功能需求;非功能需求or架构需求则是QA的替代术语。

质量属性:在功能需求之上,系统应当满足的整个系统的理想特性

ASR:对于架构会产生重大影响的,会对架构设计决策产生关键影响的那部分质量属性。一个质量属性越困难、越重要,越倾向于成为ASR。

4、patterns VS tactics

1)tactics更加简单,使用单一结构或机制来达成单一架构目标

2)patterns是多种相关设计决策进行组合的结果

3)tactics是构建patterns的组成模块

4)大部分patterns由多种不同的tactics组成

5)二者共同构成软件架构的主要工具

5、styles vs patterns vs views

style:定义元素、元素间关系类型和元素用法约束,关注架构方法,不关注具体上下文和问题;=architecture approach

pattern:体现软件系统基本的结构组织模式。关注具体上下文中的问题和具体上下文中如何解决;=(problem

1. 构件:是指语义完整,语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述通信接口和实现代码的复合体。2. 构件模型:是对构件本质特征的抽象描述。3. 构件组装:是指将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。4. 软件体系结构:Hayes Roth认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。5. 面向服务体系结构(SOA):本质上是服务的集合,服务间彼此通信,这种通信可能是简单地数据传送,也可能是两个或更多的服务协调进行某些活动。6. 可靠性:是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统特性的基本能力。7. 可修改性:是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。可修改性包括:可维护性、可扩展性、结构重组、可移植性。8. 敏感点:是一个或多个构件(和/或构件之间的关系)的特性。9. 权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点。10. 软件产品线:就是在一个公共的软件资源集合基础上建立起来的共享同一个特性集合的系统集合。11. 框架:是封装了特定应用族抽象设计的抽象类的集合,框架又是一个模板,关键的方法和其他细节在框架实例中实现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值