软件体系结构复习笔记--西安电子科技大学

可用性 可修改性 安全 性能 可测试性 易用性

软件体系结构

软件体系结构以组件交互的方式定义的系统,说明需求与系统之间的对应关系,描述系统级别的可伸缩性,能力,吞吐量,一致性和兼容性等属性。软件体系结构由组件,连接件,约束组成。

软件体系结构风格

1描述一类体系结构

2独立于实际问题,强调软件系统中通用的组织结构

3在实践中被多次设计,应用

4是若干设计思想的综合

5具有被熟知的特性,可以复用

体系结构描述语言ADL

ADL是在底层语言模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架,基于语义工具为体系结构的表示,分析,演化,设计过程等提供支持。其三个基本元素是:构件,连接件,体系结构配置。

质量属性Quality Attribute

主要是用来描述软件的非功能性需求。包括可用性,可修改性,性能,安全性,可测试性,易用性。

ATAM分析方法

通过业务驱动,质量属性,情景等方面进行软件体系结构评估方法。

ADD设计方法

逐步的方法,用来系统化地为一个系统生成第一个体系结构设计。

可用性Availability

软件质量属性的一种,关心系统故障和它所带来的后果。

易用性

关注用户完成需要工作的容易程度,为用户提供支持。

学习系统特性,当用户不熟悉系统某方面功能的操作,怎么让用户学习的更容易。高效地使用系统功能。

软件体系结构三大要素

Component组件:具有某种功能的可重用软件模块。(计算单页和存储)

connector连接件:组件之间的相互关系,可以是过程调用,管理和消息等。(管道pipe,过程调用procedure-call,事件广播event broadcast。复杂连接件有客户-服务器(client-server)通信协议,数据库和应用之间SQL连接等)

constraint约束:组件和连接件的拓扑逻辑和约束。

数据流体系结构风格 data flow system

数据到达时被激活,无数据不工作

数据的可用性决定《处理单元》是否执行

系统结构由数据在各处理之间的有序移动决定。

在纯数据流系统中,处理之间除了数据交换没有任何其他的交互。

基本构件:数据处理。

构建接口:输入端口和输出端口。

计算模型:从输入端口读数,经过计算/处理,然后写到输出端口。

连接件:数据流

单向,通常是异步,有缓冲。

接口角色:reader和writer。

计算模型:数据从一个处理的输出端口传送到另一个出入端口。

模式:

近似线性数据流     有限度内的循环数据流

批处理体系解构风格

每个步骤是一个独立的程序

每一步必须在前一步结束后才能开始

数据必须完整,以整体进行传递

管道-过滤器体系结构风格  Pipe-and-Filter

软件体系结构复习笔记--西安电子科技大学_第1张图片数据源不断产生,系统对数据进行若干处理。

处理由Filter过滤器构件实现

数据传输由管道Pipe负责

特性:数据到来时就被处理而不是收集后处理,未被消耗完全时,输出就会产生。

五种类型:增加,删减,转换,分解,合并。

过滤器是独立的个体。无上下文消息,不保留状态,对其他过滤器没有影响。

优点:软件复用,维护增加性能,并行执行。

缺点:不适合处理交互应用,性能不高。时间消耗在格式转换,不存在数据共享。

调用返回风格

主程序/子程序风格 即功能分解

面向对象 信息隐藏

层次解构 只能和相邻的进行通信

步骤:模块分解,封装(信息隐藏),数据抽象,面向对象(封装,交互,多态,继承,复用和维护)。

变种:client-server 进程是对象,不对称:客户端知晓服务器,反否。

Tiered C/S模式扩展。

Components 支持动态配置的专门协议

计算机网路:层次解构

每层为上一层提供服务,只能与临近层连接。细分问题逐步解决。

层层相调。

双层客户端/服务器风格

客户端进行交互,服务器进行数据管理。缺点:客户端臃肿。

三层客户端/服务器风格

