架构师第一周

架构核心

架构文档是给 相关方 做的, 架构始终在满足 相关方 的 关注点
架构元素: 组件、服务器、类、子系统、模块等
元素间关系
静态: 组合、继承等
动态: 交互
架构视图
4+1视图 , 他们的 相关方 的 关注点 是不同的, 架构是建立在 场景 下的
逻辑视图
开发视图
物理视图
过程视图
场景视图
UML建模
学习目标
软件开发的步骤

UML的意义
沟通、交流、思考
UML的分类
静态图: 用例图、类图、组件图、部署图
动态图: 状态图、活动图、时序图、(合作图)
静态关系

聚合: 按引用包容
组合: 按值包容
动态关系

对象消息: A方法调用B方法, 属 同步消息
用例图

使用阶段: 需求分析阶段
用例图中的信息: 边界、功能(用例)、关系(使用与扩展)、角色(可以是其他系统)
用例图的作用: 使用者和功能间的关系 (系统谁来使用, 功能关系如何)
关键点
容纳十几二十个元素
自顶向下细分用例
多个用例图描绘
类图

使用阶段: 详细设计
信息: 加号/减号 (public/private) (protect 无符号)
组件图

使用阶段: 概要设计
信息: 组件关系, 通常是依赖关系
组件分为 物理/逻辑
粒度为 jar包 ( 一个人负责的开发单位 )
组件的动态关系用 组件时序图 描述
部署图

部署图是架构师画的第一张图
使用阶段: 概要设计
部署图中的 子系统 , 之间的 动态关系 使用 子系统时序图 , 子系统时序图需要依赖于某个 场景 下
时序图

使用阶段
需求分析: 系统级时序图
概要设计: 组件级时序图
详细设计: 类级时序图
信息:
对象: 广义, 可以是人, 类, 系统等
激活: 长条线表示, 活动的状态
生命线: 虚线表示, 描述生命周期
消息: 实现表示, 动态关系 (比如方法调用)
活动图

活动图是用来描述 流程
泳道是描述 跨领域 的流程
活动图使用阶段
需求分析: 业务流程
概要设计: 不同模块、领域、子系统的流程
详细设计: 方法内部流程
状态图

状态图描述 不同状态的变化迁移关系
状态图使用阶段
需求分析: 系统中关键状态的变化
详细设计: 枚举在对应逻辑下的变化
需求分析阶段的状态图, 转换到详细设计阶段的状态图
阶段建模
需求分析阶段
用例图: 描述 谁使用系统, 系统功能间关系如何
活动图: 描述 系统业务流程
状态图: 描述 系统业务状态, 即关键业务状态的变迁
时序图: 描述 子系统与外部子系统的关系
概要设计阶段
部署图: 描述 整体、子系统依赖关系
时序图: 描述 服务器、子系统间的关系
活动图: 描述 子系统间的业务流程
组件图
组件时序图
组件活动图
详细设计阶段
类图
类时序图
类状态图: 描述 状态枚举, 布尔值变迁
类方法的活动图: 描述 方法内的流程
评论