画图工具推荐Visual Paradigm(企业版收费,社区版不收费), yEd Graph Editor(免费),ProcessOn(在线免费)。
说明:根据策划和交互,分析需求,整理需求点,细化需求点。
目的:梳理需求,对需求的细节有详细的了解,对大需求做合理拆分,为接下来的详细设计做好充分的需求点准备。
- 需求点1
- 需求点1
- ...
- 需求点2
- 需求点2
- ...
说明:对单个功能进行分析设计,产出功能的架构图、用例图、时序图、状态图等
说明:使用UML用例图,从用户角度给出用例。如果用例图比较大,可拆成多个用例图。
举例:
说明:使用时序图,整理出各个系统/模块间的交互
举例:
说明:使用状态图,描述系统中的状态流转
举例:
说明:使用流程图,梳理出功能的内部逻辑,表示算法基本思路
举例:
说明:使用数据表、ER图及数据流转图等工具,展现各领域之间的关系
【强制】 数据单表设计需要有表的描述、表名、数据量情况、增量情况以及表字段、主键(如果有)、唯一键、索引。
【强制】 多表的情况,设计需要有ER图,表达表之间的关系;并且不同表之间表达同一个含义的字段应该全局统一。
【强制】 附上建表语句
【强制】 列举词表最常用的sql,印证索引的有效性
举例:
- 表名:
- 表类型:单表
- 数据量:10万
- 数据增量:1000条/月
- 索引:idx_app(appCode)
- 建表语句:
- 常用查询:
select * from
字段名 | 类型 | 备注 |
---|---|---|
id | bigint(20) | 主键,自增 |
- 表名:
- 表类型:单表
- 数据量:10000
- 数据增量:10条/月
- 索引:idx_name(userName)
字段名 | 类型 | 备注 |
---|---|---|
id | bigint(20) | 主键,自增 |
说明:使用数据流转图,整理出各个模块间的数据流转
【强制】 接口设计必须和交互搞呼应,以交互页面为维度编写
【强制】 接口需要在NEI中进行维护,并且标注接口等级:[P级定义]
【强制】 标注接口超时时间预计
【强制】 标注QPS的预估量级
【推荐】 接口设计可以简单标注实现对策(修改的类、修改的表、实现逻辑等)
举例:
- 交互页面:[云豆特权页面]
【强制】 RPC接口描述(标题)
【强制】 使用此接口需要依赖的pom
【强制】 接口、方法、入参、出参
【强制】 异常列表
【强制】 RPC提供的API层代码中必须有完善的javadoc规范,规范参考:RPC JavaDoc 规范
举例:
- pom依赖:
<dependency>
</dependency>
【强制】 消息描述(标题)
【推荐】 消息使用场景介绍
【强制】 使用的消息中间件,如无特殊情况使用卡夫卡
【强制】 需要依赖的pom
【强制】 消息的topic、key以及message类型
【强制】 消息的解析方式需要在服务端进行提供,并列出解析方法
举例:
说明:梳理系统的风险,提出需要采取的措施。
说明:描述需要的系统级别的监控点。
监控点 | 措施 |
---|---|
监控点1 | 措施1 |
说明:描述需要的业务级别的监控点。
监控点 | 措施 |
---|---|
监控点1 | 措施1 |
说明:设计功能的降级和切换策略
【强制】 降级&切换场景描述
【强制】 降级&切换使用的工具: 【强制】 降级&切换配置项
【强制】 降级&切换配置项值含义
举例:
## 开发计划
*说明*:把设计文档和任务jira关联,记录开发人员和完成时间
**【强制】** 如本需求的开发依赖其它模块,则需要列举依赖模块的开发计划
* 任务地址:
| 模块 | 涉及应用 | 研发人员分工 | 人日 | 截止时间 |
| --- | --- | --- | --- | --- | --- |
| 功能模块1 | 应用1,应用2,... | 研发1,研发2,... | 2人日 | 年月日 |