Skip to content

案例分析(基于2015-2022)

题型:

  • 1道必选+4选2
  • 每道题满分25分
  • 考试时间为90分钟

必选

考察知识点为:软件架构设计、系统设计、软件架构评估

软件架构设计

质量效用树:

  • 性能:资源调度、并发
  • 安全性:追踪审计、限制访问、用户授权
  • 可用性:主动冗余、被动冗余、心跳
  • 可修改:抽象、模块化、限制通信路径、信息隐藏

敏感点:影响特定质量属性、一个或多个构件共有的特性 权衡点:影响多个质量属性的敏感点 风险点:架构中存在的隐患和不足之处

4+1视图 用例视图:最基本的需求分析模型 逻辑视图:表示设计模型中在架构方面最有意义的部分。用于描述系统的组成部分和之间的交互关系 过程视图:逻辑视图执行一次的实例,用于捕捉设计的并发和同步特征 开发视图:对组成系统的文件和构件进行建模,描述开发环境中软件的静态组织结构 部署视图:将构建部署到物理节点上,表示软件到硬件的映射和分布布局。

结构化设计

面向数据流

软件架构风格

数据流体系风格:将上一过程的结果作为下一过程的输入,分为两类批处理与管道处理。批处理的特点是必须要在前一步完成时才能进行下一步,而且必须是整体处理。管道-过滤器处理将数据处理的操作分为多个步骤,每个步骤通过filter实现,处理步骤之间的数据传输通过管道实现。顺序进行处理,强调实时处理。 虚拟机:将系统与外界隔离开,并根据外界的变化做出对应的调整。分为规则架构和解释器系统。解释器架构是内部定义完成解释工作的解释引擎以及其他相关的部分,将外界环境的输入通过解释引擎解析出符合规范的语义,是一种弥合程序语义与硬件语义差异的虚拟机风格。规则架构指事先定义好规则,并且在外界发生变化时,根据外界的信息和实现定义的规则作出调整。 调用返回架构:采用调用返回的机制将一个大的系统分为多个子系统,分而治之,降低耦合。层次架构、主程序-子程序架构、面向对象架构 独立构件架构:事件驱动和进程通信 以数据为中的架构:数据仓库系统、黑板系统

设计模式

设计模式分为三类:创建型、结构型、行为型,三者的作用是什么样的?

创建型:主要用于创建对象,在设计类实例化时提供指导 结构型:主要处理类和对象的组合,在为类和对象添加额外的能力时提供指导 行为型:主要处理类和对象的交互以及职责的分配,在为类和对象添加交互以及分配职责时提供指导

组合模式、外观模式、中介者模式(各对象无需显式的引用)

面向对象的分析模型

主要有顶层架构图、用例和用例实现图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的包图、针对复杂对象的状态图和用以描述流程化处理过程的活动图

数据库设计

反规范化设计

  1. 冗余列:多个表中存放相同列,减少查询时的表连接。
  2. 派生列:派生列中的数据是根据其他列计算得来的,减少查询过程中的计算逻辑
  3. 重新组表:将多个表合并成一个表
  4. 表拆分:分为垂直拆分和水平拆分。垂直拆分是将一张表拆分为多个包含主键的表,被拆分的表中包含拆分表字段的一部分。水平拆分是将一张表拆分为多个子表,减少数据量的查询

面向对象的软件设计

功能模型:从用户的角度展示系统的功能,描述输入是如何通过计算到输出的,不考虑计算的顺序。主要用用例图、DFD实现。 动态模型:展示系统的内部行为,描述与时间和操作顺序有关的系统特征。主要用状态图实现 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,描述系统中对象的静态结构、对象之间的关系、属性和操作。主要用对象图实现

功能模型描述发生了什么,动态模型确定如何发生的,对象模型确定发生的客体

UML图

https://zhuanlan.zhihu.com/p/559932671 状态图:强调对象随时间变化的动态行为 活动图:描述系统的活动、判定点和分支等 时序图:强调交互信息的时间顺序 交互图:强调通信方式、消息发送方和消息接收方的组织结构 部署图:系统组成部分在物理环境中的映射 包图:描述由模型本身分解而成的组织单元以及它们之间的依赖关系 类图:强调一组对象、接口、协作和它们之间的关系 定时图:强调信息跨越不同对象或参与者的实际时间,而不仅仅是关心信息的相对顺序。

结构化分析

功能模型:DFD(从数据加工的角度,描述数据在系统中逻辑流向、加工的过程,进而描述系统的功能需求) 数据模型(核心):DFD -> DD -> E-R(数据库设计阶段) 行为模型:状态转换图

架构评估方法

为了精确描述软件系统的质量属性,通常采用质量属性场景作为描述质量属性的手段。 SAAM: 输入:问题描述、需求说明、体系结构描述 五个步骤:场景开发、架构描述、单个场景评估、场景交互、总体评估 ATAM: 4个阶段:场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中

在线访问设计、直接访问设计、离线访问设计???