系统架构师-软件架构知识点

软件架构

  • 架构模式是软件设计中的高层决策
  • 设计模式主要关注软件系统的设计,与具体实现语言无关
  • 惯用法则是实现时通过某种特定的程序设计语言来描述构件与构件之间的关系

架构文档化的主要输出结果是架构说明书和架构质量说明书

介绍

软件架构设计包括提出

  • 架构模型
  • 产生架构设计
  • 进行设计评审

软件系统架构是善于软件系统的结构、行为和属性的高级抽象。

  • 架构设计关注点
    • 结构
    • 属性
    • 交互作用

架构风格

介绍

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。

架构风格定义了一类架构所共有的特征,主要包括架构定义、架构词汇表和架构约束。

定义

一个体系结构定义了一个词汇表和一组约束

架构风格反映领域中众多系统所共有的结构和语义特征

架构设计是一个迭代过程,在建立软件架构的初期,选择一个合适的架构风格是首要的,在此基础上,开发人员通过架构模型,可以获得关于软件架构属性的理解,为将来的架构实现与演化过程建立了目标。

  • GUI:事件驱动

解释器

  • 强调用户自定义

管道过滤器

    • 支持分阶段数据处理

隐式调用

  • 调试器,本质是在断点处设计一个事件监听函数

闭环结构

  • 适用于处理简单的任务

  • 机器装配

  • 不适用于复杂任务

分层结构

  • 引入抽象层

  • 低层不确定的实现细节在高层会变得确定

  • 系统结构更加清晰

数据共享

  • 现代编译器

面向构件

介绍

软件构件是部署、版本控制和替换的基本单位。

  • 构件通常需要同时部署的院子构件
  • 原子构件通常成组地部署,但他也能够被单独部署
原子构件 与 构件的区别

原子构件永远不会被单独的部署,尽管其可以单独部署

大多数原子构件都属于一个家庭,一次部署往往整个家庭

一个模块是不带单独资源的原子构件


  • 逻辑构件模型用功能描述系统的抽象设计
    • 作为系统的设计蓝图以保证系统提供适当的功能
  • 物理构件模型
    • 技术设施产品、硬件分布和拓扑结构
    • 了解系统的性能、吞吐率等许多非功能性属性
构件特性
  1. 独立部署单元
  2. 作为第三方的组装单元
  3. 没有(外部的)可见状态
对象的特性
  1. 一个实例单元,具有唯一的标志
  2. 可能具有状态,此状态外部可见
  3. 封闭了自己的状态
构件组装
问题
  • 构件失配
    • 由于系统对构件基础设施、控制模型和数据模型的假设存在冲突引起的失配
  • 连接子失配
    • 包括于系统对构件交互协议、构件连接子失配包括由于系统对构件交互协议、构件连接时数据格式的假设存在冲突引起的扮酷
CORBA
对象适配器
作用

在底层的传输平台与接收调用并返回结果的对象实现之间进行协调

目前采用的对象适配器规范是POAching(可移植对象适配器)

替代了传统的BOA(基本对象适配器)

Servant 伺服对象

最终完成客户请求的服务对象实现

伺服对象管理器

伺服对象激活器和伺服对象定位器

用来提供CORBA服务端的对象查找服务

活动对象映射表用来保存已注册的CORBA对象标识和伺服对象之间的映射关系。

实体(Entity)
  • 长期持久并主要用于事务性行为
  • 由窗口管理其持久化
加工(Process)
  • 同样需要窗口管理其持久化,但没有客户端可以访问的主键
会话(Session)
  • 构件不需要窗口管理其持久化
  • 自己管理自身状态信息
服务(Service)
  • 构件是无状态的
COP 面向构件编程

需要的基本支持

  • 多太性(可替代性)
  • 模块封装性(高层次信息隐藏)
  • 后期的绑定和装载(部署独立性)
  • 安全性(类型和模块安全性)

分布式系统

