架构风格
五大架构风格
- 数据流风格:批处理、管道-过滤器
- 调用-返回风格:主子程序、面向对象、层次结构
- 独立构件风格:进程通信、事件驱动(隐式调用)
- 虚拟机风格:解释器、规则系统
- 仓库风格:数据库系统、黑板系统、超文本系统
主要记忆以下七个
一、管道-过滤器:
- 过滤器相对独立。
- 优:功能模块复用;可维护性和可扩展性强;具有并发性;模块独立性高。
- 缺:不适用于交互性强的应用;对于存在关系的数据流必须进行协调
- 适:系统可划分清晰的模块;模块相对独立;有清晰的模块接口
二、事件驱动:
- 系统由若干子系统构成且成为一个整体;系统有统一的目标;子系统有主从之分;每一个子系统有自己的事件搜集和处理机制
- 优:适合描写系统组;容易实现并发处理和多任务;可扩展性好;具有类层次结构;简化代码
- 缺:因为树形结构所以削弱了对系统计算的控制能力;各个对象的逻辑关系复杂
- 适:一个系统对外可以表征为它对事件的处理
三、分层风格
- 各个层次的组件形成不同功能级别的虚拟机;各层相互系统工作,而且实现透明
- 优:支持系统设计过程中的逐级抽象;可扩展性好;支持软件复用
- 缺:不同层次之间耦合度高的系统很难实现
- 适:功能层次之间的抽象和相互之间低耦合的系统
四、面向对象
- 力争实现问题空间和软件系统空间结构的一致性
- 优:高度模块性;实现封装;代码灵活共享;易维护;可扩展性好
- 缺:增加了对象之间的依赖关系
- 适:各种领域
五、数据共享风格
- 采用两个常用构件中央数据库单元和一些相对独立的组件集合
- 优:中元数据单元实现了数据的集中;以数据为中心
- 缺:适用于特定领域
- 适:专家系统等人工智能领域问题的求解
六、解释器风格
- 系统核心是虚拟机
- 优:可以用多种操作来解释一个句子;灵活应对自定义场景
- 缺:适用于特定领域
- 适:模式匹配系统和语言编译器
七、闭环控制风格
- 通过不断地测量被控对象,认识和掌控被控对象;将控制理论引入体系结构构建
- 优:将控制理论引入体系结构构建
- 缺:适用于特定领域
- 适:该系统中一定存在有目标的作用、信息处理的闭环过程
质量属性效用树
性能、可用性、安全性、可修改性
效用 - 性能
- 系统必须在0.1s内响应用户请求
- 用户请求后必须在5s内完成处理
效用 - 可用性
- 主服务器故障,备份服务器3分钟内接管
- 宕机时修复时间不得超过20分钟
效用 - 可修改性
- 对 XX 系统添加新功能在1天内完成
- 更改XX功能点再 5人日 内完成
效用 - 安全性
- 保证 99% 安全性
- 用户信息数据库授权必须保证99%可用
EAI 企业应用集成 与 SOA 面向服务架构
- EAI 一般包括:表示集成(界面集成)、数据集成、控制集成、业务流程集成(过程集成)。
- 数据集成的主要方式有:数据联邦、数据复制和基于接口的数据集成。
- 应用之间一对一开发专用接口的优缺点
- 优:直观,当企业应用数量少的时候很容易实现
- 缺:工作量大;维护费用高,升级与扩展困难;不易于标准化,由于接口数量多,难以管理;一般只能解决应用系统之间的数据集成;难以支持过程集成和协调
- 客户端 - 服务注册 - 服务提供者 - 适配器 - 多个已有应用
微服务与SOA
- 微服务的特点
- 服务粒度小
- 专注于做同一件事
- 轻量级的通信机制
- 松耦合、可扩展性好
- 独立部署
- 纵向业务划分
- SOA
- 水平分层
- 粗粒度服务
- 整体部署
- ESB(企业服务总线)充当了服务之间的通信的角色
- 分析为何采用微服务?
- 技术异构性
- 弹性
- 扩展性
- 简化部署
- 与组织架构相匹配
- 可组合性
- 对可替代性的优化
DSSA 特定领域软件架构
-
著名的 4+1 视图模型 (抽象范围逐步紧缩)
- 场景视图
- 物理视图
- 进程视图
- 逻辑视图
- 开发视图
-
能在 XX 行业通用,架构设计注意哪些事项?
- 因为在XX行业通用,所以该架构数据DSSA,必须具备DSSA的特征
- 一个严格定义的问题域或解决域,不能跨域系统的边界
- 具有普遍性,设计出来的软件架构部分或全部能够用于XX行业的某个子系统
- 对整个领域的合适程度的抽象,模块、组件抽象的粒度是否合适,是否适应xx行业的某些部门
- 具备该领域固定的、典型的在开发过程中可重用的元素
-
该如何创建DSSA?
- 应当严格遵循DSSA设计的创建步骤
- 定义领域范围
- 定义领域特定元素
- 定义领域特定的设计和实现需求约束
- 定义领域模型和架构
- 产生搜集可重用的产品单元
架构评估
- 所有评估方法所普遍关注的质量属性有
- 功能性
- 性能 *
- 可用性 *
- 可靠性
- 安全性 *
- 可修改性、可变性 *
- 互操作性
- 敏感点和权衡点是关键的体系结构决策
- 敏感点是一个或多个构件或者它们之间的特性,即如何实现它们应当注意什么
- 权衡点是影响多个质量属性的特性
- 各个角色的定义以及所关心的问题
- 软件架构师:负责软件体系结构以及在互相竞争的质量需求之间进行权衡的人;对其他风险承担着的质量需求的缓解和调停
- 开发人员:设计人员或程序员;西体结构描述的清晰与完整,各部分的内聚性与受限耦合、清楚的交互机制
- 项目经理:负责配置资源保证开发进度;体系结构层次清楚,便于组建小组,任务划分结构,进度标志和最后期限等
- 客户:系统的购买者;开发的进度、总体预算、系统的有用性、满足需求的情况
- SAAM的5个步骤
- 场景开发
- 体系结构描述
- 单个场景评估
- 场景交互
- 总体评估
- ATAM的9个步骤
- 描述 - ATAM方法
- 描述 - 业务动机
- 描述 - 体系结构
- 调查分析 - 确定体系结构方法
- 调查分析 - 生成质量属性效用树
- 调查分析 - 分析体系结构方法
- 测试 - 讨论和分析场景
- 测试 - 分析体系结构方法
- 报告 - 描述评估结果
数据库设计
- 读写分离、主从复制策略。读写分离设置物理上不同的主从服务器,让主服务器负责数据的**写操作,从服务器负责数据的读操作,从而有效减少数据并发操作的延迟,但却带来了数据不一致风险。因此需要采用主从复制策略保持数据的一致性**
- MySQL 数据库中,主从复制是通过binary log 来实现主从服务器的数据同步,MySQL 数据库支持的三种的复制类型分别是
- 基于SQL语句的复制
- 基于行的复制
- 混合模式复制
- 关系型数据库(前)和非关系型数据库(后)的比较
- 数据一致性:实时一致性;弱一致性
- 数据类型:结构化数据;非结构化数据
- 事务:高事务性;弱事务性
- 水平扩展:弱;强
- 数据容量:有限数据;海量数据
- 混用MySQL与nosql,由于部分数据同时存在于两个数据库中,存在数据同步问题,解决该问题的3中方法
- 通过定时任务机制做定期数据更新
- 通过触发器完成数据同步
- 通过数据库插件完成数据同步
数据流图
- 流程图和数据流图的定义和区别
- 数据流图中的处理过程可并行;系统流程图在某个时间点只能处于一个过程
- 数据流图展现系统的数据流;系统流程图展现系统的控制流
- 数据流图展现全局的处理过程,过程之间遵循不同的计时标准;系统流程图中处理过程遵循一致的计时标准
UML
- 用例之间的关系有泛化、包含和扩展
- 泛化:是一种继承关系,子用例是父用例的一种特殊形式,它继承了父用例的所有结构、行为、关系。其中三角箭头指向父用例
- 包含:基本用例的行为包含了另一个用例的行为,是比较特殊的依赖关系;箭头方向由基本用例指向被包含用例。执行基本用例时,每次都必须调用被包含用例,被包含用例也可以单独执行
- 扩展关系:扩展用例在扩展点上增加新的维护和含义。扩展用例为基本用例添加新的行为,箭头指向基本用例
设计模式
- 简述三类设计模式
- 创建型模式用于创建对象,为设计类实例化新对象提供指南
- 结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南
- 行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南
- 设计模式归类
- 创建型:单例,构造器等
- 结构型:外观、享元、代理、组合等
- 行为型:解释器、中介、访问者、状态、观察者等
- 实际案例如何使用?
- 各个构件不允许直接调用 - - 中介者
- 自定义标准,实现 - - 解释器
- 预约,接收消息 - - 观察者
- 会员体系升级 - - 状态模式
项目管理
- 关键路径为图中时间最长的那一条线
- 总工期即关键路径所有时间之和
- 缩短工期时,减少与关键路径相近时间路径的共同活动,从而计算成本预算的数字