系列文章

一、程序员进阶架构师的基础知识【计算机基础】
二、程序员进阶架构师的基础知识【操作系统】
三、程序员进阶架构师的基础知识【计算机网络基础】
四、程序员进阶架构师的专业知识【软件工程基础】
五、程序员进阶架构师的专业知识【UML建模工具】
六、程序员进阶架构师的专业知识【系统分析】
七、程序员进阶架构师的专业知识【系统设计】
八、程序员进阶架构师的专业知识【架构设计】
九、程序员进阶架构师的专业知识【架构质量及评估】
十、程序员进阶架构师的专业知识【软件测试及维护】

文章目录

  • 系列文章
  • 前言
  • 质量属性
  • 可用性
    • 可用性策略
    • 高并发高可用技术
  • 性能
    • 性能策略
    • 性能指标
    • 性能评估方法
    • 性能优化
  • 可靠性
    • 可靠性指标
    • 串/并联系统可靠度
    • 可靠性技术
  • 安全性
    • 安全体系结构
    • 安全性策略
    • 安全性技术
  • 可修改性
    • 可修改性策略
  • 架构评估方法
    • SAAM方法
    • ATAM方法
    • CBAM方法

前言

对架构设计的工作进行了详细描述,了解了在架构设计的过程中使用什么方法,选用什么架构风格,除此之外,架构设计中还有一项非常重要的工作,就是对架构的质量也就是非功能性需求进行分析和设计。本文围绕质量属性进行展开描述,详细了解各个质量属性以及在系统中的应用。

质量属性

质量属性属于系统架构中的非功能性需求,并不被功能所决定。一个系统想要更好的运行离不开对非功能性需求进行分析和设计。质量属性如下:

不同的软件项目,关注不同的质量属性,比如保密系统注重于安全,电商的项目注重于性能及可用性。同时质量属性之间可能会相互抑制,比如安全性提升了性能会有所下降。

质量属性通过质量场景描述。比如“在并发用户数量为1000人时,用户的交易请求需要在0.5秒内得到响应”。质量场景的6个组成部分,描述系统如何对刺激做出响应:

  • 刺激源:谁造成的刺激。
  • 刺激:一个响应系统的情况。
  • 制品:系统被刺激的部分。
  • 环境:刺激发生时,系统所处的状态。
  • 响应:刺激所产生的结果。
  • 响应度量指标:如何评估响应。

可用性

可用性是系统正常运行时间的比例。质量场景6个组成部分在可用性的含义如下:

  • 刺激源:系统内部外部的故障。
  • 刺激:系统出错、系统崩溃(反复出错)、给出结果不及时、给出错误结果。
  • 制品:计算或存储或网络。
  • 环境:正常状态、降级模式。
  • 响应:通知管理员或其他系统、关闭系统,系统在维修期间不可用。
  • 响应度量指标:故障时间百分比、平均故障修复时间、平均无故障时间。

可用性策略

  • 错误检测

    • 心跳:被监控组件定期向监控的组件发出心跳消息。若连续未收到的心跳信号到了一定的数目,则认为相应的系统已经出现故障。
    • Ping/echo:监控组件不定期向被监控的组件发出ping消息,并根据收到的echo消息做出响应。
    • 异常:需要编程语言的支持。如抛出+捕获+处理。
  • 错误恢复
    • 表决:多个冗余的组件,用同一或不同的算法来完成一个任务,如果计算结果不同,则由表决器按照算法(少数服从多数的原则)确定。
    • 主动冗余:服务器A和B并行完成同样的运算,它们的状态时刻保持一致,平时只取A算出的结果。当A出现故障时,系统可以迅速切换到B。
    • 被动冗余:服务器A完成运算后,在一定时间内通知服务器B进行更新。
    • 重新同步:主动冗余和被动冗余都需要在重新上线前,做状态的重新同步。
    • 被检查点/回滚:定期保存,便于恢复。
  • 错误避免
    • 服务下线:在某个服务不可用时要及时下线服务,避免影响其他服务使用。
    • 事务:同一个事务中多个操作需要连续完成,避免造成结结果不一致。

