阅读笔记一线架构师实践指南02
通过阅读这部分,学到如下:
1.关于概念架构和细化架构
1)层次:系统 用户 业务 角度:功能 约束 质量属性
2)架构=组件+交互
3)概念架构仅关注高层组件,对高层组件的“职责”进行了笼统的界定,并给出了高层组件之间的相互关系,其不涉及接口细节(只有抽象组件和抽象交互机制)。
4)而在细化架构中接口占据非常核心的地位,且细化架构重视通过子系统和模块来分割整个系统,有“实在的”交互机制,如基于接口编程、消息机制或远程方法调用。
2.贴近实践的多视图方法
1)运行架构(进程、线程)
2)逻辑架构(接口的定义、子系统的划分、(当你用C)结构化方法的模块、逻辑层(Layer))
3)物理架构(服务器的选型、物理层(Tier))
4)开发架构((并行开发需要)源程序目录)
5)数据架构(数据分布与数据库Schema (没选RDBMS)文件格式 (嵌入式系统)Flash存储结构)
6)逻辑架构 物理架构是架构设计同一阶段中必须要同时考虑的两个方面
7)五个视图的思维立足点 :
职责划分(逻辑视图) 程序单元组织(开发视图) 控制流 组织(运行视图) 物理节点安排(物理视图) 持久化设计(数据视图)
3.关于逻辑架构
1)划分子系统策略:
分层的细化、分区的引入、机制的提取
2)分层的细化(分层细化 横向):
展现层—展现层 控制层
业务层—业务接口层 业务实现层 业务实体层
数据访问层—数据访问层
3)分区的引入(分区还在一层 纵向)
4)机制的提取(基于接口或抽象类的协作是机制)(基于具体类的协作算不上机制):
机制是一种特殊的子系统
三种手段位于不同的维度,相辅相成
5)子系统划分:4个重要原则
6)接口的设计1.接口的设计采用分而治之(分是手段 合是目的)
2.为了实现软件系统的一系列功能,这个软件单元要和其他哪些单元如何协作。
协作决定接口
7)质疑驱动的逻辑结构设计:(这里采用课件 整理好后的书上的内容)
- 划分子系统,设计逻辑架构过程:
- 根据当前理解划分(从概念架构开始)
- 找到某功能的参与单元(运用三手段进行子系统划分)
- 让它们协作完成功能(职责协作)
- 质疑并推进设计的深入(定义包-接口图)
4.关于物理架构、运行架构、开发架构
- 物理架构主要设计:
- 硬件选择与物理拓扑
- 软件到硬件的映射关系
- 方案的优化
- 运行架构的设计内容:(控制流图是关键)(实现控制流三种手段:进程 线程 中断服务程序)
- 确定引入哪些控制流;
- 确定每条控制流的任务;
- 控制流的创建、销毁、通信机制等;
- 控制流之间的同步关系,加锁机制等
- 开发架构的设计内容:
- 将“逻辑结构”映射为程序单元
- 要自主编写的源程序
- 可重用的库、框架
- 其他方式(shell脚本,平台配置文件)
- 开发技术选项:开发语言,平台工具
- “程序单元”间关系
- Project划分
- Project目录结构
- 编译依赖关系
除了上述内容 我还了解到了重用的重要性(重用的目标是节省成本,关键是重用测试)
还有就是始终要考虑非功能需求(质量属性)以及约束