5层
  • 表示层
    • 实现用户界面
  • 表示逻辑层
    • 为了生成数据
  • 应用逻辑层
    • 数据计算和分析
  • 数据处理层
    • 存储和访问数据库的应用逻辑和命令
  • 数据层
    • 数据库中实际存储的业务数据

4+1 视图

  • 4+1视图中,逻辑视图用来描述软件模块的组织与管理
  • 开发视图:描述了软件模块的组织与管理
  • 过程视图描述设计的并发和同步特征。

ADL

  • 组成部分
    • 组件、组件接口、连接件、架构配置

C2

介绍

通过连接件绑定在一按照一组规则动作的并行构件风格。

C2风格中的系统组织规则如下

架构复审

架构设计、文档化和复审是一个迭代的过程

  • 通常会对一个可运行的最小化系统进行架构评估和测试

  • 目标:

    • 标识潜在的风险,及早发现架构设计的缺陷和错误

介绍

目的

为了标识潜在的风险,及早发现架构设计中的缺陷和错误

在架构复审过程中,主要由用户代表与领域专家决定架构是否满足需求、质量需求是否在设计中得到体现

架构文档

  • 软件架构文档是对软件架构的一种描述,帮助程序员使用特定的程序设计语言实现软件架构

原则

  1. 文档从使用者的角度进行编写
  2. 必须分发给所有与系统有关的开发人员
  3. 保持文档更新,但不要太频繁
  4. 避免不必要的重复
  5. 每次架构文档的修改都应该记录进行修改的原则

软件架构设计

  • 是降低成本、改进质量、按时和按需交付产品的关键因素。

  • 满足系统的性能、可维护性

  • 使不同利益相关的人达到一致的目标

  • 支持项目计划和项目管理等活动

  • 能够有效地管理复杂性

软件体系结构

文档化过程

输出结果:体系结构规格说明测试体系结构需求的质量设计说明书

文档的完整性和质量是软件体系结构成功的关键因素

文档从使用者的角度进行编写

必须颁发给所有与系统有关的开发人员

且必须保证开发者手上的文档是最新的

软件架构需求

  • (软件架构需求不应该包括设计构件的过程)

基于架构的软件设计 - ABSD

  1. 功能分解
  2. 采用架构风格实现质量属性与商业需求
  3. 采用模板设计软件结构
  • ABSD方法是一个自顶向下,递归细化的过程,软件系统的架构通过该方法得到细化,直到能产生软件架构的类
  • 强调由商业、质量和功能需求的组合驱动软件架构设计。
  • 强调采用视角和视图来描述软件架构
  • 采用用例和质量场景来描述需求

设计策略

  • Ping/ Echo 主要提高系统的可用性

  • 限制访问

    • 提高系统的安全性
  • 运行时注册

    • 提高系统的可修改性
  • 主动冗余

    • 系统的可靠性
  • 队列调度

    • 提高系统的性能
  • 信息隐藏

    • 提高系统的可修改性
  • 记录回放

    • 可测试性

设计模式

  • 访问者模式

    • 在不改变原来的类结构(活动节点)的基础上增加新功能

三种模式

创建型

通过采用抽象类所定义的接口,封装了系统中对象如何创建、组合

  • abstract factory
  • builder
  • factory method
  • prototype
  • singletoin
结构型模式

主要用于如何组合已有的类和对象以获得更大的结构

  • adaptor
  • bridge
  • composite
  • decorator
  • facade
  • flyweight
  • proxy
行为型模型

主要用于对象之间的职责及其提供服务的分配方式

  • chain of responsibility
  • command
  • interpreter
  • iterator
  • mediator
  • memento
  • observer
  • state
  • strategy
  • template matehod
  • visitor

外观模式

  • 要求外部与一个子系统的通信必须通过一个统一的外观对象进行
  • 为子系统中的一组接口提供一个一致的界面

软件系统架构评估

ATAM

  • 软件体系结构的设计结果进行评估
  • ATAM并不是一种精确的评估方法,该方法表现的主要形式是评审会议