高并发高可用技术

  1. CDN(Content Delivery Network)内容分发网络。尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更完整。通过在网络各处部署节点服务器,构成在现在互联网基础之上的一层只能虚拟网络,CDN系统能实时根据网络流量和各节点的连接、负载情况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的节点上。CDN因解决分布、宽带、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景,使用户就近取得所需内容,解决Internet网络拥挤问题,提高用户访问网站的响应速度和成功率。因为很难自建大量的站点,所以通常使用CDN运营商的服务,目前国内服务商较少,流量计费昂贵。
  2. 负载均衡技术
负载技术 描述 优点 缺点
基于http的负载均衡 根据用户http请求,计算出一个真实的web服务地址,并将该地址写入http重定向响应中返回浏览器,浏览器重新进行访问。 比较简单。 浏览器需要两次请求服务器才能完成一次访问,性能比较慢。
基于DNS的负载均衡 网络DNS详细了解 将负载均衡工作交给DNS,省却网站管理员维护负载均衡的麻烦,同时DNS还支持基于地理位置的域名解析,将域名解析成距离用户最近的一个服务器地址,加快访问速度,改善性能。 DNS是多级解析,每一级都可能有缓存记录,当某一服务下线后,该服务器对应的DNS记录可能仍然在,导致分配到该服务器的用户访问失败,负载均衡效果不是很好。
基于NAT(Network Address Translation网络地址转换)的负载均衡 将一个外部ip地址映射多个内部ip地址,对每次连接请求动态转换为一个内部的地址,从而达到负载均衡目的。 在响应请求时速度较反向代理速度快 当请求数据较大(视频)时速度较慢。
反向代理负载均衡 反向代理作用在服务端,是一个虚拟的ip(VIP),对于用户的一个请求,通过反向代理服务器会转发到多个后台服务器处理。 部署简单,处于http协议层面。 web服务器ip不用暴露在外,不需要使用外部ip,而代理服务器作为沟通桥梁需要配置双网卡、内外两个ip。
负载算法 描述 优点 缺点
轮询法 将请求按顺序轮流地分配到每个节点上,不关系每个服务器实际的连接数和当前的系统负载。 简单高效,易于水平扩展 。 不考虑机器的性能问题,根据木桶最短木板理论,集群性能瓶颈更多会受到性能差的服务器影响 。
随机法 将请求随机地分配到每个节点上 。由概率统计得知,随着客户端调用服务器的次数增多,其实际效果越来越近于平均分配,也就是轮询的效果 和轮询相似 和轮询相似
源地址哈希法 根据客户端的ip地址,通过哈希函数计算到一个数值,用该数值对服务器节点数量进行取模运算,得到的结果便是访问节点的序号。同一个IP地址的客户端,当后端服务列表不变时,它每次都会落到同一台服务器进行访问 相同的IP每次落在同一个节点,可以人文的干预客户端的请求方向,例如灰度发布。 如果某个节点出故障,会导致节点上的客户端无法使用,无法保证高可用。
加权轮训法 不同服务器的配置可能和当前系统的负载并不相同,因此他们的抗压能力也不同。给配置高、负载高的服务器配置高的权重,让其处理更多的请求。给配置低、负载低的服务器配置低的权重,降低其系统负载,加权轮询可以很好处理该问题,并将请求顺序且按照权重分配到后端。
加权随机法 与加权轮训法一样,不同的是,它是按照权重随机请求后端服务器,而非顺序。
键值范围法 根据键的范围负载,比如0到10万的用户请求第一个节点,10-20万的用户请求第二个节点…以此类推 容易水平扩展,随着用户数量增加,可以增加节点而不影响就数据。 容易负载不均衡,比如新用户活跃度高,旧用户活跃度低,那么压力就全在新增的节点上,旧节点资源浪费。而且也容易单点故障,无法满足高可用。
最小连接法 根据每个节点当前的连接情况,动态的选取其中积压连接数最少的一个节点处理当前请求,尽可能的提高服务器的利用效率,将请求合理的分流到每台服务器。俗称闲的人不能闲着,大家一起动起来 动态,根据节点状况实时变化。 提高复杂度,每次连接断开时需要重新计数。
最快响应法 根据请求的响应时间,来动态的调整每个节点的权重,将响应速度快的服务节点分配更多请求,响应慢的分配少的请求。俗称能者多劳。 动态,实时变化,控制的力度更细 复杂度更高,每次需要计算请求的响应速度。
观察模式法 综合了最小连接数和最快响应度,同时考量这两个指标数,进行一个权重的分配

