18 KiB
项目名称
详细设计说明书
| 文件状态: | 文档密级: | 公开 |
|---|---|---|
| 【 】草稿 | ||
| 【 】修改稿 | ||
| 【√】正式发布 | ||
| 当前版本: | V1.1 | |
| 作者: | ||
| 完成日期: |
版本历史
| 日期 | 版本号 | 作者 | 备注 |
|---|---|---|---|
| V1.0 | 起草 | ||
| 修改内容 | |||
| 增加内容 | |||
| 删除内容 | |||
| V1.1 | 曾力 | ||
| 修改内容 | 3系统设计章节调整:1)模块中的"业务算法和流程"拆分为"业务规则"和"业务流程";2)缓存、消息队列、定时任务、数据设计等合并到中间件和其他设计 | ||
| 增加内容 | |||
| 删除内容 |
目录
前言
文档编写原则:
1、所有修改调整都必须如实记录;
2、对系统功能的修改,都必须对修改进行说明;
整个文档编写说明:
1、文档编写完成后,请删除文档中出现的全部"填写说明";
2、提交前,请刷新"目录"、"图表目录", 更新页眉页脚;
3、本说明书对整个软件系统按如下结构方式进行划分:"系统"、"子系统"、"模块";
4、如果系统相对简单,不需要做"系统"、"子系统"的划分,则可直接按照"系统"、"模块"的层次划分即可---把"子系统"修改为"模块"。
编写目的
背景与任务
术语与缩略语
填写说明:在本文当中出现的专业性、缩略、专有和难懂性的词组或短语
| 术语、缩写 | 解释 |
|---|---|
参考资料
系统总体设计
逻辑架构
填写说明:需要有架构图和文字说明,若有必要需要分清层级。
物理架构
填写说明:从物理部署方面说明系统架构,有必要的话需要标明IP,端口,协议,容器,负载均衡设计,防火墙设计等。
对外接口
| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 |
|---|---|---|---|---|---|
子系统列表
| 子系统编号 | 子系统名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| 采购/外包/自行开发/复用 |
子系统相互关系与接口
填写说明:明确子系统之间的调用关系、子系统间的接口(消息、数据结构)以及相关子系统之间的协同工作,可以使用结构图、(交互)事务图、消息序列图、ER 图描述。
子系统1设计
填写说明:
1、标题上加入子系统的编号及名称(标识)
2、设计子系统整体框架:子系统的逻辑结构。
3、模块的划分与依赖关系定义、模块之间的接口定义、模块功能定义。
功能与界面
填写说明:说明子系统功能、作用范围等,展示子系统界面。
工程目录
填写说明:展示并介绍系统的工程目录结构以及主要模块的作用。
模块列表
| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 |
|---|---|---|---|
| 采购/外包/自行开发/复用 |
模块间关系
功能关系群1
填写说明:用UML图描述各个模块间的关系,并介绍对应关系群的功能。
功能关系群2
填写说明:用UML图描述各个模块间的关系,并介绍对应关系群的功能。
模块设计
模块1
填写说明:标题上加入模块的编号及名称(标识)。
功能
填写说明:说明该模块具备什么样的基本功能,粘贴对应界面。
功能1
设计图
界面或原型图
功能描述
-
功能概述
说明功能用途,功能操作的前提业务和后继业务,操作后的影响等
-
操作权限
说明功能用途,功能操作前提及操作后的影响等
- 功能约束
说明功能是否有约束,及约束描述
输入输出数据
- 输入数据
描述用户输入的数据(包括任何输入设备)以及这些数据的有效性检验规则。
描述从物理模型中的哪些表获取数据以及获取这些数据的条件。
- 输出数据
描述功能所产生的数据以及这些数据的表现形式。
业务算法和流程
从业务角度详细描述根据输入数据产生输出数据的业务算法和流程.
数据设计
功能实现涉及的局部数据结构说明,包括数据结构名称,功能说明,具体数据结构说明(定义、注释设计、取值)等。相关数据库表,数据存储设计(具体说明需要以文件方式保存的数据文件名、数据存储格式、数据项及属性等。),以及数据流转等。
方法说明
说明本功能中的各个方法,包括方法名称及其所在文件,功能,格式,参数,全局变量,局部变量,返回值,算法说明,使用约束等。
示例:主要方法以及方法的作用。
| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 |
|---|---|---|---|
| addUser | 添加用户 | name:用户名 | Boolean类型:true |
| phone:电话 | |||
其他说明
功能2
接口
填写说明:列出与其它模块的接口,与其它系统或硬件的接口。
接口1
a、接口名称
| ⽤户注册接口 |
|---|
b、接口描述
| 1. ⽤户信息注册 2. ⽤户可以通过 ⼿机号/邮箱 进⾏注册 3. 同⼀个 ⼿机号/邮箱只能注册⼀个账号 |
|---|
c、请求地址
| {apiAddress}/api/user/signup |
|---|
d、请求方式
| POST |
|---|
e、请求参数
1) Header参数
| 参数名 | 必选 | 类型/参数值 | 说明 |
|---|---|---|---|
| Content-Type | 是 | application/json | 请求参数类型 |
2) Body参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
| account | 是 | string | 1 < length < 50 | ⽤户账号 | |
| passcode | 是 | string | 1 < length < 50 | 密码 | 密码(passcode)的加密⽅式为 xxxxxx |
| checkCode | 是 | string | length = 6 | 验证码 |
3) 请求实例
{
"account": 1001,
"passcode": 123456,
"checkCode": 1
}
f、响应参数
1) 返回参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
2) 返回示例
{
"code": 200,
"msg": "成功",
"data": null
}
g、备注
h、错误响应码
| 错误码 | 错误描述 | 原因 | 解决方案 | 示例值 |
|---|---|---|---|---|
| SYSTEMERROR | 接⼝返回错误 | 系统超时 | 请使⽤相同 参数再次调⽤ API。 | 001 |
接口2
a、接口名称
| ⽤户注册接口 |
|---|
b、接口描述
| 1. ⽤户信息注册 2. ⽤户可以通过 ⼿机号/邮箱 进⾏注册 3. 同⼀个 ⼿机号/邮箱只能注册⼀个账号 |
|---|
c、请求地址
| {apiAddress}/api/user/signup |
|---|
d、请求方式
| POST |
|---|
e、请求参数
1) Header参数
| 参数名 | 必选 | 类型/参数值 | 说明 |
|---|---|---|---|
| Content-Type | 是 | application/json | 请求参数类型 |
2) Body参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
| account | 是 | string | 1 < length < 50 | ⽤户账号 | |
| passcode | 是 | string | 1 < length < 50 | 密码 | 密码(passcode)的加密⽅式为 xxxxxx |
| checkCode | 是 | string | length = 6 | 验证码 |
3) 请求实例
{
"account": 1001,
"passcode": 123456,
"checkCode": 1
}
f、响应参数
1) 返回参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
2) 返回示例
{
"code": 200,
"msg": "成功",
"data": null
}
g、备注
h、错误响应码
| 错误码 | 错误描述 | 原因 | 解决方案 | 示例值 |
|---|---|---|---|---|
| SYSTEMERROR | 接⼝返回错误 | 系统超时 | 请使⽤相同 参数再次调⽤ API。 | 001 |
模块2
填写说明:标题上加入模块的编号及名称(标识)。
功能
填写说明:说明该模块具备什么样的基本功能,粘贴对应界面。
功能1
设计图
界面或原型图
功能描述
-
功能概述
说明功能用途,功能操作的前提业务和后继业务,操作后的影响等
-
操作权限
说明功能用途,功能操作前提及操作后的影响等
- 功能约束
说明功能是否有约束,及约束描述
输入输出数据
- 输入数据
详细描述用户输入的数据(包括任何输入设备)以及这些数据的有效性检验规则。
详细描述从物理模型中的哪些表获取数据以及获取这些数据的条件。
- 输出数据
详细描述功能所产生的数据以及这些数据的表现形式。
业务规则
从业务角度详细描述根据输入数据产生输出数据的业务算法.
业务流程
从业务角度详细描述业务流程.
数据设计
功能实现涉及的局部数据结构说明,包括数据结构名称,功能说明,具体数据结构说明(定义、注释设计、取值)等。相关数据库表,数据存储设计(具体说明需要以文件方式保存的数据文件名、数据存储格式、数据项及属性等。),以及数据流转等。
方法说明
说明本功能中的各个方法,包括方法名称及其所在文件,功能,格式,参数,全局变量,局部变量,返回值,算法说明,使用约束等。
示例:主要方法以及方法的作用。
| 方法名 | 方法作用 | 输入参数(是否必填) | 返回数据 |
|---|---|---|---|
| addUser | 添加用户 | name:用户名 | Boolean类型:true |
| phone:电话 | |||
其他说明
功能2
接口
填写说明:列出与其它模块的接口,与其它系统或硬件的接口。
接口1
a、接口名称
| ⽤户注册接口 |
|---|
b、接口描述
| 1. ⽤户信息注册 2. ⽤户可以通过 ⼿机号/邮箱 进⾏注册 3. 同⼀个 ⼿机号/邮箱只能注册⼀个账号 |
|---|
c、请求地址
| {apiAddress}/api/user/signup |
|---|
d、请求方式
| POST |
|---|
e、请求参数
1) Header参数
| 参数名 | 必选 | 类型/参数值 | 说明 |
|---|---|---|---|
| Content-Type | 是 | application/json | 请求参数类型 |
2) Body参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
| account | 是 | string | 1 < length < 50 | ⽤户账号 | |
| passcode | 是 | string | 1 < length < 50 | 密码 | 密码(passcode)的加密⽅式为 xxxxxx |
| checkCode | 是 | string | length = 6 | 验证码 |
3) 请求实例
{
"account": 1001,
"passcode": 123456,
"checkCode": 1
}
f、响应参数
1) 返回参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
2) 返回示例
{
"code": 200,
"msg": "成功",
"data": null
}
g、备注
h、错误响应码
| 错误码 | 错误描述 | 原因 | 解决方案 | 示例值 |
|---|---|---|---|---|
| SYSTEMERROR | 接⼝返回错误 | 系统超时 | 请使⽤相同 参数再次调⽤ API。 | 001 |
接口2
a、接口名称
| ⽤户注册接口 |
|---|
b、接口描述
| 1. ⽤户信息注册 2. ⽤户可以通过 ⼿机号/邮箱 进⾏注册 3. 同⼀个 ⼿机号/邮箱只能注册⼀个账号 |
|---|
c、请求地址
| {apiAddress}/api/user/signup |
|---|
d、请求方式
| POST |
|---|
e、请求参数
1) Header参数
| 参数名 | 必选 | 类型/参数值 | 说明 |
|---|---|---|---|
| Content-Type | 是 | application/json | 请求参数类型 |
2) Body参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
| account | 是 | string | 1 < length < 50 | ⽤户账号 | |
| passcode | 是 | string | 1 < length < 50 | 密码 | 密码(passcode)的加密⽅式为 xxxxxx |
| checkCode | 是 | string | length = 6 | 验证码 |
3) 请求实例
{
"account": 1001,
"passcode": 123456,
"checkCode": 1
}
f、响应参数
1) 返回参数
| 参数名 | 必选 | 类型 | 限制条件 | 说明 | 备注 |
|---|---|---|---|---|---|
2) 返回示例
{
"code": 200,
"msg": "成功",
"data": null
}
g、备注
h、错误响应码
| 错误码 | 错误描述 | 原因 | 解决方案 | 示例值 |
|---|---|---|---|---|
| SYSTEMERROR | 接⼝返回错误 | 系统超时 | 请使⽤相同 参数再次调⽤ API。 | 001 |
中间件和其他设计
缓存设计
Redis
| IP | 端口 | 用户名 | 密码 |
|---|---|---|---|
| 作用 | Key | Value | 过期时间 |
|---|---|---|---|
其他
消息队列设计
Kafka
| 作用 | Topic | Consumer |
|---|---|---|
其他
定时任务设计
| 使用工具 | 功能描述 | 方法名称 | 调用周期 |
|---|---|---|---|
数据库设计
填写说明:见《数据库设计说明书》,附上源文件链接。
数据字典设计
填写说明:见《数据字典》,附上源文件链接。
对外接口
填写说明:描述该软件子系统与外部实体的接口,包括用户界面、软件接口、硬件接口和通信接口。有提供接口文档的,填写见《接口文档》,附上源文件链接。
| 接口编号 | 接口名称(标识) | 功能描述 | 接口协议 | 输入参数 | 输出结果 |
|---|---|---|---|---|---|
非功能性需求的设计
性能的考虑
填写说明:为满足延时、吞吐量等性能,在既定硬件环境约束下所采取的设计方案。
兼容性的考虑
填写说明:对以前版本的兼容,以及平滑升级的考虑。
安全的考虑
填写说明:作为应用软件,在安全方面更多的是考虑访问控制,包括使用什么样的权限管理、分配、验证方案。
可移植性的考虑
填写说明:系统如果有跨平台的需求,要考虑操作系统、中间件、应用服务器特性、数据库及第三方服务移植。描述如何在不同的平台移植,是否为可配置的。
集成与测试的考虑
填写说明:各个子系统以及模块以什么先后次序进行开发、集成(组装)和测试,即是采用自底向上法还是自顶向下法。
可扩展性的考虑
填写说明:不仅有对系统功能扩展的设计考虑,还要考虑系统的性能扩展,即可伸缩性。
1、如何最低成本地添加新的功能。
2、如何最低成本的复制一个新系统,并且新旧系统可以做成统一体。
可靠性的考虑
填写说明:对故障检测、故障隔离、故障恢复、容错、冗余、备份的设计考虑。
可维护性的考虑
填写说明:
1、系统模块是否可以装配,功能模块是否可以配置,整个系统是否已经参数化。
2、提供什么样的维护方式、接口及界面。
3、有哪些日常维护需求,并且如何处理。