开发架构
程序单元
- 源文件, 配置文件
- 程序库, 架构
- 目标单元
程序单元组织
- Project划分
- Project目录结构
- 编译依赖关系
着重考虑开发期质量属性
可扩展性 可重用性 可移植性 易理解性 易测试性
关注点软件模块实际组织方式
源程序文件 配置文件 源程序包 现成框架,类库 提供之间件 便以后目标文件 第三方库文件
逻辑层会映射到程序包
物理架构
物理节点
- PC 服务器
- 单片机, 单板机,专用机
- 软件安装, 部署, 烧写
- 系统软件选型
物理结点拓扑
- 连接方式、拓扑结构
- 物理层
- 冗余考虑
关注软件如何安装和部署到物理节点上
部署机器和网络配合软件系统的可靠性, 可伸缩性等要求
重视目标程序的静态位置问题
考虑整个软件系统之间是如何互相影响的
着重考虑安装和部署要求
关注点是软件的目标单元如何影射到硬件
关注相关的质量属性
可靠性 可伸缩性 持久可用性 性能 安全性
数据架构
持久数据单元
- 文件
- 关系数据库
- 实时数据库
数据存储格式
- 文件格式
- 数据库
着重考虑数据需求
关注点
持久化数据的存储方案 数据存储格式 数据传递 数据复制 数据同步
用ER图和数据流图表示
逻辑架构
职责划分
- 逻辑层
- 子系统, 模块
- 关键类
职责间协作
- 接口
- 协作关系
着重考虑功能需求
系统应该向用户提供什么样的服务
关注点是行为或职责的划分
关注用户可见的功能
提供辅助功能模块
他们可能是逻辑层,功能模块和类
运行架构
控制流
- 进程, 线程
- 中断服务程序
控制流组织
- 系统启动与停机
- 控制流通信
- 加锁与同步
着重考虑运行其质量属性
性能 可伸缩性 持久可用性 安全性
关注点是系统的并发与同步问题
关注进程,线程,对象等运行时概念
考虑并发,同步,通信等问题
偏重程序包在编译时期的静态依赖关系
解决运行时各单元的交互问题