性能

性能是系统处理任务所需要时间或单位时间内的处理量。质量场景6个组成部分在性能的含义如下:

  • 刺激源:来自系统内部或外部。
  • 刺激:事件(定期、随机、偶然事件)。
  • 制品:系统所提供的服务。
  • 环境:正常模式、超载模式。
  • 响应:可能改变系统状态。
  • 响应度量指标:处理事件所花时间、单位时间内处理事件的数目、处理的错误率/丢失率。

性能策略

  • 资源的需求

    • 减少处理事件时对资源的占用:改进算法减少计算开销。
    • 减少处理事件的数量:控制事件到来的速率。
    • 控制资源的使用:限制执行时间、限制队列大小。
  • 资源的管理
    • 并发机制:采用多核、多线程计算任务。
    • 增加资源:增加计算、存储、带宽资源。
  • 资源仲裁
    • 先来先服务、固定优先级或动态优先。

性能指标

性能指标时软、硬件的性能指标集成,包括计算机、路由器、交换机、网络、操作系统、数据库、WEB服务器等。

性能指标 具体能容
计算机 时钟频率(主频)、运算速度、运算精度、内存的存储容量、存储器的存储周期、数据处理速率、吞吐率、各种响应时间等。
网络 设备级性能指标、网络级性能指标、应用级性能指标、用户级性能指标、吞吐量。
操作系统 系统的可靠性、系统的吞吐率、系统响应时间、系统资源利用率、可移植性。
数据库管理系统 数据库的大小、表的数量、大小以及表中行的大小和行的数量、数据库所允许的索引数量、最大并发事务处理能力、负载均衡能力、最大连接数等。
WEB服务器 最大并发数、响应延迟、吞吐量

计算机等处理速度和许多因素有关,例如:机器的主频、执行什么样的操作以及主存的速度等。

  • 主频:主频又称时钟频率,很大程度上决定了计算机的运算速度。CPU的工作节拍是由主频控制的,主时钟不断产生固定频率的时钟脉冲就是CPU的主频。主频=外频✖️倍频
  • CPU时钟周期:一个时钟脉冲所执行的时间。
  • 机器周期:取指令、存储器读、存储器写,每一项操作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个时钟周期完成。
  • CPI:每条指令执行所用的时钟周期是一个平均值。在现代高性能计算机中,由于采用各种并行技术,使指令执行高度并行化,常常一个系统时钟周期内可以执行若干个指令。MIPS(Million Instructions Per Second,每秒百万条指令平均执行速度):指令数/(执行时间✖️106)=主频/CPI。

性能评估方法

方法 描述
时钟频率法 计算机的时钟频率在一定程度上反应机器速度。时钟频率越高,就算集的工作速度就越高
指令执行速度法 计算机发展初期常用指令执行速度法衡量计算机速度,因为加法指令的运算速度大体上可以反应出乘法、除法等其他算数运算的速度。
等效指令速度法 通过各类指令在程序中所占比例进行计算后得到速度。
数据处理速率法 采用计算PDR值衡量计算机性能,PDR值越大性能越好。
综合理论性能法 首先计算出处理部件每个计算单元的有效计算率,再按不同字长加以调整,得出理论性能。
基准程序法 以上的评估方法主要针对CPU的性能,但没有考虑诸如I/O、操作系统、编译程序的效率对系统的性能的影响,因此很难准确评估计算机系统的实际性能。把应用程序中用到最多、最频繁的和核心程序作为评估计算机系统性能的标准程序,称为基准测试程序

性能优化

对于数据库系统,造成性能不好的原因可能有数据库连接方式、系统应用架构、数据库设计、数据库管理、网络通信等原因,基于这些原因可以采用修改应用模式、建立历史数据库、利用索引技术和分区技术等优化措施,需要调整的参数主要包括CPU和主存使用情况、数据库设计、进程或线程状态、磁盘剩余空间、日志文件大小等。
对于WEB应用系统,性能瓶颈可能有客户端程序、网关接口、数据库连接等,可以采用的措施有改善应用程序的性能和数据库连接、进行流量管理与负载均衡、使用WEB交换机和WEB缓存等,需要调整的参数包括系统的可用性、响应时间、并发用户数以及占用的系统资源等。

