软考高级-系统架构师-案例分析题1必做部分主要考点就是质量属性,架构风格,软件架构评估,非功能需求。除了2013年(ESB总线),2014年(设计模式和MVC)没有考以外基本上都涉及到了,下面是我总结的需要进行记忆的纯概念部分知识。
1.质量属性
能够解释各个质量属性的意思,并且能够通过题干分析使用了什么质量属性,知道对应质量属性的架构策略。
- 性能:
性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理事件的个数。
- 可用性:
可用性是系统能够正常运行的时间比例。
- 安全性:
安全性是指系统向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
- 可修改性:
可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力。
- 易用性:
易用性是衡量用户使用一个软件产品完成指定任务的难易程度。
- 功能性:
功能性是系统所能完成所期望工作的能力。
- 可测试性:
可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。
架构设计策略(以下架构设计策略每一个质量属性至少背二种策略):
- 性能:
增加计算资源,改善资源需求(减少计算复杂度),资源管理(并发,数据复制)和资源调度(先进先出队列,优先级队列)
- 安全:
抵御攻击(授权,认证和限制访问),攻击检测(入侵检测),从攻击中恢复和信息审计
- 可用:
心跳,主动冗余,异常,Ping/Echo
- 可修改性:
软件模块泛化,限制模块之间通信,使用中介和延迟绑定等。
2.架构风格
用于描述特定软件系统的组织方式和惯用模式,组织方式表示系统的组成构件和这些构件的组织方式,惯用模式表示众多系统共有的结构和语义(
背
)。
相关架构风格:
常见的架构风格有:数据流风格(批处理风格,管道-过滤器),调用/返回风格(主程序-子程序;面向对象;层次结构);独立构件(进程通信,事件驱动系统);虚拟机风格(解释器,基于规则系统);仓库风格(数据库系统,黑板风格,超文本系统)
(1) 数据流风格
- 批处理风格
构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递。
- 管道-过滤器:
管道-过滤器架构风格中,每个构件都有一组输入和输出,构件接受数据输入,经过内部处理,然后产生数据输出。这里的构件称为过滤器,构件之间的连接件称为数据流传输的管道。
(2) 调用/返回风格
- 主程序-子程序
主程序-子程序架构风格中,所有的计算构件作为子程序协作工作,并由一个主程序顺序地调用这些子程序,构件通过共享存储区交换数据。
- 管道-过滤器和主程序-子程序二者的比较
主程序-子程序在算法变更,功能变更,数据表示变更能力上较差,但是在性能上较优。而管道过滤器在算法变更和功能变更上较优,而在数据表示变更和性能上较差。具体比较情况(+优;-差)如下图所示:
- 面向对象
构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。连接件即是对象间交互的方式,对象是通过函数和过程的调用来交互的。
- 层次结构
构件组成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。通过层次结构,可以将大问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的二层。
(3) 独立构件风格
- 进程通信
构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点对点、异步和同步方式、以及远过程调用等
- 事件驱动
构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中的过程的调用。这种风格中的构件是非命名的过程,它们之间交互的连接件往往是以过程之间的隐式调用(Implicit Invocation)来实现的。基于事件的隐式调用风格的主要优点是为软件重用提供了强大的支持,为构件的维护和演化带来了方便,其缺点是构件放弃了对系统计算的控制。
(4) 虚拟机风格
- 解释器风格
具有运行时系统行为(自)定义与改变能力。一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。其缺点是执行效率较低。
- 基于规则的系统
基于规则的系统包括规则集、规则解释器、规则/数据选择器以及工作内存。
(5) 仓库风格
- 仓库风格
仓库风格常用的二种风格数据库风格和黑板风格,数据库风格构件主要有二大类,一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作。黑板风格主要包括三部分知识源,黑板和控制三部分。知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介;知识源响应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题设有确定性算法的软件中。(信号处理,问题规划和编译器优化等。)
- 管道-过滤器和和仓库风格的比较
管道过滤器在交互方式上是通过顺序结构或有限的循环结构进行交互([]->[]->[]),而数据仓库风格是中间节点为数据仓库,其他节点的操作会通过对中间节点的操作进而操作其他节点,类似于星型结构,就是工具之间无不直接交互,通过数据仓库间接交互。管道过滤器数据结构上是通过数据流式的方式而数据仓库则是文件或模型。管道过滤器对控制结构采用数据驱动的方式,仓库采用业务驱动。管道过滤器进行扩展的时候采用接口适配的方式,而数据仓库采用与数据库仓库进行数据适配。
=这部分还需要从不同角度对多种架构进行比较=
2010年主程序-子程序和管道-过滤器进行比较
并且还需要根据题干填入管道过滤器的示意图:
根据题干的描述架构示意图如下:
2012年就是从交互性,扩展性,数据管理三个角度比较管道过滤器和仓库风格的区别:
答题需要结合题干进行回答:
如果不知道另一个架构风格具体这方面的能力如何,可以使用一些比较适中的词汇。首先公司选择王工说明王工的架构风格在这个方面肯定更加适合,所以就可以偏向于仓库风格进行回答,并且使用比较适中的词汇描述,不要过于太绝对了,如在这种情况下以数据库为中心的架构风格
能够很好地
支持交互式数据处理,而管道过滤器风格则对用户的交互式数据处理支持有限
。(讲究顺势而为
)
还需要对相关数据风格有自己的理解,知道设计过程:
2016年从交互方式,数据结构,控制结构,扩展方法上对管道过滤器与数据仓库进行比较:
2019年从灵活性,可扩展性,性能上对面向对象和基于规则进行比较:
2020年从数据处理方式,系统拓展性,处理性能三个角度对管道过滤器和仓库风格做比较:
2021年从灵活性和可扩展性对解释器,隐式调用,管道过滤器三个风格进行对比和分析:
3.软件架构评估
这部分主要背概念和能分析题干中的风险点,非风险点,敏感点和权衡点。
- 架构风险点:
架构设计中潜在的,存在问题的架构决策所带来的隐患。
- 敏感点:
为了实现某种特定的质量属性,一个或多个构件所具有的特征。
- 权衡点:
影响多个质量属性的特征,是多个质量属性的敏感点。
4.非功能需求
2018年考过一次,需要记忆概念和能够从题干中分析出具体是哪一个非功能需求。
- 操作性需求:
指系统完成任务所需的操作环境要求及如何满足系统将来可能的需求变更的要求。
- 性能需求:
针对系统性能要求的指标,如吞吐率、响应时间和容量等。
- 安全性需求:
指为防止系统崩溃和保证数据安全所需要采取的保护措施的要求,为系统提供合理的预防措施。
- 文化需求:
指使用本系统的不同用户群体对系统提出的特有要求。
相关非功能需求描述如下: