【架构设计】概要设计评审
概要设计评审
1. 系统功能范围:
1.1 整理需求用例(新平台或多系统需求)
- 从产品提供的需求文档中提取用例。
- 确定系统的边界(什么事情做,什么事情不做)。
- 为识别领域对象提供简洁和完整的支持。
| 要求 | 描述 |
|---|---|
| 完整性 | 概要设计应该覆盖详细需求设计 |
| 识别系统干系人 | 找到产品需求功能的用户,可能是人、软件 |
| 识别需求的关系 | 需求之间的泛化、包含、扩展,以便于模块的划分 |
用例图示例:

用例图教程:https://kb.cnblogs.com/page/129491/
1.2 模块划分
| 要求 | 描述 |
|---|---|
| 覆盖当前所有需求 | 详细需求设计上的任一需求都能在某模块中找到 |
| 模块内聚性 | 模块包含的需求共同完成一个领域功能,模块可以单独开发和测试 |
| 模块低耦合 | 模块间只能通过API建立链接,除此链接,模块间不需要知道彼此的实现细节 |
依赖关系:使用系统模块图描述模块间关系
| 要求 | 描述 |
|---|---|
| 单向依赖 | 系统或模块之间不能双向关联,避免耦合 |
模块图示例

协作关系:使用时序图描述模块间协作关系
| 要求 | 描述 |
|---|---|
| 图示协作关系 | 用uml的协作图描述协作关系,展示时序和输入输出 |
系统协作图示例

1.3 API设计
| 要求 | 描述 |
|---|---|
| 输入输出描述 | 使用rap描述接口详细功能,代码中使用多行注释 |
| 单一输入 | 不强制用类进行封装,建议使用类,方便扩展 |
| 单一输出 | 不强制用类进行封装,建议使用类,方便扩展 |
| 多参输出 | 建议用类进行封装 |
| 多参输出 | 建议用类进行封装 |
| 界定合法输入 | 告知调用者什么样的输入才合法,比如id不能为空、手机号长度11位 |
| 承诺输出结果 | 告知调用者合法的情况下返回结果一定是什么 |
| 异常情况 | 区分系统异常和业务异常 |
| 不删除旧接口 | 如果不确定接口已不使用,不能删除旧接口,可使用@Deprecated |
| 不修改旧接口 | 如果不确定旧接口被谁使用,则不能修改旧接口 |
| 新增优于修改 | 如果修改接口影响较大,建议直接新增接口,做好接口版本管理 |
备注:此处API设计为概要
1.4 数据库设计
| 要求 | 描述 |
|---|---|
| 分清数据库 | 确定需要涉及哪些数据库变更 |
| 表设计 | 使用PowerDesign描述:表名、字段名、主键、是否为空,外键、值约束、默认值,如果有数据冗余处理,需要说明原因和存取规则 |
| 表关系 | 使用ER图描述实体与实体之间的关系 |
数据库ER图示例:

ER图教程:powerdesigner 画ER图
1.5 适配既有系统架构
| 要求 | 描述 |
|---|---|
| 适配既有硬件拓扑结构 | 尽量沿用,如果不能满足,提出方案进行评审 |
| 适配既有软件部署位置 | 尽量沿用,如果不能满足,提出方案进行评审 |
| 适配既有系统环境 | 尽量沿用,如果不能满足,提出方案进行评审 |
| 适配既有数据库 | 尽量沿用,如果不能满足,提出方案进行评审 |
| 适配既有基础架构 | 尽量沿用,如果不能满足,提出方案进行评审 |
2. 技术框架选型:
| 名称 | 描述 |
|---|---|
| JDK | jdk1.7,特殊情况下需要使用jdk1.7以上版本,需要经过架构组确认 |
| RPC框架 | dubbo |
| 缓存 | redis |
| 消息队列 | rocket mq |
| 关系型数据库 | mysql 主备 |
| 配置中心 | disconf |
| 监控平台 | cat |
| 日志平台 | elasticSearch+filebeat+kibana |
| 应用容器 | tomcat 7、8 |
| 定时任务 | elastic-job |
| 负载均衡 | tengine |
| 规则引擎 | drools |
| 文件系统 | oss |
| 协调服务 | zookeeper |
| 非关系型数据库 | mongodb |
详见:架构规范

浙公网安备 33010602011771号