表示层,功能层,数据层。 逻辑独立。

B/S为三层特例。

客户端使用http浏览器即可。安全性低(SQL注入,CSRF,XSS)

服务器负荷大

以数据为中心的体系结构风格

例子:

注册表(Windows Registry)整理后缀为.INI的文件形成共享仓库。

软件体系结构复习笔记--西安电子科技大学_第2张图片

剪贴板(Clipboard)短时间数据存储在文档或应用间进行数据传输交换的软件程序。Copy paste

仓库体系风格结构

仓库是存储和维护数据的中心场所

中心数据结构为当前数据状态

一组对中心数据进行操作的独立构件

连接件:仓库和独立构件之间的交互 两种模式:数据库方式:流入事务类型进行触发执行。黑板模式:触发当前状态中心数据结构选择需要执行的过程

典型应用场合:数据库

黑板体系结构风格

把一个大问题分成若干个子问题

每个求解程序具有某一特定领域的知识

应用场景:人工智能

虚拟机风格

解释器interpreters

规则系统rule-based systems

事件系统

事件驱动

隐式调用 特点:触发者不知道哪些构件会被影响,,相互独立。

不能假设构件处理顺序。事件发布和注册实现关联。

事件触发可能会形成事件链子。

事件委派 dispatcher module

全广播式:无目的的广播,接受者自行决定处理与抛弃。

选择式广播:事件只发送特定模块

选择广播的两种策略:基于事件被执行的方式

体系结构描述方法

输出构件(加工数据),数据构件(被加工的信息),连接构件(连接不同的组件)。

描述文件

读者角度写,避免重复,避免歧义,记录理由,保持文档的时效性。

4+1视图从以上五个角度来描述

软件体系结构复习笔记--西安电子科技大学_第3张图片

可用性-----------------------------------------------------
质量属性 属于 非功能性需求不被功能所决定

功能特性必须给各个模块赋予正确的职责,正确的资源和正确的调度顺序。

质量属性之间可能相互抑制,保证优先级高的质量属性。

设计实现部署3方面全部满足。

质量属性的6个组成部分:

刺激源 source 谁造成的刺激

刺激   stimulus 一个影响系统的因素

制品 artifact 被影响的部分

环境 environment 刺激发生时系统所处的状态

响应 response 刺激产生的结果

响应衡量指标 response measure 如何评估响应

可用性的含义-----------------------------------------------

1当用户使用系统时,系统可用的概率。
2提前确定的停机维护不计入。

关注点:

是否发生了故障 和 故障的后果

衡量指标:

可用百分比   修复故障所需时间  平均无故障时间

刺激源

故障的迹象

刺激

系统出错/崩溃 结果不准时 错误结果

制品

计算 or 存储 or 网络传输

环境

正常状态 or 亚健康状态

响应

记录日志,关闭系统,通知管理员或其他系统

响应衡量指标

故障时间百分比 修复故障所需时间,平均无故障时间

提高可用性策略

Tactics 刺激 à 控制响应的策略 à 响应

方向1 故障检测 方向2 故障修复 方向3 故障避免

故障检测

Ping/echo Heartbeat Exceptions

故障修复

投票 主动冗余类似于NPM和CNPM

被动冗余 A完成运算把结果发送给B ,再把B的状态更新为新的A的状态。A故障时,首先需要确认B状态最新。

重新上线前,都需要进行状态同步。

可修改性---------------------------------------------------

Modifiability

关注点:修改成本  哪部分被修改  修改发生的时间  修改由谁执行

衡量指标:修改完成的时间 修改所花的人力/经济成本

刺激源: 谁进行修改

刺激:具体修改

制品:修改系统的功能or UI or 交互的其他系统。

环境:何时进行修改? 设计期还是开发期 还是运行期

修改的时间越迟,越不利。

响应:操作人员要理解如何修改,进行修改操作,测试,部署。

响应衡量指标:时间,成本。