可靠性

可靠性是系统在规定时间及规定环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。

可靠性指标

  1. 平均无故障时间:假设同一型号的1000台机器,在规定条件下运行1000小时,其中有10台出现故障,这种计算机的可靠性R为(1000-10)/1000=0.99,失效率为10/(1000✖️1000)=1✖️10-5,MTTF(Mean Time To Failure,平均无故障时间)=1/(1✖️10-5)=105
  2. 平均故障修复时间:修复率是指单位时间内可修复系统的平均次数。MTTR(Maximum Time to Repair)=1/U。
  3. 平均故障间隔时间:因为两次故障之间必然有修复行为,因此,平均故障间隔时间(Mean Time Between Failure,MTBF)中应包含MTTR,于是有:MTBF=MTTR+MTTF,在实际中MTTR很小,所以通常认为MTBF≈MTTF。

可用性可以通过可靠性的指标进行计算=MTTF/MTBF✖️100。

串/并联系统可靠度

假设一个系统由n个子系统组成,当且仅当所有的子系统都有正常工作时,系统才能正常工作,这种系统称为串联系统。如果个别子系统出现故障,并且系统不受个别子系统的影响依旧可以正常工作,这种系统称并联系统
串联系统中如果各个子系统的可靠度分别用R1,R2…Rn表示,则系统的可靠度为:R=R1✖️R2…✖️Rn。
并联系统中如果各个子系统的可靠度分别用R1,R2…Rn表示,则系统的可靠度为:R=1-(1-R1)✖️(1-R2)…✖️(1-Rn)。

可靠性技术

  1. 冗余技术
    主要冗余技术有结构冗余(硬件冗余和软件冗余)、信息冗余、时间冗余和冗余附加四种。

    • 结构冗余:结构冗余是常用的冗余技术,按其工作方式,可分为静态冗余、动态冗余和混合冗余。

      • 静态冗余:又称屏蔽冗余或被动冗余,常用的有三模冗余和多模冗余。m模冗余由m(m=2n+1,n>1)个相同的子系统和一个表决器组成,经过表决器表决后,m个子系统中占多数相同结果的输出作为系统的输出。
      • 动态冗余:动态冗余又称主动冗余,通过多模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行。
      • 混合冗余:先静态后动态。
    • 信息冗余:信息冗余是在实现正常功能所需要的信息外,再添加一些信息,以保证运行结果正确性的方法。例如检错码和纠错码就是信息冗余。
    • 时间冗余:时间冗余是以时间为成本(降低系统运行速度)为代价以减少硬件冗余和信息冗余的开销来达到可靠性目的。
    • 附加冗余:是指为实现上述冗余技术所需要的资源和技术,包括程序、指令数据,以及存放它们的空间等。
  2. 软件容错技术
    • N版本程序设计:N版本程序设计是一种静态的故障屏蔽技术,采用向前恢复的策略。
    • 恢复块技术:恢复块技术是一种动态的故障屏蔽技术,采用后向恢复的策略。
    • 防卫式程序设计:通过在程序中包含错误检查代码和错误恢复代码,使得一旦发生错误,程序就能撤销错误状态,恢复到一个已知的正确状态中去。
  3. 双机容错技术
    在双机容错系统中,两台服务器一般区分为主系统和从系统,两台服务器互为主从关系。双机容错技术根据服务器工作方式可以有三种工作模式:

    • 双机热备模式:正常情况下,一台服务器处于工作状态,另一台服务器处于监控准备状态。主要缺点在于:备用系统长期处于后备状态,存在一定的就算资源浪费。
    • 双机互备模式:两台服务器均处于工作状态,也就是说,两台服务器同时运行不同应用,但彼此均设为备用系统。当某一台出现故障时,另一台服务器可以短时间内将故障服务求的应用接管过来。主要缺点是对服务器性能要求高。
    • 双机双工模式:双机双工是集群技术的一种形式,两台服务器均处于工作状态,同时为客户端提供服务,保证整体系统的性能,实现负载均衡和互为备份。
  4. 集群技术
    通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。

    • 集群技术形成的必要条件

      • 服务器组:集群系统中,每个节点的计算机必须有自己的CPU、内存和磁盘,每台计算机都需要安装操作系统和集群软件系统。
      • 对外提供的网络:集群系统中的计算机一般采用TCP/IP网络协议和客户端互联,每台计算机的应用服务客户端可以通过网络来获取。
      • 心跳信号通路:高可用性集群系统中,每个节点都必须有心跳接口,用于节点之间的互相监视和通信,以取得计算机的工作状态。
      • 数据共享磁盘阵列:高可用性集群系统中,由于运行的都是关键业务,所以使用的存储服务器都应该是企业级的存储服务器,共享数据磁盘阵列是各个节点计算机之间维持数据一致性的桥梁。
    • 集群技术分类

      • 高性能计算集群:利用高速互联网络将一组PC机连接起来,在并行程序设计和集成开发环境支持下,统一调度和协调处理,实现高效并行处理的系统。
      • 负载均衡集群:负载均衡集群是一种动态均衡,它通过一些工具包实时地分析数据,掌握网路中的数据流量情况,把任务合理分配出去。根据负载均衡的位置不同又可以分为客户端负载均衡(正向代理)和服务端负载均衡(反向代理)。服务端负载均和又可以根据执行负载均衡的方式不同,分为集中式负载均衡和分布式负载均衡。集中式负载方式下,均衡器在集群中的一台计算机中,根据当前集群中的负载状态进行集中式分配。分布式负载方式下有多个均衡器位于集群中的不同计算机中,这些均衡器根据其策略和各节点负载状态以分布式协商的机制分配。
      • 高可用性集群:高可用性集群能够很好的保证各种故障情况下应用系统访问的连续性。系统中任何一个服务都可以运行在任何一个节点,当节点出故障时运行在这个节点上所有服务都可以在定义好的其他节点中启动运行,而客户感觉不到任何变化。