在系统开发之前,性能、可能性、安全性和可修改性等质量属性进行评价折中

ATAM分 为四个主要的活动阶段

  • 需求收集
  • 架构视图
  • 描述
  • 属性模型

强调以视图做为架构评估的核心概念

  • 效用树
    • 对质量属性的描述进行刻画与排序

在识别出质量属性描述后,通常采用效用树对质量属性的描述进行刻画与排序

架构评价的理解和应用

敏感点:是实现一个特定质量属性的关键特征

权衡点:会影响一个或多个属性,并对多个属性来说都是第三点

领域分析

  • 领域分析的主要目的是获得领域模型
  • 领域模型描述领域中系统之间共同的需求,即领域需求
  • 领域设计的主要目标是获取DSSA(需求的解决方案)
  • 领域实现的主要目标是依据领域模型和DSSA开发和组织可重用信息,并对基础软件架构进行实现

DSSA

介绍

DSSA是一个具有三个层次的系统模型,包括领域开发环境、领域特定应用开发环境和应用执行环境

  • 应用工程师主要在领域特定应用开发环境中工作
作用

以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,其目标是支持一个特定领域中多个应用的生成。

基本活动

领域分析、领域设计、领域实现

架构需求

UML

UML对系统架构的定义是系统的组织结构

  1. 逻辑视图:(设计视图),它表示了设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集
  2. 进程视图:是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发与同步结构
  3. 实现视图:对组成基于系统的物理代码的文件和构件进行建模
  4. 部署视图:把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构
  5. 用例视图:是最基本的需求分析模型

用例视图:是最基本的需求分析模型

架构分析

SAAM

是最早广泛应用的架构分析方法

SAAM输入是问题描述、需求说明和架构描述

分析过程:场景开发、架构描述、单个场景评估、场景交互和总体评估

软件策略

  • 心跳:增加计算机资源、减少计算机开销、引入并发机制、采用资源高度等。
  • 可用性:心跳、Ping/Echo、主动冗余、被动冗余 、选举等架构策略实现该属性
  • 安全性:入侵检测、用户认证、用户授权、追踪审计

野生知识

机器人

使用规划系统架构风格

IDL

介绍

是一种接口定义语言

主要元素

接口描述、模块定义、类型定义、常量定义、异常、值类型

核心

接口描述是ILD文件中最核心的内容

ILD只是一种接口定义语言,最终还是要落地与语言对接,所以IDL的数据类型要与实现语言进行映射

逆向工程

分析已有的程序,寻求比源代码更高级的抽象表现形式

系统移植

阶段

1. 计划阶段

在计划阶段,要进行现有系统的调查整理,从移植技术、系统内容(是否进行系统提炼等)、系统运行三个方面,探讨如何转换成新系统,决定移植方法,确立移植工作体制及移植日程

2. 准备阶段

在准备阶段要进行移植方面的研究,准备转换所需的资料。该阶段的作业质量将对以后的生产效率产生很大的影响

3. 转换阶段

这一阶段是将程序设计和数据转换成新机器能根据需要工作的阶段。提高转换工作的精度,减轻下一阶段的测试负担是提高移植工作效率的基本内容

4. 测试阶段

这一阶段是进行程序单元、工作单元测试的阶段。在本阶段要核实程序能否在新系统中准确地工作。所以,当有不能准确工作的程序时,就要回到转换阶段重新工作

5. 验证阶段

