九 软件架构设计-原理实战

974 阅读13分钟

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

一 软件质量属性

  • 质量属性效用树(UtilityTree)是对系统质量属性进行识别和优先级排序的重要工具

1.1 性能

性能是指软件系统及时提供相应服务的能力。包括速度、吞吐量和持续高速性三方面的要求。 指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。如响应时间、吞吐量。设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度等。 试题

  • 系统具有故障诊断和快速恢复能力;

  • 并发1000人时,需要在0.5秒内得到响应,与〔性能〉相关。

  • 在架构设计阶段,公司的架构师识别出2个核心质量属性场景。其中,,"在并发用户数量为10000人时,用户的请求需要在1秒内得到响应"主要与〔性能〉质量属性相关;"对游戏系统进行二次开发的时间不超过3个月"主要与可修改性质量属性相关。

  • 系统应支持大于100个工业设备的运行检测 常见架构策略

  • 增加计算资源、减少计算开销

  • 优先级队列、固定优先级调度

  • 引入并发机制、限制执行时间

  • 采用资源调度

  • 维持数据或计算的多个副本

  • 控制采样频度

  • 资源仲裁

image.png

1.2 可用性

是系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。设计策略:心跳、Ping/Echo、 冗余、选举。 试题

  • 需要在1小时内切换到备份站点并恢复正常运行。
  • 系统崩溃后,需要在1小时内恢复正常,
  • 在某段时间内要求恢复正常状态
  • 应该与Windows系统操作方式保持一致。

常见架构策略

  • 心跳
  • 主动冗余、被动冗余
  • 选举
  • Ping/Echo

1.3 可修改性

包括可维护性、可扩展性、结构重组、 可移植性

试题

  • 对系统二次开发时间不得超过半年时间。(可维护性)

常见架构策略

  • 信息隐藏

1.4 互操作性

1.6 可测试性

试题

  • 支持远程对系统的行为进行控制和调试。

常见架构策略

  • 记录-回放

1.7 安全性

试题

  • 抵挡用户恶意入侵行为,并报警和记录。

常见架构策略

  • 追踪审计。如:对桥梁信息数据库的所有操作都必须进行完整记录。
  • 用户认证、用户授权、身份认证、限制访问
  • 入侵检测
  • 检测攻击
  • 维护完整性

1.8 效用树

对质量属性的描述进行刻画与排序

1.9 风险、敏感、权衡点

风险点

  • 系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
  • 如果”养护报告生成”业务逻辑的描述尚未达成共识,可能导致部分业务功能模块规则的矛盾,影响系统的可修改性。

敏感点

  • 为了实现某种特定的质量属性,一个或多个构件所具有的特性。
  • 对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;

权衡点

  • 权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
  • 改变加密的级别可能会对安全性和性能都产生显著的影响

1.11 构件

二 软件架构风格

image.png

2.1 数据流风格

面向数据流,按照一定的顺序从前向后执行程序,代表的风格有批处理序列、管道.过滤器

批处理序列

典型应用场景

  • 经典数据开发
  • 程序开发
  • Windows下的BAT程序就是这种应用的典型实例

管道.过滤器

在管道/过滤器风格的软件架构中,每个构件都有一组输入和输出。构件读取输入的数据流,经过内部处理,然后产生输出数据流。

  • 对于因数据输入某个构件,经过内部处理,产生数据输出的系统,通常会采用(管道.过滤器)架构风格。

a 典型应用场景

  • 传统的编译器(先词法分析、语法分析、语义分析)
  • 以UNIX shell编写的程序

2.2 调用/返回风格

构件之间存在互相调用的关系,一般是显式的调用,代表的风格有

主程序/子程序

面向对象

层次结构

b 应用场景:

  • OSI 7层分层通信协议

2.3 独立构件风格

构件之间是互相独立的,不存在显式的调用关系,而是通过某个事件触发、异步的方式来执行,代表的风格有

进程通信架构

构件是独立的进程,连接件是消息传递。消息传递的方式可以是点到点,异步和同步方式及远过程调用。