安全性

安全性是系统向合法用户提供服务并组织非法用户的能力。质量场景6个组成部分在安全性的含义如下:

  • 刺激源:(合法、非法)访问敏感资源的人或系统。
  • 刺激:对系统进行攻击或试图破坏系统安全保护。
  • 制品:系统服务或数据。
  • 环境:在线或离线、联网或未联网。
  • 响应:允许合法用户、组织非法用户。
  • 响应度量指标:检测或确定攻击的可能性,从攻击中恢复的难度。

安全体系结构

系统的安全防范体系也是分层次的,不同层次反映了不同的安全问题,根据网络的应用现状情况和结构将层次划分为物理层安全、系统层安全、网络层安全、应用层安全和安全管理。

  • 物理环境的安全性:物理层的安全包括通信线路、物理设备和机房安全等。
  • 操作系统的安全性:系统层的安全来自计算机网络内使用的操作系统的安全。主要表现3个方面:
    • 操作系统本身的缺陷带来的不安全因素,包括身份认证、访问控制和系统漏洞等。
    • 操作系统的安全配置问题。
    • 病毒对操作系统的威胁。
  • 网络的安全性:网络层的安全问题主要体现在计算机网络方面,包括网络层身份验证、网络资源的访问控制、数据传输的保密与完整性、远程接入的安全、域名的安全等。
  • 应用的安全性:应用的安全问题主要由提供服务所采用的应用软件和数据的安全性产生,包括Web服务、电子邮件和DNS等。
  • 管理的安全性:安全管理包括安全技术和设备的管理、安全管理部门、部门和人员的组织规则等。严格的安全管理制度、明确的部门安全职责划分与合理的人员角色配置,都可以在很大的程度上降低其他层次的安全漏洞。

安全性策略

  • 抵抗攻击

    • 用户身份验证:动态密码、一次性密码、生物识别等。
    • 用户授权:对用户的访问进行控制管理。
    • 维护数据的机密性、完整性:给数据和传输过程加密、校验。
    • 限制暴露、访问:关闭无用的端口、自启动的服务、无线路由SSID等。同时设置黑名单、白名单。
  • 检测攻击
  • 从攻击中恢复

