一份全面的“详细设计说明书”是怎样的?

对于详细设计说明书,有很多刚入行的小白对此有很多的迷惑,在这里我就接着多年的工作经验,并拿出曾经给负责的一个项目撰写的概要设计说明书来作为案例给大家展示一下,写得不好,其中也有很多欠缺之处,愿朋友们看过之后能够给出很好的批评,咱们在这里相互学习、共同进步!

1. 引言

1.1 修订记录

窗口对象说明
腾地管理窗口对象说明表
编号:窗口 10
(1)运维管理业务流程图

(2)运维管理设计说明
1)模块详细设计说明
运维管理详细设计说明表
编号:说明 11

2)窗口对象说明
运维管理窗口对象说明表
编号:窗口 11

3)模块相互关系设计说明
运维管理相互关系说明表
编号:关系 11

6.13  文件管理模块

(1)文件管理业务流程图

(2)文件管理设计说明
1)模块详细设计说明
文件管理详细设计说明表
编号:说明 12

2)窗口对象说明
文件管理窗口对象说明表
编号:窗口 12

3)模块相互关系设计说明
文件管理相互关系说明表
编号:关系 12

6.14  工程周报模块

(1)工程周报业务流程图

(2)工程周报设计说明
1)模块详细设计说明
工程周报详细设计说明表
编号:说明 13

2)窗口对象说明
工程周报窗口对象说明表
编号:窗口 13

3)模块相互关系设计说明
工程周报相互关系说明表
编号:关系 13

6.15  视频监控模块

(1)视频监控业务流程图

(2)视频监控设计说明
1)模块详细设计说明
视频监控详细设计说明表
编号:说明 14

2)窗口对象说明
视频监控窗口对象说明表
编号:窗口 14

3)模块相互关系设计说明
视频监控相互关系说明表
编号:说明 14

7. 文档附录

7.1 概述

这一部分主要是对详细设计文档中未提及或者有所遗漏的分析内容进行补充,这些和以上部分相比并不是必需的,所以将这些不必需的内容在附录这里进行一一阐述。

7.2 数据存储设计描述

(1)结构化数据存储描述
用于存储来自客户端的业务数据,并满足对所存储数据的安全、检索、统计等需求。
结构化数据常使用数据库来存储,数据库目前主要分为以下两大类:

  • 关系型数据库(SQL): 建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示,可以用 SQL 语句方便的在一个表以及多个表之间做非常复杂的数据查询;关系型数据库支持复杂的事务管理,对于一致性要求较高的操作,常借助于数据库的事务管理保证程序操作的一致性,常见的有:SQLServer(付费)、Oracle(付费)、MySQL、DB2(付费)等;
  • 非关系型数据库(NOSQL): 其数据存储可以不固定的表格模式,也经常会避免使用 SQL 的 JOIN 操作,一般有水平可扩展性的特征,由于减少了对数据依赖关系的管理,对数据管理的重点放在了存储和检索上,因此相对 SQL 数据库,NOSQL 数据库具备相抵较高的性能以及横向扩展能力,常用的有 MongoDB、ElasticSearch 等。

根据业务场景的需要,BIM 数据中心的建设选用主流的关系型数据库和非关系型数据库进行搭建。
(2)非结构化数据存储描述
用于存储文件、图片、视频等非结构化数据,并满足用户对这类数据的检索,存取,由于非结构化数据存储要解决的关键问题是:

  • 单个数据集,也既文件比较大;
  • 对单个文件的写入读取,依赖于硬盘的读写速度,单个硬盘的读写是有极限的;
  • 多个用户同时请求一个文件数据时的并发处理。

基于以上问题,非结构化数据的存储解决的核心是协调多块硬盘对文件进行统一的读写,增加单个读写事务性能。
GridFS 是 MongoDB 的一个用来存储 / 获取大型数据(图像、音频、视频等类型的文件)的规范。它相当于一个存储文件的文件系统,但它的数据存储在 MongoDB 的集合中。GridFS 能存储超过文档尺寸限制(16 MB)的文件。
GridFS 将文件分解成块,将每块数据保存在不同的文档中,每块大小最高为 255 KB,通过对分片逻辑结构的管理满足对使得大文件具备分布式存储的能力,借助于 MongoDB 的分布式管理,提高数据中心对大文件的分布式存储、检索。
(3)日志数据存储描述
ELK 架构功能示意图,如下:

Logstash: 通过 Logstash 的日志收集功能,对服务端的硬件性能日志,应用请求的访问、响应日志、数据库 CUDI 日志进行收集,根据各类日志的格式,在 Logstash 中编写日志收集规则。
Elasticsearch: 存储通过 Logstash 收集到的日志信息,用于后续查询;ES 的使用并不仅限于对日志的收集,所有结构化的数据都可以存储在 ES 中,ES 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索结构化数据。
ES 被用作全文检索、结构化搜索、分析以及这三个功能的组合,通过 ES 存储的数据具备以下能力:

  • 分布式存储能力,ES 支持集群部署,在适合的硬件配置下可以用于存储海量数据;
  • 丰富的查询接口,ES 的查询接口遵循 RESTful API 规范,通过 ES 可以在不需要后端代码介入的情况下直接通过 RESTful API 对数据进行查询和写入;
  • 通过 RESTful API 进行复杂的聚合搜索,而不仅限于普通的全文检索查询。

Kibana: 是一个针对 Elasticsearch 的开源分析及可视化平台,用来搜索、查看交互存储在 Elasticsearch 索引中的数据。使用 Kibana,可以通过各种图表进行高级数据分析及展示。
Kibana 让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示 Elasticsearch 查询动态。
Kibana Dashboard 界面截图,如下:


使用 Kibana 制作图表时所使用的数据检索规则是使用 Lucene 语句编写的聚合查询规则,Lucene 是一套用于全文检索和搜索的开放源代码程序库,由 Apache 软件基金会支持和提供。Lucene 提供了一个简单却强大的应用程序接口,能够做全文索引和搜索,在 Java 开发环境里 Lucene 是一个成熟的免费开放源代码工具。
就其本身而论,Lucene 是现在并且是这几年,最受欢迎的免费 Java 信息检索程序库;

7.3 测试计划

对本系统进行单体测试的计划,主要有一下几个方面:

  • 对测试的各个方面的技术要求;
  • 对测试的各个方面的输入数据;
  • 对测试问题的记录方式;
  • 对测试流程的控制方式;
  • 对测试时间段或者阶段性的设定;
  • 对测试的预期效果、进度安排、人员职责、设备条件驱动程序及其各个模块等的规定。

7.4 各模块的注释设计

说明准备在本系统中安排的注释,如:

  • 注释说明各个模块开始编写的时间,编写人员,修改的时间,编写的名称,及其基本功能。
  • 注释说明各个模块的主要功能开始编写的功能简述、编写人员、编写的时间。
  • 注释说明各个模块延伸副模块的编写的时间,编写人员,修改的时间,编写的名称,及其基本功能。
  • 注释说明各个模块延伸副模块的主要功能开始编写的功能简述、编写人员、编写的时间。
  • 加在各个模块的一些限制条件的注释说明和条件要求。
  • 加在各分支点的注释说明各种条件。

尚未解决的问题
暂无。

结语

如果这篇详细设计文档当您有什么疑问的话,请以以上的参考资料内列出的文档内容一同研读,整体结构请以《XXXX 管理平台——概要设计说明书》为基础。
另外请路过的朋友们多多支持哈,笔者在这里先谢谢了,以后会有更多优质的文章在这个平台上进行发布,请尽请期待呦!
 
作者 @卧枕江山 。