-
软件架构的概念
- 解释
- 之前是从需求分析-》软件设计,从业务方直接到了技术,导致有需求和实现之前有鸿沟。
- 所以产生了需求设计,将需求分解为不同的模块,分别实现不同的职责

- 价值
- 复用和传递
- 项目干系人交流的手段,能预测质量
- 演化变简单,有据可依、方便传承
- 发展史
- 无架构-汇编语言(机器语言-最低级-命令式)
- 萌芽-程序结构设计(有顺序、分支循环等基本结构-高级语言-c
- 初级-统一建模语言uml
- 高级-4+1视图
- 软件架构建模
- 结构模型
- 以架构的构件、连接件和其他概念刻画结构
- 框架模型
- 动态模型
- 系统的大颗粒的行为性质
- 过程模型
- 功能模型
- 4+1模型(重点)-与uml一一对应
- 为了把架构搞清楚,进行了视图的拆分,又考虑制作视图的工具
- 逻辑视图-用户:系统功能需求
- 开发视图-实现视图-编程人员:软件管理(源码、组件、dll)
- 进程视图-系统集成人员:性能、并发
- 物理视图-部署视图-系统工程人员:软件到硬件的映射关系,安装、通信等
- 场景-用例视图
- 为了把架构搞清楚,进行了视图的拆分,又考虑制作视图的工具
- 结构模型
- 解释
-
软件架构风格(超重点)
- 风格=模式
- 分类
- 数据流
- 数据一步步处理得到结果,数据处理+严格流程
- 子风格
- 批处理序列
- 数据必须完整以整体方式传递-下载完成后再播放
- 管道-过滤器
- 管道=机制、过滤器=函数、方法
- 数据流处理-边下载边播放
- 批处理序列
- 调用/返回
- 当前使用最广泛
- 子风格
- 主程序/子程序
- 面向对象
- 层次结构
- 分层,上层调用下层,比如调用main方法
- 特点
- 优点
- 复杂问题分成不同层次去解决-解耦合
- 不同层次处于不同抽象层级-越底层抽象级别越高
- 每一层最多只影响两层,只要给相邻层提供相同接口,允许每层方法不同。同时支持了复用
- 缺点
- 并不是每个系统能容易地分层
- 分层过多效率会低,分层少耦合又高,所以很难找到合适的层次抽象方法。一般3~5层最合适
- 优点
- 独立构件
- 出发点:封装成构件的同时保持构件独立性-引入中间层/事件触发机制,让两个构件之间不直接联系了(可以联想到观察者、中介模式)
- 包含
- 进程通信
- 构件是独立过程,连接件是消息传递
- 构件是命名过程,消息传递的方式可以点对点、异步、同步、远程方法调用
- 事件驱动系统(隐式调用)
- 调试过程中牵一发而动全身,图形用户界面是典型的解释器风格
- 构件不直接调用过程,而是触发/广播一个/多个事件
- 构件在一个/多个事件中注册,当时间被触发,系统会自动调用在事件中注册的所有过程
- 一个事件的触发就导致另一个模块中的过程调用
- 其中构件是匿名的,构件之间交互的连接件以过程之间的隐式调用来实现
- 支持软件复用,方便构件维护和演化;但是放弃了对系统计算的控制
- 进程通信
- 虚拟机
- 跟解释器设计模式
- 思想相同,只是解释器是局部解释方案而虚拟机风格是全局性的,适用于有自定义需求的场景
- 解释器风格-任务的时序依赖性
- 特点
- 一次编写到处运行
- 模拟新操作系统的运行环境
- 基于规则的系统,包括规则解释器、规则集、规则/数据选择器和工作内存,用于人工智能和dss中
- 跟解释器设计模式
- 仓库风格/数据共享(以数据为中心的风格)
- 有一个中心仓库,有一堆处理部件,所有处理部件都对仓库中的数据进行处理
- 包含
- 数据库系统
- ==数据文件,数据库管理系统从文件中获取不同信息进行相应展示
- 黑板系统-语音识别系统(先验知识)
- 以数据库系统为基础做的,结构一致。黑板是个全局数据库,包含问题解决方法数据的全部状态
- 黑板是知识元相互作用的唯一媒介;通过黑板状态的变化来控制知识源-增量修改与处理
- 常应用于解决问题没有确定性算法的软件:信号处理、问题规划、编辑器优化)
- 超文本系统
- 现代集成编译环境一般采用仓库架构风格(黑板)解决编译问题
- 传统的编译器,直接经过一系列操作编译成可执行代码进行执行
- 现代编译器先构造语法树,各种处理部件围绕语法树,这一系列汇集起来打包成工具集,跟语法树进行对接-不同工具间的信息交互
- 数据库系统
- 数据流
软考高级-软件系统架构师-03软件架构设计(重点)
于 2025-02-24 09:36:14 首次发布

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