安全性技术

  • 数据加密技术

    1. 对称加密算法:对称加密算法也成私钥加密算法,是指加密和解密密钥相同。其优点是具有很高的保密程度,但密钥传输要经过安全的途径。常见的对称加密算法:
    算法 描述
    DES 迭代的分组密码,明文和密文都是64位,使用一个56位的密钥以及附加的8位奇偶校验位。攻击DES的算法主要是穷举法,由于DES密钥长度较短,为了提高安全性,就出现了112位密钥进行三次加密的算法3DES
    IDEA 在DES基础上发展起来,类似于3DES 。IDEA明文和密文都是64位,密钥长度为128位
    1. 非对称加密算法:非对称加密算法也称公钥加密算法。是指加密和解密密钥完全不同,其中一个公钥一个私钥。它的优点在于可以适应开放性的使用环境,可以数字签名与验证。常见的非对称加密算法是RSA,密钥长度为512位,加密解密速度慢,不适合对大量数据加密。
  • 认证技术
    认证又称鉴别或确认,他是证实某事物是否名符其实或是否有效的过程。认证和加密的区别在于,加密用于确保数据的保密性,阻止对手的被动攻击,例如窃听、截取等。认证用于确保数据发送者和接受者的真实性和数据的完整性,阻止对手的主动攻击,例如冒充、篡改和重放等。

    1. 数字签名:数字签名是附加在传输数据上的一些数据,这些数据允许数据的接受者用于确认数据的来源和数据的完整性并保护数据,防止伪造。目前主要用非对称加密算法RSA进行数字签名。数据签名有以下三个特点:1.接受者能够核实发送者对数据的签名,这个过程位鉴别。2.发送者事后不能抵赖对数据的签名,这称为不可否认。3.接收者不能伪造对数据的签名,这称为数据的完整性。
    2. 杂凑算法:杂凑算法是数字签名中最主要的算法,它是礼哟哦那个Hash函数进行数据加密。通常情况下数据经过杂凑算法生成信息摘要,再将摘要进行RSA加密生成签名。常见的杂凑算法有消息摘要算法(Message Digest algorithm 5,MD5)和安全散列算法(Secure Hash Algorithm,SHA)。
    3. 数字证书:数字证书又称数字标识,是由认证中心签发的对用户的公钥认证。数字证书内容包括CA的信息、用户信息、用户公钥、CA签发时间和有效期等。
    4. 身份认证:用户的身份认证是许多以应用系统的第一道防线,其目的是为了识别用户的合法性,从而阻止非法用户的访问。

可修改性

可修改性主要关注的是系统修改的成本、时间、内容和人力。质量场景6个组成部分在可修改性的含义如下:

  • 刺激源:开发者、管理员、用户。
  • 刺激:具体修改的部分。
  • 制品:系统功能或界面或关联的其他系统。
  • 环境:设计期间、开发期间或运行期间。
  • 响应:查找要修改的位置进行修改、测试和部署。
  • 响应度量指标:对修改的成本、时间、影响进行度量。

可修改性策略

  • 局部化修改:

    • 高内聚低耦合:对程序的修改控制在一个模块中
    • 预测变更
    • 使模块通用
  • 防止连锁反应:
    • 信息隐藏:利用面向对象中的可访问性(Public、Protected、Private)。
    • 维持现有接口:接口在不变的情况下,双方都能独立变化。
    • 限制通信路径:用户对系统的访问最好可以达到路径统一。

架构评估方法

业界已开发出多种软件架构评估的方法,按基于的技术手段来看,可 以分为三类:基于调查问卷或检查表的方式、基于场景的方式和基于 度量的方式。

  • 基于调查问卷或检查表的方式:该方式的关键是要设计好问卷或检查表,它充分利用系统相关人员的经验和知识,获得对架构的评估。 其缺点是在很大程度上依赖于评估人员的主观推断。
  • 基于场景的方式:基于场景的方式包括架构权衡分析法 (Architecture Tradeoff Analysis Method,ATAM)和软件架构分析方法(Software Architecture Analysis Method,SAAM),以及成本收益分析方法(Cost Benefit Analysis Method,CBAM)。通 过分析软件架构对场景(也就是对系统的使用或修改活动)的支持 程度,从而判断该架构对这一场景所代表的质量需求的满足程度。
  • 基于度量的方式:制定一些定量值来度量架构,如代码行数等。要制定质量属性和度量结果之间的映射。