提升可修改性的策略

方向1限制修改范围 方向2 延迟绑定时间

限制修改范围:

模块高内聚,低耦合

考虑到可能发生的修改

让模块通用

延迟绑定时间:

配置文件

发布-订阅模式

多态

性能-------------------------------------------------------Performance

关注点:系统响应时间的速度,和事件数量和到达模式有关。

事件的来源:用户的请求,本系统内部,系统外部。

刺激源:可能来自系统内部或外部

刺激:事件到来 à 响应

制品:系统提供的服务

环境:系统所处不同模式(正常/紧急/超载)

响应:系统到来的事件,可能会导致状态改变

响应衡量指标:处理事件所花的时间,单位时间内处理事件数目,处理错误率。

提升性能的策略-----

目标:在限定时间内响应事件,获取资源 + 使用资源

方向1 资源需求 方向2资源管理 方向3资源仲裁

提高计算效率:

使用更算法

减少处理事件时对资源的占用

减少要处理数据总量:

控制事件速率

抽取一部分请求处理

限制执行时间:

限制待处理事件队列长度:

利用并发机制:

增加可用资源

先来先服务;固定优先级调度;动态优先级

安全性-----------------------------------------------------

Security

关注点:保证合法用户使用的前提,抵抗对系统的攻击。

攻击(威胁):试图突破安全性防护的尝试。

安全性的不同方面:
不可否认性   私密性  完整性  保证性  可用性  审计

刺激源:攻击可能由人或其他系统发起

刺激:系统攻击 常用形式:窃取/修改信息,获取超权限的服务,降低系统可用性

制品:系统所提供的服务或系统中的数据

环境:系统处于不同的情况下(联网是否,上下线,防火墙内外)

响应:合法用户正常使用,拒绝非法用户 对攻击有威慑

响应衡量指标:发起攻击难度,从攻击中恢复的难度。

提高安全性的策略-----

方向1 抵抗攻击 方向2 检测攻击 方向3 从攻击中恢复

抵抗攻击:用户证实,用户授权,维持数据保密性/完整性,减少暴露

,限制访问,软件和人结合,恢复状态,攻击者的识别。

可测试性---------------------------------------------------Testability

关注点:让软件BUG容易检测,验证软件产品与其需求匹配,

最小成本和工作量来验证软件质量。

重要性:40%的成本用来测试 大型软件项目出故障 à 严重后果。

刺激源:测试人员。

刺激:系统开发到达里程碑,分析/设计/编码/集成阶段的结束,或者完成开发。

制品:设计,代码,系统

环境:系统设计/开发/部署/正常运行时候。

响应:进行测试可以观察到测试结果。无法被观察时,测试难度大。

响应衡量指标:白盒测试覆盖率

提升可测试性的策略:方向1黑盒测试 方向2 白盒测试

总体思路:提供输入 + 捕获输出

记录/回放   把接口和实现分离开

APP/WEB UI测试 接口测试 性能测试

易用性-----------------------------------------------------Usability

关注点:让用户使用软件的难度降低。

不同方面:方便入门,提高用户使用软件效率,降低用户出错影响,

适应用户需求,提高用户自信和舒适度

刺激源:终端用户

刺激:终端用户希望学习系统的使用,提高系统使用效率,减少出错

制品:整个系统

环境:系统处于运行或者配置

响应:系统响应用户的要求

响应衡量指标:用户完成时间,用户出错次数,用户满意度,用户操作成功率

提高易用性的策略:

目标:让用户轻松 方向1 运行时策略 方向2 设计时策略

系统猜测用户要完成的任务---输入法联想,搜索引擎联想

系统给用户适当的反馈---给予用户任务完成进度

提供一致的体验---适应不同的用户—提供不同的鼠标DPI

支持撤销操作

把用户界面和其他操作分离

体系解构评估

开发成本 满足需求 潜在危机

你可能感兴趣的:(考试复习)