事件驱动系统

也称隐式调用风格

  • 某公司拟开发一个新闻系统,该系统可根据用户的注册兴趣,向用户推送其感兴趣的新闻内容,该系统应该采用〔事件驱动)架构风格最为合适。

2.4 虚拟机风格

  • 自定义了一套规则供使用者使用,使用者基于这个规则来开发构件

解释器

  • 某企业内部现有的主要业务功能已封装成为Web服务。为了拓展业务范围,需要将现有的业务功能进行多种组合,形成新的业务功能。针对业务灵活组合这一要求,采用(解释器)架构风格最为合适。(因为题目中有自定义任务,所以是虚拟机风格,比规则系统更合适。)

  • 某公司拟开发一套在线游戏系统,该系统的设计目标之一是支持用户自行定义游戏对象属性,行为和对象之间的交互关系。为了实现上述目标,公司应该采用(解释器)架构风格最为合适。

  • 数据分析与转换

  • 各类语言环境

规则为中心

  • 某公司拟开发一个扫地机器人。机器人的控制者首先定义清洁流程和流程中任务之间的关系,机器人接受任务后,需要响应外界环境中触发的一些突发事件,根据自身状态进行动态调整,最终自动完成任务。针对上述需求,该机器人应该采用(规则系统)架构风格最为合适。

  • 某公司拟开发一个VIP管理系统,系统需要根据不同商场活动,不定期更新VIP会员的审核标准和VIP折扣系统。针对上述需求,采用(规则系统)架构风格最为合适。

  • 规则集、规则解释器

  • 规则 / 数据选择器及工作内存

  • 动物识别专家系统。(执行效率较低)

  • 人工智能

2.5 仓库(数据共享)风格

数据库系统

  • 某公司为其研发的硬件产品设计实现了一种特定的编程语言,为了方便开发者进行软件开发,公司拟开发一套针对该编程语言的集成开发环境,包括代码编辑、语法高亮、代码编译、运行调试等功能。针对上述描述,该集成开发环境应采用(数据仓储)架构风格最为合适。 构件主要有两大类
  1. 中央共享数据源(中央数据结构),保存当前系统的数据状态。
  2. 多个独立处理元素(独立构件),处理元素对数据元素进行操作。

超文本系统

应用场景

  • 早期的静态网页

黑板风格

应用场景

  • 语音和模式识别
  • 松耦合代理数据共享存取
  • 某公司拟开发一个语音搜索系统,其语音搜索系统的主要工作过程包括分割原始语音信号、识别音素、产生候选词、判定语法片断、提供搜索关键词等,每个过程都需要进行基于先验知识的条件判断并进行相应的识别动作。针对该系统的特点,采用(黑板)架构风格最为合适。

2.6 C2风格

  • (C2风格)架构风格可以概括为通过连接件绑定在一起按照一组规则运作的并行构件。
  • 构件之间不能直接连接
  • 构件,连接件都有顶部与底部
  • 构件顶部或底部只能与连接件底部或顶部相连,
  • 连接件相互之间可通过顶部及底部连接

三 软件架构评估

SAAM分析评估架构的过程5个步骤

  • 场景开发
  • 体系结构描述
  • 单个场景评估
  • 场景交互
  • 总体评估

SAAM的主要输入问题

  • 问题描述
  • 需求声明
  • 体系结构描述

ATAM架构权衡分析法包含4个主要的活动领域

  • 场景和需求收集
  • 体系结构视图和场景实现
  • 属性模型构造
  • 折中

面向对象和结构化分析

  • 面向对象的分析模型主要由顶层架构图、用例与用例图和(领域概念模型)构成,设计模型则包含以(包图)表示的软件体系机构图、以交互图表示的用例实现图、完整精确的类图、描述复杂对象的(状态图)和用以描述流程化处理过程的活动图等。

  • 结构化程序设计采用自顶向下、逐步求精及模块化的程序设计方法,通过(顺序、分支、循环)三种基本的控制结构可以构造出任何单入口单出口的程序。