SAAM方法

SAAM是卡耐基梅隆大学软件工程研究所的Kazman等人于1983年提出的一种非功能质量属性的架构分析分析方法,是最早形成文档并得到广泛应用的软件架构分析方法。SAAM的主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估

ATAM方法

架构权衡分析方法ATAM是一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。ATAM可以分为4个主要的活动阶段,包括需求收集架构视图描述属性模型构造和分析架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念。

  • 评估参与人

    • 评估小组:组织内部或外部的、扮演特定的角色。
    • 项目决策者:项目管理人员、重要客户代表、架构师。
    • 项目干系人:模块开发人员、测试人员、用户。
  • 评估活动步骤

    1. 描述ATAM方法:评估小组负责人向参加会议的项目干系人介绍 ATAM评估方法。

    2. 描述业务动机:项目决策者从业务的角度介绍系统的概况。该描述应该包括系统最重要的功能、技术/管理/经济和政治方面的任何相关限制、与该项目相关的业务目标和上下文,主要的项目干系人,以及架构的驱动因素等。

    3. 描述架构:包括技术约束(例如,操作系统、硬件和中间件等)、将与本系统进行交互的其他系统、用以满足质量属性要求的架构方法等。

    4. 确定架构方法:通过理解架构方法来分析架构,在这一步,由架构设计师确定架构方法。

    5. 生成质量属性效用树:评估小组、设计小组、管理人员和客户代表一起确定系统最重要的质量属性目标,并对这些质量目标设置优先级和细化。质量效用树如下图:

    6. 分析架构方法:这一步的主要结果是一个架构方法或风格的列表,与之相关的一些问题,以及设计师对这些问题的回答。通常产生一个风险列表、敏感点和权衡点列表,识别风险、非风险、敏感点和权衡点是进行软件架构评估的重要过程

      质量特性 定义 示例
      敏感点 为了实现某种特定的质量属性,影响一个或多个构件所具有的特性 对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计
      权衡点 指影响多个质量属性,并且多个质量属性来说都是敏感点 改变业务数据编码方式会对系统的性能和安全产生影响
      风险点 某些做法可能有些隐患可能导致一些问题 对系统某业务逻辑的描述尚未达成共识,这可能导致部分业务功能的重复,影响系统的可修改性
      非风险点 某些做法是可行的、可接受的 业务处理时间小于30毫秒,则将请求响应设置成1秒钟是可以接受的
    7. 讨论场景和对场景分级:项目干系人进行两项相关的活动,分别是集体讨论用例场景和改变场景。用例场景是场景的一种,在用例场景中,项目干系人是一个终端用户,使用系统执行的一些功能。一旦收集了若干个场景后,必须设置优先级。评估人员通过投票表决的方式来完成。

    8. 分析架构方法:在收集并分析了场景之后,设计师就可把最高级别的场景映射到所描述的架构中,并对相关的架构如何有助于该场景的实现做出解释。在这一步中,评估小组要重复第6步中的工作,把新得到的最高优先级场景与尚未得到的架构工作产品对应起来。在第7步中,如果未产生任何在以前的分析步骤中都没有发现的高优先级场景,则在第8步就是测试步骤。

    9. 描述评估结果:最后,要把ATAM分析中所得到的各种信息进行归纳,并反馈给项目干系人。ATAM的评估结果包括一个简洁的架构描述、表达清楚的业务目标、用场景集合捕获的质量属性、 所确定的敏感点和权衡点的集合、有风险决策和无风险决策、风险主题的集合。

CBAM方法

CBAM用来对架构设计决策的成本和收益进行建模,它的基本思想是架构策略影响系统的质量属性,反过来这些质量属性又会为系统的项目干系人带来一些收益(称为“效用”),CBAM协助项目干系人根据其投资收益率选择架构策略。CBAM可以看作是ATAM的补充,在ATAM评估结果的基础上对架构的经济性进行评估。