这是测试完的程序使新系统工作,最后核实系统,准备正式运行的阶段

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 操作系统 操作系统是计算机系统的核心系统软件,负责管理和控制计算机系统硬件和软件资源,合理组织计算机工作流程和有效利用资源,在计算机与用户之间起接口的作用 1.1 操作系统的类型 操作系统的类型(依据使用环境和对作业的处理方式)分为批处理、分时、实时、网络和分布式等。 1、批处理:把作业分类,把一批作业编成一个作业执行序列。可分联机和脱机。特征为脱机使用计算机、成批处理和多道程序运行。 2、分时:采用分时技术,使多个用户同时以会话控制自己程序的运行,每个用户都认为拥有各自独立的、支持自己请求服务的系统。特征有交互性、多用户同时性和独立性。 3、实时:专用,系统与应用难分离。并不强调资源利用率,更关心及时性、可靠性和完整性。分实时过程控制和实时信息处理。特征有即时响应、高可靠性。 4、网络:按网络架构的各个协议标准制订,包括网络管理、通信、资源共享、系统安全和多种网络应用,实现协同工作和应用集成。特征有互操作性、协作处理。 5、分布式:要求一个统一的操作系统,实现系统操作的统一性,负责全系统的资源分配和调度,为用户提供统一的界面。 6、操作系统的5项基本功能,包括处理器管理、存储管理、设备管理、文件管理和作业管理。 1.2 操作系统的结构 结构分为无序、层次、面向对象、对称多处理和微内核。 1、无序:又称整体或模块结构。以大型表格和队列为心,操作系统各个部分围绕着表格运行,整个系统是一个程序。模块结构相对独立,模块之间通过规定的接口相互调用。优点为缩短开发周期。缺点是模块之间调用关系复杂、相互依赖,使分析、移植和维护系统较易出错。 2、层次:操作系统分解成若干个单向依赖的层次,由多层正确性保证操作系统的可靠性。优点层次结构清晰,简化了接口设计,有利于系统功能的增加或删改,易于保证可靠性,便于维护和移植。 3、面向对象:基于面向对象程序设计的概念,采用了各种不同的对象技术。把对象最为系统的最小单位,由对象、对象操作、对象保护组成的操作系统。优点适用于网络操作系统和分布式操作系统。 4、对称多处理:所有多处理运行且共享同一内存(内存储器、主存、实存)。优点适合共享存储器结构的多处理机系统。 5、微内核:把系统的公共部分抽象出来,形成一个底层核心,提供最基本的服务,其他功能以服务器形式建立在微内核之上。具有良好的模块化和结构化特征,模块之间和上下层之间通过消息来通信。 操作系统大多拥有两种工作状态:核心态和用户态。一般的应用程序工作在用户态,内核模块和最基本的操作系统核心工作在核心态。 微内核结构由一个简单的硬件抽象层和一组比较关键的原语(仅仅为建立系统必须的部分,包括线程管理、地址空间和进程间通信)或系统调用组成。 微内核的目标将系统服务的实现和系统的基本操作规则分离开来
备战软考时梳理的一些错题和常考题 案例题: 一、软件结构设计 (一)软件质量属性 (二)风险,敏感点,权衡点 二、结构化软件系统建模 (一)流程图和数据流图 (二)实体和类的区别 (三)Essential Use Cases和Real Use Cases (四)状态图和活动图 (五)用例建模 三、软件系统架构选择 (一)能写的架构风格-论文 (二)什么是软件架构风格,面向对象和控制环路两种架构各自风格的特点 (三)主程序-子程序 和 管道-过滤器 这两种架构风格的特点 (四)面向对象和基于规则 四、信息系统安全性 (一)信息系统面临的安全威胁 (三)授权侵犯 五、软件设计模式 (一)MVC (三)什么是面向服务架构(SOA)以及ESB(企业服务总线)在SOA的作用与特点 (四)系统安全保证措施 ...... 选择题: 严格定义方法:适用需求非常明确的场景 JTAG接口:用于CPU调试的常用接口 RUP(统一软件开发过程),用例驱动 初始:建立业务模型,确定项目边界 细化:建立完善架构 构建:开发构建,集成产品,详细测试 交付:确保可用 ...... 论文题: 项目涉及到的技术 论软件设计方法及其应用【2019】 论基于DSSA的软件架构设计与应用 论基于REST服务的Web应用系统设计 论软件可靠性设计与应用 论大规模分布式缓存设计策略 论企业集成平台的架构设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值