架构设计笔记-7-系统架构设计基础知识

目录

知识要点

单选

案例分析

[1.质量属性 / 管道过滤器 / 数据仓库风格](#1.质量属性 / 管道过滤器 / 数据仓库风格)

[2.面向对象风格 / 控制环路风格](#2.面向对象风格 / 控制环路风格)

[3.软件架构风格 / 架构风格选择](#3.软件架构风格 / 架构风格选择)

4.体系结构方案对比

[5.面向对象风格 / 基于规则风格](#5.面向对象风格 / 基于规则风格)

[6.解释器风格 / 管道过滤器风格](#6.解释器风格 / 管道过滤器风格)

[7.面向对象风格 / 解释器风格](#7.面向对象风格 / 解释器风格)

8.软件架构复用

9.DSSA

[10.DSSA特征 / 活动 / 角色](#10.DSSA特征 / 活动 / 角色)

论文

1.论基于架构的软件设计方法及应用

2.论软件系统架构风格


知识要点

软件架构设计 主要关注软件构件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。

特定领域软件架构(Domain Specific Software Architecture, DSSA) 是在一个特定应用领域中,为一组应用提供组织结构参考的标准软件体系结构。DSSA 通常是一个具有三个层次的系统模型,包括领域开发环境、领域特定应用开发环境和应用执行环境,其中应用工程师主要在领域特定应用开发环境中工作。

在架构模型的指导下,可复用构件可以通过组装的方式在较高层次上实现系统,并能够提高系统实现的效率。在构件组装过程中需要检测并解决架构失配问题,其中,构件失配 主要包括由于系统对构件基础设施、控制模型和数据模型的假设存在冲突引起的失配。连接子失配包括由于系统对构件交互协议、构件连接时数据格式的假设存在冲突引起的失配。

基于构件的软件开发中,已有的构建分类方法可以归纳为三大类:

  1. 关键字分类法 :根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构。
  2. 刻面分类法 :利用 Facet(刻面)描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。
  3. 超文本方法 :基于全文检索技术,使得检索者在阅读文档过程中可以按照人类的联想思维方式任意跳转到包含相关概念或构件的文档。

架构权衡分析方法(Architecture Tradeoff Analysis Method,ATAM) 是一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。ATAM 可以分为 4 个主要的活动阶段:包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念。在识别出质量属性描述后,通常采用效用树对质量属性的描述进行刻画与排序。在评估过程中,权衡点是一个会影响多个质量属性的架构设计决策。

基于软件架构的设计(Architecture Based Software Development,ABSD )强调由商业、质量和功能需求的组合驱动软件架构设计。它强调采用视角和视图来描述软件架构,采用用例和质量属性场景来描述需求。ABSD 方法是一个自顶向下、递归细化的方法。软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。

考虑体系结构时,重要的是从不同的视角(perspective)来检查,这促使软件设计师考虑体系结构的不同属性。例如,展示功能组织的静态视角能判断质量特性,展示并发行为的动态视角能判断系统行为特性。选择的特定视角或视图也就是逻辑视图、进程视图、实现视图和配置视图。使用逻辑视图来记录设计元素的功能和概念接口,设计元素的功能定义了它本身在系统中的角色,这些角色包括功能、性能等。(系统架构设计师教程第2版P255)。

ABSD方法有三个基础,分别是对系统进行功能分解、采用架构风格实现质量属性与商业需求、采用软件模板设计软件结构。

基于架构的软件开发模型(Architecture-Based Software Design Model,ABSDM) 把整个基于架构的软件过程划分为架构需求、设计、文档化、复审、实现、演化 等 6 个子过程。其中架构复审活动的目标是标识潜在的风险,及早发现架构设计中的缺陷和错误;架构演化活动针对用户的需求变化,修改应用架构,满足新的需求。软件架构文档应该从使用者的角度进行书写,针对不同背景的人员采用不同的书写方式,并将文档分发给相关人员。架构文档要保持较新,但不要随时保证文档最新,要保持文档的稳定性。架构文档化过程的主要输出是架构需求规格说明和测试架构需求的质量设计说明书这两个文档。生成需求模型构件的精确的形式化的描述,作为用户和开发者之间的一个协约。

性能(Performance) 是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理事件的个数。它是常见的软件质量属性之一。可以采用的架构设计策略有:①增加可用资源(更快的处理器、多处理器、更大的内存,以及速度更快的网络等);②改善资源需求(减少计算复杂度、优化各个进程的内存和 CPU 占用率等);③资源管理(并发、数据复制等);④资源调度(先进先出队列、固定优先级调度队列等)等。

DSSA(特定领域软件架构) 就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。有三个基本的过程包括:领域分析、领域设计、领域实现。

  1. 领域分析 :这个阶段的主要目标是获得领域模型(领域需求)。识别信息源,即整个领域工程过程中信息的来源,可能的信息源包括现存系统、技术文献、问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等。在此基础上就可以分析领域中系统的需求,确定哪些需求是领域中的系统广泛共享的,从而建立领域模型。
  2. 领域设计 :这个阶段的目标是获得 DSSA。DSSA 描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求的 DSSA。
  3. 领域实现 :这个阶段的主要目标是依据领域模型和 DSSA 开发和组织可重用信息。这些可重用信息可能是从现有系统中提取得到,也可能需要通过新的开发得到。

参与 DSSA 的人员 可以划分为四种角色:领域专家、领域分析师、领域设计人员和领域实现人员。

  1. 领域专家:领域专家可能包括该领域中系统的有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师等。领域专家的主要任务包括提供关于领域中系统的需求规约和实现的知识,帮助组织规范的、一致的领域字典,帮助选择样本系统作为领域工程的依据,复审领域模型、DSSA 等领域工程产品等。领域专家应该熟悉该领域中系统的软件设计和实现、硬件限制、未来的用户需求及技术走向等。
  2. 领域分析人员:领域分析人员应由具有知识工程背景的有经验的系统分析员来担任。领域分析人员的主要任务包括控制整个领域分析过程,进行知识获取,将获取的知识组织到领域模型中,根据现有系统、标准规范等验证领域模型的准确性和一致性,维护领域模型。领域分析人员应熟悉软件重用和领域分析方法;熟悉进行知识获取和知识表示所需的技术、语言和工具;应具有一定的该领域的经验,以便于分析领域中的问题及与领域专家进行交互;应具有较高的进行抽象、关联和类比的能力;应具有较高的与他人交互和合作的能力。
  3. 领域设计人员:领域设计人员应由有经验的软件设计人员来担任。领域设计人员的主要任务包括控制整个软件设计过程,根据领域模型和现有的系统开发出 DSSA,对 DSSA 的准确性和一致性进行验证,建立领域模型和 DSSA 之间的联系。领域设计人员应熟悉软件重用和领域设计方法;熟悉软件设计方法;应有一定的该领域的经验,以便于分析领域中的问题及与领域专家进行交互。
  4. 领域实现人员:领域实现人员应由有经验的程序设计人员来担任。领域实现人员的主要任务包括根据领域模型和 DSSA,或者从头开发可重用构件,或者利用再工程的技术从现有系统中提取可重用构件;对可重用构件进行验证;建立 DSSA 与可重用构件间的联系。

DSSA可以分为

  1. 垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。
  2. 水平域:定义了在多个系统和多个系统族中功能区域的共有部分。在子系统级上涵盖多个系统族的特定部分功能。

物联网属于层次型架构,分为: 1)感知层:负责信息采集和物物之间的信息传输。 2)网络层:利用无线和有线网络对采集的数据进行编码、认证和传输。 3)应用层:实现应用。

基于规则的系统 包括规则集、规则解释器、规则/数据选择器和工作内存,一般用在人工智能领域和 DSS 中。

三层 C/S 体系结构 中,增加了一个应用服务器。三层 C/S 体系结构是将应用功能分成表示层、功能层和数据层三个部分。 表示层是应用的用户接口部分,担负与应用逻辑间的对话功能。它用于用户从工作站输入的数据,并显示应用输出的数据。为使用户能直观地进行操作,一般要使用图形用户界面(Graphic User Interface,GUI)。在变更用户界面时,只需改写显示控制和数据检查程序,而不影响业务逻辑。 功能层是应用的本体,它负责具体的业务处理逻辑,例如在制作订购合同时要计算合同金额。表示层和功能层之间的数据互交要尽可能简洁。例如,用户检索数据时,要将有关检索要求的信息一次性地传送给功能层,检索结果数据也由功能层一次性地传送给表示层。 数据层通常是数据库管理系统,负责管理对数据库数据的读写。数据库系统必须能迅速执行大量数据的更新和检索。 三层 C/S 的解决方案对这三层进行明确分割,不同层构件相互独立,层间的接口简洁,适合复杂事务处理。

软件架构复用 的类型包括机会复用和系统复用。机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。

数据管理能力成熟度评估模型(DCMM) 评估内容包括数据战略、数据治理、数据架构、数据应用、数据安全、数据质量、数据标准和数据生存周期。

单选

案例分析

1.质量属性 / 管道过滤器 / 数据仓库风格

2.面向对象风格 / 控制环路风格

3.软件架构风格 / 架构风格选择

4.体系结构方案对比

5.面向对象风格 / 基于规则风格

6.解释器风格 / 管道过滤器风格

7.面向对象风格 / 解释器风格

8.软件架构复用

9.DSSA

10.DSSA特征 / 活动 / 角色

论文

1.论基于架构的软件设计方法及应用

2.论软件系统架构风格

相关推荐
冷眼看人间恩怨4 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
Hejjon10 小时前
SpringBoot 整合 SQLite 数据库
笔记
西洼工作室12 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.13 小时前
Webpack学习笔记(2)
笔记·学习·webpack
新手上路狂踩坑14 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
stm 学习ing15 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉15 小时前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
bohu8316 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
初学者7.17 小时前
Webpack学习笔记(3)
笔记·学习·webpack
bohu8318 小时前
sentinel学习笔记5-资源指标数据统计
笔记·sentinel·statisticslot