开发模型

  • 瀑布模型的特点是因果关系紧密相连,前一个阶段工作的结果是后一个阶段工作的输入。或者说,每一个阶段都是建筑在前一个阶段正确结果上。

战略

  • 信息化需求包含3个层次,即战略需求、运作需求和技术需求

四 案例分析

比较因素管道-过滤器风格数据仓库风格
交互方式顺序结构或有限的循环结构星型
数据结构数据流文件或模型
控制结构数据流驱动业务功能驱动
扩展方法接口适配模型适配

image.png

软件架构设计

架构风格

  • ( 集成测试)的目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。其测试的技术依据是(软件概要设计文档 )。

  • 软件架构风格是描述菜一特定应用领域中系统组织方式的惯用模式。架构风格反映领域中众多系统所共有的结构和(语义特性),强调对架构〔设计)的重用。

  • 一个大型软件系统的需求总是有变化的。为了降低项目开发的风险,需要—个好的变更控制过程。如下图所示的需求变更管理过程中,对应的内容应是〔问题分析与变更描述,变更分析与成本计算,变更实现);自动化工具能够帮助变更控制过程更有效地运作,(记录每一个状态变更的日期及变更者 )是这类工具应具有的特性之一。

DSSA

  • 特定领域软件架构(Domain Specific Software Architecture, DSSA)以一个特定问题领域为对象,形成由领域参考模型,参考需求,(参考架构)等组成的开发基础架构,支持一个特定领域中多个应用的生成。DSSA的基本活动包括领域分析.领域设计和领域实现。其中领域分析的主要目的是获得( 领域模型),从而描述领域中系统之间共同的需求,即领域需求;领域设计的主要目标是获得(特定领域软件架构),从而描述领域模型中表示需求的解决方案;领域实现的主要目标是开发和组织可重用信息,并实现基础软件架构。

  • 软件架构设计包括提出架构模型,产生架构设计和进行设计评审等活动,是一个迭代的过程。架构设计主要关注软件组件的结构、属性和(交互作用),并通过多种〔视图)全面描述特定系统的架构。

  • 架构描述语言(Architecture Description Language,ADL)是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言。ADL主要包括以下组成部分:组件、组件接口.(连接件)和架构配置。

软件架构开发方法

  • 基于架构的软件开发(Architecture Based Software Development,ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。它强调采用(视角与视图)描述软件架构,采用(用例)来描述功能需求,采用(质量场景)来描述质量需求。

  • RUP(统一软件开发过程)强调采用(迭代和增量)的方式来开发软件,这样做的好处是(在软件开发的早期就可以对关键的,影响大的风险进行处理。)

项目管理

  • 项目配置管理中,配置项的状态通常包括( 草稿、正式发布和正在修改).
  • 项目范围定义是生产项目计划的基础

电子商务

  • 商业智能系统的处理过程包括四个主要阶段:数据预处理通过(数据抽取、转换和装载)实现企业原始数据的初步整合;建立数据仓库是后续数据处理的基础;数据分析是体现系统智能的关键,主要采用联机分析处理数据挖掘技术,前者能够实现数据的上卷、下钻和旋转分析,后者利用隐藏的知识,通过建立分析模型预测企业未来发展趋势;数据展现主要完成数据处理结果的可化。

  • 供应链中的信息流覆盖了从供应商、制造商到分销商,再到零售商等供应链中的所有环节,其信息流分为需求信息流和供应信息流,(生产计划)属于需求信息流,(完工报告单)属于供应信息流。

  • 假如有3块容呈是80G的硬盘做RAID 5阵列,则这个RAID 5的容量是 160G;而如果有2块80G的盘和1块40G的盘,此时RAID 5的容量是80G

RAID 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。这种方案中数据信息与校验信息的配比是N+1方案,即N份数据,1份校验信息,所以用3块容量为80G的硬盘实际数据容量为160G。当3盘不同容量的盘做RAID时,会以最小容量的盘为准,所以2块80G和1块40G的盘视为3块40G的盘,所以容量为80G。