九、软考·系统架构师——系统架构质量及评估相关推荐

  1. 架构师学习笔记(四)架构师线路之系统架构师企业架构师

    架构师线路之系统架构师&企业架构师 系统架构设计师 知识结构 具备的能力 职业定位 工作职责 系统架构设计师 系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄 ...

  2. 计算机毕业设计JAVA软考在线题库系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA软考在线题库系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:L ...

  3. 基于java软考在线题库系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java软考在线题库系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java软考在线题库系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: ...

  4. java毕业设计软考在线题库系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计软考在线题库系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计软考在线题库系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...

  5. Java毕设项目软考在线题库系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目软考在线题库系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  6. 软考—信息项目管理师(信息化和信息系统二)

    摘录自:信息系统项目32小时通关(仅用于学习交流,侵权删!) 接上篇 软考-信息项目管理师(信息化和信息系统一) 应用集成技术 基础知识点 数据库与数据仓库技术 (1)数据仓库是一个面向主题的.集成的 ...

  7. 软考—信息项目管理师(信息化和信息系统一)

    摘录自:信息系统项目32小时通关(仅用于学习交流,侵权删!) 考点分析 本章节主要学习信息.信息化.信息系统.信息系统服务管理.软件工程.面向对象系统分析与设计.应用集成技术.计算机网络技术.信息系统 ...

  8. 视频教程-2020年软考信息系统项目管理师考试基础知识(下)新考纲视频培训课程-软考

    2020年软考信息系统项目管理师考试基础知识(下)新考纲视频培训课程 10年以上软考培训经验,线下培训学员过万人.培训过的课程有:网络规划设计师.网络工程师.信 息系统项目管理师.系统集成项目管理师. ...

  9. .NET 高级架构师0003 架构师之路(2)---架构师的职责

    2 架构师的职责     近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎.我怀着无比崇敬的态度,拜读了一下牛人们的发言.里面有个哥们发起一个话题:"CTO, 你多久没有写程序了?&q ...

  10. 信息系统监理师题库_软考信息系统监理师题库

    软考信息系统监理师题库是一款计算机题库软件,在这里面可以找到海量真题和习题,随时随地都可以离线练习,所有题目都包含答案和详细的题目解析. 软件简介 计算机软考,一个APP,软考科目全覆盖,系统监理师考 ...

最新文章

  1. OpenCV计算机视觉编程攻略之生成椒盐噪声实现
  2. 微型计算机中负数以()存放,130.在微型计算机中,负数常用( )表示。
  3. BDOC generated after customer product id is changed in CRM - CUST_MAT_INF
  4. python `__bytes__`
  5. 数字高程模型和地图——thematicmapping.org译文(一)
  6. java怎么设置颜色_java怎么设置颜色
  7. 新手学堂之有刷/无刷动力电调与马达知识
  8. js中鼠标事件mouseover、mouseenter和mouseleave、mouseout的区别
  9. 对圆柱面的曲面积分_圆柱体的对面积的曲面积分
  10. 彩钢板进行BS 476-3屋顶外露部分防火测试
  11. 有效id和密码_ID和密码恢复
  12. python里面break放在哪_python中break怎么用
  13. k8s paas部署
  14. word自定义多级折叠,自动编码标题【论文框架快速上手】
  15. Hadoop HA集群配置问题记录
  16. 浅拷贝copy(“=”)和深拷贝(“copy.deepcopy()”)
  17. java后台jd_2017春季_京东_Java后端研发岗面经
  18. 迁出X86架构,你准备好了吗?
  19. ups计算软件_什么是UPS?为什么要用UPS?
  20. 用c语言产生随机数的方法

热门文章

  1. 程序员思维修炼读后感
  2. IOS cocoapods镜像源更新
  3. Cookie基础使用
  4. JavaAndroid 基础知识梳理(8) 容器类
  5. GW1NSR-LV4CQN48GC6/I5 FPGA呼吸灯
  6. Codeforces 892 A Greed(水题)
  7. 计算机埃尼阿克的主要元件采用的是,计算机埃尼阿克(ENIAC)的主要元件采用的是()。...
  8. 第一章 Centos 简介与安装
  9. 阻止事件冒泡 -- 在antd-mobile中,拦截点击picker后默认打开行为
  10. SEO中巧用个人博客优化关键字